PHP通用分页类page.php[仿google分页]


Posted in PHP onAugust 31, 2008

page.php

<?php /** 
** 通用php分页类。(仿Google样式) 
** 只需提供记录总数与每页显示数两个参数。(已附详细使用说明..) 
** 无需指定URL,链接由程序生成。方便用于检索结果分页。 
** 表单采用GET方法提交,可保证在诸如查询之,删除之类的操作时,不丢失URL参数 
**/ 
class Pager{ 
//IE地址栏地址 
var $url; 
//记录总条数 
var $countall; 
//总页数 
var $page; 
//分页数字链接 
var $thestr; 
//首页、上一页链接 
var $backstr; 
//尾页、下一页链接 
var $nextstr; 
//当前页码 
var $pg; 
//每页显示记录数量 
var $countlist; 
//翻页样式 
var $style; 
//构造函数,实例化该类的时候自动执行该函数 
function Pager($countall,$countlist,$style="page"){ 
//记录数与每页显示数不能整队时,页数取余后加1 
$this->countall = $countall; 
$this->countlist = $countlist; 
$this->style=$style; 
if ($this->countall%$this->countlist!=0){ 
$this->page=sprintf("%d",$this->countall/$this->countlist)+1; 
}else{ 
$this->page=$this->countall/$this->countlist; 
} 
$this->pg=$_GET["pg"]; 
//保证pg在未指定的情况下为从第1页开始 
if (!ereg("^[1-9][0-9]*$",$this->pg) || empty($this->pg)){ 
$this->pg=1; 
} 
//页码超出最大范围,取最大值 
if ($this->pg>$this->page){ 
$this->pg=$this->page; 
} 
//得到当前的URL。具体实现请看最底部的函数实体 
$this->url = Pager::getUrl(); 
//替换错误格式的页码为正确页码 
if(isset($_GET["pg"]) && $_GET["pg"]!=$this->pg){ 
$this->url=str_replace("?pg=".$_GET["pg"],"?pg=$this->pg",$this->url); 
$this->url=str_replace("&pg=".$_GET["pg"],"&pg=$this->pg",$this->url); 
} 
//生成12345等数字形式的分页。 
if ($this->page<=10){ 
for ($i=1;$i<$this->page+1;$i++){ 
$this->thestr=$this->thestr.Pager::makepg($i,$this->pg); 
} 
}else{ 
if ($this->pg<=5){ 
for ($i=1;$i<10;$i++){ 
$this->thestr=$this->thestr.Pager::makepg($i,$this->pg); 
} 
}else{ 
if (6+$this->pg<=$this->page){ 
for ($i=$this->pg-4;$i<$this->pg+6;$i++){ 
$this->thestr=$this->thestr.Pager::makepg($i,$this->pg); 
} 
}else{ 
for ($i=$this->pg-4;$i<$this->page+1;$i++){ 
$this->thestr=$this->thestr.Pager::makepg($i,$this->pg); 
} 
} 
} 
} 
//生成上页下页等文字链接 
$this->backstr = Pager::gotoback($this->pg); 
$this->nextstr = Pager::gotonext($this->pg,$this->page); 
//echo (" 共".$this->countall." 条,每页".$this->countlist."条,共".$this->page."页".$this->backstr.$this->thestr.$this->nextstr); 
} 
//生成数字分页的辅助函数 
function makepg($i,$pg){ 
if ($i==$pg){ 
return " <font class='".$this->style."'>".$i."</font>"; 
}else{ 
return " <a href=".Pager::replacepg($this->url,5,$i)." class='".$this->style."'><u>".$i."</u></a>"; 
} 
} 
//生成上一页等信息的函数 
function gotoback($pg){ 
if ($pg-1>0){ 
return $this->gotoback=" <a href=".Pager::replacepg($this->url,3,0)." class='".$this->style."'>首页</a> <a href=".Pager::replacepg($this->url,2,0)." class='".$this->style."'>上一页</a>"; 
}else{ 
return $this->gotoback="<span class='".$this->style."'>首页 上一页</span> "; 
} 
} 
//生成下一页等信息的函数 
function gotonext($pg,$page){ 
if ($pg < $page){ 
return " <a href=".Pager::replacepg($this->url,1,0)." class='".$this->style."'>下一页</a> <a href=".Pager::replacepg($this->url,4,0)." class='".$this->style."'>尾页</a>"; 
}else{ 
return " <span class='".$this->style."'>下一页 尾页</span>"; 
} 
} 
//处理url中$pg的方法,用于自动生成pg=x 
function replacepg($url,$flag,$i){ 
if ($flag == 1){ 
$temp_pg = $this->pg; 
return str_replace("pg=".$temp_pg,"pg=".($this->pg+1),$url); 
}else if($flag == 2) { 
$temp_pg = $this->pg; 
return str_replace("pg=".$temp_pg,"pg=".($this->pg-1),$url); 
}else if($flag == 3) { 
$temp_pg = $this->pg; 
return str_replace("pg=".$temp_pg,"pg=1",$url); 
}else if($flag == 4){ 
$temp_pg = $this->pg; 
return str_replace("pg=".$temp_pg,"pg=".$this->page,$url); 
}else if($flag == 5){ 
$temp_pg = $this->pg; 
return str_replace("pg=".$temp_pg,"pg=".$i,$url); 
}else{ 
return $url; 
} 
} 
//获得当前URL的方法 
function getUrl(){ 
$url="http://".$_SERVER["HTTP_HOST"]; 
if(isset($_SERVER["REQUEST_URI"])){ 
$url.=$_SERVER["REQUEST_URI"]; 
}else{ 
$url.=$_SERVER["PHP_SELF"]; 
if(!empty($_SERVER["QUERY_STRING"])){ 
$url.="?".$_SERVER["QUERY_STRING"]; 
} 
} 
//在当前的URL里加入pg=x字样 
if (!ereg("(pg=|PG=|pG=|Pg=)", $url)){ 
if (!strpos($url,"?")){ 
$url = $url."?pg=1"; 
}else{ 
$url = $url."&pg=1"; 
} 
} 
return $url; 
} 
} 
?>
PHP 相关文章推荐
利用Memcached在php下实现session机制 替换PHP的原生session支持
Aug 21 PHP
教你如何使用php session
Oct 28 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
PHP中Fatal error session_start()错误解决步骤
Aug 05 PHP
PHP使用json_encode函数时不转义中文的解决方法
Nov 12 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
Dec 05 PHP
smarty模板引擎基础知识入门
Mar 30 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
实例介绍PHP删除数组中的重复元素
Mar 03 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
Apr 09 PHP
Thinkphp页面跳转设置跳转等待时间的操作
Oct 16 PHP
php将数据库中的电话号码读取出来并生成图片
Aug 31 #PHP
PHP生成HTML静态页面实例代码
Aug 31 #PHP
php array_slice函数的使用以及参数详解
Aug 30 #PHP
PHP中常用数组处理方法实例分析
Aug 30 #PHP
php判断字符以及字符串的包含方法属性
Aug 30 #PHP
PHP define函数的使用说明
Aug 27 #PHP
PHP开发中常用的8个小技巧
Aug 27 #PHP
You might like
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
javascript类继承机制的原理分析
2009/09/12 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
js实现二级导航功能
2017/03/03 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
Node.js 多进程处理CPU密集任务的实现
2019/05/26 Javascript
Vue插件之滑动验证码
2019/09/21 Javascript
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
Python多继承顺序实例分析
2018/05/26 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
python 提取文件指定列的方法示例
2019/08/07 Python
10分钟教你用python动画演示深度优先算法搜寻逃出迷宫的路径
2019/08/12 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
Pytorch maxpool的ceil_mode用法
2020/02/18 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
Css3圆角边框制作代码
2015/11/18 HTML / CSS
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
世界领先的电子书网站:eBooks.com(在线购买小说、非小说和教科书)
2019/03/30 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
英语专业应届生求职信范文
2013/11/15 职场文书
销售主管竞聘书
2014/03/31 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
给老婆的保证书
2015/01/16 职场文书
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers