PHP功能强大的分页程序

12年前

分页类代码 page.Class.php

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">  <?php  /**   *-------------------------ҳ----------------------*   */  class PageClass  {   private $myde_count; // 总记录数   var $myde_size;   // 每页记录数   private $myde_page;  // 当前页   private $myde_page_count; // 总页数   private $page_url;  // 页面url   private $page_i;  // 起始页   private $page_ub;  // 结束页   var $page_limit;      // 构造函数   function __construct($myde_count=0, $myde_size=1, $myde_page=1,$page_url)   {         $this -> myde_count = $this -> numeric($myde_count);    $this -> myde_size  = $this -> numeric($myde_size);    $this -> myde_page  = $this -> numeric($myde_page);    $this -> page_limit = ($this -> myde_page * $this -> myde_size) - $this -> myde_size;         $this -> page_url       = $page_url;        if($this -> myde_page < 1) $this -> myde_page =1;        if($this -> myde_count < 0) $this -> myde_page =0;        $this -> myde_page_count  = ceil($this -> myde_count/$this -> myde_size);        if($this -> myde_page_count < 1) $this -> myde_page_count = 1;        if($this -> myde_page > $this -> myde_page_count) $this -> myde_page = $this -> myde_page_count;        $this -> page_i = $this -> myde_page - 2;              $this -> page_ub = $this -> myde_page + 2;              if($this -> page_i < 1){                  $this -> page_ub = $this -> page_ub + (1 - $this -> page_i);                   $this -> page_i = 1;          }                    if($this -> page_ub > $this -> myde_page_count){                  $this -> page_i = $this -> page_i - ($this -> page_ub - $this -> myde_page_count);                   $this -> page_ub = $this -> myde_page_count;                   if($this -> page_i < 1) $this -> page_i = 1;          }   }      // 判断是否为数字   private function numeric($id)   {    if (strlen($id)){        if (!ereg("^[0-9]+$",$id)){      $id = 1;        }else{      $id = substr($id,0,11);      }    }else{     $id = 1;    }    return $id;   }      // 地址替换   private function page_replace($page)    {    return str_replace("{page}", $page, $this -> page_url);   }      // 首页   private function myde_home()    {    if($this -> myde_page != 1){         return "    <li class=\"page_a\"><a href=\"".$this -> page_replace(1)."\"  title=\"首页\" >首页</a></li>\n";         }else{         return "    <li>首页</li>\n";         }   }      private function myde_prev() // 上一页   {    if($this -> myde_page != 1){         return "    <li class=\"page_a\"><a href=\"".$this -> page_replace($this->myde_page-1) ."\"  title=\"上一页\" >上一页</a></li>\n";         }else{         return "    <li>上一页</li>\n";         }   }      private function myde_next() // 下一页   {    if($this -> myde_page != $this -> myde_page_count){          return "    <li class=\"page_a\"><a href=\"".$this -> page_replace($this->myde_page+1) ."\"  title=\"下一页\" >下一页</a></li>\n";          }else{         return "    <li>下一页</li>\n";         }   }      private function myde_last() // 尾页   {    if($this -> myde_page != $this -> myde_page_count){          return "    <li class=\"page_a\"><a href=\"".$this -> page_replace($this -> myde_page_count)."\"  title=\"尾页\" >尾页</a></li>\n";          }else{         return "    <li>尾页</li>\n";         }   }      function myde_write($id='page') // 输出   {    $str  = "<div id=\"".$id."\" class=\"pages\">\n  vul>\n  ";        $str .= "  <li>总记录:<span>".$this -> myde_count."</span></li>\n";        $str .= "    <li><span>".$this -> myde_page."</span>/<span>".$this -> myde_page_count."</span></li>\n";        $str .= $this -> myde_home();        $str .= $this -> myde_prev();        for($page_for_i = $this -> page_i;$page_for_i <= $this -> page_ub; $page_for_i++){         if($this -> myde_page == $page_for_i){                    $str .= "    <li class=\"on\">".$page_for_i."</li>\n";           }          else{           $str .= "    <li class=\"page_a\"><a href=\"".$this -> page_replace($page_for_i)."\" title=\"第".$page_for_i."页\">";            $str .= $page_for_i . "</a></li>\n";           }          }    $str .= $this -> myde_next();        $str .= $this -> myde_last();        $str .= "    <li class=\"pages_input\"><input type=\"text\" value=\"".$this -> myde_page."\"";        $str .= " onkeydown=\"javascript: if(event.keyCode==13){ location='";        $str .= $this -> page_replace("'+this.value+'")."';return false;}\"";        $str .= " title=\"输入您想要到达的页码\" /></li>\n";        $str .= "  </ul>\n  <iv class=\"page_clear\"></div>\n</div>";        return $str;   }  }  /*-------------------------实例--------------------------------*  $page = new PageClass(1000,5,$_GET['page'],'?page={page}');//用于动态  $page = new PageClass(1000,5,$_GET['page'],'list-{page}.html');//用于静态或者伪静态  $page -> myde_write();//显示  */  ?>    <?php      /**   *-------------------------数据库操作类-----------------------------*  */  class mySql_Class  {   function __construct($host, $user, $pass)   {     @mysql_connect($host,$user,$pass) or die("数据库连接失败!");    mysql_query("SET NAMES 'utf-8'");    }      function select_db($db)//连接表   {    return @mysql_select_db($db);   }      function query($sql)//执行SQL语句   {    return @mysql_query($sql);   }      function fetch_array($fetch_array)   {    return @mysql_fetch_array($fetch_array, MYSQL_ASSOC);   }      function num_rows($sql)   {    return @mysql_num_rows($sql);   }     }    ?>  

前端页面调用

<?php  include '../library/page.Class.php';  $page = $_GET['page'];  ?>    <?php      include '../library/conn.php';        $count = $mysql -> num_rows($mysql -> query("select *  from article where article_category = 'php' "));    $pages = new PageClass($count,25,$_GET['page'],$_SERVER['PHP_SELF'].'?page={page}');    $sql  = "select * from article where article_category = 'php' order by ";    $sql .= "article_date desc limit ".$pages -> page_limit.",".$pages -> myde_size;    $result = $mysql -> query($sql);    ?>        <table class="table">                <?php     while($myrow = $mysql -> fetch_array($result)){     ?>    <tr>      <td width="30"><img src="../images/topicnew.gif" /></td>        <td width="90" style="font-family:Georgia"><? echo $myrow["article_date"] ?></td>      <td width="480"><a href="../<? echo $myrow["article_category"] ?>/<? echo $myrow["article_filename"] ?>"><? echo $myrow["article_title"] ?></a></td>      </tr>        <?php     }     ?>      </table>    <?php     echo $pages -> myde_write();  ?>