文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>分页显示

分页显示

时间:2006-12-24  来源:gewanhong

class PAGE
{
       //---------------设置分页的GET变量---------------------
       //--这两处参数是程序自动加上的,顺序为"$Page_Rows=90&ActionPage=12"
       var $Aget='AP';     //当前页参数
       var $Pget='PR';      //每页显示数
       var $PR_str;                //处理中间值,请不要修改
       var $AP_str;                //处理中间值,请不要修改  
      
       var $show_all_num  = true;  //是否显示所有项
       var $show_page_num = true;  //是否显示页数
       var $show_show_num = true;  //是否显示分页可选项
       var $show_num_mode  = 'NUM'; //每页显示数操作字符串显示方式 'NUM':数字 'LIST':下拉列表
       var $RecordNum;             //总的记录数
       var $page_count;            //页总数
       var $show_num_string = '';  //每页显示数操作字符串
       var $cross_page_string = '';//显示翻页操作字符串
       var $sel_page_string = '';  //下拉选择对应页操作字符串
       var $Query;                 //暂时保存修改后的SQL语句,用于查询结果集
       var $Link_id;               //暂时保存MySQL连接句柄,用于查询结果集
       var $select_ay=array(10,20);//可选择的每页显示数,默认为10项
       var $conchar=array('first' => '9', //首页
                          'up'    => '7', //上一页
                          'down'  => '8', //下一页
                          'last'  => ':');//尾页
       //--类构造函数
       //--$char_ay :自定义显示的内容,可用图片,为空则使用默认的字符显示
       function PAGE( $char_ay = '' )
       {
           $this->PR_str = "&{$this->Pget}=";
           $this->AP_str = "&{$this->Aget}=";
           if( is_array($char_ay) )
           {
               $this->conchar['first'] = $char_ay[0];
               $this->conchar['up']    = $char_ay[1];
               $this->conchar['down']  = $char_ay[2];
               $this->conchar['last']  = $char_ay[3];
           }
       }
      
       //--设置返分页字符串的显示部分
       //--$all_num:是否显示所有项 $page_num:是否显示页数 $show_num:是否显示分页可选项
       function set_show( $all_num=true, $page_num=true, $show_num=true)
       {
           $this->show_all_num  = $all_num;
           $this->show_page_num = $page_num;
           $this->show_show_num = $show_num;
       }
       //--每页显示数操作字符串显示方式 'NUM':数字 'LIST':下拉列表
       function set_show_mode( $mode='NUM' )
       {
           $this->show_num_mode = $mode;
       }
       //--生成分页功能的字符串返回它
       //--$QuerySql:查询的select语句,地址方式传递,进处理后会加上limit语句
       //--$sql_link:数据库连接句柄
       //--$select_ay:可选的每页显示数,一维数组如:array(5,10)
       function make_page(&$QuerySql, $sql_link, $select_ay='')
       {
           if( $QuerySql == '' || !$sql_link ) return '';
           if( is_array($select_ay) ) $this->select_ay = $select_ay;
           //---------------得到记录总数-------------------------
           $res=@mysql_query($QuerySql,$sql_link);
           $this->RecordNum=@mysql_num_rows($res);
           @mysql_free_result($res);
           //---------------得到每页显示数和当前显示的页数---------
           $page = $_GET[$this->Aget]=='' ? 1 : $_GET[$this->Aget];
           $page_rows = $_GET[$this->Pget]=='' ? $this->select_ay[0] : $_GET[$this->Pget];
           
           //---------------得到设置后的总页数-----------------------
           if($this->RecordNum > 0 )
           {
               if($this->RecordNum $page_rows )     $this->page_count = 1;  
               else if($this->RecordNum %$page_rows ) $this->page_count = (int)($this->RecordNum/$page_rows) + 1;     
               else                                   $this->page_count = $this->RecordNum / $page_rows;
           }else{
               $this->page_count = 0;
           }
           //---------------处理分页时的参数-------------------------
           $getval='?';
           $str=$_SERVER["QUERY_STRING"]; //得到URL'?'后的字符串
           if($str != "")
           {
               $tmp_str=strstr($str,$this->Pget); //得到分页参数字符串
               if( $tmp_str != '' ) //加了分页参数
               {
                     $getval .= str_replace($tmp_str,'',$str); //去除分面参数
               }else $getval .= $str;
           }
           if( $getval[strlen($getval)-1] == '&' ){ //去掉最后的字符'&'
               $getval=substr($getval,0,strlen($getval)-1);
           }
           //-------------改变SQL语句--------------------------------
           $QuerySql .= " limit ".($page-1)*$page_rows .", $page_rows";
           $this->Query = $QuerySql;
           $this->Link_id = $sql_link;
           $page_string = '';
           //-------------生成记录项和页数---------------------------
           if( $this->show_all_num )
               $page_string .='所有 '.$this->RecordNum.'项,';
           if( $this->show_page_num )
               $page_string .='共 '.$this->page_count.'页,';
           //_____________生成可选的每页数连接-------------------------
           if( $this->show_show_num )
           {
               if( $this->show_num_mode == 'NUM' )
               {
                   //--------以数字方式显示
                   $page_string .= '每页显示 ';
                   foreach($this->select_ay as $val)
                   {
                       $value = $_SERVER['PHP_SELF'].$getval.$this->PR_str.$val; //改变每页显示数是不加分页数
                       if($getval == '?') $value=str_replace('?&','?',$value);
                       if( $val == $page_rows )
                            $this->show_num_string .= '['.$val.']&nbsp';
                       else $this->show_num_string .= '.$value.'" title="更改每页显示为'.$val.'项">'.$val.'&nbsp';
                   }
                   $page_string .= $this->show_num_string;
                   $page_string .= '项 ';
               }else{
                   //--------以下拉列表方式显示
                   $page_string .= '每页显示';
                   $this->show_num_string .=" \n\r";
                   foreach($this->select_ay as $val)
                   {
                       $value = $_SERVER['PHP_SELF'].$getval.$this->PR_str.$val; //改变每页显示数是不加分页数
                       if($getval == '?') $value=str_replace('?&','?',$value);
                       if( $val == $page_rows )
                            $this->show_num_string .='.$value.'" selected="selected">'."{$val}\n";
                       else $this->show_num_string .='.$value.'">'."{$val}\n";
                   }
                   $this->show_num_string .= '';
                   $page_string .= $this->show_num_string;
                   $page_string .= '项 ';
               }
           }
           //-------------生成翻页链接-------------------------------
           $value=$_SERVER['PHP_SELF'].$getval.$this->PR_str.$page_rows.$this->AP_str;
           if($getval == '?') $value=str_replace('?&','?',$value);
           if( $page == 1 )
                $this->cross_page_string .= $this->conchar['first'].' '.$this->conchar['up'].' ';
           else {
               $this->cross_page_string .= '.$value.'1" title="首页">'.$this->conchar['first'].' ';
               $this->cross_page_string .= '.$value.($page-1).'" title="上一页">'.$this->conchar['up'].' ';
           }
           
           if( ($page == $this->page_count) || ($this->page_count == 0) ) //--显示最后一页
           {
                 $this->cross_page_string .= $this->conchar['down'].' '.$this->conchar['last'].' ';
           }else{
               $this->cross_page_string .= '.$value.($page+1).'" title="下一页">'.$this->conchar['down'].' ';
               $this->cross_page_string .= '.$value.$this->page_count.'" title="尾页">'.$this->conchar['last'].' ';
           }
           $page_string .= $this->cross_page_string;
           //-----------生成可选分页数---------------------------------
           $page_string .="转到";
           $this->sel_page_string .= " \n\r";
           for($i=1; $i$this->page_count; $i++)
           {
              if($i == $page)
                   $this->sel_page_string .= '.$value.$i.'" selected="selected">'."第{$i}页\n";
              else $this->sel_page_string .= '.$value.$i.'">'."第{$i}页\n";
           }
           $this->sel_page_string .= '';
           $page_string .= $this->sel_page_string;
           return $page_string;
       }
       //--返回结果集二级数组
       function record_fetch()
       {
          $ay = array();
          $res  = @mysql_query($this->Query, $this->Link_id);
          while($row = @mysql_fetch_array($res))
          {
              $ay[] = $row;
          }
          @mysql_free_result($res);
          return $ay;
       }
       //--返回记录数
       function record_num()
       {
           return $this->RecordNum;
       }
       //--返回总页数
       function page_count()
       {
           return $this->page_count;
       }
       //--返回每页显示数操作字符串
       function show_num_string()
       {
           return $this->show_num_string;
       }
       //--返回显示翻页操作字符串
       function cross_page_string()
       {
           return $this->cross_page_string;
       }
      
       //--返回下拉选择对应页操作字符串
       function sel_page_string()
       {
           return $this->sel_page_string;
       }
}//End Class
   $sql_link=mysql_connect("localhost","root","root");
   mysql_select_db("elearning2");
   $query='select  *  from users';
   $page = new PAGE;
   $page->set_show_mode('LIST'); // 'NUM' or 'LIST'
   $pagestr=$page->make_page($query,$sql_link,array(1,2,3,4,5));
   //--其它处理
   mysql_query($query,$sql_link);
   echo  $pagestr;
   echo '';
   echo '每页显示:'.$page->show_num_string();
   echo '';
   echo '选择翻页(可自定义为图片):'.$page->cross_page_string();
   echo '';
   echo '当前:'.$page->sel_page_string();
   echo '';


相关阅读 更多 +
排行榜 更多 +
边境警察巡逻模拟中文版下载

边境警察巡逻模拟中文版下载

角色扮演 下载
数码宝贝世界复原手机版下载

数码宝贝世界复原手机版下载

角色扮演 下载
ff14水晶世界手游下载

ff14水晶世界手游下载

角色扮演 下载