好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php通用分页类代码

 

class  dividepage{ //分页类     private   $total ; //要显示的总记录数     private   $url ; //请求的url地址     private   $displaypg ; //每页显示的记录数,默认为每页显示10条记录     private   $page ; //当前页码     private   $lastpg ; //总页数,即最后一页的页码     private   $prepg ; //前一页     private   $nextpg ; //后一页     private   $firstcount ; //记录条数开始的序号从0开始     private   $startd ; //记录条数开始的记录号.     private   $stopd ; //记录条数结束的记录号.   //构造函数   public   function  __construct( $url ,  $total ,  $displaypg ){    $this ->url =  $url ; //请求的url     $this ->total =  $total ; //总记录数     //if($displaypg == '')     $this ->displaypg =  $displaypg ; //每页显示的记录数     $this ->initdividepage(); //初始化分页类     //echo ','.$this->displaypg;   }  //初始化分页类   private   function  initdividepage(){    //分析url     $parse_url  =  parse_url ( $this ->url); //将url解释为有固定键值对的数组     $url_query  =  $parse_url [ 'query' ]; //取出url中的查询字符串     if ( $url_query ){ //如果有查询字符串,则删除查询字串中当前页的查询字段如:&page=$page或page=$page      ereg ( '(^|&)page=([0-9]*)' ,  $url_query ,  $k );     $this ->page =  $k [2]; //取得当前页的值      $url_query  =  ereg_replace ( "(^|&)page=$this->page" ,  '' ,  $url_query ); //删除查询字串中当前页的查询字段如:&page=$page或page=$page      $this ->url =  str_replace ( $parse_url [ 'query' ],  $url_query ,  $this ->url); //保留其他的查询字串,      $this ->page =  $this ->page ?  $this ->page : 1; //w如果查询字符串中没有当前页的值就设当前页为1      if ( $url_query ){ //如果有其他查询字符串,则以&page=$page形式添加翻页查询字串       $this ->url .=  '&page' ;    } else { //如果没有其他查询字串,则以page=$page形式添加翻页查询字串       $this ->url .=  'page' ;    }   } else { //如果没有查询字串,则在url后添加?page=$page形式的翻页查询字串      $this ->page = 1;     $this ->url .=  '?page' ;   }    $this ->lastpg =  ceil ( $this ->total /  $this ->displaypg); //计算总页数,即最后一页的页码        $this ->page = min( $this ->lastpg,  $this ->page); //如果当前页大于总页数,则当前页为最后一页的页码        $this ->prepg =  $this ->page - 1; //上一页为当前页减一www.111cn.net        $this ->nextpg =  $this ->page + 1; //(($this->page == $this->lastpg) ? $this->lastpg : ($this->page + 1));//下一页为当前页加一,如果当前页为最后一页,则下一页为0        $this ->firstcount = ( $this ->page - 1) *  $this ->displaypg; //计算当前页,记录条数开始的记录号,从0开始.     $this ->startd =  $this ->total ? ( $this ->firstcount + 1) : 0; //记录开始号从1开始     $this ->stopd = min( $this ->firstcount +  $this ->displaypg,  $this ->total); //记录结束号     //echo $this->displaypg;     //echo $this->nextpg.'+=+='.$this->lastpg;   }  public   function  getpageinfo(){ //取得当前页面的基本信息,如:显示第 1-10 条记录,共 23 条记录。     return   '<span class="pageinfostyle">显示第<span class="numstyle">' . $this ->startd. '-' . $this ->stopd. '</span>条记录,共<span class="numstyle">' . $this ->total. '</span>条记录。</span>' ;  }  public   function  getcommonpagenav(){ //取得通常的分页导航,如:首页 上一页 下一页 尾页     $commonnav  =  '' ;    if ( $this ->lastpg == 1){ //如果只有一页,则返回翻页导航,退出,不显示下一页,上一页等。。。      return   $commonnav ;     break ;   }    $commonnav  =  '<a href="' . $this ->url. '=1" class="compagestyle">首页</a>' ; //设置首页导航,page=1     if ( $this ->prepg){     $commonnav  .=  '<a href="' . $this ->url. '=' . $this ->prepg. '" class="compagestyle">上一页</a>' ;   } else {     $commonnav  .=  '<a class="fcompagestyle">上一页</a>' ;   }    if ( $this ->nextpg <=  $this ->lastpg){     $commonnav  .=  '<a href="' . $this ->url. '=' . $this ->nextpg. '" class="compagestyle">下一页</a>' ;   } else {     $commonnav  .=  '<a class="fcompagestyle">下一页</a>' ;   }    $commonnav  .=  '<a href="' . $this ->url. '=' . $this ->lastpg. '" class="compagestyle">尾页</a>' ; //显示尾页链接     return   $commonnav ;  }  //取得跳转分页导航,如:第n页   public   function  getjumppagenav(){    //<select name='topage' size='1' onchange='window.location="/test/page.php?page="+this.value'>     $jumpnav  =  '<span class="pageinfostyle">到第<select name="topage" size="1" class="topage"  onchange=' window.location= "'.$this->url.'=" +this.value '>' . " " ;    for ( $i  = 1;  $i  <=  $this ->lastpg;  $i ++){     if ( $i  ==  $this ->page){ //把当前页的页码作为默认选项       $jumpnav  .=  '<option value="' . $i . '" selected>' . $i . '</option>' . " " ;    } else {      $jumpnav  .=  '<option value="' . $i . '">' . $i . '</option>' . " " ;    }   }    $jumpnav  .=  '</select>页,共<span class="numstyle">' . $this ->lastpg. '</span>页</span>' ;    return   $jumpnav ;  }  //取得所有的分页导航   public   function  getallpagenav(){    $temp  =   $this ->getpageinfo(). $this ->getcommonpagenav(). $this ->getjumppagenav(); //开源代码phpfensi.com     return   $temp ;  }  //取得当前页需显示的记录,在数据库教程中的限定范围,如0-9   public   function  getlimitstr(){    //echo $this->page;     //echo $this->firstcount;        //echo $this->dispalypg;     $temp  =  $this ->firstcount. ',' . $this ->displaypg;    //echo $temp;     return   $temp ;  }  } 

使用实例,代码如下:

$result =mysql_query( "select * from tb_pagetest" ); //从数据库中查询所需显示的数据    $total =mysql_num_rows( $result ); //查询到的数据的总条数    $pagesize  = 5; //每页显示的记录条数    $url  =  $_server [ 'request_uri' ]; //请求的uri       $dividepageclass  =  new  dividepage( $url ,  $total ,  $pagesize );  //创建分页类,(类能自动初始化)    $limitstr  =  $dividepageclass ->getlimitstr(); //取得当前页要显示的记录开始序号和每页显示条数,如:0, 5(显示从0开始的5条记录)    echo   $dividepageclass ->getallpagenav(); //显示所有分页导航条,    如:显示第11-13条记录,共13条记录。首页 上一页 下一页 尾页 到*第 1 页,共 3 页   $sql  =  'select * from tb_pagetest limit ' . $limitstr ;   $result =mysql_query( $sql ); //从数据库中取得当前页要显示的记录集,然后显示就ok    如:   while ( $row =mysql_fetch_array( $result ))   echo   "<hr><b>" . $row [title]. " | " . $row [author];  


查看更多关于php通用分页类代码的详细内容...

  阅读:72次

上一篇: 没有了

下一篇:简单实用php mysql分页代码