一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 完美的php分頁類

完美的php分頁類

2021-07-12 16:20迪恩杰 PHP教程

這篇文章主要分享了一段完美的php分頁類,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了php分頁類的具體代碼,供大家參考,具體內容如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
<?php
  /**
    file: page.class.php
    完美分頁類 Page
  */
  class Page {
    private $total;              //數據表中總記錄數
    private $listRows;             //每頁顯示行數
    private $limit;              //SQL語句使用limit從句,限制獲取記錄個數
    private $uri;               //自動獲取url的請求地址
    private $pageNum;             //總頁數
    private $page;              //當前頁 
    private $config = array(
        'head' => "條記錄",
        'prev' => "上一頁",
        'next' => "下一頁",
        'first'=> "首頁",
        'last' => "末頁"
      );          
    //在分頁信息中顯示內容,可以自己通過set()方法設置
    private $listNum = 10;           //默認分頁列表顯示的個數
 
    /**
      構造方法,可以設置分頁類的屬性
      @param  int  $total    計算分頁的總記錄數
      @param  int  $listRows  可選的,設置每頁需要顯示的記錄數,默認為25條
      @param  mixed  $query  可選的,為向目標頁面傳遞參數,可以是數組,也可以是查詢字符串格式
      @param   bool  $ord  可選的,默認值為true, 頁面從第一頁開始顯示,false則為最后一頁
     */
    public function __construct($total, $listRows=25, $query="", $ord=true){
      $this->total = $total;
      $this->listRows = $listRows;
      $this->uri = $this->getUri($query);
      $this->pageNum = ceil($this->total / $this->listRows);
      /*以下判斷用來設置當前面*/
      if(!empty($_GET["page"])) {
        $page = $_GET["page"];
      }else{
        if($ord)
          $page = 1;
        else
          $page = $this->pageNum;
      }
 
      if($total > 0) {
        if(preg_match('/\D/', $page) ){
          $this->page = 1;
        }else{
          $this->page = $page;
        }
      }else{
        $this->page = 0;
      }
      
      $this->limit = "LIMIT ".$this->setLimit();
    }
 
    /**
      用于設置顯示分頁的信息,可以進行連貫操作
      @param  string  $param  是成員屬性數組config的下標
      @param  string  $value  用于設置config下標對應的元素值
      @return  object      返回本對象自己$this, 用于連慣操作
     */
    function set($param, $value){
      if(array_key_exists($param, $this->config)){
        $this->config[$param] = $value;
      }
      return $this;
    }
    
    /* 不是直接去調用,通過該方法,可以使用在對象外部直接獲取私有成員屬性limit和page的值 */
    function __get($args){
      if($args == "limit" || $args == "page")
        return $this->$args;
      else
        return null;
    }
    
    /**
      按指定的格式輸出分頁
      @param  int  0-7的數字分別作為參數,用于自定義輸出分頁結構和調整結構的順序,默認輸出全部結構
      @return  string  分頁信息內容
     */
    function fpage(){
      $arr = func_get_args();
 
      $html[0] = "<span class='p1'>&nbsp;共<b> {$this->total} </b>{$this->config["head"]}&nbsp;</span>";
      $html[1] = "&nbsp;本頁 <b>".$this->disnum()."</b> 條&nbsp;";
      $html[2] = "&nbsp;本頁從 <b>{$this->start()}-{$this->end()}</b> 條&nbsp;";
      $html[3] = "&nbsp;<b>{$this->page}/{$this->pageNum}</b>頁&nbsp;";
      $html[4] = $this->firstprev();
      $html[5] = $this->pageList();
      $html[6] = $this->nextlast();
      $html[7] = $this->goPage();
      
      $fpage = '<div style="font:12px \'\5B8B\4F53\',san-serif;">';
      if(count($arr) < 1)
        $arr = array(0, 1,2,3,4,5,6,7);
      
      for($i = 0; $i < count($arr); $i++)
        $fpage .= $html[$arr[$i]];
    
      $fpage .= '</div>';
      return $fpage;
    }
    
    /* 在對象內部使用的私有方法,*/
    private function setLimit(){
      if($this->page > 0)
        return ($this->page-1)*$this->listRows.", {$this->listRows}";
      else
        return 0;
    }
 
    /* 在對象內部使用的私有方法,用于自動獲取訪問的當前URL */
    private function getUri($query){ 
      $request_uri = $_SERVER["REQUEST_URI"]; 
      $url = strstr($request_uri,'?') ? $request_uri : $request_uri.'?';
      
      if(is_array($query))
        $url .= http_build_query($query);
      else if($query != "")
        $url .= "&".trim($query, "?&");
    
      $arr = parse_url($url);
 
      if(isset($arr["query"])){
        parse_str($arr["query"], $arrs);
        unset($arrs["page"]);
        $url = $arr["path"].'?'.http_build_query($arrs);
      }
      
      if(strstr($url, '?')) {
        if(substr($url, -1)!='?')
          $url = $url.'&';
      }else{
        $url = $url.'?';
      }
      
      return $url;
    }
 
    /* 在對象內部使用的私有方法,用于獲取當前頁開始的記錄數 */
    private function start(){
      if($this->total == 0)
        return 0;
      else
        return ($this->page-1) * $this->listRows+1;
    }
 
    /* 在對象內部使用的私有方法,用于獲取當前頁結束的記錄數 */
    private function end(){
      return min($this->page * $this->listRows, $this->total);
    }
 
    /* 在對象內部使用的私有方法,用于獲取上一頁和首頁的操作信息 */
    private function firstprev(){
      if($this->page > 1) {
        $str = "&nbsp;<a href='{$this->uri}page=1'>{$this->config["first"]}</a>&nbsp;";
        $str .= "<a href='{$this->uri}page=".($this->page-1)."'>{$this->config["prev"]}</a>&nbsp;";   
        return $str;
      }
 
    }
  
    /* 在對象內部使用的私有方法,用于獲取頁數列表信息 */
    private function pageList(){
      $linkPage = "&nbsp;<b>";
      
      $inum = floor($this->listNum/2);
      /*當前頁前面的列表 */
      for($i = $inum; $i >= 1; $i--){
        $page = $this->page-$i;
 
        if($page >= 1)
          $linkPage .= "<a href='{$this->uri}page={$page}'>{$page}</a>&nbsp;";
      }
      /*當前頁的信息 */
      if($this->pageNum > 1)
        $linkPage .= "<span style='padding:1px 2px;background:#BBB;color:white'>{$this->page}</span>&nbsp;";
      
      /*當前頁后面的列表 */
      for($i=1; $i <= $inum; $i++){
        $page = $this->page+$i;
        if($page <= $this->pageNum)
          $linkPage .= "<a href='{$this->uri}page={$page}'>{$page}</a>&nbsp;";
        else
          break;
      }
      $linkPage .= '</b>';
      return $linkPage;
    }
 
    /* 在對象內部使用的私有方法,獲取下一頁和尾頁的操作信息 */
    private function nextlast(){
      if($this->page != $this->pageNum) {
        $str = "&nbsp;<a href='{$this->uri}page=".($this->page+1)."'>{$this->config["next"]}</a>&nbsp;";
        $str .= "&nbsp;<a href='{$this->uri}page=".($this->pageNum)."'>{$this->config["last"]}</a>&nbsp;";
        return $str;
      }
    }
 
    /* 在對象內部使用的私有方法,用于顯示和處理表單跳轉頁面 */
    private function goPage(){
        if($this->pageNum > 1) {
        return '&nbsp;<input style="width:20px;height:17px !important;height:18px;border:1px solid #CCCCCC;" type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'page=\'+page+\'\'}" value="'.$this->page.'"><input style="cursor:pointer;width:25px;height:18px;border:1px solid #CCCCCC;" type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'page=\'+page+\'\'">&nbsp;';
      }
    }
 
    /* 在對象內部使用的私有方法,用于獲取本頁顯示的記錄條數 */
    private function disnum(){
      if($this->total > 0){
        return $this->end()-$this->start()+1;
      }else{
        return 0;
      }
    }
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/dej-11/p/7722243.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本高清动作片www欧美 | 亚洲天天综合网 | 叛佛 作者满栀小说免费阅读 | 手机av影院| 久久亚洲精品中文字幕60分钟 | 国产播放啪视频免费视频 | 手机看片国产免费现在观看 | 99久久综合给久久精品 | 日韩一本在线 | 手机在线观看国产精选免费 | 欧美一级级a在线观看 | 关晓彤被调教出奶水 | 色婷在线 | 欧美x×x| 毛片手机在线视频免费观看 | 饭冈加奈子乳喷cead144 | 果冻传媒mv在线观看入口免费 | 亚洲国产成人精品无码区APP | 日产乱码2021永久手机版 | 日本黄视频在线播放 | 久久成人精品免费播放 | 男女激情视频1000辣妞范 | 国产麻豆精品视频 | 激情视频网址 | 亚洲白拍| 四虎在线免费 | 视频一区二区 村上凉子 | 三级午夜宅宅伦不卡在线 | 午夜精品久久久久久久99蜜桃 | 欧美日韩中文字幕久久伊人 | 国产午夜免费不卡精品理论片 | 色婷婷精品 | 欧美精品色精品一区二区三区 | 欧美日韩在线观看一区二区 | 国产欧美精品一区二区三区–老狼 | 99国产热 | 国产最强大片免费视频 | 亚洲乱码一二三四区国产 | 成人福利在线视频免费观看 | 99久久综合久中文字幕 | 国语自产拍在线观看7m |