关于ThinkPHP2.0 中的Page.class.php

原创
2016/10/18 19:59
阅读数 32

TP中的分页类有一个BUG:假如说现在有两页的记录,我在每条记录后都做了逻辑删除按钮,当我一条条把第二页的记录删完后,并不会自动跳回第一页。这就说明这个分页类有问题。于是我把从分页类中得到的参数一个个输出看是否合理。这样之后发现 $firstRow 是5而不是0(每页显示条数$pageSize是5),这直接导致了去数据库中获取记录的偏移量出现了偏差。然后我就要去分页类中找为什么它会是5。
    结果发现,当前页在构造方法里有一个初始值,由我们点击的页数 1 2 3...(也就是$_GET['p'])来决定。也就是这个当前页的数值决定了$firstRow的值。在构造方法外,show()这个方法里才根据总页数对当前页进行了限制,但在这个限制之后,$firstRow的值没有再发生变化,导致了结果的错误。所以要进行修改!!!!

    将show()方法中的如下代码剪切到构造方法__construct()里,而且要在给firstRow赋值的上端:

        $this->totalPages = ceil($this->totalRows / $this->listRows); //总页数
        if(!empty($this->totalPages) && $this->nowPage > $this->totalPages) {
            $this->nowPage = $this->totalPages;
        }

    这样,在尾页把所有数据删除不再显示后,能够自动跳回到上一页。

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部