用thinkPHP可以实现数组的分页显示吗

 我来答
龙氏风采
2016-12-22 · 知道合伙人互联网行家
龙氏风采
知道合伙人互联网行家
采纳数:5849 获赞数:12816
从事互联网运营推广,5年以上互联网运营推广经验,丰富的实战经

向TA提问 私信TA
展开全部
  在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%',
  在页数前后加入空格。现在可以看效果了:
流年酷
2016-12-30
知道答主
回答量:84
采纳率:0%
帮助的人:5.9万
展开全部
function array_page($array,$rows){

            import("ORG.Util.Page"); //导入分页类
            $count=count($array);
            $Page=new Page($count,$rows);
            $list=array_slice($array,$Page->firstRow,$Page->listRows);
            return $list;

}
//使用该函数即可实现分页
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-12-23
展开全部
你可以看看TP 提供的分页类,tp手册里有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
289044346
2016-12-22 · TA获得超过428个赞
知道小有建树答主
回答量:441
采纳率:25%
帮助的人:91.5万
展开全部
可以啊 可以用TP的分页类啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式