分页类

 1 <?php
 2 
 3 
 4 class PageTool{
 5     protected $total =0;
 6     protected $perpage = 10;
 7     protected $page = 1;
 8 
 9 
10     public function __construct($total,$perpage =false,$page=false){
11         $this->total = $total;
12         if($perpage){
13             $this->perpage = $perpage;
14         }
15 
16         if($page){
17             $this->page = $page;
18         }
19     }
20     //重要的参数都已拿到,开始创建分页导航,创建分页导航两个步骤,一是保存地址栏参数,二是根据总页数和当前页数计算导航链接,先保存地址栏参数
21     public function show(){
22         $cnt = ceil($this->total/$this->perpage);
23         //分析url地址参数,去掉里面的page,
24         $url = $_SERVER['REQUERST_URI'];/*得到诸如 baidu.com?id=3&cat=5$page=99
25         //拿到带参数的地址栏后用parse_url()函数把上面路径拆成数组array(
26                                                                             [path] =>baidu.com
27                                                                             [query] =>id=3&cat=5$page=99
28 */
29         $parse = parse_url($url);
30          //判断有没有参数,也就是数组中有没有query,有了把它再拆开,用parse_str()函数
31          $param =array();
32          if(isset($parse['query'])){
33             $param = parse_str($parse['query']);/*array(
34                                                                                     [id]  = 3,
35                                                                                     [cat]=5,
36                                                                                     [page] =99
37          */
38          }
39 
40         //去掉里面的page参数,不管有没有都unset下,
41         unset($param['page']);
42 
43         $url = $parse['path'] . '?';
44 
45         if(!empty($param)){
46             $param = http_build_query($param);//重新拼成id=3&cat=5
47             $url =$url .$param . '&'; //baidu.com?id=3&cat=5
48         }
49 
50           $nav = array();
51         $nav[0] = '<span class="page_now">' . $this->page . '</span>';
52 
53                for($left = $this->page-1,$right=$this->page+1;($left>=1||$right<=$cnt)&&count($nav) <= 5;) {
54 
55             if($left >= 1) {
56                 array_unshift($nav,'<a href="' . $url . 'page=' . $left . '">[' . $left . ']</a>');
57                 $left -= 1;
58             }
59 
60             if($right <= $cnt) {
61                 array_push($nav,'<a href="' . $url . 'page=' . $right . '">[' . $right . ']</a>');
62                 $right += 1;
63             }
64         }
65 
66 
67 
68         return implode('',$nav);
69     }
70 
71 }
原文地址:https://www.cnblogs.com/a2762/p/4063984.html