<?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通用分页类page.php[仿google分页]的更多相关文章

  1. PHP实现仿Google分页效果的分页函数

    本文实例讲述了PHP实现仿Google分页效果的分页函数.分享给大家供大家参考.具体如下: /** * 分页函数 * @param int $total 总页数 * @param int $pages ...

  2. (转)ThinkPHP使用心得分享-分页类Page的用法

    转之--http://www.jb51.net/article/50138.htm ThinkPHP中的Page类在ThinkPHP/Extend/Library/ORG/Util/Page.clas ...

  3. Java分页类 Page

    import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Iterator; ...

  4. php大力力 [019节]php分页类的学习

    2015-08-26 php大力力019.php分页类的学习 [2014]兄弟连高洛峰 PHP教程14.2.1 分页需求分析 14:18 [2014]兄弟连高洛峰 PHP教程14.2.2 分页类中分页 ...

  5. page分页类

    <?php /** file: Page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 private $lis ...

  6. php实现的分页类

    php分页类文件: <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 pr ...

  7. php 简单分页类

    /**  file: page.class.php   完美分页类 Page  */ class Page {  private $total;          //数据表中总记录数  privat ...

  8. ThinkPHP讲解(十)——第三方类的引入:以分页为主

    第三方类的引入,以分页类为例: 1.在控制器里新建一个分页的操作方法FenYe() 注意:第三方类Page.class.php放在Think或Home文件夹下,并新近一个文件夹,放在里面,并在其类里加 ...

  9. php部分---一个分页类、用法

    1.分页类 <?php /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录数 privat ...

随机推荐

  1. 《JAVA与模式》之合成模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述合成(Composite)模式的: 合成模式属于对象的结构模式,有时又叫做“部分——整体”模式.合成模式将对象组织到树结构中,可以用来描述 ...

  2. 了解ORACLE培训OCA-OCP-OCM课程表

    了解ORACLE培训OCA-OCP-OCM课程表考试号: OCA    1Z0-007$125    Oracle Database 10g:SQL Fundamentals 本课程培养学生必要的SQ ...

  3. orm 练习题

    一: 多表练习查询 1. 自行创建测试数据: 2. 查询学生总人数: 3. 查询“生物”课程和“物理”课程成绩都及格的学生id和姓名: 4. 查询每个年级的班级数,取出班级数最多的前三个年级: 5. ...

  4. LFR benchmark graphs 人工网络生成程序

    人工网络生成程序,可在CSDN上免费下载 或者科学网这边也可以下载 参数 • n: number of vertices;• k: average degree;• maxk: maximum deg ...

  5. 微信小程序自定义弹窗wcPop插件|仿微信弹窗样式

    微信小程序自定义组件弹窗wcPop|小程序消息提示框|toast自定义模板弹窗 平时在开发小程序的时候,弹窗应用场景还是蛮广泛的,但是微信官方提供的弹窗比较有局限性,不能自定义修改.这个时候首先想到的 ...

  6. Mac下的paths.d目录神奇用法

    首先,这个方法是通过PG的做法学到的,且这个方法只能在Mac下用,在Linux下还真没有这个方法. 这个paths.d的作用很简单,就是在里面创建一个文件,然后写上需要在全局命令行下用到的命令,直接配 ...

  7. 移植C/C++代码的十个技巧

    这篇文章是我翻译自Top 10 tips for code porting c/c++的一篇小短文,以下是翻译全文,如有错误请留言或查阅原文. 代码的可移植性基本上是指使得源代码能够在不同的平台上编译 ...

  8. Linq基础知识小记四之操作EF

    1.EF简介 EF之于Linq,EF是一种包含Linq功能对象关系映射技术.EF对数据库架构和我们查询的类型进行更好的解耦,使用EF,我们查询的对象不再是C#类,而是更高层的抽象:Entity Dat ...

  9. Spring Security构建Rest服务-1201-Spring Security OAuth开发APP认证框架之实现服务提供商

    实现服务提供商,就是要实现认证服务器.资源服务器. 现在做的都是app的东西,所以在app项目写代码  认证服务器: 新建 ImoocAuthenticationServerConfig 类,@Ena ...

  10. mongodb3.4.15集群搭建

    机器:ubuntu 2台 ip: 192.168.0.131 host1 192.168.0.132 host2 安装mongodb sudo apt-key adv --keyserver hkp: ...