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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 网友自拍咪咪爱 | 91久色| 欧美黑人ⅹxxx片 | 韩国三级 720p| 小泽玛丽av无码观看 | 99任你躁精品视频 | 999热在线精品观看全部 | 日韩欧美国产综合精品 | 风间由美vec399 | 国产欧美日韩一区二区三区在线 | 大ji吧快给我别停受不了视频 | 精品视频 久久久 | 国产老太婆hd老头 | 爱色成人网 | 极品丝袜小说全集 | 好爽好深好猛好舒服视频上 | 欧美一级在线播放 | 欧美艳星julnaann | 国产精品免费综合一区视频 | 97香蕉超级碰碰碰久久兔费 | 日本人作爰啪啪全过程 | 久久99亚洲AV无码四区碰碰 | 欧洲一级| 九草在线视频 | 亚洲精品成人在线 | 日韩一区在线播放 | 四虎国产精品视频免费看 | 精品一区二区三区高清免费观看 | tube性睡觉hd | 国产欧美一区二区精品性色 | 奇米影视777最新在线 | 91在线视频播放 | 九九精品免视频国产成人 | aⅴ免费视频 | 成人在线观看免费视频 | 91制片厂果冻传媒首页 | 韩国情事伦理片观看地址 | 污到湿的爽文免费阅读 | 欧美黑人一级片 | 精品网站一区二区三区网站 | 国产性片在线观看 |