Php codeigniter分页结果不显示在下一页
我已将CI分页正确地实施到系统中。我已经设置了每页25个结果的限制。但我喜欢让用户改变限制,如50,75100,如果他们愿意。如果用户选择查看50个结果,则系统在第一页中工作正常,但当用户单击下一页链接或do sort table列时,系统返回到限制25 这是我的密码 视图: 型号: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') ?
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;}