本文实例为大家分享了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
|
<?php
/*核心:首页、上一页、下一页、尾页的url*/
/*超全局$_SERVER*/
$page = new Page(5,60);
var_dump( $page ->allUrl());
class Page{
// 每页显示的个数
protected $number ;
// 一共有多少数据
protected $totalCount ;
// 当前页
protected $page ;
// url
protected $url ;
public function __construct( $number , $totalCount ){
$this ->number= $number ;
$this ->totalCount = $totalCount ;
//得到总页数
$this ->totalPage = $this ->getTotalPage();
//得到当前页数
$this ->page = $this ->getPage();
//得到URL
$this ->url = $this ->getUrl();
echo $this ->url;
}
/*得到总页数并向上取整*/
protected function getTotalPage(){
return ceil ( $this ->totalCount/ $this ->number);
}
/**/
protected function getPage(){
if ( empty ( $_GET [ 'page' ])){
$page =1;
} elseif ( $_GET [ 'page' ] > $this ->totalPage){
$page = $this ->totalPage;
} elseif ( $_GET [ "page" ]<1){
$page = 1;
} else {
$page = $_GET [ 'page' ];
}
return $page ;
}
protected function getUrl(){
//得到协议名
$scheme = $_SERVER [ 'REQUEST_SCHEME' ];
//得到主机名
$host = $_SERVER [ 'SERVER_NAME' ];
//得到端口号
$port = $_SERVER [ 'SERVER_PORT' ];
//得到路径和请求字符串
$url = $_SERVER [ 'REQUEST_URI' ];
/*中间做处理,要将page=5等这种字符串拼接URL
中,所以如果原来的url中有page这个参数,我们首先
需要将原来的page参数给清空*/
$urlArray = parse_url ( $url );
// var_dump($urlArray);
$path = $urlArray [ 'path' ];
if (! empty ( $urlArray [ 'query' ])){
//将query中的值转化为数组
parse_str ( $urlArray [ 'query' ], $array );
//如果他有page就将它删掉
unset( $array [ 'page' ]);
//将关联数组转化为query
$query = http_build_query( $array );
//不为空的话就与path连结
if ( $query != '' ){
$path = $path . '?' . $query ;
}
}
return 'http://' . $host . ':' . $port . $path ;
}
protected function setUrl( $str ){
if ( strstr ( $this ->url, '?' )){
$url = $this ->url. '&' . $str ;
} else {
$url = $this ->url. '?' . $str ;
}
return $url ;
}
/*所有的url*/
public function allUrl(){
return [
'first' => $this ->first(),
'next' => $this ->next(),
'prev' => $this ->prev(),
'end' => $this -> end (),
];
}
/*首页*/
public function first(){
return $this ->setUrl( 'page=1' );
}
/*下一页*/
public function next(){
//根据当前page得带下一页的页码
if ( $this ->page+1 > $this ->totalPage) {
$page = $this ->totalPage;
} else {
$page = $this ->page+1;
}
return $this ->setUrl( 'page=' . $page );
}
/*上一页*/
public function prev(){
//根据当前page得带下一页的页码
if ( $this ->page - 1 < 1) {
$page = 1;
} else {
$page = $this ->page-1;
}
return $this ->setUrl( 'page=' . $page );
}
/*尾页*/
public function end (){
return $this ->setUrl( 'page=' . $this ->totalPage);
}
/*limit 0,5*/
public function limit(){
$offset = ( $this ->page-1)* $this ->number;
return $offset . ',' . $this ->number;
}
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。