首頁 >後端開發 >php教程 >帶有多種分頁方式的php分頁類

帶有多種分頁方式的php分頁類

WBOY
WBOY原創
2016-07-25 09:00:34765瀏覽
  1. Class PAGE {

  2. //類開始
  3. /**************************************************** ****
  4. * $total 記錄總數
  5. * $pageNum 每頁顯示的條數
  6. * $url = '' 連結
  7. * $page->StartPage(顯示分類統計,字元分類/數字分頁,跳轉);
  8. * $page->StartPage(true/false, true/false, true/false);
  9. * site http://bbs.it-home.org
  10. ************************************************** *******/
  11. private $total; //記錄總數
  12. private $pageNum; //每頁顯示數字
  13. private $page; //目前頁數
  14. private $pages; //總的頁數
  15. private $url; //頁面url
  16. private $Aque; //URL參數
  17. /* 建構子*/
  18. public function PAGE($total, $pageNum, $url='?' ){
  19. $this->total = $total; //總記錄數.
  20. $this->pageNum = $pageNum; //每頁顯示數.
  21. $this->url = $this ->StrSift($url); //判斷$url的值是否合法.
  22. $this->Aque = $_GET; //頁面原來所傳遞參數.
  23. $this->page = $this- >StrSift($_GET['page']); //目前頁面GET(全域變數)方式參數,目前頁碼.
  24. $this->page = is_numeric($this->page) ? $this->page : 1; //當頁碼不為數字時,則設為1.
  25. $this->pages = ceil($total/$pageNum); //總頁數.
  26. if($this ->pagepage = 1; //當頁碼小於1時,則設為1.
  27. //if($this->page>$this->pages) $this ->page = $this->pages; //當頁碼大於最大頁碼時,則把其設為最大頁碼.
  28. }
  29. /******************
  30. * 分頁方式
  31. *******************/
  32. function StartPage($str , $view=true, $jump=true){
  33. if($view==true) $PageStr .= $this->GetCount(); //分頁統計資訊
  34. if($str==' str') $PageStr .= $this->GetPageStr(); //選擇字元分頁形式
  35. else $PageStr .= $this->GetPageNum(); //選擇數字分頁形式
  36. if($jump ==true) $PageStr .= $this->JumpSelect(); //跳轉
  37. return $PageStr;
  38. }
  39. /**********************************************

  40. * 顯示統計資訊. 格式:共5筆記錄頁:2/3
  41. ********************************** *************/
  42. function GetCount(){
  43. $CountStr = "共". $this->total ."筆錄 頁:".$this->page."/".$this- >pages."  ";
  44. return $CountStr;
  45. }
  46. /***********************************************

  47. * 分頁格式形一:第一頁上一頁下一頁末頁
  48. ******************************** ****************/
  49. function GetPageStr(){
  50. $url = $ this->url; //取得URL
  51. //對URL參數進行處理:數組的鍵是URL變量,數組的值是URL變量的值.
  52. foreach($this->Aque as $key = > $val){
  53. switch($key){
  54. case "page":
  55. $Next = $val + 1;
  56. $Prev = $val - 1;
  57. break;
  58. default:
  59. $Sque .= "&$key=".$this->StrSift($val);
  60. }
  61. }
  62. if($Next==0) $Next= 2;
  63. //首頁上一頁
  64. switch($this->page){
  65. case $this->page $pagestr .= "首頁  ";
  66. $pagestr .= "上一頁  ";
  67. break;
  68. default:
  69. $pagestr .= "首頁 a>  ";
  70. $pagestr .= "上一頁  ";
  71. }
  72. //下一頁末頁
  73. switch($this->page){
  74. case $this->page>=$this->pages:
  75. $pagestr .= "下一頁  ";
  76. $pagestr .= "末頁  ";
  77. break;
  78. default:
  79. $pagestr .= "下一頁  ";
  80. $pagestr .= "末頁  ";
  81. }
  82. //回傳分頁字串.
  83. return $pagestr;
  84. }
  85. /**************************************************** *******

  86. * 分頁格式形如:共4307筆記錄頁:1/72 1 2 3 4 5 6 7 8 9 10
  87. ************ ************************************************/
  88. function GetPageNum(){
  89. $url = $this->url;
  90. //對URL參數處理:陣列的鍵是URL變量,數組的值是URL變量的值.
  91. foreach($this->Aque as $key => $val){
  92. switch($key){
  93. case $key! ="page":
  94. $Sque .= "&$key=".$this->StrSift($val);
  95. }
  96. }
  97. switch($this->pages){
  98. //總頁數大於12頁:
  99. case $this->pages>12:
  100. //分頁數字前: switch($this->page){
  101. case $this->page>1:
  102. $pagestr .= " ";
  103. $pagestr .= " ";
  104. break;
  105. default:
  106. $pagestr .= " $pagestr .= " }
  107. //分頁數字:1 2 3 4 5 6 當前頁碼左邊6個分頁連結,右邊6個分頁連結.
  108. for($i=$this->page-6; $ipage+6; $i++){
  109. if($i>$this->pages) break;
  110. if($i==$this->page) $pagestr .= $i." ";
  111. elseif($i>=1) $pagestr .= "$i ";
  112. }
  113. //分頁數字後: > >>
  114. switch($this->page){
  115. case $this->pagepages:
  116. $pagestr .= "> > ";
  117. $pagestr .= "> ";
  118. break ;
  119. default:
  120. $pagestr .= "> ";
  121. $pagestr .= ">> ";
  122. }
  123. break;
  124. default:
  125. //總頁數小於12頁:
  126. for($i=1; $ipages; $i++){
  127. switch($i){
  128. case $i==$this-> page:
  129. $pagestr .= $i." ";
  130. break;
  131. default:
  132. $pagestr .= "$i ";
  133. }
  134. }
  135. }
  136. //回傳分頁字串.
  137. return $pagestr;
  138. }
  139. /************************
  140. * 定義跳轉頁. BEGIN
  141. *************** **********/
  142. function JumpSelect(){
  143. $url = $this->url;
  144. //對URL參數進行處理:數組的鍵是URL變量,數組的值是URL變數的值.
  145. foreach($this->Aque as $key => $val){
  146. if($key != "page") $Sque .= "&$key=".$this ->StrSift($val);
  147. }
  148. $SelectStr = "nn";
  149. //傳回分頁字串.
  150. return $SelectStr;
  151. }
  152. /**********************************

  153. * 過濾特殊字元.
  154. ******* ****************************/
  155. private function StrSift($str){
  156. $str = str_replace(""""," ",$str);
  157. $str = str_replace("'","",$str);
  158. $str = str_replace("[url=file://%22,%22%22,$ str/]\","",$str[/url]);
  159. $str = str_replace("/","",$str);
  160. $str = str_replace(":","" ,$str);
  161. $str = str_replace("?","",$str); //移除會出現"??".
  162. $str = str_replace(">","",$ str);
  163. $str = str_replace(" $str = str_replace("%","",$str);
  164. $str = str_replace(" *","",$str);
  165. $str = str_replace("&","",$str);
  166. $str = str_replace(".","",$str);
  167. return $str;
  168. }
  169. //類結束

  170. }
  171. ?>
複製程式碼

有興趣的朋友,也可以參考下如下的文章: 一個不錯的php分頁類別的程式碼 一個實用的php分頁類

分頁樣式表:

複製程式碼


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn