3

Codeigniter ページネーションを使用していますが、問題が発生しています。

たとえば、displayAllUsers/10 から displayAllUsers/15 への制限の更新のように、クリックすると URL が変更されますが、結果は同じままです。

これが私のコントローラーです:

 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

誰でも私が間違っていることを見つけることができますか?

4

2 に答える 2

5

このようにオフセットを実行してみてください、

$offset = $this->uri->segment(3);
$this->db->limit(5, $offset);

このように、ユーザーにアクセスするときは、正しいオフセットから開始します。

テーブルに20人のユーザーがいると仮定します。最初にページにアクセスしたとき、リンクに末尾の数字がないため、$ offset変数は空になります($ this-> uri-> segment(3))。したがって、データベースに5人のユーザーを照会する場合、$ offset変数が空であるため、0から開始します。この状況では、コードは次のようになります。

$this->db->limit(5, 0).

0番目のレコードから5つのレコードを取得します。

ただし、ページネーションリンクを使用する場合、設定したper_page変数は、URLの末尾に数字を追加し、ページを再読み込みします。これが発生すると、$ offset変数に数値が与えられます。この場合、毎回5が加算されます。この状況では、コードは次のようになります。

$this->db->limit(5,5)

つまり、5番目のレコードから開始して5つのレコードを取得します。

于 2012-09-14T00:01:46.283 に答える
0

$this->pagination->create_links()ページに配置するhtmlを生成する呼び出しはありません。

例えば、

...
$this->load->vars($data,$errorMessage);
$data['page_nav'] = $this->pagination->create_links();
$this->load->view('page_body', $data);

$page_navこれは、ページネーションアイテムを追加するために使用する場合、フォームでうまく機能します。

`views / page_body.php:

... (various html markup)
<div class="pagination">
 <?php echo $page_nav; ?>
</div>
于 2012-09-13T23:48:26.983 に答える