一个很不错的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中使用Sockets 从Usenet中获取文件
Jan 10 PHP
有关 PHP 和 MySQL 时区的一点总结
Mar 26 PHP
php防盗链的常用方法小结
Jul 02 PHP
php在window iis的莫名问题的测试方法
May 14 PHP
基于PHP5魔术常量与魔术方法的详解
Jun 13 PHP
ThinkPHP中U方法的使用浅析
Jun 13 PHP
Zend Framework页面缓存实例
Jun 25 PHP
php检测文本的编码
Jul 26 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
Mar 16 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
Apr 21 PHP
PHP弱类型语言中类型判断操作实例详解
Aug 10 PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 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
golang与PHP输出excel示例
2016/07/22 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
jQuery select操作控制方法小结
2010/05/26 Javascript
基于jQuery试卷自动排版系统
2010/07/18 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
在JavaScript中调用Java类和接口的方法
2016/09/07 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
Python数据类型详解(二)列表
2016/05/08 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
详解python单元测试框架unittest
2018/07/02 Python
Python日志模块logging基本用法分析
2018/08/23 Python
对python生成业务报表的实例详解
2019/02/03 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
老师的检讨书
2014/02/23 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
应届毕业生自荐书
2014/06/18 职场文书
招标承诺书
2014/08/30 职场文书
离婚协议书的范本
2015/01/27 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
团日活动总结格式
2015/05/11 职场文书
因身体原因离职的辞职信范文
2015/05/12 职场文书
CAD实训总结范文
2015/08/03 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
MySQL池化框架学习接池自定义
2022/07/23 MySQL