网上的一个PHP分页函数,测试可用
系统
2600 0
这个函数很多地方都有的。但是有点小小的错误。现在贴出
<?
//
为了避免重复包含文件而造成错误,加了判断函数是否存在的条件:
if
(
!
function_exists
(pageft)){
//
定义函数pageft(),三个参数的含义为:
//$total:信息总数;
//$displaypg:每页显示信息数,这里设置为默认是20;
//$url:分页导航中的链接,除了加入不同的查询信息“page”外的部分都与这个URL相同。
// 默认值本该设为本页URL(即$_SERVER["REQUEST_URI"]),但设置默认值的右边只能为常量,所以该默认值设为空字符串,在函数内部再设置为本页URL。
function
pageft(
$total
,
$displaypg
=
20
,
$url
=
''
){
//
定义几个全局变量:
//$page:当前页码;
//$firstcount:(数据库)查询的起始项;
//$pagenav:页面导航条代码,函数内部并没有将它输出;
//$_SERVER:读取本页URL“$_SERVER["REQUEST_URI"]”所必须。
global
$page
,
$firstcount
,
$pagenav
,
$_SERVER
;
//
为使函数外部可以访问这里的“$displaypg”,将它也设为全局变量。注意一个变量重新定义为全局变量后,原值被覆盖,所以这里给它重新赋值。
$GLOBALS
[
"
displaypg
"
]
=
$displaypg
;
if
(
!
$page
)
$page
=
1
;
//
如果$url使用默认,即空值,则赋值为本页URL:
if
(
!
$url
){
$url
=
$_SERVER
[
"
REQUEST_URI
"
];}
//
URL分析:
$parse_url
=
parse_url
(
$url
);
$url_query
=
$parse_url
[
"
query
"
];
//
单独取出URL的查询字串
if
(
$url_query
){
//
因为URL中可能包含了页码信息,我们要把它去掉,以便加入新的页码信息。
//这里用到了正则表达式,请参考“PHP中的正规表达式”(http://www.pconline.com.cn/pcedu/empolder/wz/php/10111/15058.html)
$url_query
=
ereg_replace
(
"
(^|&)page=$page
"
,
""
,
$url_query
);
//
将处理后的URL的查询字串替换原来的URL的查询字串:
$url
=
str_replace
(
$parse_url
[
"
query
"
]
,
$url_query
,
$url
);
//
在URL后加page查询信息,但待赋值:
if
(
$url_query
)
$url
.=
"
&page
"
;
else
$url
.=
"
page
"
;
}
else
{
$url
.=
"
?page
"
;
}
//
页码计算:
$lastpg
=
ceil
(
$total
/
$displaypg
);
//
最后页,也是总页数
$page
=
min
(
$lastpg
,
$page
);
$prepg
=
$page
-
1
;
//
上一页
$nextpg
=
(
$page
==
$lastpg
?
0
:
$page
+
1
);
//
下一页
$firstcount
=
(
$page
-
1
)
*
$displaypg
;
//
开始分页导航条代码:
$pagenav
=
"
显示第<B>
"
.
(
$total
?
(
$firstcount
+
1
)
:
0
)
.
"
</B>-<B>
"
.
min
(
$firstcount
+
$displaypg
,
$total
)
.
"
</B>条记录,共$total条记录<BR>
"
;
//
如果只有一页则跳出函数:
if
(
$lastpg
<=
1
)
return
false
;
$pagenav
.=
"
<ahref='$url=1'>首页</a>
"
;
if
(
$prepg
)
$pagenav
.=
"
<ahref='$url=$prepg'>前页</a>
"
;
else
$pagenav
.=
"
前页
"
;
if
(
$nextpg
)
$pagenav
.=
"
<ahref='$url=$nextpg'>后页</a>
"
;
else
$pagenav
.=
"
后页
"
;
$pagenav
.=
"
<ahref='$url=$lastpg'>尾页</a>
"
;
//
下拉跳转列表,循环列出所有页码:
$pagenav
.=
"
到第<selectname='topage'size='1'onchange='window.location="$url="+this.value'>
"
;
for
(
$i
=
1
;
$i
<=
$lastpg
;
$i
++
){
if
(
$i
==
$page
)
$pagenav
.=
"
<optionvalue='$i'selected>$i</option>
"
;
else
$pagenav
.=
"
<optionvalue='$i'>$i</option>
"
;
}
$pagenav
.=
"
</select>页,共$lastpg页
"
;
}
}
?>
<?
php
require_once
(
'
../Connections/lr.php
'
);
?>
<?
php
echo
(
"
<tablewidth='618'border='0'>
<trbgcolor='#999999'>
<tdwidth='32'> </td>
<tdwidth='110'>帐号</td>
<tdwidth='155'>密码</td>
<tdwidth='193'></td>
<Td></Td>
</tr></table>
"
);
//
$page
=
intval
(
$_GET
[page]);//网上的都是差这个
include
(
"
pageft.php
"
);
//
包含“pageft.php”文件
//取得总信息数
mysql_select_db
(
$database_lr
,
$lr
);
$query
=
mysql_query
(
"
SELECT*FROMadminorderbyid
"
);
$total
=
mysql_num_rows
(
$query
);
//
调用pageft(),每页显示10条信息(使用默认的20时,可以省略此参数),使用本页URL(默认,所以省略掉)。
pageft(
$total
,
5
,
""
);
//
现在产生的全局变量就派上用场了:
$sql
=
"
select*fromadminorderbyidlimit$firstcount,$displaypg
"
;
$result2
=
mysql_query
(
$sql
);
while
(
$row
=
mysql_fetch_array
(
$result2
))
{
//
列表内容
echo
(
"
<tablewidth='618'border='0'>
"
);
echo
(
"
<trbgcolor='#CCCCCC'>
"
);
echo
(
"
<tdwidth='32'> </td>
"
);
echo
"
<tdwidth='110'>
"
,
$row
[
'
id
'
]
,
"
</td>
"
;
//
因为含有变量,括号就不用了
echo
"
<tdwidth='155'>
"
,
$row
[
'
user
'
]
,
"
</td>
"
;
echo
"
<tdwidth='193'>
"
,
$row
[
'
password
'
]
,
"
</td>
"
;
echo
"
<Td><ahref='admin_modify_user.php?id=
"
,
$row
[
'
id
'
]
,
"
'>修改</a> <ahref='admin_del.php?id=
"
,
$row
[
'
id
'
]
,
"
'>删</a></Td>
"
;
echo
(
"
</tr></table>
"
);
}
//
输出分页导航条代码:
echo
$pagenav
;
?>
http://www.corange.cn/archives/2008/04/1016.html
网上的一个PHP分页函数,测试可用
更多文章、技术交流、商务合作、联系博主
微信扫码或搜索:z360901061
微信扫一扫加我为好友
QQ号联系: 360901061
您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。
【本文对您有帮助就好】元