完美的php分页类
本文实例为大家分享了php分页类的具体代码,供大家参考,具体内容如下
"条记录",
'prev'=>"上一页",
'next'=>"下一页",
'first'=>"首页",
'last'=>"末页"
);
//在分页信息中显示内容,可以自己通过set()方法设置
private$listNum=10;//默认分页列表显示的个数
/**
构造方法,可以设置分页类的属性
@paramint$total计算分页的总记录数
@paramint$listRows可选的,设置每页需要显示的记录数,默认为25条
@parammixed$query可选的,为向目标页面传递参数,可以是数组,也可以是查询字符串格式
@parambool$ord可选的,默认值为true,页面从第一页开始显示,false则为最后一页
*/
publicfunction__construct($total,$listRows=25,$query="",$ord=true){
$this->total=$total;
$this->listRows=$listRows;
$this->uri=$this->getUri($query);
$this->pageNum=ceil($this->total/$this->listRows);
/*以下判断用来设置当前面*/
if(!empty($_GET["page"])){
$page=$_GET["page"];
}else{
if($ord)
$page=1;
else
$page=$this->pageNum;
}
if($total>0){
if(preg_match('/\D/',$page)){
$this->page=1;
}else{
$this->page=$page;
}
}else{
$this->page=0;
}
$this->limit="LIMIT".$this->setLimit();
}
/**
用于设置显示分页的信息,可以进行连贯操作
@paramstring$param是成员属性数组config的下标
@paramstring$value用于设置config下标对应的元素值
@returnobject返回本对象自己$this,用于连惯操作
*/
functionset($param,$value){
if(array_key_exists($param,$this->config)){
$this->config[$param]=$value;
}
return$this;
}
/*不是直接去调用,通过该方法,可以使用在对象外部直接获取私有成员属性limit和page的值*/
function__get($args){
if($args=="limit"||$args=="page")
return$this->$args;
else
returnnull;
}
/**
按指定的格式输出分页
@paramint0-7的数字分别作为参数,用于自定义输出分页结构和调整结构的顺序,默认输出全部结构
@returnstring分页信息内容
*/
functionfpage(){
$arr=func_get_args();
$html[0]=" 共{$this->total}{$this->config["head"]} ";
$html[1]=" 本页".$this->disnum()."条 ";
$html[2]=" 本页从{$this->start()}-{$this->end()}条 ";
$html[3]=" {$this->page}/{$this->pageNum}页 ";
$html[4]=$this->firstprev();
$html[5]=$this->pageList();
$html[6]=$this->nextlast();
$html[7]=$this->goPage();
$fpage='';
if(count($arr)<1)
$arr=array(0,1,2,3,4,5,6,7);
for($i=0;$i';
return$fpage;
}
/*在对象内部使用的私有方法,*/
privatefunctionsetLimit(){
if($this->page>0)
return($this->page-1)*$this->listRows.",{$this->listRows}";
else
return0;
}
/*在对象内部使用的私有方法,用于自动获取访问的当前URL*/
privatefunctiongetUri($query){
$request_uri=$_SERVER["REQUEST_URI"];
$url=strstr($request_uri,'?')?$request_uri:$request_uri.'?';
if(is_array($query))
$url.=http_build_query($query);
elseif($query!="")
$url.="&".trim($query,"?&");
$arr=parse_url($url);
if(isset($arr["query"])){
parse_str($arr["query"],$arrs);
unset($arrs["page"]);
$url=$arr["path"].'?'.http_build_query($arrs);
}
if(strstr($url,'?')){
if(substr($url,-1)!='?')
$url=$url.'&';
}else{
$url=$url.'?';
}
return$url;
}
/*在对象内部使用的私有方法,用于获取当前页开始的记录数*/
privatefunctionstart(){
if($this->total==0)
return0;
else
return($this->page-1)*$this->listRows+1;
}
/*在对象内部使用的私有方法,用于获取当前页结束的记录数*/
privatefunctionend(){
returnmin($this->page*$this->listRows,$this->total);
}
/*在对象内部使用的私有方法,用于获取上一页和首页的操作信息*/
privatefunctionfirstprev(){
if($this->page>1){
$str=" uri}page=1'>{$this->config["first"]} ";
$str.="uri}page=".($this->page-1)."'>{$this->config["prev"]} ";
return$str;
}
}
/*在对象内部使用的私有方法,用于获取页数列表信息*/
privatefunctionpageList(){
$linkPage=" ";
$inum=floor($this->listNum/2);
/*当前页前面的列表*/
for($i=$inum;$i>=1;$i--){
$page=$this->page-$i;
if($page>=1)
$linkPage.="uri}page={$page}'>{$page} ";
}
/*当前页的信息*/
if($this->pageNum>1)
$linkPage.="{$this->page} ";
/*当前页后面的列表*/
for($i=1;$i<=$inum;$i++){
$page=$this->page+$i;
if($page<=$this->pageNum)
$linkPage.="uri}page={$page}'>{$page} ";
else
break;
}
$linkPage.=' ';
return$linkPage;
}
/*在对象内部使用的私有方法,获取下一页和尾页的操作信息*/
privatefunctionnextlast(){
if($this->page!=$this->pageNum){
$str=" uri}page=".($this->page+1)."'>{$this->config["next"]} ";
$str.=" uri}page=".($this->pageNum)."'>{$this->config["last"]} ";
return$str;
}
}
/*在对象内部使用的私有方法,用于显示和处理表单跳转页面*/
privatefunctiongoPage(){
if($this->pageNum>1){
return' '.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'page=\'+page+\'\'}"value="'.$this->page.'">'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'page=\'+page+\'\'"> ';
}
}
/*在对象内部使用的私有方法,用于获取本页显示的记录条数*/
privatefunctiondisnum(){
if($this->total>0){
return$this->end()-$this->start()+1;
}else{
return0;
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。