Php codeigniter分页结果不显示在下一页

Php codeigniter分页结果不显示在下一页,php,codeigniter,pagination,Php,Codeigniter,Pagination,我已将CI分页正确地实施到系统中。我已经设置了每页25个结果的限制。但我喜欢让用户改变限制,如50,75100,如果他们愿意。如果用户选择查看50个结果,则系统在第一页中工作正常,但当用户单击下一页链接或do sort table列时,系统返回到限制25 这是我的密码 视图: 型号: function history($limit,$offset,$sort_by,$sort_order) { $sort_order = ($sort_order == 'desc') ?

我已将CI分页正确地实施到系统中。我已经设置了每页25个结果的限制。但我喜欢让用户改变限制,如50,75100,如果他们愿意。如果用户选择查看50个结果,则系统在第一页中工作正常,但当用户单击下一页链接或do sort table列时,系统返回到限制25

这是我的密码

视图:

型号:

 function history($limit,$offset,$sort_by,$sort_order)
  {
        $sort_order = ($sort_order == 'desc') ? 'desc' : 'asc';
        $sort_columns = array('id','player_item','comp_item','result','time');
        $sort_by = (in_array($sort_by, $sort_columns)) ? $sort_by : 'time';
        //result query

        $query = $this->db->select('id,player_item,comp_item,result,time')
               ->from('rps')
               ->limit($limit,$offset)
               ->order_by($sort_by,$sort_order);

        $ret['rows'] = $query->get()->result();



        //count query
        $query1 = $this->db->select('count(*) as count', FALSE)
                ->from('rps');

        $tmp = $query1->get()->result();
        $ret['number_rows'] = $tmp[0]->count;

        return $ret;

  }

任何帮助都将不胜感激。

您应该在每页之间传递“num”。当您选择该值时,它将获取提交的表单并重新加载页面。但是在接下来的页面上它不使用$\u POST['num'],该值不会通过测试。解决这个问题最简单的方法是将值存储在cookie中。在控制器中,而不是
$limit=$this->input->post('num')执行

if($this->input->post('num')){      
  setcookie('pagination_limit',$this->input->post('num')); 
  $limit = $this->input->post('num');
}elseif($this->input->cookie('pagination_limit')){
  $limit = $this->input->cookie('pagination_limit', true);
}else{$limit = 25;}

在您看来,您还应该使用
$this->input->cookie('pagination\u limit',true)重新替换
$\u POST['num']

是否将视图中的所有$u POST['num']替换为$this->input->cookie('pagination\u limit',true)?是的,也是这样。我做了新的更正。很抱歉,我没有测试这段代码,所以在第一次使用分页时,我并不总是正确的。但是当我进行表列排序时,它也会更改限制…是的,cookie是为确切的uri设置的。必须使用
setcookie('pagination_limit'、$this->input->post('num')、'0'、'/')。现在看到的问题是当重新加载页面时,它初始化限制为25。但当我点击下一页时,它会返回到存储在cookies上的值。我尝试删除cookies,但不起作用。
 function history($limit,$offset,$sort_by,$sort_order)
  {
        $sort_order = ($sort_order == 'desc') ? 'desc' : 'asc';
        $sort_columns = array('id','player_item','comp_item','result','time');
        $sort_by = (in_array($sort_by, $sort_columns)) ? $sort_by : 'time';
        //result query

        $query = $this->db->select('id,player_item,comp_item,result,time')
               ->from('rps')
               ->limit($limit,$offset)
               ->order_by($sort_by,$sort_order);

        $ret['rows'] = $query->get()->result();



        //count query
        $query1 = $this->db->select('count(*) as count', FALSE)
                ->from('rps');

        $tmp = $query1->get()->result();
        $ret['number_rows'] = $tmp[0]->count;

        return $ret;

  }
if($this->input->post('num')){      
  setcookie('pagination_limit',$this->input->post('num')); 
  $limit = $this->input->post('num');
}elseif($this->input->cookie('pagination_limit')){
  $limit = $this->input->cookie('pagination_limit', true);
}else{$limit = 25;}