非常簡單好用的PHP的MYSQL分頁類

jopen 12年前發布 | 64K 次閱讀 PHP PHP開發

這個類沒有公有的方法,像上一頁、下一頁、首頁、末頁、當前頁數、總頁數、當前顯示條數、總條數這些值,分別賦給了成員屬性,調用時只需要輸出相應的成員屬性即可,非常方便。

在實例化傳值的時候,只需要傳數據庫地址、帳號、密碼、庫名、表名、每頁顯示的數目即可!

<?php
class page{
    private $dbadd; //數據庫地址
    private $dbuser; //數據庫用戶名
    private $dbpwd; //數據庫密碼
    private $dbname; //數據庫名 
    private $tablename; //數據表名
    private $num; //每頁顯示的行數
    private $total; //表中數據總數
    private $totalpage; //總頁數
    private $page; //當前頁數
    private $limit; //查詢數
    private $arrs; //查詢后返回的數據
    private $col; //總列數
    private $nostart; //當前頁開始的記錄數
    private $noend; //當前頁結束的記錄數
    private $head; //首頁
    private $end;  //尾頁
    private $last;  //上一頁
    private $nexts;  //下一頁

function __construct($dbadd, $dbuser, $dbpwd, $dbname, $tablename, $num){
    $this->dbadd=$dbadd;
    $this->dbuser=$dbuser;
    $this->dbpwd=$dbpwd;
    $this->dbname=$dbname;
    $this->tablename=$tablename;
    $this->num=$num;
    $this->total=$this->gettotal();   //得到總條數
    $this->totalpage=ceil($this->total/$this->num); //獲取總頁數
    $this->page=$this->getpage(); //得到當前頁數
    $this->limit=$this->setlimit(); //得到查詢的數據
    $this->arrs=$this->getarrs(); //得到查詢的結果       
    $this->col=$this->getcol(); //獲取總列數
    $this->nostart=($this->page-1)*$num+1;
    $this->noend=$this->page==$this->totalpage ? $this->total : $this->page*$num;
    $this->head=$this->page==1 ? "首頁" : "<a href='?page=1'>首頁</a>";
    $this->end=$this->page==$this->totalpage ? "尾頁" : "<a href='?page={$this->totalpage}'>尾頁</a>";
    $this->last=$this->page==1 ? "上一頁" : "<a href='?page=".($this->page-1)."'>上一頁</a>";
    $this->nexts=$this->page==$this->totalpage ? "下一頁" : "<a href='?page=".($this->page+1)."'>下一頁</a>";
}

private function getcol(){
    $linkss=mysql_connect($this->dbadd, $this->dbuser, $this->dbpwd);
    mysql_select_db($this->dbname, $linkss);
    $result=mysql_query("select * from {$this->tablename}", $linkss);
    $col=mysql_num_fields($result);
    mysql_close($linkss);
    return $col;
}

private function getarrs(){ //根據條件再次查詢并返回結果
    $sql="select * from {$this->tablename} limit {$this->limit}, {$this->num}";
    $links=mysql_connect($this->dbadd, $this->dbuser, $this->dbpwd);
    mysql_select_db($this->dbname, $links);  
    $result=mysql_query($sql, $links);  
    while($arr=mysql_fetch_assoc($result)){
        $arrs[]=$arr;
    }
    return $arrs;
    mysql_close($links);
}

private function setlimit(){
    return ($this->page-1)*$this->num;
}

private function getpage(){
    $page=isset($_GET["page"]) ? $_GET["page"] : 1;
    $page=$page>$this->totalpage ? $this->totalpage : $page;
    $page=$page<1 ? 1 : $page;
    return $page;
}

private function gettotal(){    //得到表中所有記錄的總數
    $link=mysql_connect($this->dbadd, $this->dbuser, $this->dbpwd);
    mysql_select_db($this->dbname, $link);
    $result=mysql_query("select * from {$this->tablename}", $link);
    $total=mysql_num_rows($result);
    mysql_close($link);
    return $total;
}

function __get($args){
    switch($args){
        case "arrs":  //根據條件查詢出的結果,是二維數組
            return $this->arrs;
            break;
        case "totalpage": //總頁數
            return $this->totalpage;
            break;
        case "col":   //總列數
            return $this->col;
            break;
        case "page":  //當前頁
            return $this->page;
            break;
        case "nostart": //當前頁顯示的記錄的起始條數
            return $this->nostart;
            break;
        case "noend": //當前頁顯示的記錄的結束條數
            return $this->noend;
            break;
        case "head":  //首頁按鈕
            return $this->head;
            break;
        case "end":   //尾頁按鈕
            return $this->end;
            break;
        case "last":  //上一頁按鈕
            return $this->last;
            break;
        case "nexts": //下一頁按鈕
            return $this->nexts;
            break;
    }
}

} ?></pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!