Maison >développement back-end >tutoriel php >thinkphp实现数组分页_PHP教程
在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方法,代码如下:
<span $User</span> = M('User'); <span //</span><span 实例化User对象</span> <span $count</span>= <span $User</span>->where('status=1')-><span count</span>();<span //</span><span 查询满足要求的总记录数</span> <span $Page</span> = <span new</span> \Think\Page(<span $count</span>,25);<span //</span><span 实例化分页类 传入总记录数和每页显示的记录数(25)</span> <span $show</span> = <span $Page</span>->show();<span //</span><span 分页显示输出 // 进行分页数据查询 注意limit方法的参数要使用Page类的属性</span> <span $list</span> = <span $User</span>->where('status=1')->order('create_time')->limit(<span $Page</span>->firstRow.','.<span $Page</span>->listRows)-><span select(); </span><span $this</span>->assign('list',<span $list</span>);<span //</span><span 赋值数据集</span> <span $this</span>->assign('page',<span $show</span>);<span //</span><span 赋值分页输出</span> <span $this</span>->display(); <span //</span><span 输出模板</span>
用到了php自带的函数array_slice( )。定义在此:http://www.php.net/manual/en/function.array-slice.php
其实就是数组版的limit方法。好了,工具找到了,实现就很容易了。直接上代码:
<span public</span> <span function</span><span nodeslist(){ </span><span $portal</span> = <span new</span><span PortalApi; </span><span $nodelist</span> = <span $portal</span>->getNodeLists(<span $this</span>-><span uid); </span><span $count</span> = <span count</span>(<span $nodelist</span>['data'<span ]); </span><span $p</span> = <span new</span> Page(<span $count</span>,10<span ); </span><span $lists</span> = <span array_slice</span>(<span $nodelist</span>['data'], <span $p</span>->firstRow,<span $p</span>-><span listRows); </span><span $page</span> = <span $p</span>-><span show(); </span><span $this</span>->assign('page',<span $page</span><span ); </span><span $this</span>->assign('nodes',<span $lists</span><span ); </span><span $this</span>-><span display(); }</span>
第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 <span class</span>="page-list"><span {</span><span $page</span><span } </span></div>
<span //</span><span 分页显示定制</span> <span private</span> <span $config</span>= <span array</span><span ( </span>'header' => '<span class="rows">共 %TOTAL_ROW% 条记录</span>', 'prev' => '上一页', 'next' => '下一页', 'first'=> '第一页', 'last' => '...%TOTAL_PAGE%', 'theme'=> '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%',