PHP功能强大的分页程序

分页类代码 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();
?>  

你可能感兴趣的:(PHP,分页)