您的位置:首页 > 编程语言 > PHP开发

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

2016-06-13 13:49 387 查看
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

<?php
namespace Home\Controller;
use Think\Controller;
class PageController extends Controller{
//注意,这里只能用D('User') 不能用 M('User'),因为这里是需要实例化某个具体的模型类User
protected $userObj;

public function getUserObj() {
return $this->userObj = D('page');
}

//第一种:利用Page类和limit方法进行分页
public function pageLimit(){
$this->userObj = $this->getUserObj();

$data = $this->userObj->pageLimit();

$list = $data['list'];
$page = $data['page'];

//var_dump($data);

$this->assign('list', $list);// 赋值数据集
$this->assign('page', $page);// 赋值分页输出
$this->display('Page:page'); // 输出模板
}

//第一种:利用Page类和page方法进行分页
public function pagePage(){
$this->userObj = $this->getUserObj();

$data = $this->userObj->pagePage();

$list = $data['list'];
$page = $data['page'];

//var_dump($data);

$this->assign('list', $list);// 赋值数据集
$this->assign('page', $page);// 赋值分页输出
$this->display('Page:page'); // 输出模板
}
}
?>


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

<?php
namespace Home\Model;
use Think\Model;
class PageModel extends Model {
protected $trueTableName = '99game_user';
protected $userObj;

public function getUserObj() {
return $this->userObj = M('User', '99game_');
}

//第一种:利用Page类和limit方法进行分页
public function pageLimit() {
$User = $this->getUserObj();
$count      = $User->where('level=1')->count();// 查询满足要求的总记录数
$Page       = new \Think\Page($count, 3);// 实例化分页类 传入总记录数和每页显示的记录数(3)

//配置theme是用来设置分页要显示哪些数据项的,比如%HEADER%表示“共XX条记录”
$Page->setConfig('theme', '%HEADER% %NOW_PAGE%/%TOTAL_PAGE% %FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%');
$show       = $Page->show();// 分页显示输出

// 进行分页数据查询 注意limit方法的参数要使用Page类的属性
$list = $User->where('level=1')->order('user_id desc')->limit($Page->firstRow.','.$Page->listRows)->select();
echo "sql: " . $User->_sql() . "\n";

return array('list' => $list, 'page' => $show);
}

//第一种:利用Page类和page方法进行分页
public function pagePage() {
$User = $this->getUserObj(); // 实例化User对象
// 进行分页数据查询 注意page方法的参数的前面部分是当前的页数使用 $_GET[p]获取
$count      = $User->where('level=1')->count();// 查询满足要求的总记录数
$Page       = new \Think\Page($count, 3);// 实例化分页类 传入总记录数和每页显示的记录数
$show       = $Page->show();// 分页显示输出

$list = $User->where('level=1')->order('user_id desc')->page($_GET['p'].',3')->select();

return array('list' => $list, 'page' => $show);
}
}
?>


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

数据列表<br />
<volist name="list" id="data" key="k">
{$k} : {$key} : {$data.user_id} : {$data.email} : {$data.token}<br />
</volist>

分页数据<br />
{$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分页
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: