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->from()

$this->db->count_all_results()

$this->db->limit()

$this->db->get()

另一答案

我只是将其删除:或将其设置为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 未找到)

在Codeigniter中搜索的分页不起作用

modx - 当我在同上片段中使用“&documents =”参数时,分页不起作用

Spring Boot 版本 2.0.3.RELEASE 中的分页不起作用

ExtJs 网格分页不起作用

DataTables - 排序,搜索,分页不起作用