多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 分页两个步骤 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) 就“上一页”和“下一页” 两个。符合博客的风格。 通过 搜索和分页,我们就能定位到久远的文章了。