一个很不错的PHP翻页类


Posted in PHP onJune 01, 2009
<?php 
/* 
* Created on 2007-6-8 
* Programmer : Alan , Msn - haowubai@hotmail.com 
* PHP100.com Develop a project PHP - MySQL - Apache 
* Window - Preferences - PHPeclipse - PHP - Code Templates 
*/ 
//为了避免重复包含文件而造成错误,加了判断函数是否存在的条件: 
if(!function_exists(pageft)){ 
//定义函数pageft(),三个参数的含义为: 
//$totle:信息总数; 
//$displaypg:每页显示信息数,这里设置为默认是20; 
//$url:分页导航中的链接,除了加入不同的查询信息“page”外的部分都与这个URL相同。 
// 默认值本该设为本页URL(即$_SERVER["REQUEST_URI"]),但设置默认值的右边只能为常量,所以该默认值设为空字符串,在函数内部再设置为本页URL。 
function pageft($totle,$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中的正规表达式” 
$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($totle/$displaypg); //最后页,也是总页数 
$page=min($lastpg,$page); 
$prepg=$page-1; //上一页 
$nextpg=($page==$lastpg ? 0 : $page+1); //下一页 
$firstcount=($page-1)*$displaypg; 
//开始分页导航条代码: 
$pagenav="显示第 <B>".($totle?($firstcount+1):0)."</B>-<B>".min($firstcount+$displaypg,$totle)."</B> 条记录,共 $totle 条记录"; 
//如果只有一页则跳出函数: 
if($lastpg<=1) return false; 
$pagenav.=" <a href='$url=1'>首页</a> "; 
if($prepg) $pagenav.=" <a href='$url=$prepg'>前页</a> "; else $pagenav.=" 前页 "; 
if($nextpg) $pagenav.=" <a href='$url=$nextpg'>后页</a> "; else $pagenav.=" 后页 "; 
$pagenav.=" <a href='$url=$lastpg'>尾页</a> "; 
//下拉跳转列表,循环列出所有页码: 
$pagenav.=" 到第 <select name='topage' size='1' onchange='window.location=\"$url=\"+this.value'>\n"; 
for($i=1;$i<=$lastpg;$i++){ 
if($i==$page) $pagenav.="<option value='$i' selected>$i</option>\n"; 
else $pagenav.="<option value='$i'>$i</option>\n"; 
} 
$pagenav.="</select> 页,共 $lastpg 页"; 
} 
} 
?> 

<? 
/* 
//(前面程序略) 
include("pageft.php"); //包含“pageft.php”文件 
//取得总信息数 
$result=mysql_query("select * from mytable"); 
$total=mysql_num_rows($result); 
//调用pageft(),每页显示10条信息(使用默认的20时,可以省略此参数),使用本页URL(默认,所以省略掉)。 
pageft($total,10); 
//现在产生的全局变量就派上用场了: 
$result=mysql_query("select * from mytable limit $firstcount,$displaypg "); 
while($row=mysql_fetch_array($result)){ 
//(列表内容略) 
} 
//输出分页导航条代码: 
echo $pagenav; 
//(后面程序略) 
*/ 
?>
PHP 相关文章推荐
session在PHP大型web应用中的使用
Jun 25 PHP
PHP排序算法的复习和总结
Feb 15 PHP
php时间戳转换的示例
Mar 31 PHP
php数组键名技巧小结
Feb 17 PHP
php压缩和解压缩字符串的方法
Mar 14 PHP
详解PHP中的PDO类
Jul 06 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
详解PHP中array_rand函数的使用方法
Sep 11 PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 PHP
详解php curl带有csrf-token验证模拟提交方法
Apr 18 PHP
tp5框架基于ajax实现异步删除图片的方法示例
Feb 10 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
Jun 01 #PHP
php Undefined index的问题
Jun 01 #PHP
php $_ENV为空的原因分析
Jun 01 #PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
May 28 #PHP
UCenter Home二次开发指南
May 28 #PHP
phpMyAdmin 安装及问题总结
May 28 #PHP
很好用的PHP数据库类
May 27 #PHP
You might like
无数据库的详细域名查询程序PHP版(1)
2006/10/09 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
JS可以控制样式的名称写法一览
2014/01/16 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
Vue中建立全局引用或者全局命令的方法
2017/08/21 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
Angular6 用户自定义标签开发的实现方法
2019/01/08 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
Python解惑之True和False详解
2017/04/24 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
python装饰器实例大详解
2017/10/25 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
python执行精确的小数计算方法
2019/01/21 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
Python如何读取、写入JSON数据
2020/07/28 Python
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
servlet面试题
2012/08/20 面试题
留学推荐信写作指南
2014/01/25 职场文书
行政处罚告知书
2015/07/01 职场文书
换届选举主持词
2015/07/03 职场文书
vue实现登陆页面开发实践
2022/05/30 Vue.js