(1)核心
数据分页通过limit语法实现
(2)分页类
ThinkPHP里系统封装好了分页类:Page.class.php
(3)代码分析
位置:Think/Page.class.php,
①查看相关属性
namespace Think; class Page{
//对外开放属性 public $firstRow; // 起始行数 public $listRows; // 列表每页显示行数 limit(start,rows) public $parameter; // 分页跳转时要带的参数 public $totalRows; // 总行数 public $totalPages; // 分页总页面数 = 总行数/每页显示个数 public $rollPage = 11;// 分页栏每页显示的页数(模板页面上显示的页码数) public $lastSuffix = true; // 最后一页是否显示总页数 //以下私有属性 private $p = ‘p‘; //分页参数名 private $url = ‘‘; //当前链接URL private $nowPage = 1;
...... }
②分页构造方法:三个参数,至少传递第一个参数(总记录数),第二个参数可选(每页显示的记录数,方法里的默认值为20)
/* 架构函数:@param array $totalRows 总的记录数;@param array $listRows 每页显示记录数;@param array $parameter 分页跳转的参数*/ public function __construct($totalRows, $listRows=20, $parameter = array()) { C(‘VAR_PAGE‘) && $this->p = C(‘VAR_PAGE‘); //设置分页参数名称 /* 基础设置 */ $this->totalRows = $totalRows; //设置总记录数 $this->listRows = $listRows; //设置每页显示行数 $this->parameter = empty($parameter) ? $_GET : $parameter; $this->nowPage = empty($_GET[$this->p]) ? 1 : intval($_GET[$this->p]); $this->nowPage = $this->nowPage>0 ? $this->nowPage : 1; $this->firstRow = $this->listRows * ($this->nowPage - 1); }
③setConfig方法:通过public权限类型的Config方法,来设置私有属性private $config(分页显示定制)
④show方法:生成页码及页码上的URL链接
方法总结:能用的方法:构造方法(实例化时用),setConfig方法(设置提示文字及分页样式时用),show方法(生成页码及页码上URL链接时用)
分析后也是三个方法,和验证码功能一样(构造方法---配置(可以传递一个数组,用于和其成员属性config合并,生成新配置)、check方法---校验、entry方法---输出),其他方法(例如加密验证码、绘制背景图、画杂点等)均为私密方法,不对外开放
【四】制作分页效果步骤
输入数据分页--查阅手册---可以发现TP实现数据分页有两种方法:①利用Page类和limit方法实现;②分页类和Page方法实现,开发里一般用第一种方法
$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(); // 输出模板
下面将上诉代码分布介绍:
①实例化User类生成对象,连接数据表
②查询总的记录数
③实例化分页类,传入总记录数[每页显示的记录数,默认每页显示20条记录数(可选)]
[可选步骤]只能放到③----------④之间,定制显示分页提示文字setConfig
④通过show方法输出页码数和分页页码连接
⑤使用limit方法进行分页查询,注意:参数是Page类的属性
⑥使用assign将查询的数据和分页连接数传递给模板
⑦模板展示