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

首頁 > 語言 > PHP > 正文

分享的一個分頁類

2024-09-04 11:43:58
字體:
來源:轉載
供稿:網友
  1. <?php  
  2. /* C_page.php
  3. * $db = new mysql("localhost","root","roort","dbname","utf8"); //實例化數(shù)據庫類  
  4. * $sql = "SELECT * FROM article order by article_id desc"; //sql語句  
  5. * $page = new page($sql,7,"index.php?"); //實例化分頁類  
  6. * $sql = $page->pagesql(); //格式化sql語句  
  7. * $result = $db->query($sql);  
  8. * while($row=$db->fetch_array($result)) {  
  9. * echo $row["article_id"].$row["article_title"]."<br />";  
  10. * }  
  11. * echo $page->show(); //輸出html  
  12. * $db->close();  
  13. * ====================================================  
  14. */ 
  15. class multipage{  
  16. private $url;  
  17. private $pagesize//每頁要顯示的記錄數(shù)  
  18. private $sql//sql語句  
  19. private $getpage//當前頁數(shù)  
  20.  
  21. //參數(shù):sql語句,每頁記錄數(shù),傳遞鏈接(例如"index.php?"或者"index.php?sort=1&"等)  
  22. //輸出的url為index.php?page=23或者index.php?type=1&page=2  
  23. //意思為第23頁或者第1類的第2頁  
  24. //開始初始化  
  25. function __construct($sql,$pagesize,$url) {  
  26. $this->url = $url;  
  27. $this->pagesize = $pagesize;  
  28. $this->sql = $sql;  
  29. $this->getpage = intval$_GET['page'] ); //page值由url傳遞,例如list.php?page=2  
  30. if(!$this->getpage) { //檢查是否傳遞了page值,如果沒有則設置為1  
  31. $this->getpage=1;  
  32. }  
  33. }  
  34.  
  35. //獲取記錄總條數(shù)  
  36. function getcount() {  
  37. return mysql_num_rows(mysql_query($this->sql));  
  38. }  
  39.  
  40. //格式化sql語句  
  41. function pagesql() {  
  42. $nowpage = $this->getpage; //當前頁號  
  43. $limitNumber$this->pagesize; //每頁記錄數(shù)  
  44. if($nowpage<1) { //如果不是合法頁號,則設置為第一頁,如果超出了最后一頁是不是應該同樣操作????  
  45. $nowpage=1;  
  46. }  
  47. return $this->sql." limit ".($nowpage-1)*$limitNumber.",".$limitNumber;  
  48. //對sql語句處理,加上limit算法 select * from table limit offset,rows  
  49. // 1-10,11-20,21-30  
  50. //如每頁顯示10條,那么第3頁就要顯示第30-39間的10條,就是 select * from `table` limit 20,10  
  51. }  
  52.  
  53. //顯示分頁,參數(shù):顯示數(shù)字鏈接個數(shù),偏移量  
  54. //$offset的作用是如果當前頁號是4,那么分頁條中就會顯示從(4-2=2)開始的5頁的鏈接  
  55. //那么,要顯示的練級的頁號就是從2開始到6,即4-2=2到4+5-2-1=6  
  56. //分頁條的結構是 offset+1+(page-offset-1)=page  
  57. function show($page = 5,$offset = 2){ //page是要顯示的數(shù)字鏈接的個數(shù),如果頁數(shù)太多,不能全部顯示,只顯示一部分  
  58. $mpurl = $this->url; //默認url,就是除去頁號變量的部分  
  59. $curr_page = $this->getpage; //當前頁號  
  60. $perpage = $this->pagesize; //每頁記錄數(shù)  
  61. $num=$this->getcount(); //調用本類中的getcount函數(shù),獲得總記錄數(shù)  
  62. $multipage = ''//初始化分頁代碼html內容  
  63.  
  64. //如果總記錄數(shù)大于每頁顯示的記錄數(shù),也就是說一頁以上  
  65. if ($num$perpage){  
  66. $totalpage = ceil($num / $perpage); //pages總頁數(shù)=總記錄數(shù)/每頁記錄數(shù)  
  67. $from = $curr_page - $offset//分頁條開始頁號  
  68. $to = $curr_page + $page - $offset - 1; //分頁條結束頁號  
  69. //------------------------------------------------------------------------------------------------  
  70. if ($page$totalpage){ //如果初始的分頁條顯示的鏈接數(shù)大于 總頁數(shù)  
  71. $from = 1; //即 不足以填充滿一個分頁條的情況下  
  72. $to = $totalpage//最后一個鏈接就是總頁數(shù)  
  73. }else{  
  74. //------------------------------------------------------------------------------------------------  
  75. //下面討論的是當一個分頁條的鏈接數(shù)不能完整的顯示出所有的頁號時  
  76. //如 上一頁……3 4 5 6 7……下一頁 當前為第5頁,共有記錄100條,20頁  
  77. //------------------------------------------------------------------------------------------------  
  78. //第一種特殊情況 如 上一頁 1 2 3 4 5……下一頁 當前為第1頁的情況下  
  79. //這樣計算出來的$from<1甚至小于0  
  80. if ($from <1){ //當前頁號是1的時候,如果繼續(xù)按照上面的算法,$from頁號會是-1,這要求在$from<1時,重新初始化$from=1  
  81. $to = $curr_page + 1-$from//計算結束頁號  
  82. //這里的$from=$curpage - $offset  
  83. //$to為什么要等于$curpage + 1 - $from 呢?  
  84. //這里的$to的值永遠是$offset+1  
  85. //為什么不直接給$to一個常量或什么呢?  
  86. $from = 1; //重新設置開始頁號,因為$from<1是不合法的  
  87. if (($to - $from) <$page && ($to - $from) <$totalpage){ //如果分頁條顯示的鏈接數(shù)小于預設值和總頁數(shù)  
  88. $to = $page//結束頁號設置為$page  
  89. }  
  90. //------------------------------------------------------------------------------------------------  
  91. //下面的情況是當前頁為最后頁的情況,處理同上  
  92. }elseif ($to$totalpage){ //  
  93. $from = $curr_page - $totalpage + $to//  
  94. $to = $totalpage//  
  95. if (($to - $from) <$page && ($to - $from) <$totalpage){ //  
  96. $from = $totalpage - $page + 1; //  
  97. }  
  98. }  
  99. }  
  100. //開始定義輸出  
  101.  
  102.  
  103. $multipage .= '<div class="pagebar">';  
  104. $multipage .= '<span>'.$num.'</span>';  
  105. $multipage .= '<span>'.$curr_page.'/'.$totalpage.'</span>';  
  106. if ($curr_page - $offset> 1){  
  107. $multipage .= '<li><a href="'.$mpurl.'page=1" title="首頁">首頁</a></li> ';  
  108. $prev_page =$curr_page-1;  
  109. $multipage .='<li><a href="'.$mpurl.'page='.$prev_page.'title="上一頁">上一頁</a></li> ';  
  110. }  
  111. for ($i = $from$i <= $to$i++){  
  112. if ($i != $curr_page){  
  113. $multipage .='<li><a href="'.$mpurl.'page='.$i.'" title="第'.$i.'頁">'.$i.'</a></li> ';  
  114. }else{  
  115. $multipage .= '<li> <span class="pcurpage">'.$i.'</span></li>';//當前頁不用帶超鏈接  
  116. }  
  117. }  
  118. if ($curr_page + $offset <$totalpage){  
  119. $next_page =$curr_page-1;  
  120. $multipage .='<li><a href="'.$mpurl.'page='.$next_page.'title="下一頁">下一頁</a></li> ';  
  121. $multipage .= '<li><a href="'.$mpurl.'page='.$totalpage.'" title=“尾頁”>尾頁</a></li>';  
  122. }  
  123. $multipage .='</div>';  
  124. }  
  125. return $multipage;  
  126. }  
  127. }  
  128. //輸出結構為 首頁 上一頁 2 3 4 5 6 下一頁 尾頁  
  129. ?> 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 康乐县| 加查县| 屯昌县| 鲁山县| 景德镇市| 深圳市| 南木林县| 九寨沟县| 奉新县| 城口县| 阳西县| 体育| 平利县| 淄博市| 馆陶县| 东乡族自治县| 建湖县| 裕民县| 揭东县| 繁昌县| 紫阳县| 都匀市| 闽清县| 亚东县| 廉江市| 汶上县| 吉安县| 鸡西市| 巩留县| 金川县| 仙游县| 荔波县| 正蓝旗| 渭源县| 上饶县| 通山县| 金门县| 唐海县| 南华县| 乌兰县| 太康县|