php通用分页类代码

从功能上看应该够用了,代码里自带一种使用方法,写一下例子参数:

$this->pageHtml = CMPage::getPageHtmlByParam(总记录数, 分页大小, 第几页, PageLink选择页个数, 
			array(
				'FirstPage'=>array('带链接的html代码','不带链接的html代码'),
				'PrePage'=>array('<a href="winner/default/?know=%pageVar%">上一页</a> ','上一页 '),
				'PageLink'=>array('<a href="winner/default/?know=%pageVar%">%pageVar%</a> ','<strong>%pageVar%</strong> '),
				'NextPage'=>array('<a href="winner/default/?know=%pageVar%">下一页</a> ','下一页 '),
				'LastPage'=>array('<a href="winner/default/?know=%pageVar%">尾页</a> ','尾页 '),
				'PageJumpSelect'=>array('<option value="winner/default/?know=%pageVar%" selected>%pageVar%</option>','','第<select name="PB_Page_Select" id="PB_Page_Select" >','</select>页<a style="cursor:pointer;" οnclick="javascript:window.location.href=\'http://361torcher.qq.com/\'+$app.G(\'PB_Page_Select\').value;"> GO </a>')
			)
		);


下面是整个数的源码,引入后,传入相应的参数即可生成页面分页代码:

<?php
class CMPage {

	/**
	 * Last Version By Suyx 2011.07.27
	 * 下面是一个使用方法的例子:
	 * $this->pageHtml = CMPage::getPageHtmlByParam($total, 6, $know, 5, 
			array(
				'FirstPage'=>array('<a href="winner/default/?know=%pageVar%">首页</a> ','首页 '),
				'PrePage'=>array('<a href="winner/default/?know=%pageVar%">上一页</a> ','上一页 '),
				'PageLink'=>array('<a href="winner/default/?know=%pageVar%">%pageVar%</a> ','<strong>%pageVar%</strong> '),
				'NextPage'=>array('<a href="winner/default/?know=%pageVar%">下一页</a> ','下一页 '),
				'LastPage'=>array('<a href="winner/default/?know=%pageVar%">尾页</a> ','尾页 '),
				'PageJumpSelect'=>array('<option value="winner/default/?know=%pageVar%" selected>%pageVar%</option>','','第<select name="PB_Page_Select" id="PB_Page_Select" >','</select>页<a style="cursor:pointer;" οnclick="javascript:window.location.href=\'http://xxx.com/\'+$app.G(\'PB_Page_Select\').value;"> GO </a>')
			)
		);
	 */

	protected static $numTotal, $pageTotal, $pageSize, $pageRequest, $pageLinkNum, $pageBegin, $pageEnd, $contentArray, $rtnContentAll;

	public static function setContentArray($_contentArray) {
		self :: $contentArray = $_contentArray;
	}

	public static function setParams($_numTotal, $_pageSize, $_pageRequest, $_pageLinkNum) {

		//简单变量检查
		self :: $numTotal = $_numTotal > 0 ? $_numTotal : 1;
		self :: $pageSize = $_pageSize > 0 ? $_pageSize : 1;
		self :: $pageRequest = $_pageRequest > 0 ? $_pageRequest : 1;
		self :: $pageLinkNum = $_pageLinkNum > 0 ? $_pageLinkNum : 1;

		//计算总页数
		self :: $pageTotal = ceil(self :: $numTotal / self :: $pageSize);

		//计算页数链接的开始值
		self :: $pageBegin = (self :: $pageRequest > 0 && self :: $pageRequest <= self :: $pageTotal ? self :: $pageRequest : 1) - intval(self :: $pageLinkNum / 2);
		if (self :: $pageBegin < 1)
			self :: $pageBegin = 1;

		//计算页数链接的结束值
		self :: $pageEnd = self :: $pageBegin +self :: $pageLinkNum -1;
		if (self :: $pageEnd > self :: $pageTotal)
			self :: $pageEnd = self :: $pageTotal;

		//再计算开始值
		self :: $pageBegin = self :: $pageEnd -self :: $pageLinkNum +1;
		if (self :: $pageBegin < 1)
			self :: $pageBegin = 1;
	}

	//初始化所有参数
	public static function initAllParams($_numTotal, $_pageSize, $_pageRequest, $_pageLinkNum, $_contentArray) {
		self :: setParams($_numTotal, $_pageSize, $_pageRequest, $_pageLinkNum);
		self :: setContentArray($_contentArray);
	}

	public static function getValue($param) {
		$rtn = '';
		if (isset ($param)) {
			$rtn = self :: $param;
		}

		return $rtn;
	}

	//获取分页html代码
	public static function getPageHtml() {

		//初始化返回变量
		self :: $rtnContentAll = '';

		//生成html内容数组
		if (is_array(self :: $contentArray)) {
			$htmlContent = array ();
			foreach (self :: $contentArray as $_funcid => $_funccontent) {
				$funName = 'getHtmlContent_' . $_funcid;
				if (method_exists('Pagination', $funName)) {
					$htmlContent[] = self :: $funName ($_funccontent);
				} else {
					$htmlContent[] = is_array($_funccontent) ? $_funccontent[0] : $_funccontent;
				}
			}
		} else {
			$htmlContent = array ();
		}

		self :: $rtnContentAll = implode('', $htmlContent);

		return self :: $rtnContentAll;
	}

	/**
	 * 
	 * 拼凑分页内容
	 * @param unsigned int $pageTotal
	 * @param unsigned int $pageSize
	 * @param unsigned int $pageRequest
	 * @param unsigned int $pageLinkNum
	 * @param array $contentArray
	 */
	public static function getPageHtmlByParam($_numTotal, $_pageSize, $_pageRequest, $_pageLinkNum, $_contentArray) {

		self :: initAllParams($_numTotal, $_pageSize, $_pageRequest, $_pageLinkNum, $_contentArray);

		return self :: getPageHtml();
	}

	//以下所有函数里面 %pageVar% 是代表要被替换的页数变量
	//首页
	/**
	 * 
	 * Enter description here ...
	 * @param array $content 暂定四维数组,分别表示
	 * 0:带链接的html代码
	 * 1:不带链接的html代码
	 * 2:前面添加的html代码
	 * 3:后面添加的html代码
	 */
	private function getHtmlContent_FirstPage($content) {
		$rtnStr = '';
		if (is_array($content)) {
			if (self :: $pageRequest > 1) {
				$rtnStr = str_replace("%pageVar%", "1", $content[0]); //带链接
			} else {
				$rtnStr = str_replace("%pageVar%", "1", empty ($content[1]) ? $content[0] : $content[1]); //不带连接
			}
		} else {
			$rtnStr = str_replace("%pageVar%", "1", $content);
		}
		if (is_array($content))
			$rtnStr = $content[2] . $rtnStr . $content[3];

		return $rtnStr;
	}

	//上一页
	private function getHtmlContent_PrePage($content) {
		$rtnStr = '';
		if (is_array($content)) {
			if (self :: $pageRequest > 1) {
				$rtnStr = str_replace("%pageVar%", self :: $pageRequest -1, $content[0]); //带链接
			} else {
				$rtnStr = str_replace("%pageVar%", (self :: $pageRequest -1 > 0 ? self :: $pageRequest -1 : 1), empty ($content[1]) ? $content[0] : $content[1]); //不带连接
			}
		} else {
			$rtnStr = str_replace("%pageVar%", (self :: $pageRequest -1 > 0 ? self :: $pageRequest -1 : 1), $content);
		}
		if (is_array($content))
			$rtnStr = $content[2] . $rtnStr . $content[3];

		return $rtnStr;
	}

	//数字链接页
	private function getHtmlContent_PageLink($content) {
		$rtnStr = '';
		for ($i = self :: $pageBegin; $i <= self :: $pageEnd; $i++) {
			if (is_array($content)) {
				if ($i == self :: $pageRequest) {
					$rtnStr .= str_replace("%pageVar%", $i, empty ($content[1]) ? $content[0] : $content[1]); //不带链接
				} else {
					$rtnStr .= str_replace("%pageVar%", $i, $content[0]); //带链接
				}
			} else {
				$rtnStr .= str_replace("%pageVar%", $i, $content);
			}
		}
		if (is_array($content))
			$rtnStr = $content[2] . $rtnStr . $content[3];

		return $rtnStr;
	}

	//下一页
	private function getHtmlContent_NextPage($content) {
		$rtnStr = '';
		if (is_array($content)) {
			if (self :: $pageRequest < self :: $pageTotal) {
				$rtnStr = str_replace("%pageVar%", self :: $pageRequest +1, $content[0]); //带链接
			} else {
				$rtnStr = str_replace("%pageVar%", self :: $pageTotal, empty ($content[1]) ? $content[0] : $content[1]); //不带连接
			}
		} else {
			$rtnStr = str_replace("%pageVar%", self :: $pageRequest < self :: $pageTotal ? self :: $pageRequest +1 : self :: $pageTotal, $content);
		}
		if (is_array($content))
			$rtnStr = $content[2] . $rtnStr . $content[3];

		return $rtnStr;
	}

	//尾页
	private function getHtmlContent_LastPage($content) {
		$rtnStr = '';
		if (is_array($content)) {
			if (self :: $pageRequest < self :: $pageTotal) {
				$rtnStr = str_replace("%pageVar%", self :: $pageTotal, $content[0]); //带链接
			} else {
				$rtnStr = str_replace("%pageVar%", self :: $pageTotal, empty ($content[1]) ? $content[0] : $content[1]); //不带连接
			}
		} else {
			$rtnStr = str_replace("%pageVar%", self :: $pageTotal, $content);
		}
		if (is_array($content))
			$rtnStr = $content[2] . $rtnStr . $content[3];

		return $rtnStr;
	}

	//跳转页
	private function getHtmlContent_PageJumpSelect($content) {
		$rtnStr = '';
		for ($i = 1; $i <= self :: $pageTotal; $i++) {
			if (is_array($content)) {
				$rtnStr .= str_replace("%pageVar%", $i, $content[0]); //带链接
			} else {
				$rtnStr .= str_replace("%pageVar%", $i, $content); //不带链接
			}
		}
		if (is_array($content))
			$rtnStr = $content[2] . $rtnStr . $content[3];

		return $rtnStr;
	}
}
?>


上面的代码里自带了一种使用方法,如果有些分页代码里面的html需要动态根据当前页码数动态变化,那么可以用以下方法:

   		$pageinAtion =new  Pagination();
   		$pageinAtion->setParams($vow_total[0]['COUNT'], $pagesize, $page, 8);
   		$this->pageColumn = $pageinAtion->getPaginationHtmlByParam($vow_total[0]['COUNT'], $pagesize, $page, 8, 
			array(
			    'PrePage'=>array('<em class="nex"><a href="vow/default/?page=%pageVar%">上一页</a></em>','<em class="haven_t">上一页</em>'),
				'FirstPage'=>array($pageinAtion->getValue('pageBegin')>1?'<em><a href="vow/default/?page=1;">1</a></em>'.($pageinAtion->getValue('pageBegin')>2?'<span>...</span>':''):'',''),
				'PageLink'=>array('<em><a href="vow/default/?page=%pageVar%">%pageVar%</a></em>','<em class="hove">%pageVar%</em>'),
				'LastPage'=>array($pageinAtion->getValue('pageEnd')<$pageinAtion->getValue('pageTotal')?(($pageinAtion->getValue('pageEnd')<$pageinAtion->getValue('pageTotal')-1?'<span>...</span>':'').'<em><a href="vow/default/?page=%pageVar%;">%pageVar%</a></em>'):'',''),
				'NextPage'=>array('<em class="nex"><a href="vow/default/?page=%pageVar%">下一页</a></em>','<em class="haven_t">下一页</em>')
			)
			
		);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值