- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章功能强大的php分页函数由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
分页是每一个程序需要去理解的东西,学习过的几门语言中我发现分页原理都是一样的,下面为php初学者分析一下php分页实现与最后面补充了一个超级强大的分页函数.
文章内容分页主要有两个办法
办法1、按字数控制进行分页 。
按字数分页办法简单易用,但效果不好. 。
大致思想:首先、设定每页能容纳的最大字数,然后、计算文章内容的总字数,再由总字数和单页最大字数计算出出总页数,这样整个分页的准备工作就已经做好了. 。
具体到每一页的显示内容可以通过内容截取来实现,比如:页容纳500字,文章内容有2200字,那么当页面传递page=2时应该显示第501至1000之间的内容. 。
这种办法简单,但显示时可能会遇到麻烦,文章内容通常伴有HTML标签,进行内容切割时实现HTML标签的闭合有一定难度,如果这个工作没做好,那么分页后的效果显然也是不好的. 。
办法2、通过分页符进行分页 。
通过分页符进行分页比起第一种办法要更为理想.
大致思想:在编辑文章内容时往内容里面插入分页符(如:<hr class="page">),在文章显示时对文章内容进行分割,每一部分表示一个页的内容,通过传递参数控制显示第几页.
这种办法比较人性化,毕竟通过人工控制出来的分页截取的内容更符全我们的思维,而且可以一定程度上避免HTML标签不闭合的情形.
分页显示:分页显示是将大批量的数据分批发送到客户端的重要手段之一,通常是将数据库中的结果集人为的分成一段一段的来显示. 。
分类:PHP分页分为列表分页和内容分页,不管是列表分页还是内容分页,基本原理是一样的,将数据分批发送到客户端. 。
pager.class.php:这是一个简单的PHP分页显示类,目前支持两种分页模式,一种是最简单的普通分页模式[首页] [上页] [下页] [尾页]模式,另一种是经典分页模式,即:[1][2][3][4][5][6][7][8][9][10][下一页][尾页]. 。
使用方法,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
require_once
'pager.class.php'
;
$pager
=
new
pager(
$totalPage
,
$currentPage
);
// $pager对象
echo
$pager
->showpager();
// 输出分页
此分页显示类的构造函数
/*
@total_page 总页数
@current_num 当前页
@sub_pages 每次显示的页数
@subPage_link 每个分页的链接
@subPage_type 分页模式
当@subPage_type=1的时候为普通分页模式
如: 共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
当@subPage_type=2的时候为经典分页样式
如: 当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
*/
|
代码如下
pager($total_page,$current_page,$sub_pages=10,$subPage_link='',$subPage_type=2) 。
上述说的PHP分页的两种类别(列表分页和内容分页),相信列表分页对大家并不陌生,对于内容分页,常用的方法是以分页符的形式(比如: <hr class="pager"> )将内容分割成多段,求出总页数,用当前页码去获取分页显示列表,代码如下:
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
|
<?php
/**
* 示例:
* <?php
* require_once("pager.class.php");
* $subPages=new pager($totalPage,$currentPage);
* echo $subPages->showpager();
* ?>
* */
class
pager{
var
$each_disNums
;
//每页显示的条目数
var
$nums
;
//总条目数
var
$current_page
;
//当前被选中的页
var
$sub_pages
;
//每次显示的页数
var
$pageNums
;
//总页数
var
$page_array
=
array
();
//用来构造分页的数组
var
$subPage_link
;
//每个分页的链接
var
$subPage_type
;
//显示分页的类型
var
$_lang
=
array
(
'index_page'
=>
'首页'
,
'pre_page'
=>
'上一页'
,
'next_page'
=>
'下一页'
,
'last_page'
=>
'尾页'
,
'current_page'
=>
'当前页:'
,
'total_page'
=>
'总页数:'
,
'current_show'
=>
'当前显示:'
,
'total_record'
=>
'总记录数:'
);
/*
__construct是SubPages的构造函数,用来在创建类的时候自动运行.
@total_page 总页数
@current_num 当前被选中的页
@sub_pages 每次显示的页数
@subPage_link 每个分页的链接
@subPage_type 显示分页的类型
当@subPage_type=1的时候 www.phpfensi.com 为普通分页模式
example: 共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
当@subPage_type=2的时候为经典分页样式
example: 当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
*/
function
__construct(
$total_page
,
$current_page
,
$sub_pages
=10,
$subPage_link
=
''
,
$subPage_type
=2){
$this
->pager(
$total_page
,
$current_page
,
$sub_pages
,
$subPage_link
,
$subPage_type
);
}
function
pager(
$total_page
,
$current_page
,
$sub_pages
=10,
$subPage_link
=
''
,
$subPage_type
=2){
if
(!
$current_page
){
$this
->current_page=1;
}
else
{
$this
->current_page=
intval
(
$current_page
);
}
$this
->sub_pages=
intval
(
$sub_pages
);
$this
->pageNums=
ceil
(
$total_page
);
if
(
$subPage_link
){
if
(
strpos
(
$subPage_link
,
'?page='
) === false AND
strpos
(
$subPage_link
,
'&page='
) === false){
$subPage_link
.= (
strpos
(
$subPage_link
,
'?'
) === false ?
'?'
:
'&'
) .
'page='
;
}
}
$this
->subPage_link=
$subPage_link
?
$subPage_link
:
$_SERVER
[
'PHP_SELF'
] .
'?page='
;
$this
->subPage_type =
$subPage_type
;
}
/*
show_SubPages函数用在构造函数里面。而且用来判断显示什么样子的分页
*/
function
showpager(){
if
(
$this
->subPage_type == 1){
return
$this
->pagelist1();
}
elseif
(
$this
->subPage_type == 2){
return
$this
->pagelist2();
}
}
/*
用来给建立分页的数组初始化的函数。
*/
function
initArray(){
for
(
$i
=0;
$i
<
$this
->sub_pages;
$i
++){
$this
->page_array[
$i
]=
$i
;
}
return
$this
->page_array;
}
/*
construct_num_Page该函数使用来构造显示的条目
即使:[1][2][3][4][5][6][7][8][9][10]
*/
function
construct_num_Page(){
if
(
$this
->pageNums <
$this
->sub_pages){
$current_array
=
array
();
for
(
$i
=0;
$i
<
$this
->pageNums;
$i
++){
$current_array
[
$i
]=
$i
+1;
}
}
else
{
$current_array
=
$this
->initArray();
if
(
$this
->current_page <= 3){
for
(
$i
=0;
$i
<
count
(
$current_array
);
$i
++){
$current_array
[
$i
]=
$i
+1;
}
}
elseif
(
$this
->current_page <=
$this
->pageNums &&
$this
->current_page >
$this
->pageNums -
$this
->sub_pages + 1 ){
for
(
$i
=0;
$i
<
count
(
$current_array
);
$i
++){
$current_array
[
$i
]=(
$this
->pageNums)-(
$this
->sub_pages)+1+
$i
;
}
}
else
{
for
(
$i
=0;
$i
<
count
(
$current_array
);
$i
++){
$current_array
[
$i
]=
$this
->current_page-2+
$i
;
}
}
}
return
$current_array
;
}
/*
构造普通模式的分页
共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
*/
function
pagelist1(){
$subPageCss1Str
=
""
;
$subPageCss1Str
.=
$this
->_lang[
'current_page'
] .
$this
->current_page.
" / "
.
$this
->pageNums.
" "
;
if
(
$this
->current_page > 1){
$firstPageUrl
=
$this
->subPage_link.
"1"
;
$prewPageUrl
=
$this
->subPage_link.(
$this
->current_page-1);
$subPageCss1Str
.=
"<a href='$firstPageUrl'>{$this->_lang['index_page']}</a> "
;
$subPageCss1Str
.=
"<a href='$prewPageUrl'>{$this->_lang['pre_page']}</a> "
;
}
else
{
$subPageCss1Str
.=
"{$this->_lang['index_page']} "
;
$subPageCss1Str
.=
"{$this->_lang['pre_page']} "
;
}
if
(
$this
->current_page <
$this
->pageNums){
$lastPageUrl
=
$this
->subPage_link.
$this
->pageNums;
$nextPageUrl
=
$this
->subPage_link.(
$this
->current_page+1);
$subPageCss1Str
.=
" <a href='$nextPageUrl'>{$this->_lang['next_page']}</a> "
;
$subPageCss1Str
.=
"<a href='$lastPageUrl'>{$this->_lang['last_page']}</a> "
;
}
else
{
$subPageCss1Str
.=
"{$this->_lang['next_page']} "
;
$subPageCss1Str
.=
"{$this->_lang['last_page']} "
;
}
return
$subPageCss1Str
;
}
/*
构造经典模式分页
当前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
*/
function
pagelist2(){
$subPageCss2Str
=
""
;
$subPageCss2Str
.=
$this
->_lang[
'current_page'
] .
$this
->current_page.
"/"
.
$this
->pageNums.
" "
;
if
(
$this
->current_page > 1){
$firstPageUrl
=
$this
->subPage_link.
"1"
;
$prewPageUrl
=
$this
->subPage_link.(
$this
->current_page-1);
$subPageCss2Str
.=
"<a href='$firstPageUrl'>{$this->_lang['index_page']}</a> "
;
$subPageCss2Str
.=
"<a href='$prewPageUrl'>{$this->_lang['pre_page']}</a> "
;
}
else
{
$subPageCss2Str
.=
"{$this->_lang['index_page']} "
;
$subPageCss2Str
.=
"{$this->_lang['pre_page']} "
;
}
$a
=
$this
->construct_num_Page();
for
(
$i
=0;
$i
<
count
(
$a
);
$i
++){
$s
=
$a
[
$i
];
if
(
$s
==
$this
->current_page ){
$subPageCss2Str
.=
"[<span style='color:red;font-weight:bold;'>"
.
$s
.
"</span>]"
;
}
else
{
$url
=
$this
->subPage_link.
$s
;
$subPageCss2Str
.=
"[<a href='$url'>"
.
$s
.
"</a>]"
;
}
}
if
(
$this
->current_page <
$this
->pageNums){
$lastPageUrl
=
$this
->subPage_link.
$this
->pageNums;
$nextPageUrl
=
$this
->subPage_link.(
$this
->current_page+1);
$subPageCss2Str
.=
" <a href='$nextPageUrl'>{$this->_lang['next_page']}</a> "
;
$subPageCss2Str
.=
"<a href='$lastPageUrl'>{$this->_lang['last_page']}</a> "
;
}
else
{
$subPageCss2Str
.=
"{$this->_lang['next_page']} "
;
$subPageCss2Str
.=
"{$this->_lang['last_page']} "
;
}
return
$subPageCss2Str
;
}
/*
__destruct析构函数,当类不在使用的时候调用,该函数用来释放资源。
*/
function
__destruct(){
unset(
$each_disNums
);
unset(
$nums
);
unset(
$current_page
);
unset(
$sub_pages
);
unset(
$pageNums
);
unset(
$page_array
);
unset(
$subPage_link
);
unset(
$subPage_type
);
}
}
?>
|
好了我们只要把它保存在一个文件,在其它地方要使用时直接调用就可以了,非常好用的一个内容或记录分页类函数哦,这也算是一个入门级别的php教程吧.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
最后此篇关于功能强大的php分页函数的文章就讲到这里了,如果你想了解更多关于功能强大的php分页函数的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
C语言sscanf()函数:从字符串中读取指定格式的数据 头文件: ?
最近,我有一个关于工作预评估的问题,即使查询了每个功能的工作原理,我也不知道如何解决。这是一个伪代码。 下面是一个名为foo()的函数,该函数将被传递一个值并返回一个值。如果将以下值传递给foo函数,
CStr 函数 返回表达式,该表达式已被转换为 String 子类型的 Variant。 CStr(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CSng 函数 返回表达式,该表达式已被转换为 Single 子类型的 Variant。 CSng(expression) expression 参数是任意有效的表达式。 说明 通常,可
CreateObject 函数 创建并返回对 Automation 对象的引用。 CreateObject(servername.typename [, location]) 参数 serv
Cos 函数 返回某个角的余弦值。 Cos(number) number 参数可以是任何将某个角表示为弧度的有效数值表达式。 说明 Cos 函数取某个角并返回直角三角形两边的比值。此比值是
CLng 函数 返回表达式,此表达式已被转换为 Long 子类型的 Variant。 CLng(expression) expression 参数是任意有效的表达式。 说明 通常,您可以使
CInt 函数 返回表达式,此表达式已被转换为 Integer 子类型的 Variant。 CInt(expression) expression 参数是任意有效的表达式。 说明 通常,可
Chr 函数 返回与指定的 ANSI 字符代码相对应的字符。 Chr(charcode) charcode 参数是可以标识字符的数字。 说明 从 0 到 31 的数字表示标准的不可打印的
CDbl 函数 返回表达式,此表达式已被转换为 Double 子类型的 Variant。 CDbl(expression) expression 参数是任意有效的表达式。 说明 通常,您可
CDate 函数 返回表达式,此表达式已被转换为 Date 子类型的 Variant。 CDate(date) date 参数是任意有效的日期表达式。 说明 IsDate 函数用于判断 d
CCur 函数 返回表达式,此表达式已被转换为 Currency 子类型的 Variant。 CCur(expression) expression 参数是任意有效的表达式。 说明 通常,
CByte 函数 返回表达式,此表达式已被转换为 Byte 子类型的 Variant。 CByte(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CBool 函数 返回表达式,此表达式已转换为 Boolean 子类型的 Variant。 CBool(expression) expression 是任意有效的表达式。 说明 如果 ex
Atn 函数 返回数值的反正切值。 Atn(number) number 参数可以是任意有效的数值表达式。 说明 Atn 函数计算直角三角形两个边的比值 (number) 并返回对应角的弧
Asc 函数 返回与字符串的第一个字母对应的 ANSI 字符代码。 Asc(string) string 参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。
Array 函数 返回包含数组的 Variant。 Array(arglist) arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则
Abs 函数 返回数字的绝对值。 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。
FormatPercent 函数 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 FormatPercent(expression[,NumDigitsAfterD
FormatNumber 函数 返回表达式,此表达式已被格式化为数值。 FormatNumber( expression [,NumDigitsAfterDecimal [,Inc
我是一名优秀的程序员,十分优秀!