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代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比 ...
随机推荐
- maven 打包排除配置文件
如果你想通过pom.xml文件的配置实现的话,你可以这样1.打jar包时过滤配置文件<build><!-- 过滤配置文件 --><resources><res ...
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] D "Or" Game 枚举+前缀后缀
D. "Or" Game ...
- 【OI】对拍
对拍的方法是先用生成器生成几组随机数据,然后用暴力算法和当前算法对比结果来确保正确性. 数据生成器: 引入cstdlib与ctime两个库,然后通过srand初始化随机数: srand(time(0) ...
- SQLyog软件里无法插入中文(即由默认的latin1改成UTF8编码格式)
问题详情: 无法插入中文? 解决办法: 需要修改编码格式,由默认的latin1改为utf8. 改成, 成功!
- 【OI新闻】2016.10.26 - NOIP初赛泄题再次引爆
有点劲,开车注意点,小心翻啦~ http://www.noi.cn/noi-news/noi/743-ccfnoip2016 CCF在NOIP2016初赛结束后接到举报:初赛前(22日12时左右),网 ...
- BZOJ_3280_小R的烦恼_最小费用最大流
BZOJ_3280_小R的烦恼_最小费用最大流 Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要 求小R帮助他一起解决一个难 ...
- Code First: 五大映射模式
映射一 Mapping the Table-Per-Hierarchy (TPH) Inheritance 模型文件 using System.Data.Entity; using System.Da ...
- flask核心对象Flask实例初探
flask的核心程序就两个: werkzegu(WSGI)库,封装了http.web通信等最关键的wsgi功能②Jinja2是Python下一个被广泛应用的模版引擎,方便了html模板的创建和使用 而 ...
- 杂项-Java:Ehcache
ylbtech-杂项-Java:Ehcache EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. 1.返回顶部 1. 基 ...
- Git分支管理策略(转)
作者: 阮一峰 日期: 2012年7月 5日 使用"版本管理系统"(Version Control System). 眼下最流行的"版本管理系统",非Git莫属 ...