PHP分頁類

b4c2 9年前發布 | 2K 次閱讀 PHP

class PageTool{
private $nums; //總條目數
private $eachNums;//每頁顯示的條目數
private $pages;//總頁數
private $eachPages;//每次顯示的頁數
private $currentPage;//當前選中頁
private $pageArray=array();//分頁數組
/*
@ 實例后__construct()方法自動執行,需傳入以下參數
@$nums 總條目數
@$eachNums 每頁顯示的條目數
@$eachPages 每次顯示的頁數
@$currentPage 當前選中的頁數(可選參數)
*/
public function __construct($nums,$eachNums,$eachPages=1,$currentPage=1){
//頭信息,用UTF8顯示
header('Content-type:text/html;charset=utf-8');
//總條目數
$this->nums=$nums;
//每頁顯示的條目數
$this->eachNums=$eachNums;
//總頁數
$this->pages=ceil($nums/$eachNums);
//每次顯示的頁數
if($eachPages>=$this->pages){
$this->eachPages=$this->pages;
}else{
$this->eachPages=$eachPages;
}
/*
當前選中頁
如果傳了值并且大于計算出的總頁數,則選中頁默認為最后一頁
否則檢測地址欄是否有page數,若有則設為當前選中頁,否則默認為空
*/
if(!empty($currentPage)&&$currentPage>$this->pages){
$this->currentPage=$this->pages;
}else{
$this->currentPage=isset($_GET['page'])?$_GET['page']+0:$currentPage;
}
//生成分頁數組
$this->pageArray($eachPages);
}
//當對象失去所有引用或顯示銷毀時,則自動調用__destruct()方法,自動銷毀屬性.
public function __destruct(){
unset($this->nums);
unset($this->eachNums);
unset($this->pages);
unset($this->eachPages);
unset($this->currentPage);
unset($this->pageArray);
}
//建立分頁數組(用于顯示每次顯示的頁碼)
//如顯示十頁: 1 2 3 4 5 6 7 8 9 10
protected function pageArray(){
for($i=0;$i<$this->eachPages;$i++){
$this->pageArray[$i]=$i;
}
return $this->pageArray;
}
//選中某頁后顯示的頁條目
protected function showPages(){
//顯示頁數的數組
$showPages=$this->pageArray;
if($this->eachPages>=$this->pages){
for($i=0;$i<$this->pages;$i++){
$showPages[$i]=$i+1;
}
}else if($this->currentPage<=3){
for($i=0;$i$showPages[$i]=$i+1;
}
}else if($this->currentPage<=$this->pages && $this->currentPage>($this->pages-$this->eachPages+1)){
for($i=0;$i<$this->eachPages;$i++){
$showPages[$i]=($this->pages-$this->eachPages)+1+$i;
}
}else{
for($i=0;$i<$this->eachPages;$i++){
$showPages[$i]=$this->currentPage-2+$i;
}
}
return $showPages;
}
//完成分頁
public function constructPages(){
//當前頁
$str='當前'.$this->currentPage.'/'.$this->pages.'頁';
//上頁
if($this->currentPage<=1){$upPage=1;}else{$upPage=$this->currentPage-1;}
//下頁
if($this->currentPage>=$this->pages){$downPage=$this->pages;}else{$downPage=$this->currentPage+1;}
//最后頁
$lastPage=$this->pages;
//腳本名
$script_name=$_SERVER['SCRIPT_NAME'];
//?后的字符串
$query_string=$_SERVER['QUERY_STRING'];
$arr=array();
//?后的字符串處理成數組
parse_str($query_string,$arr);
//刪除page項
unset($arr['page']);
//將數組轉換成新的string地址
$query_string=http_build_query($arr);
//組成新的URL
if(empty($query_string)){
$url=$script_name.'?';
}
$url=$script_name.'?'.$query_string.'&';
//生成分頁數組
$showPages=$this->showPages();
//循環出分頁
$URL='';
foreach($showPages as $v){
if($v==$this->currentPage){
$URL.=''.'['.$v.'] ';
}else{
$URL.=''.'['.$v.']'.' ';
}
}
//首頁
$firstPage=''.'首頁'.' ';
//上一頁
$up=''.'上一頁'.' ';
//下一頁
$down=''.'下一頁'.' ';
//尾頁
$last=''.'尾頁'.' ';
return $firstPage.$up.$URL.$down.$last;
}
}
//$page=new PageTool(50,5,5);
//echo $page->constructPages();
 

 本文由用戶 b4c2 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!