一个很不错的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 session常见问题集锦及解决办法总结
Mar 18 PHP
用PHP与XML联手进行网站编程代码实例
Jul 10 PHP
那些年一起学习的PHP(一)
Mar 21 PHP
基于curl数据采集之单页面采集函数get_html的使用
Apr 28 PHP
简单的cookie计数器实现源码
Jun 07 PHP
PHP基于数组实现的分页函数实例
Aug 20 PHP
PHP读取文件内容的五种方式
Dec 28 PHP
PHP5.4起内置web服务器使用方法
Aug 09 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
laravel框架中控制器的创建和使用方法分析
Nov 23 PHP
PHP 实现base64编码文件上传出现问题详解
Sep 01 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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
在线增减.htpasswd内的用户
2006/10/09 PHP
dedecms模板标签代码官方参考
2007/03/17 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
PHP常用的缓存技术汇总
2014/05/05 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
PHP操作文件的一些基本函数使用示例
2014/11/18 PHP
微信中一些常用的js方法汇总
2015/03/12 Javascript
文字垂直滚动之javascript代码
2015/07/29 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
详解vue-cli本地环境API代理设置和解决跨域
2017/09/05 Javascript
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
python打开url并按指定块读取网页内容的方法
2015/04/29 Python
python中黄金分割法实现方法
2015/05/06 Python
Python存取XML的常见方法实例分析
2017/03/21 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
python实现桌面气泡提示功能
2019/07/29 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
软件测试面试题
2014/01/05 面试题
大学本科毕业生的自我鉴定
2013/11/26 职场文书
新教师培训方案
2014/06/08 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
学校查摆问题整改措施
2014/09/28 职场文书
2015新学期开学寄语
2015/02/26 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
公司年夜饭通知
2015/04/25 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书