學php時寫的一個分頁顯示的類 (轉)

gugu99發表於2008-01-27
學php時寫的一個分頁顯示的類 (轉)[@more@]

本類需在前應事先開啟相應的。
本類幾乎可以實現分頁顯示的所有功能,首頁,上一頁,下一頁,末頁,跳轉,前翻,後翻任意頁,列條顯示,輸出文字顏色,背景色,都可自己設定,呼叫簡單易用,今寫出來供大家參考.
page.inc  分頁顯示的類
page.  測試檔案
首先需建立一個資料庫,這裡使用的是sale

作者: 大師  e: xyy_003@163.com
/*********************************************
以下是此分頁類的所有屬性:
***********************************************/
var $MaxLine; //每頁顯示行數
var $MaxPage; //每次顯示分頁數
var $Offset; //記錄偏移量
var $Total; //記錄總數
var $Result; //讀出的結果
var $TPages; //總頁數
var $CPages; //當前頁數
var $;//將要的SQL語句
var $PageQuery; //分頁顯示要傳遞的引數
var $OutPut; //輸出內容
var $TextSize;//輸出文字的大小
var $TextColor;//輸出文字的顏色
var $InBdrColor;//輸出文字框的邊框顏色
var $InBgColor;//輸出文字框的背景顏色


/*********************************************
以下是此分頁類的所有方法:
***********************************************/
構造 Page($SQL,$ML,$MP,$TS,$TC,$INBDRC,$INBGC)
引數:查詢的SQL語句、最大行數、每次輸出的頁碼數、輸出的文字大小、文字顏色、輸入框邊框原色、輸入框背景原色

設定傳遞引數 SetPageQuery($key,$value)
引數:引數名稱,引數值

讀取記錄,顯示輸出 ShowList($startpage,$t,$OF,$PHP_SELF)
引數:輸出頁碼的最小值、何種方式跳轉的標誌,資料記錄集的偏移量,當前檔名
此部分引數無須給定值,呼叫時只需延用以下變數名稱即可

page.inc  類檔案

/*********************************************
分頁顯示資料庫記錄的類
本類需在外部開啟相應的資料庫。
***********************************************/
class Page {
var $MaxLine; //每頁顯示行數
var $MaxPage; //每次顯示分頁數
var $Offset; //記錄偏移量
var $Total; //記錄總數
var $Result; //讀出的結果
var $TPages; //總頁數
var $CPages; //當前頁數
var $Sql;//將要執行的SQL語句
var $PageQuery; //分頁顯示要傳遞的引數
var $OutPut; //輸出內容
var $TextSize;//輸出文字的大小
var $TextColor;//輸出文字的顏色
var $InBdrColor;//輸出文字框的邊框顏色
var $InBgColor;//輸出文字框的背景顏色

/******建構函式*************
引數:查詢的SQL語句、最大行數、每次輸出的頁碼數、輸出的文字大小、文字顏色、輸入框邊框原色、輸入框背景原色
***************************/

function Page($SQL,$ML,$MP,$TS,$TC,$INBDRC,$INBGC){
$this->Sql=urldecode($SQL);
$this->Sql=StripSlashes($this->Sql);
$this->MaxLine=$ML;
$this->MaxPage=$MP;
$this->TextSize=$TS;
$this->TextColor=$TC;
$this->InBdrColor=$INBDRC;
$this->InBgColor=$INBGC;
}


//******設定傳遞引數************
function SetPagePara($key,$value){
$tmp[key]=$key; $tmp[value]=$value;
$this->PageQuery[]=$tmp;
}

/********讀取記錄,顯示輸出***************
引數:輸出頁碼的最小值、何種方式跳轉的標誌,資料記錄集的偏移量,當前檔名
此部分引數無須給定值,呼叫時只需延用以下變數名稱即可
****************************************/
function ShowList($startpage,$t,$OF,$PHP_SELF) {
if ($OF=="") $OF=0;
$this->Offset=$OF; //確定此次的偏移量
$querysql=$this->Sql;

//分情況確定輸出頁碼的起始值
if ($t==1) {$startpage=$startpage+$this->MaxPage;$this->Offset=($startpage-1)*$this->MaxLine;}
if ($t==2) {$startpage=$startpage-$this->MaxPage;if ($startpage<1) {$startpage=1;}$this->Offset=($startpage-1)*$this->MaxLine;}
if ($t==3) {$this->Offset=($startpage-1)*$this->MaxLine;}
if ($startpage<1 or $startpage=="") $startpage=1;

//計算此次查詢結果的記錄條數
$result=mysql_query($querysql);
$this->Total=mysql_num_rows($result);

//把當前頁的資料付給本類的對應屬性,便於呼叫時直接使用
$sqllimit=" LIMIT ".$this->Offset." , ".$this->MaxLine;
$this->Result=mysql_query($querysql.$sqllimit);

$this->Tpages=ceil($this->Total/$this->MaxLine);
$this->CPages=$this->Offset/$this->MaxLine+1;
$querysql=urlencode($this->Sql);

//確定輸出內容,並付給本類的相應屬性。
$this->OutPut="Offset&querysql=$querysql> ".$this->Tpages." 頁/第CPages."" style="border:$this->InBdrColor 1pt solid;background-color:$this->InBgColor;height:12pt;text-align: center;color:$this->TextColor">&nbspn";
$this->OutPut.="";
$k=count($this->PageQuery);

//生成需傳遞的引數字串或隱藏文字域
$strQuery="";
for($i=0;$i$strQuery.="&".$this->PageQuery[$i][key]."=".$this->PageQuery[$i][value];
$this->OutPut.="PageQuery[$i][key]."" value=".$this->PageQuery[$i][value].">";
}
if ($startpage>1) {$this->OutPut.="[Offset&querysql=$querysql&startpage=$startpage&t=2$strQuery style="color:$this->TextColor;text-decoration:none"><<]";}
for ($i=$startpage;$i<=$this->Tpages;$i++){$offset=($i-1)*$this->MaxLine; $this->OutPut.="[".$i."] ";
if ($i-$startpage>$this->MaxPage-2 and $i!=$this->Tpages) {$this->OutPut.="[Offset&querysql=$querysql&startpage=$startpage&t=1$strQuery style="color:$this->TextColor;text-decoration:none">>>]";break;}}
$this->OutPut.="";
}

//******end class
}

?>

/*********************************************

以下是應用詞類的一段示例
***********************************************/

//包含所需的標頭檔案,開啟資料庫
include("include/ini_var.inc");
include("include/_.inc");
include("page.inc");

if ($querysql=="") $querysql=urlencode("select * from class_subject_tea where Subject_id='0'");//只需改變urlencode內的字串即可
$pclass=new Page($querysql,5,8,"10pt","blue","black","#aaaaaa");//建立
$pclass->SetPagePara("para","paravalue");//設定需傳遞的引數,如有多個可多呼叫幾次
$pclass->ShowList($startpage,$t,$offset,$PHP_SELF);//生成輸出內容,並付給相應屬性
echo $pclass->OutPut;//輸出上面生成的內容
//輸出當前頁的資料
while($date=mysql_fetch_row($pclass->Result)){
echo "$date[1] ¦ $date[2] ¦ $date[3]
";
}

?>


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-998551/,如需轉載,請註明出處,否則將追究法律責任。

相關文章