共享一个php分页类
一个php的分页类,自我感觉相当不错,看源码就已经知道这款php的分页类有多么强大了,基本上涵盖了php分页的所有功能,里面的方法不少,值得新手朋友学习一下了,而在制作php应用中,php的分页技术也是不可缺少的,看看这款吧~
使用时需要先将其保存成为一个类文件,然后进行实例化调用方可使用。
PHP代码
[code lang="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='第'.$this->perPage.'页/共'.$this->
totalPage.'页 共'.$this->totalNums.'条';
  $this->pageHeader2="共".$this->totalPage
." 页/".$this->totalNums." 条 ";
 }
 //-------------------定义显示分页主体函数-------------------/
 function setPageBody(){
  $this->pageBody.='';
  for($this->pageStart;$this->pageStart<=$this->pageEnd;$this->
pageStart++)
  {
   if($this->perPage==$this->pageStart){
    $this->pageBody.='
"current page">'.$this->pageStart.'';
   }elseif($this->htmlPage=="html"){
    $pageurl=str_replace("(*)",$this->pageStart,$this->pageUrl);
    $this->pageBody.=''.$this->pageStart.'';
   }else{
   $this->pageBody.=''.$this->pageStart.
'';
   }
  }
  $this->pageBody.='';
 }
 //-------------------定义显示分页尾函数-------------------/
 function setPageBottomInput(){
  $tmp_str='';
  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.='';
  $this->pageBottom=$tmp_str;
 }
 //-------------------定义显示分页尾函数-------------------/
 function setPageBottomSelect(){
  $tmp_str='
";
  $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.=''.$this-
>imgInfo['first_on'].'';
   }else{
    $this->pageBody.=''.$this->imgInfo['first_off'].'';
   }
  }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.=''.$this
->imgInfo['last_on'].'';
   }else{
    $this->pageBody.=''.$this->imgInfo['last_off'].'';
   }
  }
 }
 //-------------定义显示前一页和后一页函数----------------------------/
 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.=''.$this
->imgInfo['per_on'].'';
   }else{
    $this->pageBody.='
'.$this->imgInfo['per_off'].'';
   }
  }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.='
'.$this->imgInfo['next_on'].'';
   }else{
    $this->pageBody.=''.$this->imgInfo['next_off'].'';
   }
  }
 }
 //-------------定义显示前几页和后几页函数----------------/
 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.=''.$this->imgInfo['permore_on'].'';
   }else{
    $this->pageBody.=''.$this->imgInfo['permore_off'].'';
   }
  }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.=''.$this->imgInfo['nextmore_on'].'';
   }else{
    $this->pageBody.=''.$this->imgInfo['nextmore_on'].'';
   }
  }
 }
 //-------------定义显示上一页和下一页函数-----------------------/
 function getPerNext($m=true){
  $this->pageBody='';
  if($m){
   $this->setFirstLast($m);
  }
  $this->setPerNext($m);
  $this->setPerNext(false);
  if($m){
   $this->setFirstLast(false);
  }
  return '
';
 }
 //-------------定义前台调用显示完整信息函数-------------------/
 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 '
';
 }
 //-------------定义前台调用仅显示头尾函数----------------------/
 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 '
';
 }
}
[/code]