龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

分页类——尾部页码导航

时间:2014-07-22 14:50来源: 作者: 点击:
分享到:
分页类——尾部页码导航
分页类——尾部页码导航
<?php
/**
 * 生成Comment的尾部分页导航
 * @author 李俊
 *
 */
class cmtTail{
	private $currentPage;
	private $totalPage;
	
	/**
	 * 生成页码导航--总控函数
	 * @param string $currentPage 当前页码
	 * @param string $totalPage 总页数
	 * @throws Exception 页码小于1将会抛出异常
	 * @return string
	 */
	function __do($currentPage, $totalPage) {
		$this->currentPage=$currentPage;
		$this->totalPage=$totalPage;
		if($this->totalPage<=10){//总页数小于等于10页
			if($this->currentPage==1){//当前页是第一页
				$str='上一页'.$this->currentTag();
				for ($i = 2; $i <= $this->totalPage; $i++) {
					$str=$str.$this->commonTag($i);
				}
				$str=$str.$this->next();
			}elseif ($this->currentPage==$this->totalPage){//已跳至最后一页
				$str=$this->up();
				for ($i = 1; $i <= $this->totalPage-1; $i++) {
					$str=$str.$this->commonTag($i);
				}
				$str=$str.$this->currentTag();
				$str=$str.$this->next();
			}else{
				$str=$this->up();
				for($i=1; $i<$this->currentPage; $i++){
					$str=$str.$this->commonTag($i);
				}
				$str=$str.$this->currentTag();//生成当前页标签
				for ($i = $this->currentPage+1; $i <= $this->totalPage; $i++) {
					$str=$str.$this->commonTag($i);
				}
				$str=$str.$this->next();
			}
		}elseif ($this->totalPage>10){//页码大于10
			if($this->currentPage==1){//8+2
				$str='上一页'.$this->currentTag();
				for ($i = 2; $i <= 8; $i++) {
					$str=$str.$this->commonTag($i);
				}
				$str=$str.'...';//添加省略号
				$str=$str.$this->commonTag($this->totalPage-1);
				$str=$str.$this->commonTag($this->totalPage);
			}elseif($this->currentPage==$this->totalPage) {//当前为最后一页
				$str=$this->up();
				$str=$str.$this->commonTag(1);
				$str=$str.'...';//添加省略号
				for ($i = $this->totalPage-6; $i < $this->totalPage; $i++) {
					$str=$str.$this->commonTag($i);
				}
				$str=$str.$this->currentTag();
				$str=$str.$this->next();
			}else {
				if ($this->currentPage<6) {
					$str=$this->up();
					for ($i = 1; $i < $this->currentPage; $i++) {
						$str=$str.$this->commonTag($i);
					}
					$str=$str.$this->currentTag();
					for ($i = $this->currentPage+1; $i <= 7; $i++) {
						$str=$str.$this->commonTag($i);
					}
					$str=$str.'...';//添加省略号
					$str=$str.$this->commonTag($this->totalPage);
					$str=$str.$this->next();
				}else {
					if ($this->currentPage>=$this->totalPage-4) {
						$str=$this->up();
						$str=$str.$this->commonTag(1);
						$str=$str.'...';//添加省略号
						for ($i = $this->totalPage-6; $i < $this->currentPage; $i++) {
							$str=$str.$this->commonTag($i);
						}
						$str=$str.$this->currentTag();
						for ($i = $this->currentPage+1; $i <= $this->totalPage; $i++) {
							$str=$str.$this->commonTag($i);
						}
						$str=$str.$this->next();
					}elseif ($this->currentPage<$this->totalPage-4){//1+5+1
						$str=$this->up();
						$str=$str.$this->commonTag(1);
						$str=$str.'...';//添加省略号
						$str=$str.$this->commonTag($this->currentPage-2);
						$str=$str.$this->commonTag($this->currentPage-1);
						$str=$str.$this->currentTag();
						$str=$str.$this->commonTag($this->currentPage+1);
						$str=$str.$this->commonTag($this->currentPage+2);
						$str=$str.'...';//添加省略号
						$str=$str.$this->commonTag($this->totalPage);
						$str=$str.$this->next();
					}
				};
			}
		}elseif ($this->totalPage<=0){
			throw new Exception("页面不可能小于1");
		}
		return $str;
	}
	/**
	 * 一般标签
	 * @param int $param 页码
	 * @return string
	 */
	function commonTag($param) {
		return '<a page="'.$param.'">'.$param.'</a>';
	}
	/**
	 * 生成当前页标签
	 * @param int $param 页码
	 * @return string
	 */
	function currentTag() {
		return '<strong id="on">'.$this->currentPage.'</strong>';
	}
	/**
	 * 生成下一页标签
	 * @param int $param 下一页页码
	 * @return string
	 */
	function next() {
		if ($this->currentPage==$this->totalPage) {
			return '下一页';
		}
		return '<a page="'.($this->currentPage+1).'">下一页</a>';
	}
	/**
	 * 生成上一页标签
	 * @param int $param 上一页页码
	 * @return string
	 */
	function up() {
		if ($this->currentPage==1){
			return '上一页';
		}else{
			return '<a page="'.($this->currentPage-1).'">上一页</a>';
		}
	}
	/**
	 * 实例化cmtTail,
	 * 功能:生成Comment的尾部分页导航
	 * @param string $currentPage 当前页码
	 * @param string $totalPage 总页数
	 * @return string 返回html标签字符串
	 */
	static function GO($currentPage, $totalPage) {
		$p=new cmtTail();
		return $p->__do($currentPage, $totalPage);
	}
}
精彩图集

赞助商链接