一个很不错的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 相关文章推荐
PHP array_push 数组函数
Dec 26 PHP
php 面向对象的一个例子
Apr 12 PHP
php显示指定目录下子目录的方法
Mar 20 PHP
php操作redis缓存方法分享
Jun 03 PHP
3种php生成唯一id的方法
Nov 23 PHP
weiphp微信公众平台授权设置
Jan 04 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
Mar 17 PHP
全面解析PHP面向对象的三大特征
Jun 10 PHP
ThinkPHP5 验证器的具体使用
May 31 PHP
php实现等比例压缩图片
Jul 26 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 PHP
thinkphp5实现微信扫码支付
Dec 23 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
基于PHPExcel的常用方法总结
2013/06/13 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
JQuery 写的个性导航菜单
2009/12/24 Javascript
js 函数的副作用分析
2011/08/23 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
vue使用swiper.js重叠轮播组建样式
2019/11/14 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
[52:20]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
python实现冒泡排序算法的两种方法
2018/03/10 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
Django模板导入母版继承和自定义返回Html片段过程解析
2019/09/18 Python
python实现大学人员管理系统
2019/10/25 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
python实现TCP文件传输
2020/03/20 Python
Keras实现DenseNet结构操作
2020/07/06 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
外科实习自我鉴定
2013/10/06 职场文书
学生自我评语大全
2014/04/18 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
自我工作评价范文
2015/03/06 职场文书
高一军训口号
2015/12/25 职场文书
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript