php分頁類程式碼,支援多樣式可設定分頁方式

WBOY
發布: 2016-07-25 08:52:39
原創
990 人瀏覽過
  1. class Page {

  2. private $total;//總數
  3. private $limit;///傳回mysql的limit語句
  4. private $pageStart;//開始的數值
  5. private $pageStop;//結束的數值
  6. private $pageNumber;//顯示分頁數字的數量
  7. private $page; //目前頁
  8. private $pageSize;//每頁顯示的數量
  9. private $pageToatl;//分頁的總數量
  10. private $pageParam;//分頁變數
  11. private $uri;/private $uri;/ /URL參數
  12. /**
  13. * 分頁設定樣式不區分大小寫
  14. * %pageToatl% //總頁數
  15. * %page%//目前頁
  16. * %pageSize% //目前頁顯示資料條數
  17. * %pageStart%//本頁起始條數
  18. * %pageStop%//本頁結束條數
  19. * %total%//總資料條數
  20. * %first%//首頁
  21. * %ending%//尾頁
  22. * %up%//上一頁
  23. * %down%//下一頁
  24. * %F%//起始頁
  25. * %E%//結束頁
  26. * %omitFA%//前省略加跳轉
  27. * %omitEA%//後省略加跳轉
  28. * %omitF%//前省略
  29. * %omitE%//後省略
  30. * %numberF%//固定數量的數字分頁
  31. * %numberD%//左右對等的數字分頁
  32. * %input%//跳轉輸入框
  33. * %GoTo%//跳轉按鈕
  34. */ bbs.it-home.org
  35. private $pageType = '第%page%頁/共%pageToatl%頁 span>%first%%up%%F%%omitFA%%numberF%%omitEA%%E%%down%%ending%';
  36. //顯示值設定
  37. private $pageShow = array('first '=>'首頁','ending'=>'尾頁','up'=>'上一頁','down'=>'下一頁','GoTo'=>'GO');
  38. /**

  39. * 初始化資料,建構方法
  40. * @access public
  41. * @param int $total 資料總數
  42. * @param int $pageSize 每頁顯示條數
  43. * @param int $ pageNumber 分頁數字顯示數量(使用%numberF%和使用%numberD%會有不同的效果)
  44. * @param string $pageParam分頁變數
  45. * @return void
  46. */
  47. public function __construct($total,$pageSize=10,$pageNumber=5,$pageParam='p'){
  48. $this ->total = $total$this->pageSize = $pageSize$this->pageNumber = $pageNumber$this->pageParam = $pageParam;
  49. $this->calculate();
  50. }
  51. /**

  52. * 顯示分頁
  53. * @access public
  54. * @return string HTML分頁字串
  55. */
  56. public function pageShow(){
  57. $this->uri();
  58. if($this->pageToatl>1){
  59. if($this->page == 1){
  60. $ first = ''.$this->pageShow['first'].'';
  61. $up = ''.$this ->pageShow['up'].'';
  62. }else{
  63. $first = ''.$this->pageShow['first'].'';
  64. $up = ''.$this->pageShow['up'].'';
  65. }
  66. if($this->page >= $this->pageToatl){
  67. $ending = ''.$this->pageShow['ending'].' ';
  68. $down = ''.$this->pageShow['down'].'';
  69. }else{
  70. $ending = ' '.$this->pageShow['ending'].' ';
  71. $down = ''.$this->pageShow['down'].'';
  72. }
  73. $input = '';
  74. $GoTo = ' ' ;
  75. }else{
  76. $first = '';$up ='';$ending = '';$down = '';$input = '';$GoTo = '';
  77. }
  78. $this->numberF();
  79. return str_ireplace(array('%pageToatl%','%page%','%pageSize%','%pageStart%','%pageStop%', '%total%','%first%','%ending%','%up%','%down%','%input%','%GoTo%'),array($this-> pageToatl,$this->page,$this->pageStop-$this->pageStart,$this->pageStart,$this->pageStop,$this->total,$first,$ending, $up,$down,$input,$GoTo),$this->pageType);
  80. }

  81. /**

  82. *번호 매김
  83. */
  84. 비공개 기능 numberF(){
  85. $pageF = Stripos($this->pageType,'%numberF%');
  86. $pageD = Stripos($this->pageType,'%numberD%');
  87. $numberF = '';$numberD = '';$F = '';$E ='';$omitF = '';$omitFA = '';$omitE = '';$omitEA = '';
  88. if($pageF!==false || $pageD!==false){
  89. if($pageF!==false){
  90. $number = $this->pageNumber%2==0 ?$this->pageNumber/2:($this->pageNumber 1)/2;
  91. $DStart = $this->페이지 - $number<0?$this->페이지 - $number- 1:0;
  92. if($this->페이지 $number-$DStart > $this->pageToatl){
  93. $DStop = ($this->페이지 $number-$DStart) - $this->pageToatl;
  94. $forStop = $this->pageToatl 1;
  95. }else{
  96. $DStop = 0;
  97. $forStop = $this->페이지 $number- $DStart 1;
  98. }
  99. $forStart = $this->page-$number-$DStop<1?1:$this->page-$number-$DStop;
  100. for($ i=$forStart;$i<$forStop; $i){
  101. if($i==$this->페이지){
  102. $numberF .= ''.$i.' ';
  103. }else{
  104. $numberF .= ''.$i.'';
  105. }
  106. }
  107. }
  108. if($pageD!==false){
  109. $number = $this- >pageNumber;
  110. $forStart = $this->page-$number>0?$this->page-$number:1;
  111. $forStop = $this->페이지 $number>$ this->pageToatl?$this->pageToatl 1:$this->$number 1페이지;
  112. for($i=$forStart;$i<$this->page; $i){
  113. $numberD .= ''.$i.' ';
  114. }
  115. $numberD .= ''.$this->페이지.'';
  116. $ start = $this->1페이지;
  117. for($i=$start;$i<$forStop; $i){
  118. $numberD .= ''.$i.'';
  119. }
  120. }
  121. $F = $forStart>1?'1':'' ;
  122. $E = $forStop<$this->pageToatl 1?''.$this->pageToatl.'':'';
  123. if($forStart>2){
  124. $omitF = '< 스팬 클래스="생략">…';
  125. $startA = $this->page-$number<1?1:$this->page-$number;
  126. $ omitFA = '
  127. }
  128. if($forStop<$this->pageToatl){
  129. $omitE = '';
  130. $stopA = $this->$number 페이지>$this->pageToatl?$this->pageToatl:$this->$number 페이지;
  131. $omitEA = '';
  132. }
  133. }
  134. $this->pageType = str_ireplace(array('%F%','%E%','%omitFA%','%omitEA%','%omitF%','%omitE%' ,'%numberF%','%numberD%'),array($F,$E,$omitFA,$omitEA,$omitF,$omitE,$numberF,$numberD),$this->pageType);
  135. }

  136. /**

  137. *URL 처리 방법
  138. * @access public
  139. * @param array $url 관계 배열에 URL을 직접 유지
  140. * @return string 필터링된 URL 꼬리 매개변수
  141. */
  142. 비공개 함수 uri(){
  143. $url = $_SERVER["REQUEST_URI"];
  144. $ par = parse_url($url);
  145. if (isset($par['query'])) {
  146. parse_str($par['query'],$query);
  147. if(!is_array( $this->uri)){
  148. $this->uri = array();
  149. }
  150. array_merge($query,$this->uri);
  151. unset($query [$this->pageParam]);
  152. while($key = array_search('',$query)){
  153. unset($query[$key]);
  154. }
  155. $this ->uri = $par['path'].'?'.http_build_query($query);
  156. }else{
  157. $this->uri = $par['path'].'?' ;
  158. }
  159. }
  160. /**

  161. * 設定limit方法及計算起始條數與結束條數
  162. */
  163. 創函數calculate(){
  164. $this->pageToatl = ceil($this->total/$this ->pageSize) ;
  165. $this->page = intval($_GET[$this->pageParam]);
  166. $this->page = $this->page>=1? $this->page>$this->pageToatl?$this->pageToatl:$this->page:1;
  167. $this->pageStart = ($this->page-1) *$this->pageSize ;
  168. $this->pageStop = $this->pageStart $this->pageSize;
  169. $this->pageStop = $this->pageStop>$this ->總計? ->pageStop;
  170. $this->limit = $this->pageStart.','.$this->pageStop;
  171. }
  172. /**

  173. * 設定過濾器
  174. * /
  175. public function __set($name,$value){
  176. switch($name){
  177. case 'pageType':
  178. case 'uri':
  179. $this->$name = $value;
  180. return;
  181. case 'pageShow':
  182. if(is_array($value)){
  183. $this->pageShow = array_merge($this->pageShow,$value);
  184. }
  185. return;
  186. }
  187. }
  188. ;/**

  189. * 取值過濾器
  190. */
  191. public function __get($name){
  192. switch ( $name){
  193. case 'limit':
  194. case 'pageStart':
  195. case ' pageStop':
  196. return $this->$name;
  197. 預設:
  198. return;
  199. }
  200. }
  201. }
複製程式碼


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!