当前位置 : 主页 > 网络编程 > PHP >

php+mysql分页类

来源:互联网 收集:自由互联 发布时间:2021-07-03
封装的类: ?php /********************************************* 类名: PageSupport 功能:分页显示MySQL数据库中的数据 ***********************************************/ class PageSupport{ //属性 var $sql; //所要显示数
封装的类:
    <?php  
    /*********************************************  
    类名: PageSupport 
    功能:分页显示MySQL数据库中的数据  
    ***********************************************/   
    class PageSupport{   
        //属性  
        var $sql;                    //所要显示数据的SQL查询语句   
        var $page_size;                //每页显示最多行数   
          
        var $start_index;            //所要显示记录的首行序号  
        var $total_records;            //记录总数   
        var $current_records;        //本页读取的记录数   
        var $result;                //读出的结果   
          
        var $total_pages;            //总页数    
        var $current_page;            //当前页数  
        var $display_count = 30;     //显示的前几页和后几页数  
      
        var $arr_page_query;        //数组,包含分页显示需要传递的参数   
      
        var $first;  
        var $prev;  
        var $next;  
        var $last;  
          
        //方法  
    /*********************************************  
    构造函数:__construct() 
    输入参数:             
            $ppage_size:每页显示最多行数     
    ***********************************************/   
     function PageSupport($ppage_size)  
     {   
        $this->page_size=$ppage_size;   
        $this->start_index=0;  
     }   
      
      
    /*********************************************  
    构造函数:__destruct() 
    输入参数:             
    ***********************************************/   
     function __destruct()  
     {  
          
     }  
              
    /*********************************************  
    get函数:__get() 
    ***********************************************/   
     function __get($property_name)  
     {    
         if(isset($this->$property_name))   
         {   
                return($this->$property_name);   
         }   
         else   
         {   
                return(NULL);   
         }   
     }  
       
    /*********************************************  
    set函数:__set() 
    ***********************************************/   
     function __set($property_name, $value)   
     {       
        $this->$property_name = $value;   
     }   
      
    /*********************************************  
    函数名:read_data 
    功能:    根据SQL查询语句从表中读取相应的记录 
    返回值:属性二维数组result[记录号][字段名] 
    ***********************************************/   
     function read_data()  
     {   
        $psql=$this->sql;   
          
        //查询数据,数据库链接等信息应在类调用的外部实现  
        $result=mysql_query($psql) or die(mysql_error());   
        $this->total_records=mysql_num_rows($result);   
          
        //利用LIMIT关键字获取本页所要显示的记录  
        if($this->total_records>0)   
        {  
            $this->start_index = ($this->current_page-1)*$this->page_size;  
            $psql=$psql.    " LIMIT ".$this->start_index." , ".$this->page_size;   
              
            $result=mysql_query($psql) or die(mysql_error());   
            $this->current_records=mysql_num_rows($result);   
              
            //将查询结果放在result数组中  
            $i=0;   
            while($row=mysql_fetch_Array($result))  
            {   
                $this->result[$i]=$row;   
                $i++;   
            }   
        }  
      
          
        //获取总页数、当前页信息  
        $this->total_pages=ceil($this->total_records/$this->page_size);    
      
        $this->first=1;  
        $this->prev=$this->current_page-1;  
        $this->next=$this->current_page+1;  
        $this->last=$this->total_pages;  
     }  
      
     /*********************************************  
    函数名:standard_navigate() 
    功能:    显示首页、下页、上页、未页 
    ***********************************************/   
     function standard_navigate()   
     {      
        echo "<div align=center>";  
        echo "<form action=".$_SERVER['PHP_SELF']." method=\"get\">";  
          
        echo "<font color = red size ='4'>第".$this->current_page."页/共".$this->total_pages."页</font>";   
        echo "    ";  
          
        echo "跳到<input type=\"text\" size=\Ř\" name=\"current_page\" value='".$this->current_page."'/>页";  
        echo "<input type=\"submit\" value=\"提交\"/>";  
          
      
        //生成导航链接  
        if ($this->current_page > 1) {  
          echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->first.">首页</A>|";   
          echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->prev.">上一页</A>|";   
        }  
      
        if( $this->current_page < $this->total_pages) {  
          echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->next.">下一页</A>|";  
          echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->last.">末页</A>";   
        }  
          
        echo "</form>";      
        echo "</div>";  
      
     }   
       
      /*********************************************  
    函数名:full_navigate() 
    功能:    显示首页、下页、上页、未页   
    生成导航链接 如1 2 3 ... 10 11 
    ***********************************************/   
     function full_navigate()   
     {      
        echo "<div align=center>";  
        echo "<form action=".$_SERVER['PHP_SELF']." method=\"get\">";  
          
        echo "<font color = red size ='4'>第".$this->current_page."页/共".$this->total_pages."页</font>";   
        echo "    ";  
          
        echo "跳到<input type=\"text\" size=\Ř\" name=\"current_page\" value='".$this->current_page."'/>页";  
        echo "<input type=\"submit\" value=\"提交\"/>";  
          
        //生成导航链接 如1 2 3 ... 10 11  
        $front_start = 1;  
        if($this->current_page > $this->display_count){  
            $front_start = $this->current_page - $this->display_count;  
        }  
        for($i=$front_start;$i<$this->current_page;$i++){  
            echo "<a href=".$_SERVER['PHP_SELF']."?page=".$i.">[".$i ."]</a> ";      
        }  
      
        echo "[".$this->current_page."]";  
      
        $displayCount = $this->display_count;  
        if($this->total_pages > $displayCount&&($this->current_page+$displayCount)<$this->total_pages){  
            $displayCount = $this->current_page+$displayCount;  
        }else{  
            $displayCount = $this->total_pages;  
        }  
      
        for($i=$this->current_page+1;$i<=$displayCount;$i++){  
            echo "<a href=".$_SERVER['PHP_SELF']."?current_page=".$i.">[".$i ."]</a> ";      
        }  
      
        //生成导航链接  
        if ($this->current_page > 1) {  
          echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->first.">首页</A>|";   
          echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->prev.">上一页</A>|";   
        }  
      
        if( $this->current_page < $this->total_pages) {  
          echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->next.">下一页</A>|";  
          echo "<A href=".$_SERVER['PHP_SELF']."?current_page=".$this->last.">末页</A>";   
        }  
          
        echo "</form>";      
        echo "</div>";  
      
     }   
      
    }   
    ?>  

写在php页面里面的代码:
    <div class="index">  
    <?php   
          
        include_once("fenye_php.php");   //引入类  
          
        ///////////////////////////////////////////////////////////////////////  
        $con = mysql_connect("localhost","root","");   
        if (!$con)  
          {  
          die('Could not connect: ' . mysql_error());      
          }  
            
        mysql_select_db("myblog", $con);    //选取数据库  
          
        $PAGE_SIZE=10;            //设置每页显示的数目  
          
        ///////////////////////////////////////////////////////////////////////  
      
        $pageSupport = new PageSupport($PAGE_SIZE); //实例化PageSupport对象  
          
        $current_page=$_GET["current_page"];//分页当前页数  
          
        if (isset($current_page)) {  
              
            $pageSupport->__set("current_page",$current_page);  
              
        } else {  
              
            $pageSupport->__set("current_page",1);  
              
        }  
      
          
        $pageSupport->__set("sql","select * from article ");       
        $pageSupport->read_data();//读数据  
          
        if ($pageSupport->current_records > 0) //如果数据不为空,则组装数据  
        {  
            for ($i=0; $i<$pageSupport->current_records; $i++)  
            {  
                $title = $pageSupport->result[$i]["title"];  
                $content = $pageSupport->result[$i]["content"];  
                  
                $part=substr($content,0,400);  
                //循环输出每条数据  
                echo '<div class="index_side">          
                    <div class="index_title">'.$title.'</div>  
                    <div class="index_content">'.$part.'</div>  
                    <div class="index_button">  
                       <a href="#">update</a>   <a href="#">delet</a>  
                    </div>  
                </div>';  
            }  
        }  
        $pageSupport->standard_navigate(); //调用类里面的这个函数,显示出分页HTML  
        //关闭数据库  
        mysql_close($con);  
     ?>  
    </div>  
来自:http://blog.csdn.net/phpfenghuo/article/details/23207099
网友评论