我正在使用 Codeigniter 分页,但遇到了问题。
url 在点击时发生变化,如限制更新,例如displayAllUsers/10 到 displayAllUsers/15,但结果保持不变。
这是我的控制器:
public function displayAllUsers()
{
$this->load->model('backOfficeUsersModel');
$data['loggedUser'] = $this->backOfficeUsersModel->get_by('username', $this->session->userdata('username'), FALSE,TRUE);
$this->db->order_by('userid');
$limit = 5; // this works, I have 5 records displayed on the page
$offset = 3;
$this->db->limit($limit);
$this->db->offset($offset);
$data['users'] = $this->backOfficeUsersModel->get();
// line bellow, prints correct result, 17 records total in database;
$totalresults = $this->db->get('back_office_users')->num_rows();
$this->load->library('pagination');
$config['base_url'] = site_url('/backOfficeUsers/displayAllUsers');
$config['total_rows'] = $totalresults;
$config['per_page'] = 5;
$config['uri_segment'] = 3;
$this->pagination->initialize($config);
$data['main_content'] = 'users';
$data['title'] = 'Back Office Users';
$errorMessage = FALSE;
$this->load->vars($data,$errorMessage);
$this->load->view('backOffice/template');
} // end of function displayAllUsers
任何人都可以发现我做错了什么吗?
尝试像这样进行偏移,
$offset = $this->uri->segment(3);
$this->db->limit(5, $offset);
这样,当您访问用户时,您就可以从正确的偏移量开始。
假设您的表中有 20 个用户。当您第一次登陆页面时,您的 $offset 变量将为空,因为您的链接中没有尾随数字(位于 $this->uri->segment(3) 处)。因此,当您在数据库中查询 5 个用户时,您会从 0 开始,因为 $offset 变量为空。在这种情况下,您的代码将是:
$this->db->limit(5, 0).
从第0条记录开始获取5条记录。
但是,当您使用分页链接时,您设置的 per_page 变量会在 url 末尾添加一个数字并重新加载页面。当这种情况发生时,你的 $offset 变量会得到一个数字,在本例中,它每次都会加 5。
现在在这种情况下你的代码将是
$this->db->limit(5,5)
意思是获取5条记录,从第5条记录开始。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)