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 相关文章推荐
对javascript和select部件的结合运用
Oct 09 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
PHP实现邮件群发的源码
Jun 18 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
Apr 24 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
php线性表的入栈与出栈实例分析
Jun 12 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
Dec 21 PHP
PHP Filter过滤器全面解析
Aug 09 PHP
php中引用符号(&amp;)的使用详细介绍
Dec 06 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
Jul 24 PHP
laravel 获取某个查询的查询SQL语句方法
Oct 12 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中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
php 文件上传类代码
2011/08/06 PHP
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
php开发文档 会员收费1期
2012/08/14 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
使用javascript控制cookie显示和隐藏背景图
2014/02/12 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
2017/03/13 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
python logging日志模块的详解
2017/10/29 Python
python获取多线程及子线程的返回值
2017/11/15 Python
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
Python元组知识点总结
2019/02/18 Python
python 操作hive pyhs2方式
2019/12/21 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
python自动化测试三部曲之request+django实现接口测试
2020/10/07 Python
pytorch学习教程之自定义数据集
2020/11/10 Python
东南亚旅游平台:The Trip Guru
2018/01/01 全球购物
FC-Moto英国:欧洲最大的摩托车服装和头盔商店之一
2019/08/25 全球购物
c/c++某大公司的两道笔试题
2014/02/02 面试题
应届大专毕业生个人自荐信
2013/09/22 职场文书
测绘工程本科生求职信
2013/10/10 职场文书
2015年电工工作总结
2015/04/10 职场文书
单位介绍信格式范文
2015/05/04 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL