A-A+
共享一个php分页类
一个php的分页类,自我感觉相当不错,看源码就已经知道这款php的分页类有多么强大了,基本上涵盖了php分页的所有功能,里面的方法不少,值得新手朋友学习一下了,而在制作php应用中,php的分页技术也是不可缺少的,看看这款吧~
使用时需要先将其保存成为一个类文件,然后进行实例化调用方可使用。
PHP代码
class Pageination { var $perPage; //当前页 var $perLimit; //当前每页显示条数 var $perPageLimit; //当前每页显示页数 var $totalNums; //当前分页中的总条数 var $totalPage; //当前分页中总页数 var $pageUrl; //定义当前网页路径 var $pageBaseUrl; //定义当前网页根路径 var $pageStart; //定义当前开始末ID var $pageEnd; //定义当前结束ID var $pageHeader; //定义显示头部分 var $pageBody; //定义显示主体部分 var $pageBottom; //定义显示尾部分 var $imgInfo; //定义当前分页时所需图标 var $pageStyle; //定义当前分页样式 var $pageInfo; //定认当前分页信息 var $pageAction; //定认当前分页点击执行回叫函数 var $htmlPage=""; //是否静态页分页 var $limitMaxPage; //最多分页数 //-------------定义分页构造函数----------------------------/ function Pageination(){ } //-------------定义分页禄始化函数-------------------------/ function init($tn=0,$pl=10,$ppl=10,$htmlpage="",$limitMa xPage=100){ if($htmlpage!=''){ $this->htmlPage="html"; } $this->setPageBaseUrl($htmlpage); $this->setPageUrl(); $this->totalNums=intval($tn); $this->perLimit=intval($pl); $this->perPageLimit=intval($ppl); $this->imgInfo=array( 'per_on'=>'上一页', 'per_off'=>'上一页', 'next_on'=>'下一页', 'next_off'=>'下一页', 'first_on'=>'首页', 'first_off'=>'首页', 'last_on'=>'尾页', 'last_off'=>'尾页', 'permore_on'=>'前'.$this->perPageLimit.'页', 'permore_off'=>'前'.$this->perPageLimit.'页', 'nextmore_on'=>'后'.$this->perPageLimit.'页', 'nextmore_off'=>'后'.$this->perPageLimit.'页', ); /* $this->imgInfo=array( 'per_on'=>' < ', 'per_off'=>' < ', 'next_on'=>' > ', 'next_off'=>'> ', 'first_on'=>'|<', 'first_off'=>'|<', 'last_on'=>'>|', 'last_off'=>'>|', 'permore_on'=>'<<', 'permore_off'=>'<<', 'nextmore_on'=>'>>', 'nextmore_off'=>'>>', );*/ $this->setTotalPage($limitMaxPage); $this->setPerPage(); } function setImgInfo($a=array()){ foreach($a as $k=>$v){ if($v!=''){ $this->imgInfo[$k]=$v; } } } function setPageBaseUrl($pbu){ $this->pageBaseUrl=$pbu; } //-------------定认取得当前网页路径函数-------------------------/ function setPageUrl() { if($this->htmlPage=="html"){ $this->pageUrl=$this->pageBaseUrl; } else{ $a=''; parse_str($_SERVER['QUERY_STRING'],$a); $t=array(); foreach($a as $key=>$value) { if($key=='page'){ continue; }else{ $t[$key].=$a[$key]; } } foreach($t as $key=>$value) { $b[]=$key.'='.urlencode($value); } $tmp_str=implode('&',$b); $tmp_str && $tmp_str.='&'; $this->pageUrl=$this->pageBaseUrl.'?'.$tmp_str; } } //-------------定义设置当前分页类中总页数函数-----------------------/ function setTotalPage($limitMaxPage){ $this->totalPage=ceil($this->totalNums/$this->perLimit); $this->limitMaxPage=$this->totalPage; if($limitMaxPage>0 && $limitMaxPage<$this->totalPage){ $this->limitMaxPage=$limitMaxPage; } } //--------------定义设置当前分页类中当前页数-----------------------/ function setPerPage() { $this->perPage=intval(trim($_GET[page])); if($this->perPage<=0){ $this->perPage=1; }elseif($this->perPage>$this->limitMaxPage){ $this->perPage=$this->totalPage; } } //-----------------定义取得当前步进动态分页信息函数-------------/ function setStepDynamicPageInfo() { if(($this->limitMaxPage-$this->perPage)<$this->perPageLimit){ $this->pageStart=$this->limitMaxPage-$this->perPageLimit+1; }else{ $this->pageStart=$this->perPage; } if($this->pageStart<0) $this->pageStart=1; $this->pageEnd=$this->perPageLimit+$this->pageStart-1; if($this->pageEnd>$this->limitMaxPage){ $this->pageEnd=$this->limitMaxPage; } } //-----------------定义取得当前中间动态分页信息函数-------------------- function setMidDynamicPageInfo() { $add=floor($this->perPageLimit/2); $this->pageStart=$this->perPage-$add+1; if($this->pageStart<=0){ $this->pageStart=1; } $this->pageEnd=$this->perPageLimit+$this->pageStart-1; if($this->pageEnd>$this->limitMaxPage){ $this->pageEnd=$this->limitMaxPage; } } //------------定义取得当前静态分页信息函数-------------------------- function setStaticPageInfo() { $starts=$this->perPage/$this->perPageLimit; if(is_int($starts)){ $starts=$starts-1; }else{ $starts=floor($starts); } $this->pageStart=$starts*$this->perPageLimit+1; $this->pageEnd=$this->pageStart+$this->perPageLimit-1; if($this->pageEnd>$this->limitMaxPage){ $this->pageEnd=$this->limitMaxPage; } } //-------------------定义显示分页头函数-------------------/ function setPageHeader(){ $this->pageHeader='<span>第'.$this->perPage.'页/共'.$this-> totalPage.'页 共'.$this->totalNums.'条</span>'; $this->pageHeader2="<span class='nonelink'>共".$this->totalPage ." 页/".$this->totalNums." 条</span> "; } //-------------------定义显示分页主体函数-------------------/ function setPageBody(){ $this->pageBody.=''; for($this->pageStart;$this->pageStart<=$this->pageEnd;$this-> pageStart++) { if($this->perPage==$this->pageStart){ $this->pageBody.='<span title="第'.$this->pageStart.'页" class= "current page">'.$this->pageStart.'</span>'; }elseif($this->htmlPage=="html"){ $pageurl=str_replace("(*)",$this->pageStart,$this->pageUrl); $this->pageBody.='<a href='.$pageurl.' title="第'.$this->pageSta rt.'页">'.$this->pageStart.'</a>'; }else{ $this->pageBody.='<a href='.$this->pageUrl.'page='.$this-> pageStart.' title="第'.$this->pageStart.'页">'.$this->pageStart. '</a>'; } } $this->pageBody.=''; } //-------------------定义显示分页尾函数-------------------/ function setPageBottomInput(){ $tmp_str='<input type="text" name="pageInput" id="pageInput" size= "3" maxlength="5" value="'.$this->perPage.'"/>'; if($this->htmlPage=="html"){ $pageurl="'".str_replace("(*)","'+document.getElementById('pageIn put').value'",$this->pageUrl)."'"; }else{ $pageurl="'".$this->pageUrl."?page='+document.getElementById('pa geInput').value;"; } $tmp_str.='<input type="button" value="GO" onClick="document.loc ation='+$pageurl+'">'; $this->pageBottom=$tmp_str; } //-------------------定义显示分页尾函数-------------------/ function setPageBottomSelect(){ $tmp_str='<div class="pagelist_bottom">跳到<select name="pageSele ct" onChange="document.location=this.value">'; for($i=1;$i<=$this->limitMaxPage;$i++) { if($i==$this->perPage){ $tmp_str.='<option value='.$this->pageUrl.'page='.$i.' selected ="selected">'.$i.'</option>'; } else{ $tmp_str.='<option value='.$this->pageUrl.'page='.$i.'>'.$i.' </option>'; } } $tmp_str.="</select>页</div>"; $this->pageBottom=$tmp_str; } //-------------定义显示首页和尾页函数----------------------------/ function setFirstLast($m=true){ if($m){ if($this->perPage>1){ $per=1; if($this->htmlPage=="html"){ $pageurlm=str_replace("(*)",$per,$this->pageUrl); }else{ $pageurlm=$this->pageUrl.'page='.$per; } $this->pageBody.='<a href="'.$pageurlm.'" title="首页">'.$this- >imgInfo['first_on'].'</a>'; }else{ $this->pageBody.='<a href="javascript:void(0);" title="已到首页 ">'.$this->imgInfo['first_off'].'</a>'; } }else{ if($this->perPage<$this->limitMaxPage){ $next=$this->limitMaxPage; if($this->htmlPage=="html"){ $pageurln=str_replace("(*)",$next,$this->pageUrl); }else{ $pageurln=$this->pageUrl.'page='.$next; } $this->pageBody.='<a href="'.$pageurln.'" title="尾页">'.$this ->imgInfo['last_on'].'</a>'; }else{ $this->pageBody.='<a href="javascript:void(0);" title="已到尾页 ">'.$this->imgInfo['last_off'].'</a>'; } } } //-------------定义显示前一页和后一页函数----------------------------/ function setPerNext($m=true){ if($m){ if($this->perPage>1){ $per=$this->perPage-1; if($this->htmlPage=="html"){ $pageurlm=str_replace("(*)",$per,$this->pageUrl); }else{ $pageurlm=$this->pageUrl.'page='.$per; } $this->pageBody.='<a href="'.$pageurlm.'" title="前一页">'.$this ->imgInfo['per_on'].'</a>'; }else{ $this->pageBody.='<a href="javascript:void(0);" title="无数据"> '.$this->imgInfo['per_off'].'</a>'; } }else{ if($this->perPage<$this->limitMaxPage){ $next=$this->perPage+1; if($this->htmlPage=="html"){ $pageurln=str_replace("(*)",$next,$this->pageUrl); }else{ $pageurln=$this->pageUrl.'page='.$next; } $this->pageBody.='<a href="'.$pageurln.'" title="后一页"> '.$this->imgInfo['next_on'].'</a>'; }else{ $this->pageBody.='<a href="javascript:void(0);" title=" 无数据">'.$this->imgInfo['next_off'].'</a>'; } } } //-------------定义显示前几页和后几页函数----------------/ function setPerNextMore($m=true){ if($m){ if($this->perPage>$this->perPageLimit){ $perMore=$this->pageStart-1; if($this->htmlPage=="html"){ $pageurln=str_replace("(*)",$perMore,$this->pageUrl); }else{ $pageurln=$this->pageUrl.'page='.$perMore; } $this->pageBody.='<a href="'.$pageurln.'" title="前'.$this ->perPageLimit.'页">'.$this->imgInfo['permore_on'].'</a>'; }else{ $this->pageBody.='<a href="javascript:void(0);" title="无数据 ">'.$this->imgInfo['permore_off'].'</a>'; } }else{ if($this->pageEnd<$this->limitMaxPage){ $nextMore=$this->pageEnd+1; if($this->htmlPage=="html"){ $pageurln=str_replace("(*)",$nextMore,$this->pageUrl); }else{ $pageurln=$this->pageUrl.'page='.$nextMore; } $this->pageBody.='<a href="'.$pageurln.'" title="后'.$this-> perPageLimit.'页">'.$this->imgInfo['nextmore_on'].'</a>'; }else{ $this->pageBody.='<a href="javascript:void(0);" title="无数据 ">'.$this->imgInfo['nextmore_on'].'</a>'; } } } //-------------定义显示上一页和下一页函数-----------------------/ function getPerNext($m=true){ $this->pageBody=''; if($m){ $this->setFirstLast($m); } $this->setPerNext($m); $this->setPerNext(false); if($m){ $this->setFirstLast(false); } return '<div class="pagelist">'.$this->pageBody.'</div>'; } //-------------定义前台调用显示完整信息函数-------------------/ function displayPageInfo($t='static',$f=""){ if($this->totalNums==0){ return; } $t=$t==''?'static':$t; $this->pageBody=''; switch($t){ case 'static': $this->setStaticPageInfo(); break; case 'dynamic': $this->setStepDynamicPageInfo(); break; case 'middynamic': $this->setMidDynamicPageInfo(); break; default: $this->setStaticPageInfo(); } $this->setPageHeader(); $this->setFirstLast(true); if($t!='dynamic'){ $this->setPerNextMore(); } $this->setPerNext(true); $this->setPageBody(); $this->setPerNext(false); if($t!='dynamic'){ $this->setPerNextMore(false); } $this->setFirstLast(false); if($f=='select'){ $this->setPageBottomSelect(); }else if($f=='input'){ $this->setPageBottomInput(); } $this->pageInfo=$this->pageHeader2.$this->pageBody.$this- >pageBottom; return '<div class="pagelist">'.$this->pageInfo.'</div>'; } //-------------定义前台调用仅显示头尾函数----------------------/ function displayPageInfoNoBody($f='select'){ if($this->totalNums==0){ return; } $this->pageBody=''; $this->setPageHeader(); $this->setFirstLast(); $this->setPerNext(); $this->setPerNext(false); $this->setFirstLast(false); if($f=='select'){ $this->setPageBottomSelect(); }else{ $this->setPageBottomInput(); } $this->pageInfo=$this->pageHeader.$this->pageBody.$this-> pageBottom; return '<div class="pagelist">'.$this->pageInfo.'</div>'; } }