ThinkPHP3.2.3学习笔记6---专题---数据分页

http://document.thinkphp.cn/manual_3_2.html#data_page

thinkphp3.2.3中分类的功能调用的文件$THINKPHP_HOME/ThinkPHP/Library/Think/Page.class.php,这个文件只有150行左右,不复杂,比较容易看懂,方便自己修改,也可以在此基础上进行新功能的扩展。

控制器
$THINKPHP_HOME/Application/Home/Controller/PageController.class.php

 1 <?php
 2 namespace Home\Controller;
 3 use Think\Controller;
 4 class PageController extends Controller{
 5     //注意,这里只能用D(‘User‘) 不能用 M(‘User‘),因为这里是需要实例化某个具体的模型类User
 6     protected $userObj;
 7
 8     public function getUserObj() {
 9         return $this->userObj = D(‘page‘);
10     }
11
12     //第一种:利用Page类和limit方法进行分页
13     public function pageLimit(){
14         $this->userObj = $this->getUserObj();
15
16         $data = $this->userObj->pageLimit();
17
18
19         $list = $data[‘list‘];
20         $page = $data[‘page‘];
21
22         //var_dump($data);
23
24         $this->assign(‘list‘, $list);// 赋值数据集
25         $this->assign(‘page‘, $page);// 赋值分页输出
26         $this->display(‘Page:page‘); // 输出模板
27     }
28
29     //第一种:利用Page类和page方法进行分页
30     public function pagePage(){
31         $this->userObj = $this->getUserObj();
32
33         $data = $this->userObj->pagePage();
34
35
36         $list = $data[‘list‘];
37         $page = $data[‘page‘];
38
39         //var_dump($data);
40
41         $this->assign(‘list‘, $list);// 赋值数据集
42         $this->assign(‘page‘, $page);// 赋值分页输出
43         $this->display(‘Page:page‘); // 输出模板
44     }
45 }
46 ?>

模型$THINKPHP_HOME/Application/Home/Model/PageModel.class.php

 1 <?php
 2 namespace Home\Model;
 3 use Think\Model;
 4 class PageModel extends Model {
 5     protected $trueTableName = ‘99game_user‘;
 6     protected $userObj;
 7
 8     public function getUserObj() {
 9         return $this->userObj = M(‘User‘, ‘99game_‘);
10     }
11
12     //第一种:利用Page类和limit方法进行分页
13     public function pageLimit() {
14         $User = $this->getUserObj();
15         $count      = $User->where(‘level=1‘)->count();// 查询满足要求的总记录数
16         $Page       = new \Think\Page($count, 3);// 实例化分页类 传入总记录数和每页显示的记录数(3)
17
18         //配置theme是用来设置分页要显示哪些数据项的,比如%HEADER%表示“共XX条记录”
19         $Page->setConfig(‘theme‘, ‘%HEADER% %NOW_PAGE%/%TOTAL_PAGE% %FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%‘);
20         $show       = $Page->show();// 分页显示输出
21
22         // 进行分页数据查询 注意limit方法的参数要使用Page类的属性
23         $list = $User->where(‘level=1‘)->order(‘user_id desc‘)->limit($Page->firstRow.‘,‘.$Page->listRows)->select();
24         echo "sql: " . $User->_sql() . "\n";
25
26         return array(‘list‘ => $list, ‘page‘ => $show);
27     }
28
29     //第一种:利用Page类和page方法进行分页
30     public function pagePage() {
31         $User = $this->getUserObj(); // 实例化User对象
32         // 进行分页数据查询 注意page方法的参数的前面部分是当前的页数使用 $_GET[p]获取
33         $count      = $User->where(‘level=1‘)->count();// 查询满足要求的总记录数
34         $Page       = new \Think\Page($count, 3);// 实例化分页类 传入总记录数和每页显示的记录数
35         $show       = $Page->show();// 分页显示输出
36
37         $list = $User->where(‘level=1‘)->order(‘user_id desc‘)->page($_GET[‘p‘].‘,3‘)->select();
38
39         return array(‘list‘ => $list, ‘page‘ => $show);
40     }
41 }
42 ?>

模板$THINKPHP_HOME/Application/Home/View/Page/page.html

1 数据列表<br />
2 <volist name="list" id="data" key="k">
3 {$k} : {$key} : {$data.user_id} : {$data.email} : {$data.token}<br />
4 </volist>
5
6 分页数据<br />
7 {$page}

在浏览器中分别输入以下两个网址进行测试,可以输出正确的结果
http://localhost:81/research/thinkphp_3.2.3_full/index.php/Home/Page/pageLimit

http://localhost:81/research/thinkphp_3.2.3_full/index.php/Home/Page/pagePage

延伸阅读:
http://www.baidu.com/s?wd=thinkphp3.2.3%20分页
http://www.sogou.com/web?query=thinkphp3.2.3%20分页
https://www.so.com/index.php?q=thinkphp3.2.3%20分页

时间: 2024-08-12 07:14:53

ThinkPHP3.2.3学习笔记6---专题---数据分页的相关文章

学习笔记:Oracle 12C 数据非常规恢复工具bbed的使用说明

ORACLE 12C 依然支持 bbed,ORACLE 12C的测试版出来了,对于习惯了使用bbed(ORACLE 手术刀)的人来说,12C是否继续被支持是一个很让人关注的问题,通过本实验测试,12C继续支持bbed,很多艰难的数据库恢复依然可以通过bbed来实现,也从侧面说明,ORACLE 12C在块的结构上还依然和以往版本相似 数据库信息 [[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.0.2 Beta

MySQL学习笔记之五 有关数据表操作

MySQL在创建表的时候,创建一个.frm文件保存表和列定义.索引存储在一个有.MYI(MYindex)扩展名的文件并且数据存储在有.MYD(MYData)扩展名的文件中.   一.用SHOW/ DESCRIBE语句显示数据表的信息 语法: SHOW TABLES [FROM db_name] [LIKE wild] or SHOW COLUMNS FROM tbl_name [FROM db_name] [LIKE wild] or SHOW INDEX FROM tbl_name [FROM

iOS 学习笔记——0005(数据存储)

先发一个练手的小demo,自己写的简略通讯录,已上传至github https://github.com/liaoshaolim/addressBook 1.NSKeyedArchiver:(归档) 这里用一个添加联系人的例子来说明: 注意:归档形式保存数据,需要该对象遵守NSCoding协议,而且对应的必须提供encodeWithCoder和initWithCoder方法 因为归档是一次性的,解压也是一次性的,所以小量的ok,如果量大的话,改一个小地方就要归档或解压全部,效率会比较低 //用一

springmvc学习笔记(18)-json数据交互

springmvc学习笔记(18)-json数据交互 springmvc学习笔记18-json数据交互 springmvc进行json交互 环境准备 添加json转换的依赖 配置json转换器 json交互测试 输入json串输出是json串 输入keyvalue输出是json串 本文主要介绍如何在springmvc中进行json数据的交互,先是环境准备和配置,然后分别展示了"输入json串,输出是json串"和"输入key/value,输出是json串"两种情况下

Python学习笔记_Chapter 4数据保存到文件

1. What For 将基于内存的数据存储到磁盘上,达到持续存储. 2. HOW 方法一: 将数据写到文件中 常规的处理方式 1 #file.x被打开的文件,model打开文件的方式 2 out=open('file.x','model') 3 #print将item写入到file指示的文件中,item可以是字符串或列表等 4 print(item,file=out) 5 #close是必须的,起到刷新输出的作用 6 out.close() open('file','model')中model

mysql学习笔记之六(数据定义语言DDL)

SQL语言包括四类种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)还有事务控制语言(TCL). ※  数据定义语言(DDL),例如:CREATE.DROP.ALTER等语句. ※  数据操作语言(DML),例如:INSERT(插入).UPDATE(修改).DELETE(删除)语句. ※  数据查询语言(DQL),例如:SELECT语句.(一般不会单独归于一类,因为只有一个语句). ※  数据控制语言(DCL),例如:GRANT.REVOKE等语

salesforce 零基础开发入门学习(八)数据分页简单制作

本篇介绍通过使用VF自带标签和Apex实现简单的数据翻页功能. 代码上来之前首先简单介绍一下本篇用到的主要知识: 1.ApexPages命名空间 此命名空间下的类用于VF的控制. 主要的类包括但不限于以下: ApexPages.StandardController:当为一个标准Controller定义扩展的时候使用此类.StandardController对象为Salesforce提供的预构建VF的控制器对象引用; ApexPages.Action:使用Action类和方法用于VF自定义控制器和

ThinkPHP3.2.3学习笔记1---控制器

ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的.最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布.ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性.并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性.扩展性和性能方面不断优化和改进. ThinkPHP是一个快速.兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为Th

ThinkPHP3.2.3学习笔记2---模型

一.模型实例化1.直接实例化可以和实例化其他类库一样实例化模型类,例如:$User = new \Home\Model\UserModel();$Info = new \Admin\Model\InfoModel(); // 带参数实例化$New = new \Home\Model\NewModel('blog','think_',$connection);模型类通常都是继承系统的\Think\Model类,该类的架构方法有三个参数,分别是:Model(['模型名'],['数据表前缀'],['数