该分页类兼容url路由的php分页类
该类有个不足的地方,那就是post传的参数无法获取,如果有哪位大神解决了这个问题还希望给小弟分享一下!该文章同时发布在自己的博客上(http://wanql.sinaapp.com/blog_21.html),希望大家帮忙顶下 ^^
上代码!!!class Page{<br>
private $total; //数据表中总记录数<br>
private $listRows; //每页显示的条数<br>
private $limit; //SQL语句中使用limit从句,限制获取记录数<br>
private $uri; //自动获取url的请求地址<br>
private $pageNum; //总页数<br>
private $page; //当前页<br>
private $config = array(<br>
'head' => '条记录',<br>
'prev' => '上一页',<br>
'next' => '下一页',<br>
'first' => '首页',<br>
'last' => '末页'<br>
); //在分页信息中显示内容,可以自己通过set()方法设置<br>
private $listNum = 5; //默认分页列表显示的个数<br>
<br>
/**<br>
* 构造方法,可以设置分页类的属性<br>
* @param int $total 计算分页的总记录数<br>
* @param int $listRows 可选的,设置每页显示的记录数,默认25<br>
* @param mixed $query 可选的,为向目标页面传递参数,可以是数组,也可以是查询字符串格式<br>
* @param bool $ord 默认是true,页面从第一页开始显示,false则从最后一页开始显示<br>
*/<br>
public function __construct($total, $listRows=25, $query='', $ord=true){<br>
$this->total = $total;<br>
$this->listRows = $listRows;<br>
$this->uri = $this->getUri($query);<br>
$this->pageNum = ceil($this->total/$this->listRows);<br>
<br>
/*以下判断用来设置当前页*/<br>
if(!empty($_GET['page'])){<br>
$page = $_GET['page'];<br>
}else{<br>
if($ord){<br>
$page = 1;<br>
}else{<br>
$page = $this->pageNum;<br>
}<br>
}<br>
<br>
if($total > 0){<br>
if(preg_match('/\D/', $page)){<br>
$this->page = 1;<br>
}else{<br>
$this->page = $page;<br>
}<br>
}<br>
<br>
//$this->limit = 'LIMIT '.$this->setLimit();<br>
$this->limit = $this->setLimit();<br>
}<br>
<br>
/**<br>
* 用于设置显示分页的信息,可以进行连贯操作<br>
* @param string $param 成员属性数组config的下表<br>
* @param string $value 用于设置config下标对应的元素值<br>
* @return object 返回本对象自己$this,用于连贯操作<br>
*/<br>
function __set($param, $value){<br>
if(array_key_exists($param, $this->config)){<br>
$this->config[$param] = $value;<br>
}<br>
//return $this;<br>
}<br>
<br>
/*可以使用在对象外部,直接获取私有成员属性limit和page的值*/<br>
function __get($args){<br>
if($args == 'limit' || $args == 'page'){<br>
return $this->$args;<br>
}else{<br>
return null;<br>
}<br>
}<br>
<br>
/**<br>
* 按指定的格式输出分页<br>
* @param int 0-7的数字分别作为参数,用于自定义输出分页结构和调整结构的顺序,默认输出全部结构<br>
* @return string 分页信息内容<br>
*/<br>
function fpage(){<br>
$arr = func_get_args();<br>
<br>
$html[0] = " 共<b> {$this->total} </b>{$this->config['head']} ";<br>
$html[1] = " 本页<b>".$this->disnum()."</b>条 ";<br>
$html[2] = " 本页从<b>{$this->start()} - {$this->end()}</b>条 ";<br>
$html[3] = " <b>{$this->page}/{$this->pageNum}</b>页 ";<br>
$html[4] = $this->firstprev();<br>
$html[5] = $this->pageList();<br>
$html[6] = $this->nextlast();<br>
$html[7] = $this->goPage();<br>
<br>
$fpage = '<div>';<br>
<br>
if(count($arr)
$arr = array(0,1,2,3,4,5,6,7);<br>
}<br>
<br>
for($i=0; $i<count></count>
$fpage .= $html[$arr[$i]];<br>
}<br>
<br>
$fpage .= '</div>';<br>
return $fpage;<br>
}<br>
<br>
<br>
<br>
/*在对象内部使用,用于自动获取访问的当前url*/<br>
private function getUri($query){<br>
$request_uri = $_SERVER['REQUEST_URI'];<br>
$url = strstr($request_uri, '?') ? $request_uri : $request_uri.'?';<br>
<br>
if(is_array($query)){<br>
$url .= http_build_query($query);<br>
}else if($query != ''){<br>
$url .= '&'.trim($query, '?&');<br>
}<br>
<br>
$arr = parse_url($url);<br>
<br>
if(isset($arr['query'])){<br>
parse_str($arr['query'], $arrs);<br>
unset($arrs['page']);<br>
$url = $arr['path'].'?'.http_build_query($arrs);<br>
}<br>
<br>
if(strstr($url, '?')){<br>
if(substr($url, -1) != '?'){<br>
$url = $url.'&';<br>
}<br>
}else{<br>
$url .= '?';<br>
}<br>
return $url;<br>
}<br>
<br>
/*私有方法,设置limit*/<br>
private function setLimit(){<br>
if($this->page > 0){<br>
return ($this->page - 1)*$this->listRows.", {$this->listRows}";<br>
}else{<br>
return 0;<br>
}<br>
}<br>
<br>
/*在对象内部使用的私有方法,用于获取当前页开始的记录数*/<br>
private function start(){<br>
if($this->total == 0){<br>
return 0;<br>
}else{<br>
return ($this->page-1) * $this->listRows + 1;<br>
}<br>
}<br>
<br>
/*用于获取当前页结束的记录数*/<br>
private function end(){<br>
return min($this->page * $this->listRows, $this->total);<br>
}<br>
<br>
/*用于获取本页显示的记录条数*/<br>
private function disnum(){<br>
if($this->total > 0){<br>
return $this->end() - $this->start() + 1;<br>
}else{<br>
return 0;<br>
}<br>
}<br>
<br>
/*用于获取上一页和首页的操作信息*/<br>
private function firstprev(){<br>
if($this->page > 1){<br>
$str = " <a>uri}page=1'>{$this->config['first']}</a> ";<br>
$str .= "<a>uri}page=".($this->page-1)."'>{$this->config['prev']}</a> ";<br>
return $str;<br>
}<br>
}<br>
<br>
private function pageList(){<br>
$linkPage = ' <b>';<br>
$pageSub = $this->page%$this->listNum;<br>
if($pageSub==0 && $this->page>0){<br>
$pageSub = $this->listNum;<br>
}<br>
/*当前页面前面的列表*/<br>
for($i=$pageSub-1; $i >= 1; $i--){<br>
$page = $this->page-$i;<br>
if($page >= 1){<br>
$linkPage .= "<a>uri}page={$page}'>{$page}</a> ";<br>
}<br>
}<br>
<br>
/*当前页的信息*/<br>
if($this->pageNum > 1){<br>
$linkPage .= "<span>{$this->page}</span> ";<br>
}<br>
<br>
/*当前页后面的列表*/<br>
for($i=1; $ilistNum-$pageSub; $i++){<br>
$page = $this->page + $i;<br>
if($pagepageNum){<br>
$linkPage .= "<a>uri}page={$page}'>{$page}</a> ";<br>
}else{<br>
break;<br>
}<br>
}<br>
<br>
$linkPage .= '</b>';<br>
return $linkPage;<br>
}<br>
<br>
/*用于获取页数列表信息*/<br>
private function pageListBak(){<br>
$linkPage = ' <b>';<br>
<br>
$inum = floor($this->listNum/2);<br>
/*当前页面前面的列表*/<br>
for($i=$inum; $i >= 1; $i--){<br>
$page = $this->page-$i;<br>
if($page >= 1){<br>
$linkPage .= "<a>uri}page={$page}'>{$page}</a> ";<br>
}<br>
}<br>
<br>
/*当前页的信息*/<br>
if($this->pageNum > 1){<br>
$linkPage .= "<span>{$this->page}</span> ";<br>
}<br>
<br>
/*当前页后面的列表*/<br>
for($i=1; $i
$page = $this->page + $i;<br>
if($pagepageNum){<br>
$linkPage .= "<a>uri}page={$page}'>{$page}</a> ";<br>
}else{<br>
break;<br>
}<br>
}<br>
<br>
$linkPage .= '</b>';<br>
return $linkPage;<br>
}<br>
<br>
/*获取下一页和尾页的操作信息*/<br>
private function nextlast(){<br>
if($this->page != $this->pageNum){<br>
$str = " <a>uri}page=".($this->page+1)."'>{$this->config['next']}</a> ";<br>
$str .= " <a>uri}page={$this->pageNum}'>{$this->config['last']}</a> ";<br>
return $str;<br>
}<br>
}<br>
<br>
/*用于显示和处理表单跳转页面*/<br>
private function goPage(){<br>
if($this->pageNum > 1){<br>
return ' <input>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'page=\'+page+\'\'}" value="'.$this->page.'" /><input>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'page=\'+page+\'\'" /> ';<br>
}<br>
}<br>
}
AD:真正免费,域名+虚机+企业邮箱=0元