当我点击分页的下一页时,运行404错误

时间:2015-02-04 18:21:30

标签: codeigniter pagination codeigniter-2

我试图在CodeIgniter中进行分页,但我猜错了。

  • 分页链接显示在页面底部。 (OK)
  • 当我单击分页链接上的数字时,会发生错误(404)。 (这是我无法解决的问题)

我的代码如下。

blog_model

function posts($cat_id='')
{
    $config['base_url']     = 'http://example.com/blog';
    $config['total_rows']   = 3;
    $config['per_page']     = 1;
    $config['num_links']    = 20;

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

    if($cat_id) $this->db->where('cat_id',$cat_id);
    $query = $this->db->get('posts', $config['per_page'], $this->uri->segment(3));
    return $query->result();
}

blog_view

<?php echo $this->pagination->create_links(); ?>

1 个答案:

答案 0 :(得分:0)

CI中的分页可能会变得棘手。 分页只是构建链接,您仍然需要为数据库查询正确构建limitoffset

您必须通过网址

将页码传递到您的函数中
function posts($cat_id='', $page = FALSE)
{
    $config['base_url']     = 'http://example.com/blog';
    $config['total_rows']   = 3;
    $config['per_page']     = 1;
    $config['num_links']    = 20;
    $config['uri_segment']  = 3; // <-  verify this one

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

    // set the page to 1 if the page is missing from the URL
    $page   = ($page === FALSE ? 1 : $page); 

    // calculate the offset for the query
    $offset = ($page - 1 ) * $config['per_page'];

    if($cat_id) $this->db->where('cat_id',$cat_id);
    $query = $this->db->get('posts', $config['per_page'], $offset);
    return $query->result();
}

根据评论编辑:

我也不确定您的段3对于页码的位置是否正确。如果是/blog/posts/cat_id/1,则页码(您的偏移量)位于第4段。