PHP分頁功能使用類封裝實現
阿新 • • 發佈:2019-02-10
//Page.class.php(分頁類封裝)------------------------------
<?php
header("Content-Type:text/html;charset=utf-8");
class Page{
public $total; //總記錄數
public $page_size; //每頁顯示記錄數
public $total_page; //總頁數
public $cur_page; //當前頁
//定義構造方法,給成員屬性賦初值
function __construct($total,$page_size){
$this ->total = $total;
$this->page_size = $page_size;
$this->total_page = $this->getTotalPage();
$this->cur_page = $this->getCurPage();
}
//定義出口程式,用於輸出分頁類的效果
function pages(){
echo "共".$this->total_page."頁
當前第".$this->cur_page."頁 "
.$this->flist()
.$this->listNum()
.$this->llist();
}
//定義成員方法,獲取總頁數
private function getTotalPage(){
//ceil(總記錄數/每頁顯示記錄數)
$total_page = ceil($this->total/$this->page_size);
return $total_page;
}
//獲取當前頁
private function getCurPage(){
//http://localhost/Page.class.php
$cur_page = isset($_GET['p'])?$_GET['p']:1;
//$cur_page = 1
//$this->total_page = 0
//對當前頁的取值進行判斷
if($cur_page<1){
$cur_page=1;
}else if($cur_page>$this->total_page&&$this->total_page!=0){
$cur_page=$this->total_page;
}
return $cur_page;
}
// 1 2 3 4 5 6 7
private function listNum(){
//定義佇列長度
$num = 3;
//1 2 3
$lists = "";
for($i=$num;$i>=1;$i--){
$n = $this->cur_page-$i;
if($n>=1){
$lists.=" <a href='?p=".$n."'>$n</a> ";
}
}
//連線上當前頁
$lists .= " ".$this->cur_page." ";
//5 6 7
for($i=1;$i<=$num;$i++){
//$n = 11+1=12
$n = $this->cur_page+$i;
if($n<=$this->total_page){
$lists.=" <a href='?p=".$n."'>$n</a> ";
}
}
return $lists;
}
//首頁 上一頁
private function flist(){
//$prev = 1-1 = 0
//$prev = 2-1 = 1
$prev = $this->cur_page-1;
$lists = "";
if($prev>=1){
$lists = "<a href='?p=1'>首頁</a>
<a href='?p=".$prev."'>上一頁</a>";
}
return $lists;
}
//下一頁 尾頁
private function llist(){
//$next = 10+1 = 11
//$next = 11+1 = 12
$next = $this->cur_page+1;
$lists = "";
if($next<=$this->total_page){
$lists = " <a href='?p=".$next."'>下一頁</a>
<a href='?p=".$this->total_page."'>尾頁</a>";
}
return $lists;
}
}
//總記錄數52
$total = 52;
//每頁顯示的記錄數
$page_size = 5;
$p = new Page($total,$page_size);
$p->pages();