好得很程序员自学网

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

一个实例php mysql模板分页类 - php分页

一个实例php mysql模板分页类

<?php  /*    * 模板分页类,源于easp的数据库分页方法,算是easp分页的的php独立版    * 支持动态和静态分页方式    * easp官网http://easp.lengshi.com/    * 作者:钟晶晶    * 日期:2010-11-3    * 邮箱:zhongjingjing@gmail.com    * 博客:http://blog.zaimer.com    * page([总记录数=1],[分页大小=20],[当前页=1],[显示页数=6],[分页参数='page'],[分页链接=当前页面],[是否静态=false])    * 动态:    * 简单用法:    * $page = new page(50);    * $page->setpager('zjj','<div class="newpager">共有{recordcount} 个商品&nbsp;&nbsp;当前第&nbsp;{pageindex}&nbsp;页&nbsp;/&nbsp;共&nbsp;{pagecount}&nbsp;页&nbsp;分页:&nbsp;{first}{prev}&nbsp;&nbsp;{list}&nbsp;&nbsp;{next}{last}&nbsp;&nbsp;转到&nbsp;{jump}&nbsp;页</div>',array("listlong"=>"6","first"=>"首页","last"=>"尾页","prev"=>"上一页","next"=>"下一页","list"=>"第*页","jump"=>"select"));    * echo $page->getpager('zjj');    * 全参数用法:    * $page = new page(50,20,1,6,'page','prrr.php',false);    * $page->setpager('zjj','<div class="newpager">共有{recordcount} 个商品&nbsp;&nbsp;当前第&nbsp;{pageindex}&nbsp;页&nbsp;/&nbsp;共&nbsp;{pagecount}&nbsp;页&nbsp;分页:&nbsp;{first}{prev}&nbsp;&nbsp;{list}&nbsp;&nbsp;{next}{last}&nbsp;&nbsp;转到&nbsp;{jump}&nbsp;页</div>',array("listlong"=>"6","first"=>"首页","last"=>"尾页","prev"=>"上一页","next"=>"下一页","list"=>"第*页","jump"=>"select"));    * echo $page->getpager('zjj');    * 静态:    * $page = new page(50,20,1,6,'page','prrr{page}.html',true);    * $page->setpager('zjj','<div class="newpager">共有{recordcount} 个商品&nbsp;&nbsp;当前第&nbsp;{pageindex}&nbsp;页&nbsp;/&nbsp;共&nbsp;{pagecount}&nbsp;页&nbsp;分页:&nbsp;{first}{prev}&nbsp;&nbsp;{list}&nbsp;&nbsp;{next}{last}&nbsp;&nbsp;转到&nbsp;{jump}&nbsp;页</div>',array("listlong"=>"6","first"=>"首页","last"=>"尾页","prev"=>"上一页","next"=>"下一页","list"=>"第*页","jump"=>"select"));    * echo $page->getpager('zjj');    */   class  page {    private   $page_size ;  //每页显示的条目数     private   $total_size ;  //总条目数     private   $current_page ;  //当前被选中的页     private   $sub_pages ;  //每次显示的页数     private   $total_pages ;  //总页数     private   $page_tpl  =  array  ();  // 分页模板     private   $pageparam ;    private   $pagelink ;    private   $static ;       function  __construct( $total_size  = 1,  $page_size  = 20,  $current_page  = 1,  $sub_pages  = 6,  $pageparam  =  'page' ,  $pagelink  =  '' ,  $static  = false) {     $this ->page_size =  intval  (  $page_size  );     $this ->total_size =  intval  (  $total_size  );     if  (!  $current_page ) {      $this ->current_page = 1;    }  else  {      $this ->current_page =  intval  (  $current_page  );    }     $this ->total_pages =  ceil  (  $total_size  /  $page_size  );     $this ->sub_pages =  intval  (  $sub_pages  );     $this ->pageparam =  $pageparam ;     $this ->pagelink = ( empty empty  (  $pagelink  ) ?  $_server  [ "php_self" ] :  $pagelink );     $this -> static  =  $static ;     $this ->page_tpl [ 'default' ] =  array  ( 'tpl'  =>  '<div class="pager">{first}{prev}{liststart}{list}{listend}{next}{last} 跳转到{jump}页</div>' ,  'config'  =>  array  () );      }    public   function  __set( $param ,  $value ) {     $this -> $param  =  $value ;   }    public   function  __get( $param ) {     return   $this -> $param ;   }    /*     __destruct析构函数,当类不在使用的时候调用,该函数用来释放资源。    */     function  __destruct() {    unset (  $page_size  );  //每页显示的条目数     unset (  $total_size  );  //总条目数     unset (  $current_page  );  //当前被选中的页     unset (  $sub_pages  );  //每次显示的页数     unset (  $total_pages  );  //总页数     unset (  $page_tpl  );  // 分页模板     unset (  $pageparam  );  //分页参数,默认page     unset (  $pagelink  );    unset (  $static  );   }    private   function  urlparameters( $url  =  array ()) {     foreach  (  $url   as   $key  =>  $val  ) {      if  ( $key  !=  $this ->pageparam)       $arg  [] =  $key  .  '='  .  $val ;    }     $arg  [] =  $this ->pageparam .  '=*' ;     if  ( $this -> static )      return   str_replace  (  '{page}' ,  '*' ,  $this ->pagelink );     else       return   $this ->pagelink .  '?'  . implode (  '&' ,  $arg  );   }    public   function  setpager( $tpl_name  =  'default' ,  $tpl  =  '' ,  $config  =  array ()) {     if  ( empty empty  (  $tpl  ))      $tpl  =  $this ->page_tpl [ 'default' ] [ 'tpl' ];     if  ( empty empty  (  $config  ))      $config  =  $this ->page_tpl [ 'default' ] [ 'config' ];     $this ->page_tpl [ $tpl_name ] =  array  ( 'tpl'  =>  $tpl ,  'config'  =>  $config  );   }    public   function  getpager( $tpl_name  =  'default' ) {     $this ->getcurrentpage ();     return   $this ->pager (  $this ->page_tpl [ $tpl_name ] );   }    public   function  getcurrentpage() {     $this ->current_page = ( $_get  [ $this ->pageparam] <=  intval  (  $this ->total_pages ) ? ( $_get  [ $this ->pageparam] < 1 ? 1 :  $_get  [ $this ->pageparam]) :  intval  (  $this ->total_pages ));   }    public   function  pager( $page_tpl  =  '' ) {     if  ( empty empty  (  $page_tpl  ))      $page_tpl  =  $this ->page_tpl [ 'default' ];     $cfg  =  array  ( 'recordcount'  =>  intval  (  $this ->total_size ),  'pageindex'  =>  intval  (  $this ->current_page ),  'pagecount'  =>  intval  (  $this ->total_pages ),  'pagesize'  =>  intval  (  $this ->page_size ),  'listlong'  =>  intval  (  $this ->sub_pages ),  'listsidelong'  => 2,  'list'  =>  '*' ,  'currentclass'  =>  'current' ,  'link'  =>  $this ->urlparameters (  $_get  ),  'first'  =>  '&laquo;' ,  'prev'  =>  '&#8249;' ,  'next'  =>  '&#8250;' ,  'last'  =>  '&raquo;' ,  'more'  =>  '...' ,  'disabledclass'  =>  'disabled' ,  'jump'  =>  'input' ,  'jumpplus'  =>  '' ,  'jumpaction'  =>  '' ,  'jumplong'  => 50 );     if  (!  empty empty  (  $page_tpl  [ 'config' ] )) {      foreach  (  $page_tpl  [ 'config' ]  as   $key  =>  $val  ) {       if  ( array_key_exists  (  $key ,  $cfg  ))        $cfg  [ $key ] =  $val ;     }    }     $tmpstr  =  $page_tpl  [ 'tpl' ];     $pstart  =  $cfg  [ 'pageindex' ] - (( $cfg  [ 'listlong' ] / 2) + ( $cfg  [ 'listlong' ] % 2)) + 1;     $pend  =  $cfg  [ 'pageindex' ] +  $cfg  [ 'listlong' ] / 2;     if  ( $pstart  < 1) {      $pstart  = 1;      $pend  =  $cfg  [ 'listlong' ];    }     if  ( $pend  >  $cfg  [ 'pagecount' ]) {      $pstart  =  $cfg  [ 'pagecount' ] -  $cfg  [ 'listlong' ] + 1;      $pend  =  $cfg  [ 'pagecount' ];    }     if  ( $pstart  < 1)      $pstart  = 1;     for ( $i  =  $pstart ;  $i  <=  $pend ;  $i  ++) {      if  ( $i  ==  $cfg  [ 'pageindex' ])       $plist  .=  '<span class="'  .  $cfg  [ 'currentclass' ] .  '" >'  .  str_replace  (  '*' ,  $i ,  $cfg  [ 'list' ] ) .  '</span> ' ;      else        $plist  .=  ' <a href="'  .  str_replace  (  '*' ,  $i ,  $cfg  [ 'link' ] ) .  '"> '  .  str_replace  (  '*' ,  $i ,  $cfg  [ 'list' ] ) .  '</a> ' ;    }     if  ( $cfg  [ 'listsidelong' ] > 0) {      if  ( $cfg  [ 'listsidelong' ] <  $pstart ) {       for ( $i  = 1;  $i  <=  $cfg  [ 'listsidelong' ];  $i  ++) {        $pliststart  .=  '<a href="'  .  str_replace  (  '*' ,  $i ,  $cfg  [ 'link' ] ) .  '">'  .  str_replace  (  '*' ,  $i ,  $cfg  [ 'list' ] ) .  '</a> ' ;      }       $pliststart  .= ( $cfg  [ 'listsidelong' ] + 1) ==  $pstart  ?  ''  :  $cfg  [ 'more' ] .  ' ' ;     }  else  {       if  ( $cfg  [ 'listsidelong' ] >=  $pstart  &&  $pstart  > 1) {        for ( $i  = 1;  $i  <= ( $pstart  - 1);  $i  ++) {         $pliststart  .=  '<a href="'  .  str_replace  (  '*' ,  $i ,  $cfg  [ 'link' ] ) .  '">'  .  str_replace  (  '*' ,  $i ,  $cfg  [ 'list' ] ) .  '</a> ' ;       }      }     }      if  (( $cfg  [ 'pagecount' ] -  $cfg  [ 'listsidelong' ]) >  $pend ) {       $plistend  =  ' '  .  $cfg  [ 'more' ] .  $plistend ;       for ( $i  = (( $cfg  [ 'pagecount' ] -  $cfg  [ 'listsidelong' ]) + 1);  $i  <=  $cfg  [ 'pagecount' ];  $i  ++) {        $plistend  .=  ' <a href="'  .  str_replace  (  '*' ,  $i ,  $cfg  [ 'link' ] ) .  '"> '  .  str_replace  (  '*' ,  $i ,  $cfg  [ 'list' ] ) .  ' </a> ' ;      }     }  else  {       if  (( $cfg  [ 'pagecount' ] -  $cfg  [ 'listsidelong' ]) <=  $pend  &&  $pend  <  $cfg  [ 'pagecount' ]) {        for ( $i  = ( $pend  + 1);  $i  <=  $cfg  [ 'pagecount' ];  $i  ++) {         $plistend  .=  ' <a href="'  .  str_replace  (  '*' ,  $i ,  $cfg  [ 'link' ] ) .  '"> '  .  str_replace  (  '*' ,  $i ,  $cfg  [ 'list' ] ) .  ' </a> ' ;       }      }     }    }     if  ( $cfg  [ 'pageindex' ] > 1) {      $pfirst  =  ' <a href="'  .  str_replace  (  '*' ,  '1' ,  $cfg  [ 'link' ] ) .  '">'  .  $cfg  [ 'first' ] .  '</a> ' ;      $pprev  =  ' <a href="'  .  str_replace  (  '*' ,  $cfg  [ 'pageindex' ] - 1,  $cfg  [ 'link' ] ) .  '">'  .  $cfg  [ 'prev' ] .  '</a> ' ;    }  else  {      $pfirst  =  ' <span class="'  .  $cfg  [ 'disabledclass' ] .  '">'  .  $cfg  [ 'first' ] .  '</span> ' ;      $pprev  =  ' <span class="'  .  $cfg  [ 'disabledclass' ] .  '">'  .  $cfg  [ 'prev' ] .  '</span> ' ;    }     if  ( $cfg  [ 'pageindex' ] <  $cfg  [ 'pagecount' ]) {      $plast  =  ' <a href="'  .  str_replace  (  '*' ,  $cfg  [ 'pagecount' ],  $cfg  [ 'link' ] ) .  '">'  .  $cfg  [ 'last' ] .  '</a> ' ;      $pnext  =  ' <a href="'  .  str_replace  (  '*' ,  $cfg  [ 'pageindex' ] + 1,  $cfg  [ 'link' ] ) .  '">'  .  $cfg  [ 'next' ] .  '</a> ' ;    }  else  {      $plast  =  ' <span class="'  .  $cfg  [ 'disabledclass' ] .  '">'  .  $cfg  [ 'last' ] .  '</span> ' ;      $pnext  =  ' <span class="'  .  $cfg  [ 'disabledclass' ] .  '">'  .  $cfg  [ 'next' ] .  '</span> ' ;    }     switch  ( strtolower  (  $cfg  [ 'jump' ] )) {      case   'input'  :       $pjumpvalue  =  'this.value' ;       $pjump  =  '<input type="text" size="3" title="请输入要跳转到的页数并回车"'  . (( $cfg  [ 'jumpplus' ] ==  '' ) ?  ''  :  ' '  .  $cfg  [ 'jumpplus' ]);       $pjump  .=  ' onkeydown=":if(event.charcode==13||event.keycode==13){if(!isnan('  .  $pjumpvalue  .  ')){' ;       $pjump  .= ( $cfg  [ 'jumpaction' ] ==  ''  ? (( strtolower  (  substr  (  $cfg  [ 'link' ], 0, 11 ) ) ==  'javascript:' ) ?  str_replace  (  '*' ,  $pjumpvalue ,  substr  (  $cfg  [ 'link' ], 12 ) ) :  " document.location.href='"  .  str_replace  ( '* ', ' '+'  .  $pjumpvalue  .  '+' ', $cfg [' link '] ) . ' ';' ) :  str_replace  (  "*" ,  $pjumpvalue ,  $cfg  [ 'jumpaction' ] ));       $pjump  .=  '}return false;}" />' ;       break ;      case   'select'  :       $pjumpvalue  =  "this.options[this.selectedindex].value" ;       $pjump  =  '<select '  . ( $cfg  [ 'jumpplus' ] ==  ''  ?  ' '  .  $cfg  [ 'jumpplus' ] .  ' onchange="javascript:'  :  $cfg  [ 'jumpplus' ]);       $pjump  .= ( $cfg  [ 'jumpaction' ] ==  ''  ? (( strtolower  (  substr  (  $cfg  [ 'link' ], 0, 11 ) ) ==  'javascript:' ) ?  str_replace  (  '*' ,  $pjumpvalue ,  substr  (  $cfg  [ 'link' ], 12 ) ) :  " document.location.href='"  .  str_replace  ( '* ', ' '+'  .  $pjumpvalue  .  '+' ', $cfg [' link '] ) . ' ';' ) :  str_replace  (  "*" ,  $pjumpvalue ,  $cfg  [ 'jumpaction' ] ));       $pjump  .=  '" title="请选择要跳转到的页数"> ' ;       if  ( $cfg  [ 'jumplong' ] == 0) {        for ( $i  = 0;  $i  <=  $cfg  [ 'pagecount' ];  $i  ++) {         $pjump  .=  '<option value="'  .  $i  .  '"'  . (( $i  ==  $cfg  [ 'pageindex' ]) ?  ' selected="selected"'  :  '' ) .  ' >'  .  $i  .  '</option> ' ;       }      }  else  {        $pjumplong  =  intval  (  $cfg  [ 'jumplong' ] / 2 );        $pjumpstart  = ((( $cfg  [ 'pageindex' ] -  $pjumplong ) < 1) ? 1 : ( $cfg  [ 'pageindex' ] -  $pjumplong ));        $pjumpstart  = ((( $cfg  [ 'pagecount' ] -  $cfg  [ 'pageindex' ]) <  $pjumplong ) ? ( $pjumpstart  - ( $pjumplong  - ( $cfg  [ 'pagecount' ] -  $cfg  [ 'pageindex' ])) + 1) :  $pjumpstart );        $pjumpstart  = (( $pjumpstart  < 1) ? 1 :  $pjumpstart );        $j  = 1;        for ( $i  =  $pjumpstart ;  $i  <=  $cfg  [ 'pageindex' ];  $i  ++,  $j  ++) {         $pjump  .=  '<option value="'  .  $i  .  '"'  . (( $i  ==  $cfg  [ 'pageindex' ]) ?  ' selected="selected"'  :  '' ) .  '>'  .  $i  .  '</option> ' ;       }        $pjumplong  =  $cfg  [ 'pagecount' ] -  $cfg  [ 'pageindex' ] <  $pjumplong  ?  $pjumplong  :  $pjumplong  + ( $pjumplong  -  $j ) + 1;        $pjumpend  =  $cfg  [ 'pageindex' ] +  $pjumplong  >  $cfg  [ 'pagecount' ] ?  $cfg  [ 'pagecount' ] :  $cfg  [ 'pageindex' ] +  $pjumplong ;        for ( $i  =  $cfg  [ 'pageindex' ] + 1;  $i  <=  $pjumpend ;  $i  ++) {         $pjump  .=  '<option value="'  .  $i  .  '">'  .  $i  .  '</option> ' ;       }      }       $pjump  .=  '</select>' ;       break ;    }     $patterns  =  array  ( '/{recordcount}/' ,  '/{pagecount}/' ,  '/{pageindex}/' ,  '/{pagesize}/' ,  '/{list}/' ,  '/{liststart}/' ,  '/{listend}/' ,  '/{first}/' ,  '/{prev}/' ,  '/{next}/' ,  '/{last}/' ,  '/{jump}/'  );     $replace  =  array  ( $cfg  [ 'recordcount' ],  $cfg  [ 'pagecount' ],  $cfg  [ 'pageindex' ],  $cfg  [ 'pagesize' ],  $plist ,  $pliststart ,  $plistend ,  $pfirst ,  $pprev ,  $pnext ,  $plast ,  $pjump  );     $tmpstr  =  chr  ( 13 ) .  chr  ( 10 ) . preg_replace (  $patterns ,  $replace ,  $tmpstr  ) .  chr  ( 13 ) .  chr  ( 10 );    unset (  $cfg  );     return   $tmpstr ;   }  }  ?> 

查看更多关于一个实例php mysql模板分页类 - php分页的详细内容...

  阅读:67次