站长论坛

标题: PHP分页通用类CPages [打印本页]

作者: superadmin    时间: 2007-10-4 22:35
标题: PHP分页通用类CPages
成员函数说明
---------------------------------------------------------------------------------------------------------------------
public void CPages(int $page_count [,string $extra_str,string $page_str,int $num_per_page]);
函数功能:根据参数 生成分页链接
参数说明:
    $page_count        整型                    总页数                            必要参数
    $extra_str            字符串                附加QueryString            可选参数
        如 http://www.tzlink.com/st.php?sort=new_list&page=13
        则其中的 $extra_str="sort==new_list"; 这在条件查询中用得比较多
    $page_str        字符串                分页的标识字符串         可选参数
        如上面的URL之中的 $page_str=="page"
    $num_per_page    整型                    每页要显示的页码链接数    可选参数 
        默认为10
----------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------
public int CPages::get_current_page($page_str="page")

函数功能:获取合法的当前页号,注意 此函数只保证取得合法的页号,并不保证所取得的页号不超过总页数
    参数说明:
        $page_str:分页标识字符串 
-----------------------------------------------------------------------------------------------------------------------


用法范例:
   
    $p=CPages::link(25,"sort=new&year=2007","offset",12)
    当然,这里的总页数要事先经查询数据库获得
*************************************

*/
  1. class CPages
  2. {
  3.     var $page_count;
  4.    
  5.     public function link($page_count,$extra_str="",$page_str="page",$num_per_page=10)
  6.     {
  7.         Global $PHP_SELF;
  8.         $prefix=$PHP_SELF.'?'.$extra_str.'&'.$page_str.'=';
  9.         $current_page=self::get_current_page($page_str);
  10.         if($page_count<=1)   
  11.         {
  12.             return ;
  13.         }
  14.         
  15.         if($current_page>1)
  16.         {
  17.             echo("<首页> ");
  18.         }
  19.         if(floor($current_page/$num_per_page))
  20.         {
  21.             printf(" %s\n",$num_per_page,$prefix,floor($current_page/$num_per_page)*$num_per_page-1,"<<");//
  22.         }
  23.         
  24.         $tmp=floor($current_page/$num_per_page)*$num_per_page+1;
  25.         $s2=ceil($tmp/$num_per_page)*$num_per_page;
  26.         for($i=$tmp;($i<=$s2&&$i<=$page_count);$i++)
  27.         {
  28.             if($i==$current_page)
  29.             {
  30.                     echo("$i ");
  31.                     continue;
  32.             }
  33.             echo(" $i\n");
  34.         }

  35.         if((floor($current_page/$num_per_page)*$num_per_page+$num_per_page)<$page_count)
  36.         {
  37.             printf("%s",$num_per_page,$prefix,ceil($current_page/$num_per_page)*$num_per_page+1,">>");
  38.         }
  39.         
  40.         if($current_page<$page_count)
  41.         {
  42.             echo(" <末页>");
  43.         }
  44.         printf(" ",$current_page<$page_count?$current_page+1:1);
  45.         printf(" ",$prefix);
  46.         
  47.         printf("\n页次 $current_page/$page_count\n");
  48.         
  49.     }
  50.    
  51.     public function get_current_page($page_str="page")
  52.     {
  53.         if(isset($_GET[$page_str]))
  54.         {
  55.             $page_str=$_GET[$page_str];
  56.             if(!is_numeric($page_str))
  57.                     return 1;
  58.             return ($page_str);
  59.         }
  60.         else
  61.             return 1;
  62.     }
  63. }


  64. $p=new CPages(37);
  65. $p->link(26,"fa=12&uid=faiefafpflf");
  66. ?>
复制代码





欢迎光临 站长论坛 (http://www.tzlink.com/bbs/) Powered by Discuz! X3.2