本文实例讲述了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
|
<?php class Page { private $total ; //总记录 private $pagesize ; //每页显示多少条 private $limit ; //limit private $page ; //当前页码 private $pagenum ; //总页码 private $url ; //地址 private $bothnum ; //两边保持数字分页的量 //构造方法初始化 public function __construct( $_total , $_pagesize ) { $this ->total = $_total ? $_total : 1; $this ->pagesize = $_pagesize ; $this ->pagenum = ceil ( $this ->total / $this ->pagesize); $this ->page = $this ->setPage(); $this ->limit = "LIMIT " .( $this ->page-1)* $this ->pagesize. ",$this->pagesize" ; $this ->url = $this ->setUrl(); $this ->bothnum = 2; } //拦截器 private function __get( $_key ) { return $this -> $_key ; } //获取当前页码 private function setPage() { if (! empty ( $_GET [ 'page' ])) { if ( $_GET [ 'page' ] > 0) { if ( $_GET [ 'page' ] > $this ->pagenum) { return $this ->pagenum; } else { return $_GET [ 'page' ]; } } else { return 1; } } else { return 1; } } //获取地址 private function setUrl() { $_url = $_SERVER [ "REQUEST_URI" ]; $_par = parse_url ( $_url ); if (isset( $_par [ 'query' ])) { parse_str ( $_par [ 'query' ], $_query ); unset( $_query [ 'page' ]); $_url = $_par [ 'path' ]. '?' .http_build_query( $_query ); } return $_url ; } //数字目录 private function pageList() { for ( $i = $this ->bothnum; $i >=1; $i --) { $_page = $this ->page- $i ; if ( $_page < 1) continue ; $_pagelist .= ' <a href="' . $this ->url. '&page=' . $_page . '">' . $_page . '</a> ' ; } $_pagelist .= ' <span class="me">' . $this ->page. '</span> ' ; for ( $i =1; $i <= $this ->bothnum; $i ++) { $_page = $this ->page+ $i ; if ( $_page > $this ->pagenum) break ; $_pagelist .= ' <a href="' . $this ->url. '&page=' . $_page . '">' . $_page . '</a> ' ; } return $_pagelist ; } //首页 private function first() { if ( $this ->page > $this ->bothnum+1) { return ' <a href="' . $this ->url. '">1</a> ...' ; } } //上一页 private function prev() { if ( $this ->page == 1) { return '<span class="disabled">上一页</span>' ; } return ' <a href="' . $this ->url. '&page=' .( $this ->page-1). '">上一页</a> ' ; } //下一页 private function next() { if ( $this ->page == $this ->pagenum) { return '<span class="disabled">下一页</span>' ; } return ' <a href="' . $this ->url. '&page=' .( $this ->page+1). '">下一页</a> ' ; } //尾页 private function last() { if ( $this ->pagenum - $this ->page > $this ->bothnum) { return ' ...<a href="' . $this ->url. '&page=' . $this ->pagenum. '">' . $this ->pagenum. '</a> ' ; } } //分页信息 public function showpage() { $_page .= $this ->first(); $_page .= $this ->pageList(); $_page .= $this ->last(); $_page .= $this ->prev(); $_page .= $this ->next(); return $_page ; } } ?> |
分页样式如下图所示:
使用说明:
1
2
3
4
|
<?php $_page = new Page( $_total , $_pagesize ); //其中 $_total 是数据集的总条数,$_pagesize 是每页显示的数量. ?> |
希望本文所述对大家PHP程序设计有所帮助。