视频学习笔录---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将查询的数据和分页连接数传递给模板

⑦模板展示

原文地址:https://www.cnblogs.com/jianxian/p/8686028.html

时间: 2024-08-29 21:43:16

视频学习笔录---ThinkPHP---TP功能类之分页的相关文章

视频学习笔录---ThinkPHP---TP功能类之公文管理功能

[一]准备工作 (1)创建数据表 表名:sp_doc create table sp_doc( id int(11) not null auto_increment, title varchar(50) not null comment'公文标题', filepath varchar(255) default null comment'附件存储路径', filename varchar(255) default null comment'附件原名', hasfile smallint(1) de

视频学习笔录---ThinkPHP---案例2--职员管理功能

[一]准备工作 (1)创建菜单,修改跳转路径 <li> <a href="javascript:;" class="workerManage">职员管理</a> <ul> <li><a href="{:U('User/showList')}" class="workerManage">职员列表</a></li> <li>

视频学习笔录---ThinkPHP---插件highcharts

[一]概论 (1)介绍 基于jquery开发的国外图标插件,统计图,折线图,饼状图等常常用到. 国内也有一款类似插件echarts,由百度开发. (2)官网:www.highcharts.com             爱好者编写集成的官网:www.hcharts.cn 官网的下载地址:https://www.highcharts.com/products/highcharts demo网址:www.highcharts.com/demo (3)支持特效demo:3D.仪表盘.折现.类心电图实时

视频学习笔录---ThinkPHP---thinkphp拓展之空操作

[一]概论 (1)定义 空操作指系统在找不到指定操作方法的时候.会定位到空操作方法 / 控制器来执行,利用这个机制,我们可以实现错误页面的自定义和URL的优化 (2)场景 常用于错误页面的自定义 (3)一般的系统自带的错误页面分两种 ①调试 / 开发阶段:会显示出错误信息.错误位置.当前TP版本 ②生成阶段:显示错误提示.TP版本.安全性相对于之前有所提高,但用户还是较差 (4)空操作 针对以上情况,这时便可以用空操作的机制进行错误页面美化 (5)说明------针对方法和控制器 1. 空操作方

视频学习笔录---ThinkPHP---rbac权限管理

[一]概论 (1)简介 rbac(role based access controal),全称基于用户组/角色的权限控制. (2)概况 目前来说,一般项目有两种权限管理方式①传统方式:②rbac方式.下面依次介绍下 [二]传统模式与RBAC模式对比 (1)传统权限分配方式 典型特征:将权限和用户挂钩,直接将权限绑定到用户.例如ecs电商管理平台的人员权限分配 缺点:①效率上较低:②设置权限时没有统一标准.所以上述权限分配方式,在大型网站不会使用 (2)RBAC权限管理方式 在使用时有两种体现方式

黑 马 程 序 员_视频学习总结&lt;Objective-C&gt;----01 面向对象思想、类和对象、面向对象方法

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 一.面向对象 1. 面向对象和面向过程思想区别 OC为面向对象.C为面向过程.实质是解决问题的两种不同的思想.面向过程关注的是步骤,面向对象关注的是解决问题需要的对象. 2. 常用术语 面向过程:Procedure Oriented面向对象:Object Oriented 简称OO面向对象编程:Object OrientedProgrammin

thinkphp功能类之Upload.class.php

Thinkphp 中常用功能类(Upload.class.php)构造参数$config = array( 'mimes' => array(), //允许上传的文件MiMe类型 'maxSize' => 0, //上传的文件大小限制 (0-不做限制) 'exts'' => array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型 'rootPath' => './Uploads/', //保存根路径 'savePath' => '', /

黑 马 程 序 员_视频学习总结&lt;Objective-C&gt;----03 self、NSString、@property和@synthesize、id

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 一.self 1.谁调用了当前方法,self就代表谁.两种情况:self出现在对象方法里,self就代表对象:self出现在类方法里,self就代表类. 2.对象方法利用“self→成员变量名”访问当前对象内部成员变量. 3.[self 方法名]可以调用其它对象方法.类方法. 二.NSString 1.NSString简介:NSString是一

黑 马 程 序 员_视频学习总结&lt;Objective-C&gt;----02 三大特性

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------  面向对象的三大特性(精华):(成员变量.方法)封装.继承.多态. 一.封装 1.为什么需要封装? 根据以前学的内容,假如我声明一个student类,里面有public成员age..我在主函数中写代码 student *s = [studentnew].这样的话我可以通过s→age修改age的值,但是会出现s→age=-10这种赋值,但是我们都