php写分页类

写了个php分页类 功能还算可以 以后慢慢完善 里面有我的注释 分页公式需要熟记。

 



<?php
    /*
	    分页是我们读取数据库显示内容必须要用到的
		所谓分页,也就是将数据库中的结果集人为的分为一段一段来显示
		需要参数
		
		当前第几页?  GET
		每页多少条? pageSize
		总记录数?   total
		公式 
		(当前页码 -1) * 每页几条 , 每页几条
	
	*/

	
class Page {
    private $total = null;
	private $page = null;
	private $pageNum = null;
	private $pageSize = null;
	public $limit = null;
	private $url;
	private $offset = 3;
	
	public function __construct ($_total,$_pageSize = 10) {
	    $this->total = $_total;
		$this->pageSize = $_pageSize;
		$this->pageNum = ceil($this->total / $this->pageSize);
		$this->page = $this->getPage();
		$this->url = $this->setUrl();
		$this->limit = ($this->page-1)*$this->pageSize .",".$this->pageSize;
	}
	
	private function getPage () {
	    $_page = (int)$_GET['page'];
		if(empty($_page) || $_page <= 0) return 1;
		if($_page > $this->pageNum) return $this->pageNum;
		return $_page;
	}
	
	public  function setUrl () {
	    $_url = $_SERVER['REQUEST_URI'];
		$_url = parse_url($_url);
		if(isset($_url['query'])) {
		    parse_str($_url['query'],$query);
			unset($query['page']);
			$_url = $_url['path'].'?'.http_build_query($query); 
		}  else {
                    $_url = $_url['path'];
                } 
        
		return $_url;
	}
	
	
	//数字分页
	private function numPage () {
		for($i=$this->offset;$i>=1;$i--) {
			$_page = $this->page-$i;
			if ($_page < 1) continue;
		     $numPage .= '[<a href="'.$this->url.'&page='.($this->page-$i).'">'.($this->page-$i).'</a>]';
		}
		
		$numPage .= '[<a href="'.$this->url.'&page='.($this->page).'">'.($this->page).'</a>]';
		
		for($i=1;$i<=$this->offset;$i++) {
			$_page = $this->page +$i;
			if ($_page > $this->pageNum) break;
		    $numPage .= '[<a href="'.$this->url.'&page='.($this->page+$i).'">'.($this->page+$i).'</a>]';
		}

		return $numPage;
	}
	
	
	//首页
	private function  first () {
	   if($this->page > $this->offset+1) {
	       return '[<a href="'.$this->url.'&page=1">1</a>]...';
	   }
	}
	
	//上一页
	private function prev () {
		return '<a href="'.$this->url.'&page='.($this->page-1).'">上一页</a>';
	}
	
	
	//下一页
	private function next () {
	
		return '<a href="'.$this->url.'&page='.($this->page+1).'">下一页</a>';
	}
	
	
	//尾页
	private function last () {
	    if($this->pageNum - $this->page > $this->offset ) {
			return '...[<a href="'.$this->url.'&page='.$this->pageNum.'">'.$this->pageNum.'</a>]';
		}
	}
	
	
	
	
	
	
	
	public function showPage () {
	    $data = "";
	    $data .= $this->first();
		$data .= $this->numPage();
		$data .= $this->last();
		$data .= $this->prev();
		$data .= $this->next();
		
		return $data;
		
	}
   



}
	
	
	



?>


 

 

分页样式

 

 

                                                    过往云烟 2010/06/28

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值