如何在codeigniter(v2)中制作“最近查看过的”项目

时间:2012-02-10 15:45:13

标签: php arrays codeigniter session frameworks

有人能建议使用codeigniter创建最近查看过的项目/页面逻辑的最佳解决方案吗?如果可能的话,我更愿意使用codeigniter会话而不是标准的$ _SESSION。

另外 - 添加到会话但是一旦我点击数组中的10个项目就删除了数组中最旧的项目。

2 个答案:

答案 0 :(得分:4)

    $recentlyViewed = $this->session->userdata('recentlyViewed');
    if(!is_array($recentlyViewed)){
        $recentlyViewed = array();  
    }
    //change this to 10
    if(sizeof($recentlyViewed)>3){
        array_shift($recentlyViewed);
    }
    //here set your id or page or whatever
    if(!in_array($data['id'],$recentlyViewed)){
        array_push($recentlyViewed,$data['id']);
    }
    $this->session->set_userdata('recentlyViewed', $recentlyViewed);    
    $recentlyViewed = array_reverse($recentlyViewed);
    //var_dump($recentlyViewed);

现在在带有or_where查询的recentViewed上使用foreach

答案 1 :(得分:1)

我不知道这种方法是否适合您,但您可以将这种数据转储到带有时间戳的SQL数据库中,然后使用SQL查询的“升序”/“降序”属性并结合使用“limit(10)”属性......对于您要完成的任务可能需要付出太多精力,但您还可以将查询数据与CI会话对象同步?唐诺,只是一个想法:D