CodeIgniter 3分页不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeIgniter 3分页不起作用相关的知识,希望对你有一定的参考价值。
我重新访问了CodeIgniter的分页类。
我在网上看了很多教程,因为文档缺乏细节。
所以我复制粘贴教程并更改了一些相关的细节以适应我的随机表。
控制器:
public function sample_pagination($offset = 0){
$num_rows=$this->db->count_all("genre");
$config['base_url'] = base_url().'pages/sample_pagination/';
$config['total_rows'] = $num_rows;
$config['per_page'] = 5;
$config['num_links'] = $num_rows;
$config['use_page_numbers'] = TRUE;
$this->pagination->initialize($config);
$data['records']=$this->db->get('genre', $config['per_page'],$offset);// take record of the table
$header = array('genre_Id','name'); // create table header
$this->table->set_heading($header);// apply a heading with a header that was created
$this->load->view('pages/sample',$data); // load content view with data taken from the users table
}
风景:
<body>
<div id="container">
<h1>Welcome to CodeIgniter Pagination System!</h1>
<div id="body">
<?php echo $this->table->generate($records); ?>
<?php echo $this->pagination->create_links(); ?>
</div>
<p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds</p>
</div>
</body>
它工作正常,我唯一的问题是,我有数据库表格类型有14个条目,视图上的结果取决于per_page设置。
例如上面说的,我将per_page设置为5.它将显示每页5行的分页与3个分页链接<1 2 3>
问题是细节只显示到表格的第8行,它有14行并重复。
第一页是
1 2 3 4 5
第二页是
3 4 5 6 7
第三页是
4 5 6 7 8
我指的是上面的genre_id。我的表格类型有genre_id作为PK,genre_name作为col。所以它只有2列。
无论如何,如果我将Per_page设置为1,它会从genre_id 1到14正确显示所有表行。
我很困惑这是怎么回事?我通过自己动手学习,所以我尝试通过在线复制教程来做到这一点,所以我可以看到它是如何工作但我很困惑。
我是这样做的:
class Example extends CI_Controller
{
public function index($page = 1){
// Select the table
$this->db->from('table_name');
// Total rows
// NULL for the table name we already specified it
// FALSE to not clear any filters if you used some before (e.g.: WHERE clause)
$total_rows = $this->db->count_all_results(NULL, FALSE);
// Load the pagination
$config['base_url'] = base_url('example');
$config['total_rows'] = $total_rows;
$config['per_page'] = 1;
$config['reuse_query_string'] = TRUE;
$config['use_page_numbers'] = TRUE;
$this->pagination->initialize($config);
// Prepare the limit to use with the query
$limit = array(
$config['per_page'],
($page - 1) * $config['per_page']
);
// Set the limit
$this->db->limit($limit[0], $limit[1]);
// NULL as we already specified the table before
$query = $this->db->get(NULL);
// Get the results
$result = $query->result_array();
// Create pagination links
$pagination = $this->pagination->create_links();
// Prepare data to pass it to the view page
$view = array(
'rows' => $result,
'pagination' => $pagination
);
// Pass data to the view
$this->load->view('page', $view):
}
}
我认为您使用的教程是错误的,这不是偏移的工作原理。
文档:
$this->db->count_all_results()
我只是将其删除:或将其设置为FALSE。
$config['use_page_numbers'] = TRUE;
在阅读了2个答案之后,我逐渐明白弄错了我的分页是偏移。由于我设置使用页码为true,每次我点击下一页时它发送下一页号作为值(第2页为2),因此偏移量将设置为2,因此第二页开始于第3行。
这样做
function sample_pagination()
{
$num_rows=$this->db->count_all("genre");
$config['base_url'] = base_url().'pages/sample_pagination/';
$config['total_rows'] = $num_rows;
$config['per_page'] = 5;
$config['uri_segment'] = 2; # added -
$config['num_links'] = $num_rows;
$this->pagination->initialize($config);
$page = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0;
$data['records']=$this->db->get('genre', $config['per_page'],$page);
/*No Tested below this*/
$header = array('genre_Id','name');
$this->table->set_heading($header);
$this->load->view('pages/sample',$data);
}
确保页面加载没有index.php
和段是正确的。
以上是关于CodeIgniter 3分页不起作用的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 codeigniter 中的分页不起作用? (404 未找到)
modx - 当我在同上片段中使用“&documents =”参数时,分页不起作用