完美的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.=" '; return$linkPage; } /*在对象内部使用的私有方法,获取下一页和尾页的操作信息*/ privatefunctionnextlast(){ if($this->page!=$this->pageNum){ $str="{$this->page} "; /*当前页后面的列表*/ for($i=1;$i<=$inum;$i++){ $page=$this->page+$i; if($page<=$this->pageNum) $linkPage.=" uri}page={$page}'>{$page} "; else break; } $linkPage.=' 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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。