zoukankan      html  css  js  c++  java
  • 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 HomeController;
     3 use ThinkController;
     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 HomeModel;
     3 use ThinkModel;
     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 ThinkPage($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() . "
    ";
    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 ThinkPage($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分页

  • 相关阅读:
    10 个雷人的注释,就怕你不敢用!
    Java 14 之模式匹配,非常赞的一个新特性!
    poj 3661 Running(区间dp)
    LightOJ
    hdu 5540 Secrete Master Plan(水)
    hdu 5584 LCM Walk(数学推导公式,规律)
    hdu 5583 Kingdom of Black and White(模拟,技巧)
    hdu 5578 Friendship of Frog(multiset的应用)
    hdu 5586 Sum(dp+技巧)
    hdu 5585 Numbers
  • 原文地址:https://www.cnblogs.com/caihuafeng/p/5580387.html
Copyright © 2011-2022 走看看