# 數據分頁詳解
查詢數據時使用數據操作對象的 page 函數即可快速完成分頁,使用page函數,查詢數據的格式如下:
~~~
$data?=?array(
????數據列表,
????分頁對象
);
~~~
## **分頁對象結構**
~~~
分頁對象->firstPage?//第一頁鏈接
分頁對象->prePage?//上一頁鏈接
分頁對象->listPage?//列表頁鏈接【數組格式】
分頁對象->nextPage?//下一頁鏈接
分頁對象->lastPage?//最后一頁鏈接
分頁對象->skipPage?//跳轉頁dom
分頁對象->currentPage?//當前頁
~~~
## **完整的演示示例
**
如在 index\_index.php 視圖文件內展示數據:
## **演示數據表**
~~~
CREATE?TABLE?`accounts`?(
??`id`?int(10)?NOT?NULL?AUTO_INCREMENT,
??`name`?varchar(20)?DEFAULT?NULL,
??`balance`?int(10)?DEFAULT?NULL,
??PRIMARY?KEY?(`id`)
)?ENGINE=InnoDB?AUTO_INCREMENT=102?DEFAULT?CHARSET=utf8;
~~~
## **創建一些數據用于演示**
~~~
<?php
class?indexController?extends?grace{
????public?function?addData(){
????????$db?=?db('accounts');
????????for($i?=?1;?$i?<?100;?$i++){
????????????$data?=?array(
????????????????'name'?=>?uniqid(),
????????????????'balance'?=>?mt_rand(111,999)
????????????);
????????????$db->add($data);
????????}
????}
}
~~~
## **您可以編寫分頁樣式來制作漂亮的分頁**
~~~
<?php?if(!defined('PG_VERSION')){exit;}?>
<!DOCTYPE?html>
<html>
<head>
<meta?charset="UTF-8">
<title>welcome?to?phpGrace</title>
</head>
<body>
<style?type="text/css">
*{font-family:?"微軟雅黑";?color:#333;}
a{text-decoration:none;}
table?{border-left:1px?solid?#F0F9FC;?border-top:1px?solid?#F0F9FC;}
td,th{border-right:1px?solid?#F0F9FC;?border-bottom:1px?solid?#F0F9FC;?padding:8px;?text-align:center;}
/*?分頁樣式?*/
.grace-pager{float:right;}
.grace-pager?a{display:block;?background:#F5F5F5;?padding:0px?10px;?height:30px;?line-height:30px;?float:left;?margin:3px;?border-radius:2px;}
.grace-pager?a:hover{background:#2F4056;?text-decoration:none;?color:#FFF;}
.grace-pager?.grace-current{background:#5FB878?!important;?color:#FFF?!important;}
</style>
<div?style="width:600px;?padding:50px;?margin:0?auto;">
????<table?border="0"?cellspacing="0"?cellpadding="0"?width="100%">
????????<tr>
????????????<th>ID</th>
????????????<th>Name</th>
????????????<th>Balance</th>
????????</tr>
????????<?php
????????$db?=?db('accounts');
????????$data?=?$db->order('id?desc')->page(10)->fetchAll();
????????foreach($data[0]?as?$rows){
?????????>
????????<tr>
????????????<td><?php?echo?$rows['id'];?></td>
????????????<td><?php?echo?$rows['name'];?></td>
????????????<td><?php?echo?$rows['balance'];?></td>
????????</tr>
????????<?php?}?>
????</table>
</div>
<div?style="width:600px;?padding:0?50px;?margin:0?auto;">
????<div?class="grace-pager">
????????<a?href="<?php?echo?$data[1]->firstPage;?>">首頁</a>
????????<a?href="<?php?echo?$data[1]->prePage;?>">上一頁</a>
????????<?php
????????foreach($data[1]->listPage?as?$k?=>?$v){
????????????if($k?==?$data[1]->currentPage){
????????????????echo?'<a?href="'.$v.'"?class="grace-current">'.$k.'</a>';
????????????}else{
????????????????echo?'<a?href="'.$v.'">'.$k.'</a>';
????????????}
????????}
?????????>
????????<a?href="<?php?echo?$data[1]->nextPage;?>">下一頁</a>
????????<a?href="<?php?echo?$data[1]->lastPage;?>">尾頁</a>
????</div>
</div>
</body>
</html>
~~~
## **關于數據總數說明**
phpgrace 內置的分頁組件會自動根據查詢語句計算獲取數據總數,有時候您的查詢語句有可能是復雜的(相對總數查詢),那么您可以自己編寫查詢總數的代碼獲取總數并告知分頁組件:
~~~
$數據操作對象->page(每頁展示數,?總數)->.....
~~~
## **上面的例子可以修改為**
~~~
<?php
$db?=?db('accounts');
//手動查詢總數,比如:利用第一url參數記錄總數
if(empty($_GET['total'])){
????$_GET['total']?=?$db->count();
}else{
????echo?'使用?url?參數...';
}
$data?=?$db->order('id?desc')->page(10,?$_GET['total'])->fetchAll();
foreach($data[0]?as?$rows){
?>
<tr>
????<td><?php?echo?$rows['id'];?></td>
????<td><?php?echo?$rows['name'];?></td>
????<td><?php?echo?$rows['balance'];?></td>
</tr>
<?php?}?>
~~~
- 快速開始
- phpGrace 介紹
- 環境需求及偽靜態設置
- 目錄結構及命名規則
- 初始化、原理、分組
- 控制器與路由
- 創建控制器
- 基礎控制器
- URL解析規則
- 自定義路由
- URL生成
- 數據與模型
- 數據庫配置
- 獲取數據庫操作對象
- 數據庫操作(CURD)
- 數據分頁詳解
- 事務處理
- 數據驗證
- 表單令牌及驗證
- 模型創建與調用
- 視圖
- 視圖文件創建
- 調用、引用視圖
- 視圖路徑模式
- 會話機制
- Cookie 操作
- Session[文件型 ]
- Session [memcache]
- Session [redis]
- 緩存機制
- 緩存概述及配置
- 文件型緩存
- Memcache 形式的緩存
- Memcache介紹
- Memcache安裝
- 開啟PHP Memcache
- PHP操作Memcache
- Memcache來保存Session
- Memcached圖形化管理工具
- Memcache安全相關
- redis 形式的緩存
- Redis介紹
- Redis安裝
- 開啟 PHP Redis
- Redis圖形化管理工具
- PHP操作Redis
- 配置、常量、語言
- 全局配置、分組配置
- 預定義常量
- 語言包使用說明
- 工具
- 函數小工具
- 安全與擴展
- 框架部署安全
- 常規安全
- 擴展說明
- 常用類庫
- 圖片處理類
- 文件上傳類
- IP地址獲取類
- 驗證碼繪制類
- 日期時間換算類
- md5加密類
- 服務器信息類
- curl通信類
- 文件下載類
- 類反射工具
- XML生成與解析
- 漢字轉拼音類
- 文件夾操作
- 人民幣大寫轉換類
- 第三方類庫
- QQ登錄 - web版
- 微信掃碼登錄-網站
- excel 讀寫操作
- 阿里云短信接口
- SMTP 郵件發送
- 二維碼生成類
- word、pdf 生成類
- 阿里云靜態云存儲接口類