我使用codeigntier 3分页库。
它有效,但不确定应该如何。
首先我会发布我的代码。
控制器设置
$config['base_url'] = base_url('items');
$config['total_rows'] = $this->ItemsM->countAll();
$config['per_page'] = 5;
$config['use_page_numbers'] = TRUE;
$config['nex_link'] = "Next";
$limit = $config['per_page'];
$offset = $this->uri->segment(2);
$this->pagination->initialize($config);
$data = array(
'musicians' => $this->ItemsM->allItems($limit, $offset),
'pagination' => $this->pagination->create_links()
);
$this->load->view('public/header');
$this->load->view('public/item-list', $data);
$this->load->view("public/footer");
模型
类ItemsM扩展了CI_MODEL {
function allUsers($limit="", $offset ="")
{
$query = $this->db->select('*')
->from('items')
->limit($limit)
->offset($offset)
->order_by('creation_date', 'desc')
->get();
return $query->result();
}
public function countAll(){
return $this->db->count_all_results('items');
}
路线
$route['items/(:any)'] = 'items';
这种分页有效,但我得到的结果不正确。
在第一页/标签上,它显示具有此订单的项目
第1项第2项第3项第4项第5项//确定
但是当打开第2页时
我以这种方式得到接下来的5个结果
项目3
第4项
第5项
第6项
第7项
答案 0 :(得分:1)
您的问题似乎是变量$offset
,因为您将$offset
作为您的页码传递,例如。如果您的页码是2,那么它将跳过2个结果,但您需要跳过5个结果。要解决此问题,请使用控制器设置替换此代码。
$config['base_url'] = base_url('items');
$config['total_rows'] = $this->ItemsM->countAll();
$config['per_page'] = 5;
$config['use_page_numbers'] = TRUE;
$config['nex_link'] = "Next";
$limit = $config['per_page'];
$page = $this->uri->segment(2);
if($page > 1){
$offset = ($page-1) * $limit;
}else{
$offset = $page;
// Or you can set $offset = 0;
}
$this->pagination->initialize($config);
$data = array(
'musicians' => $this->ItemsM->allItems($limit, $offset),
'pagination' => $this->pagination->create_links()
);
$this->load->view('public/header');
$this->load->view('public/item-list', $data);
$this->load->view("public/footer");
在这里,我编辑了变量$offset
。现在,您将获得预期的结果。