国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php分頁可利用表格來分頁類

2024-05-04 23:06:46
字體:
來源:轉載
供稿:網友
  1. <?php 
  2. /* 
  3.  * 直接輸出數據表和分頁信息 
  4.  * 在新建對象時需要的變量:$query(從數據表中獲取記錄數的sql語句),$page(當前頁碼),$maxline(每頁幾行)) 
  5.  * 1、showpage方法:如果上面創建對象的$query正確,直接調用,即可輸出分頁信息 
  6.  * 2、showtable方法:需要的變量:$query(從數據庫讀取記錄的SQL語句,不要加Limit,因為在方法中已經添加) 
  7.  *   直接輸出<tr><td></td></tr>的表格,所以只需在前后加上<table></table>就是完整的表格 
  8.  * 3、showresult方法:根據提交的$query中的SQL,直接將$result資源返回,表格可以自己定義 
  9.  * 示例: 
  10. //獲取當前頁,并定義每頁最大行 
  11. $page=1; 
  12. $maxline="10"; 
  13. if(!empty($_GET["page"])){ 
  14.  $page=$_GET["page"]; 
  15. } 
  16. //定義計算表內數據總數的SQL語句,這里必須和下面的$query是同一個表和條件,創建對象,輸出頁碼和表格 
  17. $query="select count(*) from mailbox"; 
  18. $a=new PageList($query, $maxline, $page); 
  19. $a->showpage(); 
  20. //這里顯示列表,需要和上面的SQL語句一樣的條件 
  21. $query="select username,name,quota,created,modified,active from mailbox order by created desc"; 
  22. echo "<table width='800' border='0' cellspacing='0' cellpadding='0' class='pagelist'>"; 
  23. $a->showtable($query); 
  24. echo "</table>"; 
  25.  * */ 
  26. class PageList{ 
  27.  private $link
  28.  private $result
  29.  private $maxline
  30.  private $page=1;  
  31.  private $startline=0; 
  32.  private $countline
  33.  public  $countpage
  34.  private $prevpage
  35.  private $nextpage
  36.  //數據庫聯接,需要修改為您自己的地址 
  37.  private $dbhost=DBHOST; 
  38.  private $dbuser=DBUSER; 
  39.  private $dbpasswd=DBPASSWD; 
  40.  private $dbtable=DBTABLE; 
  41. /* 
  42.  * 構造函數中建立數據庫聯接 
  43.  * 1、數據庫連接的4個參數設置為常量 記錄在config.php頁面中 
  44.  * 2、連接數據庫,并選擇數據庫 
  45.  * 3、設置數據庫執行的編碼方式為utf8 
  46.  * 4、將接收到的$maxline,$page兩個變量賦值給類屬性,成為該類通用屬性 
  47.  *   (其中$query是count(*)的SQL,和下面方法中的query是不一樣的) 
  48.  * 5、根據新建對象時遞交的$query語句,對數據庫執行查詢,將得到的總記錄數賦值到類屬性中$this->countline 
  49.  *   將總記錄數/每頁行數,再用ceil函數高位取整,得到總頁數并賦值到類屬性中$this->countpage 
  50.  * 6、根據遞交的當前頁碼$page,算出前后頁的數字$this->prevpage和$this->nextpage 
  51.  *  還有必須算出數據庫讀取的起始行$this->startline 
  52.  *  這里分3種情況,page<2 ,page=最后一頁,page>1(這個情況可以不判斷,直接用else)   
  53.  * */ 
  54.  public function __construct($query,$maxline,$page){ 
  55.   @$this->link=mysql_connect($dbhost,$dbuser,$dbpasswdor die($this->feedback='System Error ,Please contect admin'); 
  56.   @mysql_select_db($dbtable,$this->link) or die($this->feedback='System Error ,Please contect admin'); 
  57.   @mysql_query('set names utf8'); 
  58.   $this->maxline=$maxline
  59.    
  60.   //讀取行數,并將結果返回$coutline 
  61.   $this->result=mysql_query($queryor die($this->feedback='System Error ,Please contect admin'); 
  62.   if($count=mysql_fetch_row($this->result)){ 
  63.    //intval將字符串轉為int,可以不轉,但這樣的程序更健康 
  64.    $this->countline = intval($count[0]); 
  65.    $this->countpage = ceil($this->countline/$maxline); 
  66.   } 
  67.   //判斷遞交的$page是否大于總頁數 
  68.   if($page<=$this->countpage){ 
  69.    $this->page=$page
  70.   } 
  71.    
  72.   if($this->page<2){ 
  73.    $this->prevpage=0; 
  74.    $this->nextpage=2; 
  75.    $this->startline= 0; 
  76.   }elseif($this->page==$this->countpage){ 
  77.    $this->prevpage=$this->page-1; 
  78.    $this->nextpage=0; 
  79.    $this->startline= ($this->page-1)*$this->maxline; 
  80.   }else
  81.    $this->prevpage=$this->page-1; 
  82.    $this->nextpage=$this->page+1; 
  83.    $this->startline= ($this->page-1)*$this->maxline; 
  84.   } 
  85.  } 
  86. /* 
  87.  * 析構函數 
  88.  * 釋放資源,關閉數據庫連接 
  89.  * */ 
  90.  public function __destruct(){ 
  91.   mysql_free_result($this->result); 
  92.   mysql_close($this->link); 
  93.   exit(); 
  94.  } 
  95.   
  96. /* 
  97.  * 輸出分頁信息 
  98.  * */ 
  99.  public function showpage(){ 
  100.   //$listnum顯示上下頁中間的數字位數,一定要偶數阿!否則不能被2除 
  101.   $listnum=10; 
  102.   echo $this->countline." Items, ".$this->countpage." Pages  "
  103.   if($this->prevpage==0){ 
  104.    echo "&lt;&lt;Prev "
  105.   }else
  106.    echo "<a href=?page=".$this->prevpage.">&lt;&lt;Prev</a> "
  107.   } 
  108.    
  109.   if($this->countpage<$listnum){          //判斷總頁數是否小于$listnum 
  110.    $page_start=1; 
  111.    $page_end=$this->countpage; 
  112.   }elseif($this->page<$listnum/2){          //判斷當前頁是否小于$listnum的一半 
  113.    $page_start=1; 
  114.    $page_end=$listnum
  115.   }elseif($this->page>$this->countpage-($listnum/2)){  //判斷當前頁是否是最后幾頁了 
  116.    $page_start=$this->countpage-($listnum-1); 
  117.    $page_end=$this->countpage; 
  118.   }else{                    //如果上面的條件都不符合,那當前也正在中間 
  119.    $page_start=$this->page-($listnum/2-1); 
  120.    $page_end=$this->page+($listnum/2); 
  121.   } 
  122.    
  123.   for($i=$page_start;$i<=$page_end;$i++){       //根據上面判斷的start和end頁碼,循環輸出之間的頁碼 
  124.    if($i==$this->page){ 
  125.     echo "<b>".$i."</b>  "
  126.    }else
  127.     echo "<a href=?page=".$i.">".$i."</a>  "
  128.    } 
  129.   } 
  130.    
  131.   if ($this->nextpage==0){ 
  132.    echo " Next&gt;&gt;"
  133.   }else
  134.    echo " <a href=?page=".$this->nextpage.">Next&gt;&gt;</a> "
  135.   } 
  136.    
  137.  } 
  138. /* 
  139.  * 根據sql語句讀取數據庫中的數據,然后列成表單輸出 
  140.  * 需要的變量:$field(字段),$table(表名),$startline(開始行),$maxline(每頁顯示行數) 
  141.  * 輸出從表格的tr開始,從tr結束,所以在使用這個方法前后要加table的標簽 
  142.  * */  
  143.  public function showtable($query){ 
  144.   $query=$query." LIMIT ".$this->startline.",".$this->maxline; 
  145.   $result = mysql_query($queryor die($this->feedback='System Error ,Please contect admin'); 
  146.   //行循環開始,定義一個$i變量,用來顯示行號,每次執行一條while語句,指針就指向下一條數據 
  147.   $i=0; 
  148.   while ($fetch = mysql_fetch_assoc($result)){ 
  149.    $i++; 
  150.    echo "<tr><td>".$i."</td>"
  151.    //列循環開始,因為通過while后,$fetch已經是個數組,所以通過foreach遍歷數組即可 
  152.    foreach ($fetch as $value){ 
  153.     echo "<td>".$value."</td>"
  154.    } 
  155.    echo "</tr>"
  156.   } 
  157.  } 
  158. /* 
  159.  * 這個方法是將資源傳出,表格在外面自定義樣式 
  160.  * */ 
  161.  public function showresult($query){ 
  162.   $result = mysql_query($queryor die($this->feedback='System Error ,Please contect admin'); 
  163.   return $result
  164.  } 
  165. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 曲阳县| 济宁市| 海丰县| 襄城县| 政和县| 兴城市| 新化县| 二连浩特市| 高阳县| 昌江| 冀州市| 淮阳县| 黄石市| 黄浦区| 霍山县| 三河市| 兴山县| 铁力市| 克什克腾旗| 静安区| 武汉市| 盈江县| 淅川县| 阳春市| 宜章县| 新田县| 平舆县| 赣州市| 通山县| 无为县| 湖州市| 望谟县| 寿光市| 秦皇岛市| 磴口县| 班玛县| 罗城| 乌兰浩特市| 桂东县| 林州市| 洮南市|