php分頁可利用表格來分頁類_PHP教程

來源:互聯網
上載者:User
* 在建立對象時需要的變數:$query(從資料表中擷取記錄數的sql語句),$page(當前頁碼),$maxline(每頁幾行))* 1、showpage方法:如果上面建立對象的$query正確,直接調用,即可輸出分頁資訊* 2、showtable方法:需要的變數:$query(從資料庫讀取記錄的SQL語句,不要加Limit,因為在方法中已經添加) 的表格,所以只需在前後加上
代碼如下 複製代碼

/*
* 直接輸出資料表和分頁資訊
* 在建立對象時需要的變數:$query(從資料表中擷取記錄數的sql語句),$page(當前頁碼),$maxline(每頁幾行))
* 1、showpage方法:如果上面建立對象的$query正確,直接調用,即可輸出分頁資訊
* 2、showtable方法:需要的變數:$query(從資料庫讀取記錄的SQL語句,不要加Limit,因為在方法中已經添加)
* 直接輸出

就是完整的表格
* 3、showresult方法:根據提交的$query中的SQL,直接將$result資源返回,表格可以自己定義
* 樣本:
//擷取當前頁,並定義每頁最大行
$page=1;
$maxline="10";
if(!empty($_GET["page"])){
$page=$_GET["page"];
}
//定義計算表內資料總數的SQL語句,這裡必須和下面的$query是同一個表和條件,建立對象,輸出頁碼和表格
$query="select count(*) from mailbox";
$a=new PageList($query, $maxline, $page);
$a->showpage();
//這裡顯示列表,需要和上面的SQL語句一樣的條件
$query="select username,name,quota,created,modified,active from mailbox order by created desc";
echo "

";$a->showtable($query);echo "
";
* */

class PageList{
private $link;
private $result;
private $maxline;
private $page=1;
private $startline=0;
private $countline;
public $countpage;
private $prevpage;
private $nextpage;
//資料庫聯結,需要修改為您自己的地址
private $dbhost=DBHOST;
private $dbuser=DBUSER;
private $dbpasswd=DBPASSWD;
private $dbtable=DBTABLE;

/*
* 建構函式中建立資料庫聯結
* 1、資料庫連接的4個參數設定為常量 記錄在config.php頁面中
* 2、串連資料庫,並選擇資料庫
* 3、設定資料庫執行的編碼方式為utf8
* 4、將接收到的$maxline,$page兩個變數賦值給類屬性,成為該類通用屬性
* (其中$query是count(*)的SQL,和下面方法中的query是不一樣的)
* 5、根據建立對象時遞交的$query語句,對資料庫執行查詢,將得到的總記錄數賦值到類屬性中$this->countline
* 將總記錄數/每頁行數,再用ceil函數高位取整,得到總頁數並賦值到類屬性中$this->countpage
* 6、根據遞交的當前頁碼$page,算出前後頁的數字$this->prevpage和$this->nextpage
* 還有必須算出資料庫讀取的起始行$this->startline
* 這裡分3種情況,page<2 ,page=最後一頁,page>1(這個情況可以不判斷,直接用else)
* */
public function __construct($query,$maxline,$page){
@$this->link=mysql_connect($dbhost,$dbuser,$dbpasswd) or die($this->feedback='System Error ,Please contect admin');
@mysql_select_db($dbtable,$this->link) or die($this->feedback='System Error ,Please contect admin');
@mysql_query('set names utf8');
$this->maxline=$maxline;

//讀取行數,並將結果返回$coutline
$this->result=mysql_query($query) or die($this->feedback='System Error ,Please contect admin');
if($count=mysql_fetch_row($this->result)){
//intval將字串轉為int,可以不轉,但這樣的程式更健康
$this->countline = intval($count[0]);
$this->countpage = ceil($this->countline/$maxline);
}
//判斷遞交的$page是否大於總頁數
if($page<=$this->countpage){
$this->page=$page;
}

if($this->page<2){
$this->prevpage=0;
$this->nextpage=2;
$this->startline= 0;
}elseif($this->page==$this->countpage){
$this->prevpage=$this->page-1;
$this->nextpage=0;
$this->startline= ($this->page-1)*$this->maxline;
}else{
$this->prevpage=$this->page-1;
$this->nextpage=$this->page+1;
$this->startline= ($this->page-1)*$this->maxline;
}
}

/*
* 解構函式
* 釋放資源,關閉資料庫連接
* */
public function __destruct(){
mysql_free_result($this->result);
mysql_close($this->link);
exit();
}

/*
* 輸出分頁資訊
* */
public function showpage(){
//$listnum顯示上下頁中間的數字位元,一定要偶數阿!否則不能被2除
$listnum=10;
echo $this->countline." Items, ".$this->countpage." Pages ";

if($this->prevpage==0){
echo "<<Prev ";
}else{
echo "prevpage."><<Prev ";
}

if($this->countpage<$listnum){ //判斷總頁數是否小於$listnum
$page_start=1;
$page_end=$this->countpage;
}elseif($this->page<$listnum/2){ //判斷當前頁是否小於$listnum的一半
$page_start=1;
$page_end=$listnum;
}elseif($this->page>$this->countpage-($listnum/2)){ //判斷當前頁是否是最後幾頁了
$page_start=$this->countpage-($listnum-1);
$page_end=$this->countpage;
}else{ //如果上面的條件都不符合,那當前也正在中間
$page_start=$this->page-($listnum/2-1);
$page_end=$this->page+($listnum/2);
}

for($i=$page_start;$i<=$page_end;$i++){ //根據上面判斷的start和end頁碼,迴圈輸出之間的頁碼
if($i==$this->page){
echo "".$i." ";
}else{
echo "".$i." ";
}
}

if ($this->nextpage==0){
echo " Next>>";
}else{
echo " nextpage.">Next>> ";
}

}

/*
* 根據sql語句讀取資料庫中的資料,然後列成表單輸出
* 需要的變數:$field(欄位),$table(表名),$startline(開始行),$maxline(每頁顯示行數)
* 輸出從表格的tr開始,從tr結束,所以在使用這個方法前後要加table的標籤
* */
public function showtable($query){
$query=$query." LIMIT ".$this->startline.",".$this->maxline;
$result = mysql_query($query) or die($this->feedback='System Error ,Please contect admin');
//行迴圈開始,定義一個$i變數,用來顯示行號,每次執行一條while語句,指標就指向下一條資料
$i=0;
while ($fetch = mysql_fetch_assoc($result)){
$i++;
echo "".$i."";
//列迴圈開始,因為通過while後,$fetch已經是個數組,所以通過foreach遍曆數組即可
foreach ($fetch as $value){
echo "".$value."";
}
echo "";
}
}

/*
* 這個方法是將資源傳出,表格在外面自訂樣式
* */
public function showresult($query){
$result = mysql_query($query) or die($this->feedback='System Error ,Please contect admin');
return $result;
}
}
?>

http://www.bkjia.com/PHPjc/631299.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631299.htmlTechArticle* 在建立對象時需要的變數:$query(從資料表中擷取記錄數的sql語句),$page(當前頁碼),$maxline(每頁幾行))* 1、showpage方法:如果上面建立對象...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.