精美漂亮的php分页类代码


Posted in PHP onApril 02, 2013

    这是一款简单,方便,功能齐全的分页类,可以根据自己的需要更改CSS样式文件以实现分页颜色的控制,利用php分页类,可以省去自己很多时间,只需要在分页的地方嵌入即可,下面看下使用方法:

    1,在head里包含pager.css

    <link href="pager.css" type="text/css" rel="stylesheet" />

    2,在分页处进行类的实例化:
<?php    
     include "pager.class.php";    
  $CurrentPage=isset($_GET['page'])?$_GET['page']:1;    
  //die($CurrentPage);    
     $myPage=new pager(1300,intval($CurrentPage));    
      $pageStr= $myPage->GetPagerContent();    
  //echo $pageStr;    
     $myPage=new pager(90,intval($CurrentPage));     
     $pageStr= $myPage->GetPagerContent();    
  echo $pageStr;    
    ?>  

  3,读取mysql数据库和分页计算文件需要自己写出来。例如:

    $info=mysql_query("select * from member order by id desc limit $offset,$info_num");  这样才能调到 mysql 数据库和当前页码等。

    下面是一共包含的三个文件:(1) index.php:调用分页类,显示分页 (2) pager.class.php:php分页类 (3)pager.css:css样式美化文件

    (1) index.php:

<head>    
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
<title>----分页演示-----</title>    
<link href="pager.css" type="text/css" rel="stylesheet" />    
</head>    
<body>    
    <?php    
     include "pager.class.php";    
     $CurrentPage=isset($_GET['page'])?$_GET['page']:1;    
     //die($CurrentPage);    
     $myPage=new pager(1300,intval($CurrentPage));    
      $pageStr= $myPage->GetPagerContent();    
     //echo $pageStr;    
     $myPage=new pager(90,intval($CurrentPage));     
     $pageStr= $myPage->GetPagerContent();    
     echo $pageStr;    
    ?>    
</body>    
</html>  

(2) pager.class.php:

<?php    
/*   
 * PHP分页类   
 * @package Page   
 * @Created 2013-03-27   
 * @Modify  2013-03-27   
 * @link http://www.60ie.net   
 * Example:   
       $myPage=new Pager(1300,intval($CurrentPage));   
       $pageStr= $myPage->GetPagerContent();   
       echo $pageStr;   
 */   
class Pager {    
    private $pageSize = 10;    
    private $pageIndex;    
    private $totalNum;        private $totalPagesCount;    
    private $pageUrl;    
    private static $_instance;    
    public function __construct($p_totalNum, $p_pageIndex, $p_pageSize = 10,$p_initNum=3,$p_initMaxNum=5) {    
        if (! isset ( $p_totalNum ) || !isset($p_pageIndex)) {    
            die ( "pager initial error" );    
        }    
        $this->totalNum = $p_totalNum;    
        $this->pageIndex = $p_pageIndex;    
        $this->pageSize = $p_pageSize;    
        $this->initNum=$p_initNum;    
        $this->initMaxNum=$p_initMaxNum;    
        $this->totalPagesCount= ceil($p_totalNum / $p_pageSize);    
        $this->pageUrl=$this->_getPageUrl();    
         $this->_initPagerLegal();    
    }    
        
  /**   
    * 获取去除page部分的当前URL字符串   
    *   
    * @return String URL字符串   
    */   
  private function _getPageUrl() {    
        $CurrentUrl = $_SERVER["REQUEST_URI"];    
        $arrUrl     = parse_url($CurrentUrl);    
        $urlQuery   = $arrUrl["query"];    
        if($urlQuery){    
            $urlQuery  = ereg_replace("(^|&)page=" . $this->pageIndex, "", $urlQuery);    
            $CurrentUrl = str_replace($arrUrl["query"], $urlQuery, $CurrentUrl);    
            if($urlQuery){    
                 $CurrentUrl.="&page";    
            }    
            else $CurrentUrl.="page";    
        } else {    
            $CurrentUrl.="?page";    
        }    
    return $CurrentUrl;    
  }    
  /*   
   *设置页面参数合法性   
   *@return void   
  */   
  private function _initPagerLegal()    
  {    
      if((!is_numeric($this->pageIndex)) ||  $this->pageIndex<1)    
      {    
          $this->pageIndex=1;    
      }elseif($this->pageIndex > $this->totalPagesCount)    
      {    
          $this->pageIndex=$this->totalPagesCount;    
      }    
          
  }    
//$this->pageUrl}={$i}    
//{$this->CurrentUrl}={$this->TotalPages}    
    public function GetPagerContent() {    
        $str = "<div class=\"Pagination\">";    
        //首页 上一页    
        if($this->pageIndex==1)    
        {    
            $str .="<a href='javascript:void(0)' class='tips' title='首页'>首页</a> "."\n";    
            $str .="<a href='javascript:void(0)' class='tips' title='上一页'>上一页</a> "."\n"."\n";    
        }else   
        {    
            $str .="<a href='{$this->pageUrl}=1' class='tips' title='首页'>首页</a> "."\n";    
                    $str .="<a href='{$this->pageUrl}=".($this->pageIndex-1)."' class='tips' title='上一页'>上一页</a> "."\n"."\n";    
        }    
            
        /*   
        除首末后 页面分页逻辑   
        */   
         //10页(含)以下    
         $currnt="";    
         if($this->totalPagesCount<=10)    
         {    
            for($i=1;$i<=$this->totalPagesCount;$i++)    
            {    
                       if($i==$this->pageIndex)    
                       {    $currnt=" class='current'";}    
                       else   
                       {    $currnt="";    }    
                        $str .="<a href='{$this->pageUrl}={$i} ' {$currnt}>$i</a>"."\n" ;    
            }    
         }else                                //10页以上    
         {   if($this->pageIndex<3)  //当前页小于3    
             {    
                     for($i=1;$i<=3;$i++)    
                     {    
                         if($i==$this->pageIndex)    
                           {    $currnt=" class='current'";}    
                         else   
                         {    $currnt="";    }    
                        $str .="<a href='{$this->pageUrl}={$i} ' {$currnt}>$i</a>"."\n" ;    
                     }    
                     $str.="<span class=\"dot\">……</span>"."\n";    
                 for($i=$this->totalPagesCount-3+1;$i<=$this->totalPagesCount;$i++)//功能1    
                 {    
                      $str .="<a href='{$this->pageUrl}={$i}' >$i</a>"."\n" ;    
                 }    
             }elseif($this->pageIndex<=5)   //   5 >= 当前页 >= 3    
             {    
                 for($i=1;$i<=($this->pageIndex+1);$i++)    
                 {    
                      if($i==$this->pageIndex)    
                       {    $currnt=" class='current'";}    
                       else   
                       {    $currnt="";    }    
                        $str .="<a href='{$this->pageUrl}={$i} ' {$currnt}>$i</a>"."\n" ;    
                 }    
                 $str.="<span class=\"dot\">……</span>"."\n";    
                 for($i=$this->totalPagesCount-3+1;$i<=$this->totalPagesCount;$i++)//功能1    
                 {    
                      $str .="<a href='{$this->pageUrl}={$i}' >$i</a>"."\n" ;    
                 }    
             }elseif(5<$this->pageIndex  &&  $this->pageIndex<=$this->totalPagesCount-5 )             //当前页大于5,同时小于总页数-5    
             {    
                 for($i=1;$i<=3;$i++)    
                 {    
                     $str .="<a href='{$this->pageUrl}={$i}' >$i</a>"."\n" ;    
                 }    
                  $str.="<span class=\"dot\">……</span>";                 
                 for($i=$this->pageIndex-1 ;$i<=$this->pageIndex+1 && $i<=$this->totalPagesCount-5+1;$i++)    
                 {    
                       if($i==$this->pageIndex)    
                       {    $currnt=" class='current'";}    
                       else   
                       {    $currnt="";    }    
                        $str .="<a href='{$this->pageUrl}={$i} ' {$currnt}>$i</a>"."\n" ;    
                 }    
                 $str.="<span class=\"dot\">……</span>";    
                 for($i=$this->totalPagesCount-3+1;$i<=$this->totalPagesCount;$i++)    
                 {    
                      $str .="<a href='{$this->pageUrl}={$i}' >$i</a>"."\n" ;    
                 }    
             }else   
             {    
                  for($i=1;$i<=3;$i++)    
                 {    
                     $str .="<a href='{$this->pageUrl}={$i}' >$i</a>"."\n" ;    
                 }    
                  $str.="<span class=\"dot\">……</span>"."\n";    
                  for($i=$this->totalPagesCount-5;$i<=$this->totalPagesCount;$i++)//功能1    
                 {    
                       if($i==$this->pageIndex)    
                       {    $currnt=" class='current'";}    
                       else   
                       {    $currnt="";    }    
                        $str .="<a href='{$this->pageUrl}={$i} ' {$currnt}>$i</a>"."\n" ;    
                 }    
            }           
         }    
             
             
        /*   
        除首末后 页面分页逻辑结束   
        */   
        //下一页 末页    
        if($this->pageIndex==$this->totalPagesCount)    
        {       
            $str .="\n"."<a href='javascript:void(0)' class='tips' title='下一页'>下一页</a>"."\n" ;    
            $str .="<a href='javascript:void(0)' class='tips' title='末页'>末页</a>"."\n";    
                
        }else   
        {    
            $str .="\n"."<a href='{$this->pageUrl}=".($this->pageIndex+1)."' class='tips' title='下一页'>下一页</a> "."\n";    
            $str .="<a href='{$this->pageUrl}={$this->totalPagesCount}' class='tips' title='末页'>末页</a> "."\n" ;    
        }           
        $str .= "</div>";    
        return $str;    
    }    
   
   
/**   
 * 获得实例   
 * @return     
 */   
//  static public function getInstance() {    
//      if (is_null ( self::$_instance )) {    
//          self::$_instance = new pager ();    
//      }    
//      return self::$_instance;    
//  }    
   
}    
?>  

    (3) pager.css:

body,html{ padding:0px; margin:0px; color:#333333; font-family:"宋体",Arial,Lucida,Verdana,Helvetica,sans-serif; font-size:12px; line-height:150%;}    h1,h2,h3,h4,h5,h6,ul,li,dl,dt,dd,form,img,p,label{margin:0; padding:0; border:none; list-style-type:none;}    
/**前台分页样式**/   
.Pagination {margin:10px 0 0;padding:5px 0;text-align:rightright; height:20px; line-height:20px; font-family:Arial, Helvetica, sans-serif,"宋体";}    
.Pagination a {margin-left:2px;padding:2px 7px 2px;}    
.Pagination .dot{ border:medium none; padding:4px 8px}    
.Pagination a:link, .Pagination a:visited {border:1px solid #dedede;color:#696969;text-decoration:none;}    
.Pagination a:hover, .Pagination a:active, .Pagination a.current:link, .Pagination a.current:visited {border:1px solid #dedede;color:#fff; background-color:#ff6600; background-image:none; border:#ff6600 solid 1px;}    
.Pagination .selectBar{ border:#dedede solid 1px; font-size:12px; width:95px; height:21px; line-height:21px; margin-left:10px; display:inline}    
.Pagination a.tips{_padding:4px 7px 1px;}  

转载:http://60ie.net/article/8/365.html

PHP 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 PHP
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
Nov 18 PHP
php中神奇的fastcgi_finish_request
May 02 PHP
apache+php完美解决301重定向的两种方法
Jun 08 PHP
使用PHP备份MYSQL数据的多种方法
Jan 15 PHP
php获得用户ip地址的比较不错的方法
Feb 08 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
Jul 19 PHP
php使用数组填充下拉列表框的方法
Mar 31 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
CI操作cookie的方法分析(基于helper类库)
Mar 28 PHP
PHP7数组的底层实现示例
Aug 25 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 PHP
php更新mysql后获取影响的行数发生异常解决方法
Mar 28 #PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 #PHP
PHP 数组和字符串互相转换实现方法
Mar 26 #PHP
php中将html中的br换行符转换为文本输入中的换行符
Mar 26 #PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
Mar 26 #PHP
自定义php类(查找/修改)xml文档
Mar 26 #PHP
php中DOMElement操作xml文档实例演示
Mar 26 #PHP
You might like
PHP获取文件后缀名的三个函数
2012/10/15 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
用js将long型数据转换成date型或datetime型的实例
2017/07/03 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
详解javascript replace高级用法
2019/02/17 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
原生javascript如何实现共享onload事件
2020/07/03 Javascript
[49:11]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.20
2020/12/23 DOTA
用Python实现斐波那契(Fibonacci)函数
2016/03/25 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
python3 selenium自动化测试 强大的CSS定位方法
2019/08/23 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
Python面向对象实现方法总结
2020/08/12 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
党员群众路线承诺书
2014/05/20 职场文书
数学兴趣小组活动总结
2014/07/08 职场文书
党员组织生活会发言材料
2014/10/17 职场文书
学校百日安全活动总结
2015/05/07 职场文书
运动会广播稿100字
2015/08/19 职场文书
最新最全的手机号验证正则表达式
2022/02/24 Javascript