ThinkPHP---TP功能类之分页
(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将查询的数据和分页连接数传递给模板
⑦模板展示
【五】使用数据分页实现数据的分页功能案例
http://www.cnblogs.com/jianxian/p/8685945.html
ThinkPHP---TP功能类之分页的更多相关文章
- thinkphp结合bootstrap打造个性化分页
分页功能是web开发中常见的一项功能,也存在很多形式,这里主要讲一下利用thinkPHP框架的page类来打造一款bootstrap风格的分页过程. 首先需要去thinkPHP官网现在其分页扩展类ht ...
- thinkphp框架调用类不存在的方法
thinkphp框架调用类不存在的方法调用类不存在的方法,不会报错,但是也不会执行,这是根据tp框架里面的一个魔术方法,框架里面一共才十几个魔术方法
- 修改ThinkPHP的验证码类
今天用ThinkPHP重新开发一个系统,用到了ThinkPHP的验证码类,由于我希望验证码别太复杂,希望验证码里边只有数字,却发现该Verify类并未提供设置验证码中使用的字符的配置的方法,于是查看源 ...
- thinkphp杂项功能(主干)
thinkphp杂项功能(主干) 一.总结 1.杂项功能:杂项里面我需要有点印象的是五个:缓存,多语言,图像处理,文件处理,单元测试 二.thinkphp杂项功能(主干) thinkphp扩展杂项功能 ...
- php四个常用类封装 :MySQL类、 分页类、缩略图类、上传类;;分页例子;
Mysql类 <?php /** * Mysql类 */ class Mysql{ private static $link = null;//数据库连接 /** * 私有的构造方法 */ pr ...
- 【socket】Socket的三个功能类TCPClient、TCPListener 和 UDPClient
Socket的三个功能类TCPClient.TCPListener 和 UDPClient (转) 应用程序可以通过 TCPClient.TCPListener 和 UDPClient 类使用传输控制 ...
- php之框架增加日志记录功能类
<?php /* 思路:给定文件,写入读取(fopen ,fwrite……) 如果大于1M 则重写备份 传给一个内容, 判断大小,如果大于1M,备份 小于则写入 */ class Log{ // ...
- ThinkPHP登录功能的实现方法
登陆功能是PHP程序设计中常见的功能.本文ThinkPHP实例主要完成注册成功后进入首页,并告诉你是登录用户的功能.具体实现步骤如下: 第一步:在config.php文件中加上: 完整实现代码如下: ...
- thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证)
thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证) Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比 ...
随机推荐
- .NET中的PublicKeyToken以及强命名问题
在.NET的GAC出现之前,以前有DLL Hell的问题.这是由于当时对于共享的DLL的处理方式.是通过採用注冊表的方式实现的.当我们安装一个程序A的时候,这个程序包括一个共享的DLL,那么这个DLL ...
- 逆向碰到3des分析
1.ios 某个app碰到涉及3des的解密函数. 2.底层调用的库函数. 3.对比CCCrypt的头文件 CCCryptorStatus CCCrypt( CCOperation op, /* kC ...
- Codeforces Round #214 (Div. 2) C. Dima and Salad 背包
C. Dima and Salad Dima, Inna and Seryozha have gathered in a room. That's right, someone's got to ...
- Grunt学习日记
Grunt和 Grunt 插件是通过npm安装并管理的, npm是Node.js的包管理器. 第一步:先安装node.js环境 第二步:安装Grunt-CLI 在node.js命令工具中输入npm i ...
- 蓝桥 ADV-233 算法提高 队列操作 【STL】
算法提高 队列操作 时间限制:1.0s 内存限制:256.0MB 问题描述 队列操作题.根据输入的操作命令,操作队列(1)入队.(2)出队并输出.(3)计算队中元素个数并输出. ...
- core.async中go的作用研究
(defmacro go "Asynchronously executes the body, returning immediately to the calling thread. Ad ...
- BZOJ_2565_最长双回文串_manacher
BZOJ_2565_最长双回文串_manacher Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为“abc”,逆序为“cba”,不 ...
- 洛谷 P3960 [ NOIP 2017 ] 列队 —— 线段树
题目:https://www.luogu.org/problemnew/show/P3960 NOIP 题,不用很复杂的数据结构...但又参考了许多: 要求支持维护删除第 k 个和在末尾插入的数据结构 ...
- linux centos7 安装mysql-5.7.17教程(图解)
1系统约定安装文件下载目录:/data/softwareMysql目录安装位置:/usr/local/mysql数据库保存位置:/data/mysql日志保存位置:/data/log/mysql 2下 ...
- 2008提权之突破系统权限安装shift后门
大家都知道08权限的系统权限设置很严格,且在2003系统中常用到的溢出工具都失效.面对限制IP连接的情况 我们及时拿到system权限 有账号也上不去 这种情况下只能弄shift后门 或者放大镜了.但 ...