A-A+

共享一个php分页类

2012年05月26日 PHP技术文章 暂无评论 阅读 293 views 次

一个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>';   
 }   
}
标签:

给我留言