首页 > php教程 > php手册 > 正文

thinkphp实现数组分页示例

php中文网
发布: 2016-06-06 20:23:19
原创
1578人浏览过

这篇文章主要介绍了thinkphp实现数组分页示例,需要的朋友可以参考下

在thinkphp的框架下实现分页。公司的网站基于Thinkphp框架,一直久闻thinkphp的大名,终于有机会实战了。thinkphp是MVC架构的,MVC对于任何ITers来说都不陌生,模型(model)-视图(view)-控制器(controller)。他将逻辑和数据分开处理,少了很多繁琐的过程。其实在官方的资料中已经详细的介绍了怎么分页,传送门:

可是并不适用于数据已经从DB中取出,并且转换为数组的情况,我接触PHP满打满算2个月,接触thinkphp不过3周。之前把很多时间花在了官方文档上,去熟悉thinkphp。也算是磨刀不误砍柴工吧。这里把官方文档当作比较进行阐述:

(只举文档上第一个方法):利用Page类和limit方法,代码如下:

复制代码 代码如下:

立即学习PHP免费学习笔记(深入)”;


$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( )。定义在此:

其实就是数组版的limit方法。好了,工具找到了,实现就很容易了。直接上代码:

复制代码 代码如下:

立即学习PHP免费学习笔记(深入)”;


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类传入参数。

ReportPlus数据报表中心小程序
ReportPlus数据报表中心小程序

ReportPlust意在打造一套精美的数据报表模板,里面高度封装日历组件、表格组件、排行榜组件、条形进度条组件、文本块组件以及ucharts的多个图表组件,用户只需要按照虚拟数据的格式,传特定数据即可方便、快捷地打造出属于自己的报表页面。该小程序主要使用了ucharts和wyb-table两插件实现的数据报表功能。 特点使用的是uni-app中最受欢迎的图表uCharts插件完成图表展示,该插件

ReportPlus数据报表中心小程序 0
查看详情 ReportPlus数据报表中心小程序

第7行的array_slice函数代替了limit方法。原理相同。

第9行用assign方法为模版赋值。定义在此:#assign

第10行同理。

下面是view中的代码:

复制代码 代码如下:

立即学习PHP免费学习笔记(深入)”;


 

{$page}

 



如果仅仅这样的话,显示出来的效果并不友好。再找出来Page类的定义:

复制代码 代码如下:

立即学习PHP免费学习笔记(深入)”;


// 分页显示定制

private $config= array(

'header' => '共 %TOTAL_ROW% 条记录',

'prev' => '上一页',

'next' => '下一页',

'first'=> '第一页',

'last' => '...%TOTAL_PAGE%',

'theme'=> '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%',

在页数前后加入空格。现在可以看效果了:

thinkphp实现数组分页示例

跟大背景还是挺配,,当然,可以根据自己的情况设置不同的效果。

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号