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 5.0创建图形的巧妙方法
Oct 12 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
Jun 26 PHP
PHP中定义数组常量(array常量)的方法
Nov 17 PHP
php mysql 封装类实例代码
Sep 18 PHP
PHP使用strrev翻转中文乱码问题的解决方法
Jan 13 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
php的常量和变量实例详解
Jun 27 PHP
php获取文章内容第一张图片的方法示例
Jul 03 PHP
php的命名空间与自动加载实现方法
Aug 25 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
Dec 01 PHP
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
Mar 29 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
php实现四舍五入的方法小结
2015/03/03 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
由document.body和document.documentElement想到的
2009/04/13 Javascript
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
javascript:文字不间断向左移动的实例代码
2013/08/08 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
JavaScript中switch判断容易犯错的一个细节
2014/08/27 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
实例详解带参数的 npm script
2019/05/28 Javascript
Js通过AES加密后PHP用Openssl解密的方法
2019/07/12 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
Python生成随机数的方法
2014/01/14 Python
vc6编写python扩展的方法分享
2014/01/17 Python
Python中IPYTHON入门实例
2015/05/11 Python
利用python修改json文件的value方法
2018/12/31 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
瑞典香水、须后水和美容产品购物网站:Parfym-Klick.se
2019/12/29 全球购物
大专自我鉴定范文
2013/10/01 职场文书
个人对照检查材料
2014/02/12 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
居委会工作总结2015
2015/05/18 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript