码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2016-06-13 14:59:48      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:

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分页

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

标签:

原文地址:http://www.cnblogs.com/caihuafeng/p/5580387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!