首頁 後端開發 php教程 php通用分页种

php通用分页种

Jun 13, 2016 pm 01:03 PM
function gt page param this

php通用分页类

<?php interface ILink
{
	public function parse($page,$param);
}
?>
登入後複製

?

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

??

<?php class 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-&gt;allRecords;
	}

	/**
	 * @return the $perRecords
	 */
	public function getPerRecords() {
		return $this-&gt;perRecords;
	}

	/**
	 * @return the $currentPage
	 */
	public function getCurrentPage() 
	{
		return $this-&gt;currentPage;
	}

	/**
	 * @param $allPage the $allPage to set
	 */
	public function setAllPage($allPage) 
	{
		$this-&gt;allPage = ($allPage%$this-&gt;perRecords == 0)?($allPage/$this-&gt;perRecords):($allPage/$this-&gt;perRecords+1);
		$this-&gt;allPage=intval($this-&gt;allPage);
	}

	/**
	 * @param $allRecords the $allRecords to set
	 */
	public function setAllRecords($allRecords) 
	{
		$this-&gt;allRecords = $allRecords;
	}

	/**
	 * @param $perRecords the $perRecords to set
	 */
	public function setPerRecords($perRecords) {
		$this-&gt;perRecords = $perRecords;
	}

	/**
	 * @param $currentPage the $currentPage to set
	 */
	public function setCurrentPage($currentPage) 
	{
		if ($currentPage currentPage = 1;
		else if ($currentPage &gt; $this-&gt;allPage)
			$this-&gt;currentPage =$this-&gt;allPage;
		else
			$this-&gt;currentPage=$currentPage;
	}
	public function hasNext() 
	{
		return $this-&gt;currentPageallPage;
	}
	public function hasPrevious() 
	{
		return $this-&gt;currentPage&gt;1;
	}
	public function getEndIndex() 
	{
		return ((($this-&gt;currentPage-1)*$this-&gt;perRecords)+$this-&gt;perRecords)&gt;$this-&gt;allRecords?((($this-&gt;currentPage-1)*$this-&gt;perRecords)+$this-&gt;perRecords)-$this-&gt;allRecords:$this-&gt;perRecords;
	}
	public function getStartIndex() 
	{
		return ($this-&gt;currentPage-1)*$this-&gt;perRecords;
	}
}
?&gt;
登入後複製

?

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

?

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

?下载

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

華為GT3 Pro和GT4的差異是什麼? 華為GT3 Pro和GT4的差異是什麼? Dec 29, 2023 pm 02:27 PM

華為GT3 Pro和GT4的差異是什麼?

function是什麼意思 function是什麼意思 Aug 04, 2023 am 10:33 AM

function是什麼意思

修復:截圖工具在 Windows 11 中不起作用 修復:截圖工具在 Windows 11 中不起作用 Aug 24, 2023 am 09:48 AM

修復:截圖工具在 Windows 11 中不起作用

如何修復無法連線到iPhone上的App Store錯誤 如何修復無法連線到iPhone上的App Store錯誤 Jul 29, 2023 am 08:22 AM

如何修復無法連線到iPhone上的App Store錯誤

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决

MySQL.proc表的作用與功能詳解 MySQL.proc表的作用與功能詳解 Mar 16, 2024 am 09:03 AM

MySQL.proc表的作用與功能詳解

'enumerate()'函數在Python中的用途是什麼? 'enumerate()'函數在Python中的用途是什麼? Sep 01, 2023 am 11:29 AM

'enumerate()'函數在Python中的用途是什麼?

Vue專案中如何實現資料的分頁與顯示最佳化 Vue專案中如何實現資料的分頁與顯示最佳化 Oct 15, 2023 am 09:27 AM

Vue專案中如何實現資料的分頁與顯示最佳化

See all articles