【问题标题】:Codeigniter Pagination Result Record OrderCodeigniter 分页结果记录顺序
【发布时间】:2014-04-18 05:30:09
【问题描述】:

我正在开发一个 codeigniter 项目。我正在向用户显示数据库中的记录,为此我使用了分页,每页显示 20 条记录。在显示页面上,我设置了一个表格列,其中我对记录进行了编号,第一页显示 1-20 条记录,第二页显示 20-40 的记录,但数字列计数器再次从 1-20 开始,而不是显示 21-40 .

这是我的控制器记录:

$config = array();
        $config["base_url"] = 'http://localhost:81/ebook/' . "index.php/main/index";
        $config["total_rows"] = $this->book_data->record_count();
        $config["per_page"] = 20;
        $config["uri_segment"] = 3;

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

        $page = ($this->uri->segment(3)) ? $this->uri->segment(3) : 0;

        $data["result"] = $this->book_data->get_data($config["per_page"], $page);

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

        $this->load->view('home', $data);

这是我的查看代码:

<tbody>
                        <?php

                        $x=0;

                        foreach ($result as $row) {?>

                        <tr>
                            <td ><?php echo $x = $x+1; ?></td>
                            <td id="book" class="b"><?php echo $row->TITLE; ?></td>
                            <td id="book" class="b"><?php echo $row->AUTHOR; ?></td>
                            <td id="book" class="b"><?php echo $row->PUBLISHER; ?></td>
                            <td><?php echo $row->PAGES; ?></td>
                            <td><a href="<?php echo $row->PATH; ?>" style="text-decoration:none;" target="_blank"><input id="button" class="btn btn-success" type="submit" value="View" name="submit"></a></td>
                        </tr>

                        <?php } ?>

                    </tbody>

                </table>
                <hr>
            </div>
                <div id="page" style="float: left; width: 100%; text-align: center">
                    <p><?php echo $links; ?></p>
                </div>

【问题讨论】:

  • get_data 是否定义了查询的偏移量?通常我会获得所需的偏移量并将其传递给查询函数(连同限制)以获取正确的数据集。
  • @xd6_ 它不是 jquery 的偏移量

标签: php codeigniter pagination


【解决方案1】:

当然可以 - 您每次都是从 $x = 0 开始的。

传递你的(每页价值*(page num - 1))+ 1

你会得到它。

(您也可以使用 $x++ 递增;而不是 $x = $x + 1。效果相同,看起来更有经验;-))

【讨论】:

    【解决方案2】:

    当您初始化计数器$x 时,您需要考虑per_page 值。 所以把$x = 0改成这样:

    $x =  isset($_GET["per_page"]) ? $_GET["per_page"] : 0;
    

    正如@jmadsen 提到的,使用$x++ 而不是$x=$x+1

    【讨论】:

      【解决方案3】:

      从控制器传递 $x 一些值,例如默认情况下传递 1 $x=value_from_controller_data_array 当你在第 1 页时,当你下次点击第 2 页按钮时,只需通过链接传递 record_to_display_per_page * (page_number - 1) ) + 1到您的控制器,下次视图将加载所需的结果时

      【讨论】:

      • @jmadsen 如果您认为答案描述得足够好,请投票给答案
      • 我在评论您如何简单地重写已经给出的答案。不,我认为投票不够好
      猜你喜欢
      • 2013-08-24
      • 1970-01-01
      • 2014-03-26
      • 2014-09-21
      • 1970-01-01
      • 2014-10-08
      • 2013-09-12
      • 2017-10-17
      • 1970-01-01
      相关资源
      最近更新 更多