精美漂亮的php分页类代码

  这是一款简单,方便,功能齐全的分页类,可以根据自己的需要更改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