一个很不错的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 相关文章推荐
新安装的MySQL数据库需要注意的安全知识
Jul 30 PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 PHP
浅析memcache启动以及telnet命令详解
Jun 28 PHP
PHP 获取文件权限函数介绍
Jul 11 PHP
PHP自带函数给数字或字符串自动补齐位数
Jul 29 PHP
php使用fopen创建utf8编码文件的方法
Oct 31 PHP
php实现webservice实例
Nov 06 PHP
php一维二维数组键排序方法实例总结
Nov 13 PHP
php使用unset()删除数组中某个单元(键)的方法
Feb 17 PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
May 12 PHP
PHP convert_cyr_string()函数讲解
Feb 13 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
9个实用的PHP代码片段分享
2015/01/22 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
PHP使用适合阅读的格式显示文件大小的方法
2015/03/05 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
2017/04/15 PHP
JS控件autocomplete 0.11演示及下载 1月5日已更新
2007/01/09 Javascript
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
2016/07/07 Javascript
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
基于Marquee.js插件实现的跑马灯效果示例
2017/01/25 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
微信小程序JS加载esmap地图的实例详解
2019/09/04 Javascript
js实现简单扫雷
2020/11/27 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
Python迭代和迭代器详解
2016/11/10 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
python assert的用处示例详解
2019/04/01 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
外国语学院毕业生自荐信
2013/10/28 职场文书
销售主管竞聘书
2014/03/31 职场文书
卫生系统先进事迹
2014/05/13 职场文书
导游词之镜泊湖
2019/12/09 职场文书