PHP Codeigniter中的分页(url不适用于下一页)

时间:2013-10-23 15:31:03

标签: php codeigniter pagination

我有一个图片库;我正在尝试做的是显示图像的简单分页;在每个页面中我只显示18张图片的方式! 所以我在我的控制器中尝试了以下代码:

    $this->load->model('Gallery_model');
    $data['images'] = $this->Gallery_model->get_images(18,  $this->uri->segment(3));
    $this->load->library('pagination');
    $config['base_url'] = 'http://localhost/Gallery/index.php/gallery/index/';                
    $config['total_rows'] = count($this->Gallery_model->get_all_images());
    $config['per_page'] = 18;
    $this->pagination->initialize($config);
    $data['main_content'] = "gallery";
    $this->load->view('includes/template', $data);

在我的Gallery_model中,我处理的方式是每次基于uri->段显示18张图像。如果您需要我的模型方法:

public function get_images($per_page, $segment) {

    $files = scandir($this->gallery_path . "\output");
    $newFiles = array_diff($files, array('.', '..', 'thumbs'));

    $images = array();

    foreach ($newFiles as $file) {

        $images[] = array(
            'url' => $this->gallery_path_url . 'output/' . $file,
            'thumb_url' => $this->gallery_path_url . 'output/' . $file,
        );
    }

    $newImage = array();
    if ((($segment * $per_page)+$per_page) < count($images)) {

        for ($i = 0; $i < $per_page; $i++) {

            $newImage[$i] = $images[($segment * $per_page) + $i];
        }
    }else
    {
        for ($i = 0; $i < count($images)-($segment * $per_page); $i++) {

            $newImage[$i] = $images[($segment * $per_page) + $i];
        }
    }
    return $newImage;
}

    public function get_all_images() {
    $files = scandir($this->gallery_path . "\output");
    $newFiles = array_diff($files, array('.', '..', 'thumbs'));
    $images = array();
    foreach ($newFiles as $file) {

        $images[] = array(
            'url' => $this->gallery_path_url . 'output/' . $file,
            'thumb_url' => $this->gallery_path_url . 'output/' . $file,
        );
    }


    return $images;

}

现在一切都很好我有25张图片(超过18张图片),我应该有两页,我有2页,但问题是当我点击第二页时,网址就到了。 ... / index / 18而不是.... / index / 1

可能是什么问题?

我可能不太清楚,如果您需要更多说明,请告诉我。

由于

2 个答案:

答案 0 :(得分:2)

分页是可以的,它会去/ index / 18,使用这个uri -

  

段(3)作为偏移量   您的查询以获取下一组   结果

答案 1 :(得分:1)

我的理解是你希望下一页索引/ 2然后索引/ 3等等而不是索引/ 18。 Codeigniter默认情况下会将url添加到下一页的起始位置,这意味着页面将从数据库中的记录18开始。

我认为你想要的是

  

$ config ['use_page_numbers'] = TRUE;   默认情况下,URI段将使用您要分页的项的起始索引。如果您希望显示实际页码,请将其设置为TRUE。

http://ellislab.com/codeigniter/user-guide/libraries/pagination.html