本文目錄一覽:
ThinkPHP使用心得分享-分頁類Page的用法
ThinkPHP中的Page類在ThinkPHP/Extend/Library/ORG/Util/Page.class.php中,所以使用前要引入Page類:
複製代碼
代碼如下:
import(‘ORG.Util.Page’);
//Page類的引入
$db
=
M(‘abc’);//實例化數據表abc
$where
=
array(
‘id’=’2’;
);//條件語句$where,例表中欄位id的值為2
$count
=
$db-where($where)-count();//獲取符合條件的數據總數count
$page
=
new
Page($count,
10);//實例化page類,傳入數據總數和每頁顯示10條內容
$limit
=
$page-firstRow
.
‘,’
.
$page-listRows;//每頁的數據數和內容$limit
$result
=$db-where($where))-limit($limit)-select();//分頁查詢結果
$this-result
=
$result;//賦值
$this-show
=
$page-show();//獲取分頁的底部信息
以上代碼是分頁類實現的基本語句,當然喜歡使用原生sql語句的朋友也可以配合原生sql語句實現查詢分頁:
複製代碼
代碼如下:
import(‘ORG.Util.Page’);
//Page類的引入
$db
=
M(‘abc’);//實例化數據表abc
$where
=
array(
‘id’=’2’;
);//條件語句$where,例表中欄位id的值為2
$count
=
$db-where($where)-count();//獲取符合條件的數據總數count
$page
=
new
Page($count,
10);//實例化page類,傳入數據總數和每頁顯示10條內容
$Modle
=
new
Model();//實例化新數據模型
$sql
=
‘select
id,name
from
abc
where
‘.$where.’
limit
‘.$page-firstRow.’,’.$page-listRows;//sql語句
$result
=
$Modle-query($sql);//執行sql語句
$this-result
=
$result
$this-show=$page-show();
當然,分布查詢獲取的內容也可以先對查詢完的數據進行處理再賦值,比如
複製代碼
代碼如下:
…
$result
=$db-where($where))-limit($limit)-select();//分頁查詢結果
$res
=
abc($result);//abc方法(自定義方法或php函數)對結果$result進行數據排序或重組處理等
$this-result
=
$res;//賦值
php分頁功能怎麼實現
php本身是沒有分頁概念的,分頁是URL傳參,然後通過mysql查詢語句到資料庫獲取數據,然後實現的分頁,url上的參數,通過PHP的$_GET都是可以獲取到的。
現在市面上的PHP框架基本都有PHP分頁類,參照文檔直接調用就好了,如果想看實現過程,可以去下載一個TP框架,然後打開裡面的分頁類查看裡面的源代碼。
php分頁使用方法
class Page
{
// 起始行數
public $firstRow ;
// 列表每頁顯示行數
public $listRows ;
// 頁數跳轉時要帶的參數
public $parameter ;
// 分頁總頁面數
protected $totalPages ;
// 總行數
protected $totalRows ;
// 當前頁數
protected $nowPage ;
// 分頁的欄的總頁數
protected $coolPages ;
// 分頁欄每頁顯示的頁數
protected $rollPage ;
// 分頁參數
public $p;
// 分頁顯示定製
protected $config = array(
‘header’=’條記錄’,
‘prev’=’上一頁’,
‘next’=’下一頁’,
‘first’=’第一頁’,
‘last’=’最後一頁’,
‘theme’=’ %totalRow% %header% %nowPage%/%totalPage% 頁 %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%’
);
/**
+———————————————————-
* 架構函數
+———————————————————-
* @access public
+———————————————————-
* @param array $totalRows 總的記錄數
* @param array $listRows 每頁顯示記錄數
* @param array $parameter 分頁跳轉的參數
+———————————————————-
*/
public function __construct($totalRows,$listRows,$p=’p’,$rollPage=5,$parameter=”) {
$this-p=$p;
$this-totalRows = $totalRows;
$this-parameter = $parameter;
$this-rollPage = $rollPage;
$this-listRows = !empty($listRows)?$listRows:15;
$this-totalPages = ceil($this-totalRows/$this-listRows); //總頁數
$this-coolPages = ceil($this-totalPages/$this-rollPage);
$this-nowPage = !empty($_GET[$this-p])?$_GET[$this-p]:1;
if(!empty($this-totalPages) $this-nowPage$this-totalPages) {
$this-nowPage = $this-totalPages;
}
$this-firstRow = $this-listRows*($this-nowPage-1);
}
public function setConfig($name,$value) {
if(isset($this-config[$name])) {
$this-config[$name] = $value;
}
}
/**
+———————————————————-
* 分頁顯示輸出
+———————————————————-
* @access public
+———————————————————-
*/
public function show() {
if(0 == $this-totalRows) return ”;
$nowCoolPage = ceil($this-nowPage/$this-rollPage);
$url = $_SERVER[‘REQUEST_URI’].(strpos($_SERVER[‘REQUEST_URI’],’?’)?”:”?”).$this-parameter;
$parse = parse_url($url);
if(isset($parse[‘query’])) {
parse_str($parse[‘query’],$params);
unset($params[$this-p]);
$url = $parse[‘path’].’?’.http_build_query($params);
}
//上下翻頁字元串
$upRow = $this-nowPage-1;
$downRow = $this-nowPage+1;
if ($upRow0){
$upPage=”a href='”.$url.””.$this-p.”=$upRow'”.$this-config[‘prev’].”/a”;
}else{
$upPage=””;
}
if ($downRow = $this-totalPages){
$downPage=”a href='”.$url.””.$this-p.”=$downRow'”.$this-config[‘next’].”/a”;
}else{
$downPage=””;
}
//
if($nowCoolPage == 1){
$theFirst = “”;
$prePage = “”;
}else{
$preRow = $this-nowPage-$this-rollPage;
$prePage = “a href='”.$url.””.$this-p.”=$preRow’ 上”.$this-rollPage.”頁/a”;
$theFirst = “a href='”.$url.””.$this-p.”=1′ “.$this-config[‘first’].”/a”;
}
if($nowCoolPage == $this-coolPages){
$nextPage = “”;
$theEnd=””;
}else{
$nextRow = $this-nowPage+$this-rollPage;
$theEndRow = $this-totalPages;
$nextPage = “a href='”.$url.””.$this-p.”=$nextRow’ 下”.$this-rollPage.”頁/a”;
$theEnd = “a href='”.$url.””.$this-p.”=$theEndRow’ “.$this-config[‘last’].”/a”;
}
// 1 2 3 4 5
$linkPage = “”;
for($i=1;$i=$this-rollPage;$i++){
$page=($nowCoolPage-1)*$this-rollPage+$i;
if($page!=$this-nowPage){
if($page=$this-totalPages){
$linkPage .= ” a href='”.$url.””.$this-p.”=$page’ “.$page.” /a”;
}else{
break;
}
}else{
if($this-totalPages != 1){
$linkPage .= ” span class=’current'”.$page.”/span”;
}
}
}
$pageStr = str_replace(
array(‘%header%’,’%nowPage%’,’%totalRow%’,’%totalPage%’,’%upPage%’,’%downPage%’,’%first%’,’%prePage%’,’%linkPage%’,’%nextPage%’,’%end%’),
array($this-config[‘header’],$this-nowPage,$this-totalRows,$this-totalPages,$upPage,$downPage,$theFirst,$prePage,$linkPage,$nextPage,$theEnd),$this-config[‘theme’]);
return $pageStr;
}
}
具體調用方法
$count是總記錄數
15是當前顯示數
$p=new Page($count,15);
$p-setConfig(‘header’, ‘個項目’); //可以設置變數名稱,即輸出的名稱
$page=$p-show(); //生成html page分頁html
總的流程是
先讀取出總的記錄數
,然後調用上面的分頁類
在分頁類裡面輸出2個變數一個是當前分頁讀取數據的開始,和偏移量
limit($p-listRows,$p-firstRow)
然後執行分頁sql語句
$page=$p-show();
page就是標準分頁html
Thinkphp數組分頁如何操作
第一種:利用Page類和limit方法
$User = M(‘User’); // 實例化User對象
import(‘ORG.Util.Page’);// 導入分頁類
$count = $User-where(‘status=1’)-count();// 查詢滿足要求的總記錄數
$Page = new Page($count,25);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數
$show = $Page-show();// 分頁顯示輸出
// 進行分頁數據查詢 注意limit方法的參數要使用Page類的屬性
$list = $User-where(‘status=1’)-order(‘create_time’)-limit($Page-firstRow.’,’.$Page-listRows)-select();
$this-assign(‘list’,$list);// 賦值數據集
$this-assign(‘page’,$show);// 賦值分頁輸出
$this-display(); // 輸出模板
第二種:分頁類和page方法的實現
$User = M(‘User’); // 實例化User對象
// 進行分頁數據查詢 注意page方法的參數的前面部分是當前的頁數使用 $_GET[p]獲取
$list = $User-where(‘status=1’)-order(‘create_time’)-page($_GET[‘p’].’,25′)-select();
$this-assign(‘list’,$list);// 賦值數據集
import(「ORG.Util.Page」);// 導入分頁類
$count = $User-where(‘status=1’)-count();// 查詢滿足要求的總記錄數
$Page = new Page($count,25);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數
$show = $Page-show();// 分頁顯示輸出
$this-assign(‘page’,$show);// 賦值分頁輸出
$this-display(); // 輸出模板
帶入查詢條件
如果是POST方式查詢,如何確保分頁之後能夠保持原先的查詢條件呢,我們可以給分頁類傳入參數,方法是給分頁類的parameter屬性賦值:
import(‘ORG.Util.Page’);// 導入分頁類
$mapcount = $User-where($map)-count();// 查詢滿足要求的總記錄數
$Page = new Page($count,25);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數
//分頁跳轉的時候保證查詢條件
foreach($map as $key=$val) {
$Page-parameter .= “$key=”.urlencode($val).”;
}
$show = $Page-show();// 分頁顯示輸出
原創文章,作者:BTTL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/141234.html