## 分页两个步骤
1. 分页数据的获取
2. 分页的页码链接实现
## 分页数据的获取
就是知道我们数据每页最多显示多少条,然后查询出每页对应的数据条数。注意下一页的数据不能和前面的重复。
这时候有两种查询方式:limit和page 连贯操作。
比方我有100条数数据 分10页显示,每页10条。
第一页怎么获取呢?
limit(0, 10)、page(1,10)
第N页呢 limit( (N-1)*10+1, 10)、page(N,10)
从这看出 page 比较方便 只要传多少页,每页多少条就行了。不用计算。
前面“列表”章节里我们也展示过page的使用了。
现在我们接着说分页的第二步。
## 分页的页码链接实现。
可能听着比较绕,我附个图:
![2015-07-01/5593373dc6b89](http://box.kancloud.cn/2015-07-01_5593373dc6b89.png)
大家应该知道是什么了。
这个是帮助大家定位的,我看到了第几页,有没有到所有数据的末尾。
下面是我的实现:
~~~
/* 分页 */
$total = $postModel->where($map)->count();
$page = new \Think\Page($total, $list_row);
//$page->rollPage = 5;
$page->setConfig('prev','上一页');
$page->setConfig('next','下一页');
$page->setConfig('theme','<div class="pager">%UP_PAGE% %DOWN_PAGE%</div>');
$p = $page->show();
$this->assign('_page', $p? $p: '');
~~~
分页一定要用当前数据的查询条件,不然数量和查询结果不一样就是bug了。
计算总数, 引入分页类,传入总数和每页数量。
如果要定制,像我一样,在page类show方法前面,设置page类的属性和配置参数。
以为目前文章数量比较少,我为了测试分页页码样式,我先写死每页数量为5。调试好了注释掉。
具体分页类怎么使用,大家看 官方手册[《数据分页》](http://document.thinkphp.cn/manual_3_2.html#data_page) 章节,里面还提了用分页类计算firstRow 也就是limit的第一个参数。
我的分页页码效果:
![2015-07-01/5593396c07117](http://box.kancloud.cn/2015-07-01_5593396c07117.png)
就“上一页”和“下一页” 两个。符合博客的风格。
通过 搜索和分页,我们就能定位到久远的文章了。
- 序
- 前言
- 内容简介
- 目录
- 基础知识
- 起步
- 控制器
- 模型
- 模板
- 命名空间
- 进阶知识
- 路由
- 配置
- 缓存
- 权限
- 扩展
- 国际化
- 安全
- 单元测试
- 拿来主义
- 调试方法
- 调试的步骤
- 调试工具
- 显示trace信息
- 开启调试和关闭调试的区别
- netbeans+xdebug
- Socketlog
- PHP常见错误
- 小黄鸭调试法,每个程序员都要知道的
- 应用场景
- 第三方登录
- 图片处理
- 博客
- SAE
- REST实践
- Cli
- ajax分页
- barcode条形码
- excel
- 发邮件
- 汉字转全拼和首字母,支持带声调
- 中文分词
- 浏览器useragent解析
- freelog项目实战
- 需求分析
- 数据库设计
- 编码实践
- 前端实现
- rest接口
- 文章发布
- 文件上传
- 视频播放
- 音乐播放
- 图片幻灯片展示
- 注册和登录
- 个人资料更新
- 第三方登录的使用
- 后台
- 微信的开发
- 首页及个人主页
- 列表
- 归档
- 搜索
- 分页
- 总结经验
- 自我提升
- 进行小项目的锻炼
- 对现有轮子的重构和移植
- 写技术博客
- 制作视频教程
- 学习PHP的知识和新特性
- 和同行直接沟通、交流
- 学好英语,走向国际
- 如何参与
- 浏览官网和极思维还有看云
- 回答ThinkPHP新手的问题
- 尝试发现ThinkPHP的bug,告诉官方人员或者push request
- 开发能提高效率的ThinkPHP工具
- 尝试翻译官方文档
- 帮新手入门
- 创造基于ThinkPHP的产品,进行连带推广
- 展望未来
- OneThink
- ThinkPHP4
- 附录