该分页类兼容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>
$页 = 1;<br>
}其他{<br>
$page = $this->pageNum;<br>
}<br>
}<br>
<br>
if($total > 0){<br>
if(preg_match('/D/', $page)){<br>
$this->页 = 1;<br>
}其他{<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>
函数 __set($param, $value){<br>
if(array_key_exists($param, $this->config)){<br>
$this->config[$param] = $value;<br>
}<br>
//返回$this;<br>
}<br>
<br>
/* 可以在对象外部使用,直接获取树成员属性limit和page的值*/<br>
函数 __get($args){<br>
if($args == '限制' || $args == '页面'){<br>
返回$this->$args;<br>
}其他{<br>
返回 null;<br>
}<br>
}<br>
<br>
/**<br>
* 按指定的格式输出分页<br>
* @param int 0-7的数字分别作为参数,用于自定义输出分页结构和调整结构的顺序,默认输出全部结构<br>
* @return string 分页信息内容<br>
*/<br>
函数 fpage(){<br>
$arr = func_get_args();<br>
<br>
$html[0] = " 共<b> {$this->总计} </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 style="font:12px \'\5B8B\4F53\',san-serif;">';<br>
<br>
if(count($arr)<1){<br />
$arr = array(0,1,2,3,4,5,6,7);<br />
}<br />
<br />
for($i=0; $i<count($arr); $i++){<br />
$fpage .= $html[$arr[$i]];<br />
}<br />
<br />
$fpage .= '</div>';<br>
返回 $fpage;<br>
}<br>
<br>
<br>
<br>
/*在对象内部使用,用于自动获取访问的当前url*/<br>
私有函数 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>
取消设置($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>
}其他{<br>
$url .='?';<br>
}<br>
返回 $url;<br>
}<br>
<br>
/* 方法,设置限制*/<br>
私有函数 setLimit(){<br>
if($this->页>0){<br>
return ($this->page - 1)*$this->listRows.", {$this->listRows}";<br>
}其他{<br>
返回0;<br>
}<br>
}<br>
<br>
/*在对象内部使用的方法,用于获取当前页面开始的记录数*/<br>
私有函数start(){<br>
if($this->总计 == 0){<br>
返回0;<br>
}其他{<br>
return ($this->page-1) * $this->listRows 1;<br>
}<br>
}<br>
<br>
/*用于获取当前页结束的记录数*/<br>
私有函数 end(){<br>
return min($this->page * $this->listRows, $this->total);<br>
}<br>
<br>
/*用于获取本页显示的记录条数*/<br>
私有函数 disnum(){<br>
if($this->总计>0){<br> 返回 $this->end() - $this->start() 1;<br>
}其他{<br>
返回0;<br>
}<br>
}<br>
<br>
/*用于获取上一页和首页的操作信息*/<br>
私有函数firstprev(){<br>
if($this->页>1){<br>
$str = " <a>uri}page=1'>{$this->config['first']}</a> ";<br>
$str .= "<a href='{$this->uri}page=".($this->page-1)."'>{$this->config['prev'] }</a> “;<br>
返回 $str;<br>
}<br>
}<br>
<br>
私有函数 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 href='{$this->uri}page={$page}'>{$page}</a> ";<br>
}<br>
}<br>
<br>
/*当前页的信息*/<br>
if($this->pageNum > 1){<br>
$linkPage .= "<span style='padding:1px 2px;background:#BBB;color:white;'>{$this->页面}</span> ";<br>
}<br>
<br>
/*当前页后面的列表*/<br>
for($i=1; $ilistNum-$pageSub; $i ){<br>
$page = $this->page $i;<br>
if($pagepageNum){<br>
$linkPage .= "<a href='{$this->uri}page={$page}'>{$page}</a> ";<br>
}其他{<br>
休息;<br>
}<br>
}<br>
<br>
$linkPage .= '</b>';<br>
返回 $linkPage;<br>
}<br>
<br>
/*用于获取页数列表信息*/<br>
私有函数 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 href='{$this->uri}page={$page}'>{$page}</a> ";<br>
}<br>
}<br>
<br>
/*当前页的信息*/<br>
if($this->pageNum > 1){<br>
$linkPage .= "<span style='padding:1px 2px;background:#BBB;color:white;'>{$this->page}</span> ";<br>
}<br>
<br>
/*当前页后面的列表*/<br>
for($i=1; $i<=$inum; $i ){<br />
$page = $this->page $i;<br>
if($page<=$this->pageNum){<br>
$linkPage .= "<a href='{$this->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 href='{$this->uri}page=".($this->page 1)."'>{$this->config['next']}</a> ";<br>
$str .= " <a href='{$this->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 style="width:20px;height:17px !important;height:18px;border:1px solid #cccccc" type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=''.$this->uri.'page='页 ''}" value="'.$this->page.'" //><input style="cursor:pointer;background:#cccccc;width:25px;height:17px;border:1px solid # cccccc;” tyle="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this. previousSibling.value;location=''.$this->uri.'page='页面''" />; ';<br>
}<br>
}<br>
}</b>
AD:真正免费,域名虚机企业邮箱=0元