Heim >php教程 >php手册 >thinkphp实现数组分页

thinkphp实现数组分页

WBOY
WBOYOriginal
2016-06-13 09:37:55988Durchsuche

在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%',

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn