php封装一个显示页码的分页类

编程语言
0 1046

coon.php


<?php
	class Mysql{
		public function __construct(){
			$this->connect();
		}
		public function connect(){
			$conn=mysql_pconnect('localhost','root','root') or die("Connect MySQL False");
			mysql_select_db('db_database20',$conn) or die("Connect DB False");
			mysql_query("SET NAMES utf8");
		}
	}
?>


page.php

<link rel="stylesheet" type="text/css" href="css/style.css">
<?php
	include_once("conn.php");//包含conn.php文件
	class Page extends Mysql{//创建Page类并继承Mysql类
	  private $pagesize;//每页显示的记录数
	  private $page;//当前是第几页
	  private $pages;//总页数
	  private $total;//查询的总记录数
	  private $pagelen;//显示的页码数
	  private $pageoffset;//页码的偏移量
	  private $table;//欲查询的表名
	  function __construct($pagesize,$pagelen,$table){
        if($_GET['page']=="" || $_GET['page']<0){//判断地址栏参数page是否有值
		  $this->page=1;//当前页定义为1
		}else{
		  $this->page=$_GET['page'];//当前页为地址栏参数的值
		}
		$this->pagesize=$pagesize;
		$this->pagelen=$pagelen;
		$this->table=$table;
		new Mysql();//实例化Mysql类
		$sql=mysql_query("select * from $this->table");//查询表中的记录
		$this->total=mysql_num_rows($sql);//获得查询的总记录数
		$this->pages=ceil($this->total/$this->pagesize);//计算总页数
		$this->pageoffset=($this->pagelen-1)/2;//计算页码偏移量
	  }
	  function sel(){
	    $sql=mysql_query("select * from $this->table limit ".($this->page-1)*$this->pagesize.",".$this->pagesize);//查询当前页显示的记录
		return $sql;//返回查询结果
	  }
	  function myPage(){
	    $message="第".$this->page."页/共".$this->pages."页   ";//输出当前第几页,共几页
		if($this->page==1){//如果当前页是1
		  $message.="首页 上一页   ";//输出没有链接的文字
		}else{
		  $message.="首页 ";//输出有链接的文字
		  $message.="<a href='".$_SERVER['PHP_SELF']."?page=".($this->page-1)."'>上一页  ";//输出有链接的文字
		}
		if($this->page<=$this->pageoffset){//如果当前页小于页码的偏移量
		  $minpage=1;//显示的最小页数为1
		  $maxpage=$this->pagelen;//显示的最大页数为页码的值
		}elseif($this->page>$this->pages-$this->pageoffset){//如果当前页大于总页数减去页码的偏移量
		  $minpage=$this->pages-$this->pagelen+1;//显示的最小页数为总页数减去页码数再加上1
		  $maxpage=$this->pages;//显示的最大页数为总页数
		}else{
		  $minpage=$this->page-$this->pageoffset;//显示的最小页数为当前页数减去页码的偏移量
		  $maxpage=$this->page+$this->pageoffset;//显示的最大页数为当前页数加上页码的偏移量
		}
		for($i=$minpage;$ipage){
		    $message.=$i."\n";//输出没有链接的数字
		  }else{
		    $message.="".$i."\n";//输出有链接的数字
		  }
		}
		if($this->page==$this->pages){//如果当前页等于最大页数
		  $message.="  下一页 尾页";//显示没有链接的文字
		}else{
		  $message.="  <a href='".$_SERVER['PHP_SELF']."?page=".($this->page+1)."'>下一页 ";//显示有链接的文字
		  $message.="<a href='".$_SERVER['PHP_SELF']."?page=".$this->pages."'>尾页";//显示有链接的文字
		}
		return $message;//返回变量的值
	  }
    }
?>

<?php
    $p=new Page('3','3','tb_demo01');
	$rs=$p->sel();
	while($rst=mysql_fetch_row($rs)){
?>
  
ID: 标题 内容 时间
<?php echo $p->myPage(); ?>

二 运行结果