激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 懂色粉嫩av久婷啪 | 中文字幕免费播放 | 精品亚洲视频在线 | 天天撸日日夜夜 | 免费国产在线视频 | 色污视频| 婷婷中文字幕一区二区三区 | 久久精品国产99国产精品澳门 | 圆产精品久久久久久久久久久 | 免费视频一区 | 国产无遮挡一区二区三区毛片日本 | 亚洲男人一区 | 中文字幕电影免费播放 | 91国内精品久久久久免费影院 | 91精品观看91久久久久久国产 | 亚洲综合91 | 色日本视频 | 91avsese| 国产成人午夜精品 | 一级做a爰片性色毛片2021 | 国产成人精品区一区二区不卡 | xxxeexxx性国产 | 黄色av免费电影 | 成人三级视频网站 | 精品成人av一区二区三区 | 国产亚洲网| 99激情视频| 国产精品一区99 | 内地av在线 | 黄色一级片在线观看 | 91看片免费版 | 色婷婷久久久亚洲一区二区三区 | 免费观看一级欧美大 | 成人精品视频在线 | 午夜啪视频 | 爱操影视 | 精品一区二区三区在线观看国产 | 成人毛片100部免费观看 | 97视频一二区 | 色就色 综合偷拍区91网 | 亚洲国产高清视频 |