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

thinkphp实现数组分页

WBOY
Libérer: 2016-06-13 09:37:55
original
981 Les gens l'ont consulté

在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>
Copier après la connexion

用到了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>
Copier après la connexion

第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>
Copier après la connexion

<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%',
Copier après la connexion

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal