codeigniter分页 - 结果在每个页面上保持相同

Zor*_*ran 3 pagination codeigniter

我正在使用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
Run Code Online (Sandbox Code Playgroud)

谁能发现我做错了什么?

hop*_*lla 5

尝试做这样的偏移,

$offset = $this->uri->segment(3);
$this->db->limit(5, $offset);
Run Code Online (Sandbox Code Playgroud)

这样,当您访问用户时,您可以从正确的偏移量开始.

假设您的表中有20个用户.当您第一次登陆页面时,您的$ offset变量将为空,因为您的链接中没有尾随数字(在$ this-> uri-> segment(3)).因此,当您向数据库查询5个用户时,您从0开始,因为$ offset变量为空.在这种情况下,您的代码将是:

$this->db->limit(5, 0).
Run Code Online (Sandbox Code Playgroud)

从第0条记录开始获得5条记录.

但是,当您使用分页链接时,您设置的per_page变量会在网址末尾添加一个数字并重新加载页面.发生这种情况时,$ offset变量会得到一个数字,在这种情况下,它每次增加5.现在在这种情况下你的代码就是

$this->db->limit(5,5)
Run Code Online (Sandbox Code Playgroud)

含义从第5条记录开始获得5条记录.