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获取远程图片并把它保存到本地的代码
Apr 07 PHP
PHP 冒泡排序算法的实现代码
Aug 08 PHP
WordPress判断用户是否登录的代码
Mar 17 PHP
php 读取文件头判断文件类型的实现代码
Aug 05 PHP
php curl 获取https请求的2种方法
Apr 27 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
php上传图片获取路径及给表单字段赋值的方法
Jan 23 PHP
php+ajax注册实时验证功能
Jul 20 PHP
Laravel5.1自定义500错误页面示例
Oct 09 PHP
数组任意位置插入元素,删除特定元素的实例
Mar 02 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
Jun 22 PHP
thinkphp5实现微信扫码支付
Dec 23 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 session有效期问题
2009/04/26 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
为你总结一些php系统类函数
2015/10/21 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
js 日期转换成中文格式的函数
2009/07/07 Javascript
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
2010/12/02 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
JS实用的动画弹出层效果实例
2015/05/05 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
Vue基本指令实例图文讲解
2021/02/25 Vue.js
用Python编写一个国际象棋AI程序
2014/11/28 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
python+Django+pycharm+mysql 搭建首个web项目详解
2019/11/29 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
机修工岗位职责
2013/11/24 职场文书
总裁助理岗位职责
2014/02/17 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
三问三解心得体会
2014/09/05 职场文书
货款欠条范本
2015/07/03 职场文书
食堂管理制度范本
2015/08/04 职场文书
golang 实用库gotable的具体使用
2021/07/01 Golang