PHP 通用分页类PagerBox及使用

<?php
//使用实例
//$totalNum = 101; //总数(数据记录总数)
//$page = isset ( $_GET ['page'] ) ? $_GET ['page'] : 1; //当前页数
//$perPage = 10; //每页显示记录
//$url = $_SERVER['PHP_SELF'];//
//$length = 5;//每页显示步长
//$class = 'pages';//分页器CSS样式
//
//$pagerBox = new PagerBox ( );
//
//echo $pagerBox->getPager ( $totalNum, $page, $url, $perPage, $length, $class, TRUE );

class PagerBox {

	const PRE = '上一页';
	const NEXT = '下一页';

	/**
	 * 获取分页
	 *
	 * @param int $page 当前页
	 * @param int $totalNum    总页数
	 * @param int $perPage     每页显示记录数
	 * @param string $url      页面跳转URL
	 * @param int $length      页面步长值
	 * @param string $class    分页器样式
	 * @param bool $iscss      是否需要内置CSS
	 * @return html
	 */
	public function getPager($totalNum, $page, $url, $perPage, $length = '5', $class = 'pages', $default = FALSE) {
		$pageNum = ceil ( $totalNum / $perPage );
		$currentNum = ($page) ? $page : 1;
		$html = '';
		$html .= ($default) ? $this->getDefaultCss () : '';
		$html .= '<div class="' . $class . '">';
		$html .= $this->getPreHTML ( $page, $url );
		$html .= $this->getPages ( $page, $url, $currentNum, $length, $pageNum );
		$html .= $this->getNextHTML ( $page, $url, $pageNum );
		$html .= '</div>';
		return $html;
	}

	/**
	 * 获取上一页HTML
	 *
	 * @param int $page
	 * @param string $url
	 * @return html
	 */
	private function getPreHTML($page, $url) {
		$html = '';
		if (($page - 1) == 0) {
			$html .= $this->getHTML ( self::PRE );
		} else {
			$html .= $this->getHTML ( self::PRE, TRUE, $this->getURL ( $url, ($page - 1) ) );
		}
		return $html;
	}

	/**
	 * 获取页HTML
	 *
	 * @param int $page
	 * @param string $url
	 * @param int $currentNum
	 * @param int $pageLength
	 * @param int $pageNum
	 * @return html
	 */
	private function getPages($page, $url, $currentNum, $length, $pageNum) {
		$html = '';
		$start = ceil ( $page / $length );
		$start = ($start - 1) * $length + 1;
		$end = $start + $length - 1;
		$end = ($end > $pageNum) ? $pageNum : $end;

		for($i = $start; $i <= $end; $i ++) {
			if ($currentNum == $i) {
				$html .= $this->getHTML ( $i );
				continue;
			}
			$html .= $this->getHTML ( $i, TRUE, $this->getURL ( $url, $i ) );
		}
		return $html;
	}

	/**
	 * 获取下一页HTML
	 *
	 * @param int $page
	 * @param string $url
	 * @param int $pageNum
	 * @return html
	 */
	private function getNextHTML($page, $url, $pageNum) {
		$html = '';
		if (($page - $pageNum) == 0) {
			$html .= $this->getHTML ( self::NEXT );
		} else {
			$html .= $this->getHTML ( self::NEXT, TRUE, $this->getURL ( $url, ($page + 1) ) );
		}
		return $html;
	}

	/**
	 * 获取分页HTML
	 *
	 * @param string $text
	 * @param bool $isUrl
	 * @param string $url
	 * @param string $class
	 * @return html
	 */
	private function getHTML($text, $isUrl = FALSE, $url = '', $class = '') {
		if ($isUrl) {
			return $this->getAHtml ( $text, $url );
		}
		return $this->getSpanHtml ( $text, $class );
	}
	/**
	 * 创建URL
	 *
	 * @param string $url
	 * @param int $page
	 * @return url
	 */
	private function getURL($url, $page) {
		return $url . '?page=' . $page;
	}
	/**
	 * 创建span元素
	 *
	 * @param string $text
	 * @param string $class
	 * @return html
	 */
	private function getSpanHtml($text, $class = '') {
		$class = ($class) ? 'class=' . $class : '';
		return ' <span ' . $class . '>' . $text . '</span>';
	}
	/**
	 * 创建a元素
	 *
	 * @param string $text
	 * @param string $url
	 * @return html
	 */
	private function getAHtml($text, $url) {
		return ' <a href="' . $url . '">' . $text . '</a>';
	}
	/**
	 * 获取默认CSS样式
	 *
	 * @return css
	 */
	private function getDefaultCss() {
		$css = '<style type="text/css">';
		$css .= '.pages {margin:15px auto 0 auto;padding-right:40px;text-align:left;}
				 .pages a, .pages span {display:inline-block;*display:inline;zoom:1;padding:0px 6px;height:21px;line-height:21px;font-size:12px;font-weight:100;background:#F5F8FF;overflow:hidden;}
				 .pages a {border:1px solid #D8E0ED;}
				 .pages span {border:1px solid #dddddd;background:#FFFFFF;color:#999999;}
				 a{text-decoration:none;color:#666666;}
				 a:hover{text-decoration:underline;color:#0657b2;}';
		$css .= '</style>';
		return $css;
	}

}

?>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值