ホームページ  >  記事  >  バックエンド開発  >  php通用分页种

php通用分页种

WBOY
WBOYオリジナル
2016-06-13 11:03:08956ブラウズ

php通用分页类

<?phpinterface ILink{	public function parse($page,$param);}?>

?

<?phprequire 'ILink.php';class LinkAdapter implements ILink{	/**	 * @param unknown_type $page	 * @param unknown_type $param	 */	public function parse($page, $param) 	{				$temp="共{$page->getAllPage()}页,第{$page->getCurrentPage()}页 ";		$links=$this->getLinkString($param);		if($page->hasPrevious())$temp.="<a href="%24links=%22.(%24page->getCurrentPage()-1).%22">上一页</a> ";else{$temp.="上一页 ";}		for($i=$page->getCurrentPage();$igetAllPage()&&$igetPerRecords();$i++)		{			$temp.="<a href="%24links=%24i">{$i}</a> ";		}		if($page->hasNext())$temp.="<a href="%24links=%22.(%24page->getCurrentPage()+1).%22">下一页</a> ";else{$temp.="下一页 ";}		return $temp;	}	public function getLinkString($param)	{		$str="";		$attr=$_GET;		unset($attr[$param]);		if($attr)		{			foreach($attr as $key=>$val)			{				if($str=="")				{					$str.="?$key=$val";				}				else				{					$str.="&$key=$val";				}			}			$str.="&$param";		}		else		{			$str.="?$param";		}		return $str;	}}?>

??

<?phpclass Page {	private $allPage;#总页数	private $allRecords;#总记录数	private $perRecords;#单页记录数	private $currentPage=1;#当前页面	/**	 * @return the $allPage	 */	public function getAllPage()	{		return $this->allPage;	}	/**	 * @return the $allRecords	 */	public function getAllRecords() 	{		return $this->allRecords;	}	/**	 * @return the $perRecords	 */	public function getPerRecords() {		return $this->perRecords;	}	/**	 * @return the $currentPage	 */	public function getCurrentPage() 	{		return $this->currentPage;	}	/**	 * @param $allPage the $allPage to set	 */	public function setAllPage($allPage) 	{		$this->allPage = ($allPage%$this->perRecords == 0)?($allPage/$this->perRecords):($allPage/$this->perRecords+1);		$this->allPage=intval($this->allPage);	}	/**	 * @param $allRecords the $allRecords to set	 */	public function setAllRecords($allRecords) 	{		$this->allRecords = $allRecords;	}	/**	 * @param $perRecords the $perRecords to set	 */	public function setPerRecords($perRecords) {		$this->perRecords = $perRecords;	}	/**	 * @param $currentPage the $currentPage to set	 */	public function setCurrentPage($currentPage) 	{		if ($currentPage currentPage = 1;		else if ($currentPage > $this->allPage)			$this->currentPage =$this->allPage;		else			$this->currentPage=$currentPage;	}	public function hasNext() 	{		return $this->currentPageallPage;	}	public function hasPrevious() 	{		return $this->currentPage>1;	}	public function getEndIndex() 	{		return ((($this->currentPage-1)*$this->perRecords)+$this->perRecords)>$this->allRecords?((($this->currentPage-1)*$this->perRecords)+$this->perRecords)-$this->allRecords:$this->perRecords;	}	public function getStartIndex() 	{		return ($this->currentPage-1)*$this->perRecords;	}}?>

?

<?phprequire 'Page.php';require'LinkAdapter.php';class Pager {	private $list=array();	private $page;#分页对象	private $param;#页面请求参数	public function __construct($list)	{		$this->list=$list;		$this->page=new Page();	}	/**	 * 	 * @param unknown_type $rows 显示的数据量	 * @param unknown_type $current 当前页	 */	public function init($rows=5,$current)	{		$this->page->setAllRecords(count($this->list));		$this->page->setPerRecords($rows);		$this->page->setAllPage(count($this->list));		$this->page->setCurrentPage($current);				$this->list=array_slice($this->list,$this->page->getStartIndex(),$this->page->getEndIndex());	}	/**	 * 获取分页变量	 */	public function getVar()	{		return $this->list;	}	/**	 * @return the $param	 */	public function getParam() 	{		return $this->param;	}	/**	 * @param $param the $param to set	 */	public function setParam($param) {		$this->param = $param;	}	/**	 * 加载插件信息,获取生成的链接,装饰器模式	 * @param unknown_type $link	 */	public function getLink($link=null)	{		if(!empty($link)||!(($link instanceof ILink)))$link=new LinkAdapter();		return $link->parse($this->page,$this->param);	}}?>

?

<?php include'lib/Pager.php';	$target=array();	for($i=0;$i<=100;$i++){$target[]=$i;}	$page=new Pager($target);	$page->setParam("page");	$page->init(30,$_REQUEST['page']);	$list=$page->getVar();	foreach($list as $val):		echo $val.'<br>';	endforeach;	echo $page->getLink();?>

?下载

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。