【问题标题】:Pagination in Codeigniter creating strange linksCodeigniter 中的分页创建奇怪的链接
【发布时间】:2016-05-26 08:09:45
【问题描述】:

我在 Codeigniter 中做一个分页系统,但有些东西不能正常工作。

我的搜索总共给出了 5 个结果。

如果我每页放 1 个项目,它会创建带有链接的分页

example.com/suppliers/   Page 1
example.com/suppliers/1   Page 2
example.com/suppliers/2   Page 3
example.com/suppliers/3   Page 4
example.com/suppliers/4   Page 5

这是正确的

但是如果我每页放 2 个项目 tt 会显示为

example.com/suppliers/   Page 1
example.com/suppliers/2   Page 2
example.com/suppliers/4   Page 3

如果我每页放 3 个项目,它会显示为

example.com/suppliers/   Page 1
example.com/suppliers/3   Page 2

所以它是以相当于每页结果的数量级跳转页面。

这是用于生成分页的代码:

//Create the pagination links
$config['base_url'] = base_url().'/suppliers';
$config['total_rows'] = $this->data['count_suppliers'];
$config['per_page'] = RESULTS_IN_SEARCH;    
$config['full_tag_open'] = '<ul class="pagination">';
$config['full_tag_close'] = '</ul>';
$config['prev_tag_open'] = '<li class="prev">';
$config['prev_tag_close'] = '</li>';
$config['prev_link'] = '<i class="fa fa-chevron-left"></i>';
$config['next_tag_open'] = '<li class="next">';
$config['next_tag_close'] = '</li>';
$config['next_link'] = '<i class="fa fa-chevron-right"></i>';
$config['cur_tag_open'] = '<li class="active"><a href="#">';
$config['cur_tag_close'] = '</a></li>';
$config['num_tag_open'] = '<li>';
$config['num_tag_close']='</li>';

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

$this->data['pagination']=$this->pagination->create_links();

在所附图片中,您可以看到结果。

Pagination problem

已解决:添加 $config['use_page_numbers'] = TRUE;到分页配置,并在对数据库进行查询时减去 1,因此第 1 页搜索 LIMIT 0, 3 而不是 LIMIT 3,3

【问题讨论】:

  • 你可以试试$config['use_page_numbers'] = TRUE;
  • 我已经添加了您的建议,然后在实际对数据库进行查询时,将页码减去 1 即可。它不是最时尚的,但它确实有效。谢谢。把它作为答案,我会投票。
  • 你可以编辑我的答案我很不知道英语。我明白,但不能改正。

标签: php codeigniter


【解决方案1】:

如果

,则必须将页码的控制器功能设置为0
public function show_entries($page = 0) {          
    ----
    $config['use_page_numbers'] = TRUE;
    $per_page=2; //what ever
    $config["per_page"] = $per_page;
    -----
}

【讨论】:

  • 我已经在顶部设置了这样的页面,并且 per_page 正在从常量中检索
  • 你用这个分页的目的是什么?
  • 在不同的页面中获取结果,而不是在一页中显示 50 个供应商。
  • $config['use_page_numbers'] = TRUE;使用这个
【解决方案2】:

尝试使用以下代码:-

$config['base_url'] = site_url('suppliers/' . $id);

如果不工作,请添加以下代码:-

$config['uri_segment'] = 4;
$page = ($this->uri->segment($config['uri_segment'])) ? $this->uri->segment($config['uri_segment']) : 0;
$data['topics_array'] = $this->forum->get_topics($id, $config['per_page'], $page);
$data['pagination'] = $this->pagination->create_links();

也请参考link

【讨论】:

  • 这没有意义,codeigniter 会在为每个链接添加的页面之上构建当前页面的链接。
【解决方案3】:

我认为问题出在base_url()。您可以使用site_url() 而不是base_url();,所以请查看here 的区别。

Base_url - 这是包含您的分页的控制器类/函数的完整 URL。在上面的示例中,它指向一个名为“Test”的控制器和一个名为“page”的函数。请记住,如果您需要不同的结构,您可以re-route your URI

$this->load->library('pagination');

$config['base_url'] = base_url().'/suppliers';
$config['total_rows'] = 200;
$config['per_page'] = 20;

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

echo $this->pagination->create_links();

请阅读更多关于分页的信息here

【讨论】:

    【解决方案4】:

    您可以尝试在您的数组配置键$config['use_page_numbers'] = TRUE 中添加获取数字页面,并且不要在 url 中获取起始数字项。

    【讨论】:

      猜你喜欢
      • 2014-01-29
      • 2012-06-06
      • 2018-05-05
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 2013-10-28
      • 2020-10-19
      相关资源
      最近更新 更多