• 技术文章 >后端开发 >php教程

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

    2016-06-01 12:24:54原创319
    page.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 " ".$i."";
    }else{
    return " ".$i."";
    }
    }
    //生成上一页等信息的函数
    function gotoback($pg){
    if ($pg-1>0){
    return $this->gotoback=" 首页 上一页";
    }else{
    return $this->gotoback="首页 上一页 ";
    }
    }
    //生成下一页等信息的函数
    function gotonext($pg,$page){
    if ($pg < $page){
    return " 下一页 尾页";
    }else{
    return " 下一页 尾页";
    }
    }
    //处理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;
    }
    }
    ?>
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP 分页类
    上一篇:php将数据库中的电话号码读取出来并生成图片_PHP 下一篇:利用客户端缓存对网站进行优化的原理分析_PHP
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• PHP header发送各种类型文件上载 • php资料可以用html调用打开吗 • PHP读写资料代码 • 有没有PHP下传多张图片的源码学习一上 • 在windows7上安装discuz!2x
    1/1

    PHP中文网