献丑了<?php
class Page
{
var $page=1; //當前頁
var $firstcount; //第一條記錄的位置
var $pagenav; //翻頁連接
var $pgsize; //每頁的大小
var $lastpg; //最後一頁頁碼,即最大頁數。
var $rows;

//構造函數 v5.0+
/*function __construct($pagesize=10){
$this->pgsize=$pagesize;
}*/

//構造函數 5.0以前版本
function Page($pagesize=10){
$this->pgsize=$pagesize;
}

//輸入查詢的sql語句,返回記錄集
function getRS($sql,$conn){
$result = mysql_query($sql,$conn);
if(!$result)
{
return false;
}
$this->rows=mysql_num_rows($result);
if($this->rows){
if(!empty($_GET['page']))
$this->page=$_GET['page'];
if($this->pgsize) //如果為0,剛不進行分頁
{
$this->lastpg=ceil($this->rows/$this->pgsize); //最後頁碼
$this->page=min($this->lastpg,$this->page); //防止輸入的當前頁比最大頁更大.
$this->page=max($this->page,1); //防止小於1
$this->firstcount=$this->pgsize*($this->page - 1); //計算起始記錄
$sql=$sql." limit ".$this->firstcount.",".$this->pgsize; //分頁查詢
}
$result=mysql_query($sql,$conn);
return $result;
}
return $result;
}

//翻頁字符串
function getPageCode($url=''){
if(!$this->pgsize)
{
$this->pagenav="顯示第 <B>".($this->rows?($this->firstcount+1):0)."</B>-<B>".$this->rows."</B> 筆,共 ".$this->rows." 筆";
return $this->pagenav;
}
if(!$url){ 
$url=$_SERVER["REQUEST_URI"]; //$_SERVER["REQUEST_URI"]可獲得本頁路徑和查詢字符串
}
$parse_url=parse_url($url); //parse_url($url)函數解析一個URL並返回一個關聯數組
$url_query=$parse_url["query"];  //parse_url($url)返回的數組中,"query"得到在問題?之後的查詢字符串
if($url_query){ //判斷是否為空 不為空就會有問號?
$url_query=ereg_replace("(^|&)page=".$_GET['page'],"",$url_query); //正則替換:將查詢字符串中page參數
$url=str_replace($parse_url["query"],$url_query,$url); //將去掉page參數的查詢字符串替換可能有page參數的查詢字符串
if($url_query){
$url.="&page";  //如果$url_query(去掉page參數後)還有字符,即有其它參數,
}else{
$url.="page"; //沒有其它參數
} //不用再加問號了,因為一直都沒去掉問號?
}else {
$url.="?page"; //$url_query查詢字符串為空,沒問號?
}
//得到有page參數的URL,$url
$this->pagenav="顯示第<B>".($this->rows?($this->firstcount+1):0)."</B>-<B>".min($this->firstcount+$this->pgsize,$this->rows)."</B>筆 共".$this->rows."筆";
//如果查詢得0行記錄,剛顯示第0筆.
$prepg=($this->page==1 ? 0 :$this->page-1); //上一頁頁碼,如果為0即本頁為首頁
$nextpg=($this->page==$this->lastpg ? 0 : $this->page+1); //下一頁頁碼,如果為0即本頁為尾頁
if($this->lastpg<=1){
return $this->pagenav;
}
$this->pagenav.=" <a href='$url=1'>首頁</a> ";
if($prepg){
$this->pagenav.=" <a href='$url=$prepg'>上一頁</a> "; 
}else{
$this->pagenav.=" 上一頁 ";
}
if($nextpg){
$this->pagenav.=" <a href='$url=$nextpg'>下一頁</a> "; 
}else{
$this->pagenav.=" 下一頁 ";
}
$this->pagenav.=" <a href='$url=".$this->lastpg."'>末頁</a> ";
$this->pagenav.=" 到第<select name='topage' size='1' onchange='window.location=\"$url=\"+this.value'>\n";
for($i=1;$i<=$this->lastpg;$i++){
if($i==$this->page){
$this->pagenav.="<option value='$i' selected>$i</option>\n";
}else{
$this->pagenav.="<option value='$i'>$i</option>\n";
}
}
$this->pagenav.="</select>頁 共".$this->lastpg."頁";
return $this->pagenav;
}
}
/*
封裝:譚武雲怎樣使用本類:先引入本文件:
include("Page.php");
再實例化一個對象
$myPage=new Page(10); //10為第頁的頁長
如果不要分頁 則
$myPage=new Page(0);
然後返回一個記錄集
$result=$myPage->getRS($sql,$conn); //$sql為查詢語句,不帶limit
$conn為數據庫連接
在要顯示翻頁的地方使用這個方法
echo $myPage->getPageCode();
*/
?>