【问题标题】:use_page_numbers in codeigniter pagination class?在codeigniter分页类中使用_page_numbers?
【发布时间】:2012-03-31 11:15:35
【问题描述】:

在我的分页类中使用设置为 true 的 use_page_numbers 配置有问题! 当我点击第 2 页的链接时,它从数据库中检索到的行数是正确的,但问题是: 第二页的第一行是第一页的第三行!这意味着第 2 页从数据库中的同一行开始,该行已在第三行的第一页中检索到。例如:

第 1 页:10、11、12、13、14

第 2 页:12、13、14、15、16

当然,第 3 页从第 2 页的第二行开始:

第 3 页:13、14、15、16、17

这是我的代码:

function get_brands_list($options = array())
{
    //Pagination config
    $config['base_url'] = base_url() . 'admin/brands/page/';
    $config['total_rows'] = $this->db->get('mg_brands')->num_rows();
    $config['per_page'] = 5;
    $config['num_links'] = 4;
    $config['uri_segment'] = 4;
    $config['use_page_numbers'] = TRUE;

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

    $offset = $this->uri->segment(4, 0);
    $this->db->order_by('brand_Sort', 'ASC');
    $query = $this->db->get('mg_brands', $config['per_page'], $offset);

    if(isset($options['brand_Id']) || isset($options['brand_Name']))
        return $query->row(0);

    return $query->result();
} 

【问题讨论】:

    标签: codeigniter pagination


    【解决方案1】:

    您在计算偏移变量时遇到问题....试试这个:

    $page_num = $this->uri->segment(4, 0);
    
    $offset = ($page_num - 1) * $config['per_page'];
    

    【讨论】:

    • 用这个,其他页面的问题已经解决了,但是第一页。返回第一页时出现错误:错误编号:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 '-5, 5' 附近使用正确的语法 SELECT * FROM (mg_brands) ORDER BY ABS(brand_Sort) ASC LIMIT -5, 5
    • 对于第一页,将您的值设置为 1 而不是 0。
    猜你喜欢
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多