THINKPHP中分页代码的问题?
怪我咯
怪我咯 2017-04-11 09:19:37
[PHP讨论组]
$User = M('User'); // 实例化User对象
$count      = $User->where('status=1')->count();// 查询满足要求的总记录数
$Page       = new \Think\Page($count,25);// 实例化分页类 传入总记录数和每页显示的记录数(25)
$show       = $Page->show();// 分页显示输出
// 进行分页数据查询 注意limit方法的参数要使用Page类的属性
$list = $User->where('status=1')->order('create_time')->limit($Page->firstRow.','.$Page->listRows)->select();
$this->assign('list',$list);// 赋值数据集
$this->assign('page',$show);// 赋值分页输出
$this->display(); // 输出模板

其中我对第二句查询满足条件的总记录数还有点迷惑
$count = $User -> count();如果这样写的话不就是查询表中所有数据的总记录数,这样理解有问题么?这样写在页面是显示不出来的!

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(5)
PHPz
$count = $User->where('status=1')->count();// 查询满足要求的总记录数

满足要求?要求是什么?要求是 where('status=1'),当然也就是数据表中 status=1 的记录数并不是你说的要查询表中所有数据的总记录数。

巴扎黑

理解没问题,主要去除所有符合条件的数据的数量就可以

不管是status=1还是sex=man

迷茫

count不带条件是全部数据,你的不显示是有多种原因,需要仔细排查,多看一下源码,如图部分

PHPz

分页其实很简单,一个是要知道2个参数

总记录条数,每页的记录条数。比方说78条数据,每页10条,78/10取整,才知道要分8页
limit($Page->firstRow.','.$Page->listRows)这个其实是通过当前页码去换算,要把第几条到第几条的数据select出来。
比如说,按照刚才的78,第八页,那我select语句其实就是 limit 70 10 , 从第70条数据开始,查询10条数据

迷茫

在配置文件中开启页面调试

'SHOW_PAGE_TRACE' =>true,

查看下sql语句是否有 select count(*)... 语句,下断点,单步调试,看看第二步有没有正确获取到$count

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号