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

  • 相关阅读:
    找水王
    哈利波特图书购买问题
    中序线索化二叉树[C语言实现及注释]
    第一篇随文。
    理解Python函数中的的return
    记录一款实时同步的软件——Lsyncd
    for循环
    while循环
    文件操作
    我的第一个博客
  • 原文地址:https://www.cnblogs.com/caihuafeng/p/5580387.html
Copyright © 2011-2022 走看看