ThinkPHP分页

来源:互联网 发布:python mobi 编辑:程序博客网 时间:2024/05/22 02:28

一、前面一篇博客以一个聊天系统为例简述了一下ThinkPHP开发的流程。里面的“新朋友”和“好友聊天”模块分别是查询出所有的申请人和好友然后在前台显示出来。现在如果数据量很大,那么这一页岂不是很长,所以我们可以用ThinkPHP自带的分页功能来完善一下。以“新朋友”模块为例,之前操作是这样写的:

public function newfr(){//查询所有申请者$me=session('name');//我$db=M('friend');//$app=$db->distinct(true)->where("applyor='$me' and flag='0'")->select();$app=$db->distinct(true)->field('me')->where("applyor='$me' and flag='0'")->select();  //去重复查询me$this->assign("app",$app);$this->display("newfr");}

然后在模板中用volist循环输出app数组的值,现在我们这样操作:

public function newfr(){//分页$me=session('name');//我$Data=M('friend');import('ORG.Util.Page');// 导入分页类$count = $Data->distinct(true)->field('me')->where("applyor='$me' and flag='0'")->count();// 查询满足要求的总记录数 $map表示查询条件$Page = new  \Think\Page($count,2);// 实例化分页类 传入总记录数$show = $Page->show();// 分页显示输出// 进行分页数据查询$list = $Data->distinct(true)->field('me')->where("applyor='$me' and flag='0'")->limit($Page->firstRow.','.$Page->listRows)->select(); // $Page->firstRow 起始条数 $Page->listRows 获取多少条$this->assign('list',$list);// 赋值数据集$this->assign('page',$show);// 赋值分页输出$this->display("newfr1");}

这时模板文件应该改为:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><load href=" !-PUBLIC-!/Css/page.css" / ><title>分页</title></head><body><table > <tr><td>     <volist name="list" id="friend">         <a href="__URL__/addnew?id={$friend.me}">{$friend.me}</a> <br>     </volist> </td></tr> <tr><td>  {$page}  </td></tr></table></body></html>

运行效果如下:

二、上面输出的分页可能并不美观,实际上ThinkPHP的分页样式是可以自定义的,现在已知共有7条记录,若每页显示三条,则一共有3页:

public function newfr1(){//分页$me=session('name');//我$Data=M('friend');import('ORG.Util.Page');// 导入分页类$count = $Data->distinct(true)->field('me')->where("applyor='$me' and flag='0'")->count();// 查询满足要求的总记录数 $map表示查询条件$Page = new  \Think\Page($count/2-1,3);// 实例化分页类 传入总记录数$Page -> setConfig('header','共%TOTAL_ROW%条记录');$Page -> setConfig('first','首页');$Page -> setConfig('last','共%TOTAL_PAGE%页');$Page -> setConfig('prev','上一页');$Page -> setConfig('next','下一页');$Page -> setConfig('link','   indexpagenumb   ');//pagenumb 会替换成页码$Page -> setConfig('theme','%HEADER% %FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%');$show = $Page->show();// 分页显示输出// 进行分页数据查询$list = $Data->distinct(true)->field('me')->where("applyor='$me' and flag='0'")->limit($Page->firstRow.','.$Page->listRows)->select(); // $Page->firstRow 起始条数 $Page->listRows 获取多少条$this->assign('list',$list);// 赋值数据集$this->assign('page',$show);// 赋值分页输出$this->display("newfr1");}

这时候效果如下:

这是第一页


这是第二页


这是第三页