php教程通用分頁類代碼
*/
class dividepage //分頁類
{
private $page ; 當前頁
private $total ; 總的記錄數
private $pagesize; 每頁的記錄數
private $prepage ; 前一頁
private $nextpage; 後一頁
private $lastpage ; 最後一頁
private $url; url
private $start; 當頁顯示記錄數開始條數
private $endp; 當頁顯示記錄數結束條數
private $first; 查詢開始數
建構函式
public function __construct($total,$pagesize,$url)
{
$this->total = intval($total);
$this->pagesize = intval($pagesize);
$this->url = $url;
$this->init();
}
//初始化分頁資訊
public function init()
{
$parse_url = parse_url($this->url);
& nbsp; print_r($parse_url);
$url_query = $parse_url['query'];
if(empty($url_query))
{
$this->page = 1;
$this->url = $this ->url.'? page=';
}
else
{
preg_match("/(^|&)page=(.*)(&|$)/ui",$url_query,$temp);
$this->page = intval($temp[2]);
$this->url=preg_replace("/page=(.*)/","page=",$this->url);
}
$this->lastpage = ceil($this->total/$this->pagesize) ? ceil($this->total/$this->pagesize) :1 ;
//最後一頁的頁碼,總數/每頁數向上取整,如果總數為0,則最後一頁為第一頁.
$this->page = min($this->lastpage,$this->page)>0 ? min($this->lastpage,$this->page) :1 ;
//當前頁大於最後一頁,則取最後一頁為當前頁,不大於0,則取1為當前頁.
$this->first = ($this->page - 1)*$this->pagesize ; //計算sql查詢語句起始位置
$this->prepage = $th is->page-1 ; //前一頁
$this->nextpage = $this->page+1 ; //後一頁
$this->start = $this->total?$this->first +1:0; //當頁記錄開始編號
$ this->endp = min($this->total,$this->page*$this->pagesize);//當頁記錄結束編號
}
public function getpageinfo() //取得當前頁基本資訊,如:顯示第 1-5 條記錄,共 9 條記錄。
{
return '<span class="pageinfostyle">顯示第<span class = "numberstyle">'.$this->start.'-'.$this->endp .' </span>條記錄,共<span class = "numberstyle">'.$this->total.' </span>條記錄。 </span>';
}
public function getpagenav()//取得分頁導航如:首頁 上一頁 下一頁 尾頁
{
$nav = "";
if($this->lastpage == 1)
{
return $nav;
break;
}
$nav = '<a href ="'.$this->url.'1" class = "navpagestyle" >首頁</a>';
if($this->prepage)
{
$nav.= '<a href = "'.$this->url.$this->prepage.'" class = "navpagestyle">上一頁</a>';
}
else
{
$nav.= '<a class = "navpagestyle">上一頁</a>';
}
if($this->nextpage <=$this->lastpage)
{
$nav.= '<a href = "'.$this- >url.$this->nextpage.'" class = "navpagestyle">下一頁</a> ';
}
else
{
$nav.= '<a class = "navpagestyle">下一頁</a>';
}
&n bsp; $nav.= '<a href = "'.$this->url.$this->lastpage.'" class = "navpagestyle" >尾頁</a>';
return $nav;
}
public function getjumpnav() //下拉跳轉分頁
{
$nav = '<span class = "pageinfostyle">到第<select name= "jumpnav" size="1" class = "jumpnav" onchange ='window.loca tion = "'.$this->url.'" +this.value'>'." n";
for($i=1 ; $i<=$this->lastpage ; $i++)
{
if($i==$this->page)
{
$nav.= '<option value ="'.$i.'" selected>'.$i.'</option>'." n";
}
else
{
$nav.='<option value = "'.$i.'">'.$i.'</option>'." n";
}
}
$nav.='</select>頁,共<span class= "numberstyle">'.$this->lastpage.' </span>頁</span>';
return $nav;
}
public function getlimit()
{
return $this->first.",".$this->pagesize;
}
public function getallnav() //獲取導航
{
return $this->getpageinfo().$this->getpagenav().$this->getjumpnav();
}
}
使用實例:
$sql1 = mysql教程_query("select * from sun_message");
$total=mysql_num_rows($sql1);//查詢到的資料的總條數
$pagesize = 5;//每頁顯示的記錄條數
$url = $_server['request_uri'];//請求的uri
$pageclass = new dividepage($total, $pagesize,$url); 創建分頁類,(類能自動初始化)
$limit =$pageclass->getlimit();//取得當前頁要顯示的記錄開始序號和每頁顯示條數,如:0, 5(顯示從0開始的5條記錄)
echo $dividepageclass->getallpagenav();//顯示所有分頁導航條,如:顯示第11-13條記錄,共13條記錄。 首頁 上一頁 下一頁 尾頁 到第 1 頁,共 3 頁
$sql2 = "select * from sun_message order by mid desc limit {$limit}"; 分頁內容輸出
$result=mysql_query($sql);
while($row=mysql_fetch_array($result))
{
echo "<hr><b>".$row[title]." | ".$row[author];
}