本文实例讲述了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 . '" rel="external nofollow" rel="external nofollow" >' . $_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 . '" rel="external nofollow" rel="external nofollow" >' . $_page . '</a> ' ;
}
return $_pagelist ;
}
//首页
private function first() {
if ( $this ->page > $this ->bothnum+1) {
return ' <a href="' . $this ->url. '" rel="external nofollow" >1</a> ...' ;
}
}
//上一页
private function prev() {
if ( $this ->page == 1) {
return '<span class="disabled">上一页</span>' ;
}
return ' <a href="' . $this ->url. '&page=' .( $this ->page-1). '" rel="external nofollow" >上一页</a> ' ;
}
//下一页
private function next() {
if ( $this ->page == $this ->pagenum) {
return '<span class="disabled">下一页</span>' ;
}
return ' <a href="' . $this ->url. '&page=' .( $this ->page+1). '" rel="external nofollow" >下一页</a> ' ;
}
//尾页
private function last() {
if ( $this ->pagenum - $this ->page > $this ->bothnum) {
return ' ...<a href="' . $this ->url. '&page=' . $this ->pagenum. '" rel="external nofollow" >' . $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程序设计有所帮助。