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 相关文章推荐
用PHP连接Oracle for NT 远程数据库
Oct 09 PHP
php设计模式 Composite (组合模式)
Jun 26 PHP
PHP获取和操作配置文件php.ini的几个函数介绍
Jun 24 PHP
php递归使用示例(php递归函数)
Feb 14 PHP
PHP 魔术变量和魔术函数详解
Feb 25 PHP
PHP实现获取客户端IP并获取IP信息
Mar 17 PHP
php计算多维数组中所有值总和的方法
Jun 24 PHP
PHP数据库操作Helper类完整实例
May 11 PHP
PHP机器学习库php-ml的简单测试和使用方法
Jul 14 PHP
tp5(thinkPHP5框架)时间查询操作实例分析
May 29 PHP
TP5框架简单登录功能实现方法示例
Oct 31 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 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
信用卡效验程序
2006/10/09 PHP
个人站长制做网页常用的php代码
2007/03/03 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
浅谈js原生拖放
2016/11/21 Javascript
jQuery特殊符号转义的实现
2016/11/30 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
Python 搭建Web站点之Web服务器网关接口
2016/11/06 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
浅谈Python里面小数点精度的控制
2018/07/16 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
Pytorch转tflite方式
2020/05/25 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
监督检查工作方案
2014/05/28 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
电影开国大典观后感
2015/06/04 职场文书
Mysql 如何实现多张无关联表查询数据并分页
2021/06/05 MySQL
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python