Codeigniter分页无法正常工作

时间:2017-06-23 17:06:13

标签: php codeigniter pagination

我使用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项

老实说,我不明白问题在哪里,我知道,请帮忙。谢谢。

1 个答案:

答案 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。现在,您将获得预期的结果。