在codeigniter中定制分页

时间:2012-10-04 23:47:24

标签: codeigniter pagination

我有codeigniter applicatin,其分页代码就像魅力一样。分页允许访问者选择他希望每页显示多少记录。现在,我想补充以下内容:

从Z记录的总数中显示X到Y.

现在,Z很容易......我已经解决了。任何人都可以告诉我,我怎么能得到这个?

这是我的功能:

  public function displayAllUsers() 
   { 

        if ($this->uri->segment(3) !="") { 
        $limit = $this->uri->segment(3); 
        } else { 
        $limit = 10; 
        } 

        $offset = 4; 
        $offset = $this->uri->segment(4); 
        $this->db->limit($limit, $offset); 
        $data['users'] = $this->backOfficeUsersModel->get();
        $totalresults = $this->db->get('back_office_users')->num_rows();

        $this->session->set_userdata('totalresults', $totalresults);

        //initializing & configuring paging
        $this->load->library('pagination');
        $config['base_url'] = site_url('/backOfficeUsers/displayAllUsers/'.$limit.'/');
        $config['total_rows'] = $totalresults;
        $config['per_page'] = $limit;
        $config['uri_segment'] = 4;
        $config['full_tag_open'] = '<div class="dataTables_paginate paging_bootstrap pagination"><ul>';
        $config['full_tag_close'] = '</ul></div>';
        $config['cur_tag_open'] = '<li><a href=# style="color:#ffffff; background-color:#258BB5;">';
        $config['cur_tag_close'] = '</a></li>';
        $config['num_tag_open'] = '<li>';
        $config['num_tag_close'] = '</li>';

        $this->pagination->initialize($config); 

       //....irelevant content.....

    } // end of function displayAllUsers

任何帮助都将深受赞赏。

1 个答案:

答案 0 :(得分:1)

不应该那么难。事实上,如果你理解分页,你可以很明显地获得X和Y的价值。

首先,X和Y之间的差异当然等于$limit - 1. X的值应等于变量$offset加1(偏移通常开始从0而不是1)。从那里,我确信你明白Y等于$offset + $limit

$X = $offset + 1;
$Y = $offset + $limit;

如果你在最后一页,你要确保你有正确的Y值。你需要检查你从数据库中获取的总行数,如果它低于每页的限制,则将其更改为类似

的内容
if (fetched_rows < $limit)
{
    $Y -= ($limit - fetched_rows); 
}