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-12-12 01:37:47