thinkphp实现数组分页示例


Posted in PHP onApril 13, 2014

在thinkphp的框架下实现分页。公司的网站基于Thinkphp框架,一直久闻thinkphp的大名,终于有机会实战了。thinkphp是MVC架构的,MVC对于任何ITers来说都不陌生,模型(model)-视图(view)-控制器(controller)。他将逻辑和数据分开处理,少了很多繁琐的过程。其实在官方的资料中已经详细的介绍了怎么分页,传送门:http://document.thinkphp.cn/manual_3_2.html#data_page

可是并不适用于数据已经从DB中取出,并且转换为数组的情况,我接触PHP满打满算2个月,接触thinkphp不过3周。之前把很多时间花在了官方文档上,去熟悉thinkphp。也算是磨刀不误砍柴工吧。这里把官方文档当作比较进行阐述:

(只举文档上第一个方法):利用Page类和limit方法,代码如下:

$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(); // 输出模板

基本思想就是先计算总的记录数,然后根据所设置的每页显示的记录数来分页。使用Thinkphp封装好的Page类可以很方便的实现。实现的重点在第11行,limit方法就是按照一定的规则从查询数据中抽取数据。但是数据已经取出又怎么办呢?

我们用到了php自带的函数array_slice( )。定义在此:http://www.php.net/manual/en/function.array-slice.php

其实就是数组版的limit方法。好了,工具找到了,实现就很容易了。直接上代码:

public function nodeslist(){
$portal = new PortalApi;
$nodelist = $portal->getNodeLists($this->uid);$count = count($nodelist['data']);
$p = new Page($count,10);
$lists = array_slice($nodelist['data'], $p->firstRow,$p->listRows);
$page = $p->show();
$this->assign('page',$page);
$this->assign('nodes',$lists);
$this->display(); 
 }

代码有删减,只保留实现细节。

第3行getNodeLists方法从数据库中取出数据并赋值给数组nodelist。

第5行count计算出数组元素的个数。

第6行为Page类传入参数。

第7行的array_slice函数代替了limit方法。原理相同。

第9行用assign方法为模版赋值。定义在此:http://document.thinkphp.cn/manual_3_2.html#assign

第10行同理。

下面是view中的代码:

 <div class="page-list">
{$page}
 </div>

如果仅仅这样的话,显示出来的效果并不友好。再找出来Page类的定义:
// 分页显示定制
private $config= array(
'header' => '<span class="rows">共 %TOTAL_ROW% 条记录</span>',
'prev' => '上一页',
'next' => '下一页',
'first'=> '第一页',
'last' => '...%TOTAL_PAGE%',
'theme'=> '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%',

在页数前后加入空格。现在可以看效果了:

thinkphp实现数组分页示例

跟大背景还是挺配,当然,可以根据自己的情况设置不同的效果。

PHP 相关文章推荐
PHP与MySQL开发中页面出现乱码的一种解决方法
Jul 29 PHP
解析关于wamp启动是80端口被占用的问题
Jun 21 PHP
php中的静态变量的基本用法
Mar 20 PHP
PHP header()函数常用方法总结
Apr 11 PHP
php采用file_get_contents代替使用curl实例
Nov 07 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
理解PHP中的Session及对Session有效期的控制
Jan 08 PHP
PHP中array_keys和array_unique函数源码的分析
Feb 26 PHP
详解php中反射的应用
Mar 15 PHP
又拍云异步上传实例教程详解
Apr 19 PHP
PHP单态模式简单用法示例
Nov 16 PHP
万能的php分页类
Jul 06 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 #PHP
php读取大文件示例分享(文件操作类)
Apr 13 #PHP
php使用smtp发送支持附件的邮件示例
Apr 13 #PHP
php实现上传图片生成缩略图示例
Apr 13 #PHP
php使用curl和正则表达式抓取网页数据示例
Apr 13 #PHP
PHP header()函数常用方法总结
Apr 11 #PHP
开源php中文分词系统SCWS安装和使用实例
Apr 11 #PHP
You might like
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
基于vue循环列表时点击跳转页面的方法
2018/08/31 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
2019/08/14 Javascript
java遇到微信小程序 &quot;支付验证签名失败&quot; 问题解决
2019/12/22 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
Python随机读取文件实现实例
2017/05/25 Python
flask中使用蓝图将路由分开写在不同文件实例解析
2018/01/19 Python
详解Python中where()函数的用法
2018/03/27 Python
python实现年会抽奖程序
2019/01/22 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
python numpy实现rolling滚动案例
2020/06/08 Python
如何解决python多种版本冲突问题
2020/10/13 Python
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
员工拓展培训方案
2014/02/15 职场文书
研讨会主持词
2014/04/02 职场文书
计生工作先进事迹
2014/08/15 职场文书
幼儿园五一劳动节活动总结
2015/02/09 职场文书
幼儿园教师求职信
2015/03/20 职场文书
教师节寄语2015
2015/03/23 职场文书
冰雪公主观后感
2015/06/16 职场文书
网络营销实训总结
2015/08/03 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书