【问题标题】:Codeigniter Pagination link is not workingCodeigniter 分页链接不起作用
【发布时间】:2012-10-25 12:04:58
【问题描述】:

stackoverflow 上有这么多分页问题,​​但我用 codeigniter 看不到它,所以就这样吧。

我们需要看看这些图片

这里

这里

我的桌子上有十条记录,链接失效了,这里是controller/index

$query = $this->m_kategorimaterial->get();  
    $config['base_url'] =  base_url().'index.php/c_kategorimaterial/index/';
    $config['total_rows'] = $query->num_rows();
    $config['per_page'] = 5; 
    $this->pagination->initialize($config);
    $data['rows'] = $query->result();
    $data['title'] = 'QB Kategori Material';
    $this->load->view('menu',$data);
    $this->load->view('v/vkategorimaterial');

这是模型

 $this->db->order_by('Kode_Kategori_Material_Jasa','DESC');
    $query = $this->db->get('ms_kategori_material');
    return $query;

为什么链接失效了?我该如何解决?谢谢stackoverflow

【问题讨论】:

  • 你能告诉我,当你在第一页、第二页和第三页时,分别生成了哪些 URL。
  • 对不起,我不明白你的意思,所以我需要再做一个类似的页面来显示第二、第三个列表等等?
  • 不,我的意思是请分享完整的 url,当页面第一次加载时,然后当你点击第二个链接时等等。
  • 啊等等,分页消失了!我尝试让它们首先显示\
  • 正如 Rick Calder 所说,您需要将偏移量和限制传递给模型,才能从给定的偏移量中仅获取 5 条记录

标签: php codeigniter hyperlink controller pagination


【解决方案1】:

您在哪里调用数据收集查询中的偏移量?您需要为查询提供偏移量,以便它知道要获取哪些记录。

您还必须将 total_rows 更改为第二个查询,以查询整个表的总记录,因为您的新查询只返回一页的足够记录。

型号:

$this->db->order_by('Kode_Kategori_Material_Jasa','DESC');
$query = $this->db->get('ms_kategori_material', $limit, $offset);
return $query;

function getRecordCount() {

$query=$this->db->get('ms_kategori_material');
$result = $query->num_rows();
return $result;
}

控制器:

$config['base_url'] =  base_url().'index.php/c_kategorimaterial/index/';
$config['total_rows'] = $query->num_rows();
$config['per_page'] = 5; 
$this->pagination->initialize($config);
$query = $this->m_kategorimaterial->get($config['per_page'],$this->uri->segment(3));
$data['rows'] = $this->m_kategorimaterial->getRecordCount();
$data['title'] = 'QB Kategori Material';
$this->load->view('menu',$data);
$this->load->view('v/vkategorimaterial');

您似乎可以对这里发生的事情做一个简单的解释。要进行分页 CI(或任何应用程序)至少需要 3 个变量。

limit - 我应该在每页显示多少条记录,因此我的查询返回多少条记录。

offset - 查询从哪里开始询问记录,对于 CI,这是 uri 段的来源,它部分由限制控制,因此如果您有 8 作为限制(每页),则每个查询都会将偏移量增加 8。所以第 1 页从数据库开始查询前 8 条记录,第 2 页从第 9 条开始查询前 8 条记录,依此类推。

总记录 - 这是整个表中查询的总匹配记录。这就是应用程序如何确定总共有多少页以及是否需要第二页。此查询没有限制或偏移量,因为您想要所有匹配的记录而不是部分返回。

数据的实际分页是由数据库查询来进行的。 CI 只是告诉数据库它需要哪些记录。

希望这有助于解决问题。

【讨论】:

  • 然后我将模型更改为$query = $this->db->get('ms_kategori_material',5,0); 仍然没有显示分页我正在使用您的控制器
  • 由于分页链接,你能给我一个例子吗?我在数据库中有 10 条记录,我想让它每页 5 条记录,所以分页将显示第一页和第二页。第一个页面将从kkmj010 显示到kkmj006,第二个页面将从kkmj005 显示到kkmj001
  • 已编辑答案以显示记录数,即假设您的模型称为 m_kategorimaterial 它返回完整记录,另一个查询一次返回 5 个数据,CI 为您完成其余的工作。
【解决方案2】:

尝试设置

$config['uri_segment'] = 3;

这里是您需要的完整信息 > http://codeigniter.com/user_guide/libraries/pagination.html

【讨论】:

  • 当我将模型更改为 $query = $this->db->get('ms_kategori_material',2); 并将控制器更改为 $config['per_page'] = 5; 时,分页未显示
  • 因为您正在为查询设置总行数,正如我所说,您需要第二个查询来获取总行数。尝试手动将总行数设置为 10
  • 已编辑答案以解释这里发生了什么,希望能帮助您了解您所缺少的部分。
猜你喜欢
  • 2014-02-03
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
  • 2017-08-01
相关资源
最近更新 更多