(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功能类之分页的更多相关文章

  1. thinkphp结合bootstrap打造个性化分页

    分页功能是web开发中常见的一项功能,也存在很多形式,这里主要讲一下利用thinkPHP框架的page类来打造一款bootstrap风格的分页过程. 首先需要去thinkPHP官网现在其分页扩展类ht ...

  2. thinkphp框架调用类不存在的方法

    thinkphp框架调用类不存在的方法调用类不存在的方法,不会报错,但是也不会执行,这是根据tp框架里面的一个魔术方法,框架里面一共才十几个魔术方法

  3. 修改ThinkPHP的验证码类

    今天用ThinkPHP重新开发一个系统,用到了ThinkPHP的验证码类,由于我希望验证码别太复杂,希望验证码里边只有数字,却发现该Verify类并未提供设置验证码中使用的字符的配置的方法,于是查看源 ...

  4. thinkphp杂项功能(主干)

    thinkphp杂项功能(主干) 一.总结 1.杂项功能:杂项里面我需要有点印象的是五个:缓存,多语言,图像处理,文件处理,单元测试 二.thinkphp杂项功能(主干) thinkphp扩展杂项功能 ...

  5. php四个常用类封装 :MySQL类、 分页类、缩略图类、上传类;;分页例子;

    Mysql类 <?php /** * Mysql类 */ class Mysql{ private static $link = null;//数据库连接 /** * 私有的构造方法 */ pr ...

  6. 【socket】Socket的三个功能类TCPClient、TCPListener 和 UDPClient

    Socket的三个功能类TCPClient.TCPListener 和 UDPClient (转) 应用程序可以通过 TCPClient.TCPListener 和 UDPClient 类使用传输控制 ...

  7. php之框架增加日志记录功能类

    <?php /* 思路:给定文件,写入读取(fopen ,fwrite……) 如果大于1M 则重写备份 传给一个内容, 判断大小,如果大于1M,备份 小于则写入 */ class Log{ // ...

  8. ThinkPHP登录功能的实现方法

    登陆功能是PHP程序设计中常见的功能.本文ThinkPHP实例主要完成注册成功后进入首页,并告诉你是登录用户的功能.具体实现步骤如下: 第一步:在config.php文件中加上: 完整实现代码如下: ...

  9. thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证)

    thinkphp Auth认证类 比RBAC更好的权限认证方式(Auth类认证)    Auth 类已经在ThinkPHP代码仓库中存在很久了,但是因为一直没有出过它的教程, 很少人知道它, 它其实比 ...

随机推荐

  1. 自己动手写shell命令之ls -R1fF

    ls命令的R參数代表递归的列出全部子目录中的全部文件,1表示每一行仅仅显示一个文件或目录,f表示不排序即输出.F表示在每项的输出的最后依据其文件类型对应的加上*/=>@|字符.通过c语言实现ls ...

  2. iOS开发——高级篇——线程同步、线程依赖、线程组

    前言 对于iOS开发中的网络请求模块,AFNet的使用应该是最熟悉不过了,但你是否把握了网络请求正确的完成时机?本篇文章涉及线程同步.线程依赖.线程组等专用名词的含义,若对上述名词认识模糊,可先进行查 ...

  3. SQL Server 运行计划操作符具体解释(1)——断言(Assert)

    前言: 非常多非常多地方对于语句的优化,一般比較靠谱的回复即使--把运行计划发出来看看.当然那些仅仅看语句就说怎样怎样改代码,我一直都是拒绝的,由于这样的算是纯蒙.依据本人经验,大量的性能问题单纯从语 ...

  4. 一张图轻松记住PHP的*类*以及private和protected的区别

    上图概要的说了下php类的特性,类的方法同属性类似. 图中B类继承自A类,B是A的子类,$x和$y都是B的实例化对象. 1. 原型引用:[A::    . B::   ],仅限public stati ...

  5. iOS10 国行iPhone联网权限问题处理

    在iOS10上安装新App, 第一次打开时会询问用户"是否允许应用使用数据"(仅针对国行且需要连接移动网络的设备), 如下图所示, 在用户点击允许之前, App是无法联网的, 这意 ...

  6. Hadoop安装配置(ubuntu-12.04.2-server-amd64)

    环境如下: ubuntu-12.04.2-server-amd64 hadoop-1.0.4 VirtualBox 1.在VBox中安装Ubuntu Server,用户名和密码都是hadoop,安装完 ...

  7. 4.7.3 Canonical LR(1) Parsing Tables

    4.7.3 Canonical LR(1) Parsing Tables We now give the rules for constructing the LR(1) ACTION and GOT ...

  8. 洛谷P2827 蚯蚓——思路题

    题目:https://www.luogu.org/problemnew/show/P2827 思路... 用优先队列模拟做的话,时间主要消耗在每次的排序上: 能不能不要每次排序呢? 关注先后被砍的两条 ...

  9. bat 截取字符串(for命令) 推荐收藏

    摘自:http://www.jb51.net/article/50354.htm 今天需要用批处理命令处理文件夹中的文件,需要用到bat中的for命令以及字符串截取的一些命令.在上面的链接中找到许多有 ...

  10. bzoj 1679: [Usaco2005 Jan]Moo Volume 牛的呼声【枚举】

    直接枚举两两牛之间的距离即可 #include<iostream> #include<cstdio> #include<algorithm> using names ...