PHP分页导航显示类

来源:互联网 发布:mac画流程图软件 编辑:程序博客网 时间:2024/04/30 17:30

 

<?php
 
 
require_once("sys_info.php");  //包含环境变量类
 
 
/*
  文件名:ClassDataGrid.php
  类名:数据分页显示类 ClassDataGrid
  作者:感染源
  时间:2007-1-4
 
*/
 
 
class ClassDataGrid
 {
  
//属性
  var $max_line;   //每页显示的最多行数
  
  
var $begin_record;  //开始记录号,即读取的第一行ID号
  var $total_records;  //数据表中所有记录的总数
  var $current_records//当前页的记录总数
  
  
var $result;   //查询读取的结果
  
  
var $total_pages;  //总页数
  var $current_page;  //当前页数
  
  
  
/*
   以下私有属性用来连接数据库
  
*/
  
  
private $ConnId;
  
private $host;
  
private $pwd;
  
private $user;
  
private $dbname;
  
  
  
//构造函数,用以连接数据库,以及初始化开始记录ID号和最大显示行数
  function __construct()
  {
   
$this->host = sys_info::$HOST;
   
$this->user = sys_info::$USER;
   
$this->pwd = sys_info::$PWD;
   
$this->dbname = sys_info::$DBNAME;
   
   
$this->max_line = sys_info::$MAX_LINE;  //显示最大函数
   
   
$this->begin_record = 0;     //初始化首行记录号
      
   
$this->ConnId = mysql_connect($this->host,$this->user,$this->pwd) or die('连接数据库出错!'.mysql_error());
   
   
mysql_select_db($this->dbname,$this->ConnId);
   
  }
//function __construct()
  
  
  //析构函数,用以释放内存和关闭数据库连接

  function __destruct()
  {
   
mysql_free_result($this->result);   //释放内存
   mysql_close($this->ConnId);     //关闭数据库链接
  }//function __destruct();
  
  
  //函数__get(),PHP内置函数,获取类的属性

  function __get($property_name)
  {
   
if(isset($this->$property_name))
   {
    
return($this->$property_name);
   }
   
else
   {
    
return(NULL);
   }
//if
  }//function __get();
  
  
  //函数__set(),PHP内置函数,给类实例对象的属性赋值

  function __set($property_name,$value)
  {
   
$this->$property_name = $value;
  }
//function __set();
  
  
  
  
/*
   函数名:read_data($sql)
   形式参数:$sql,即sql查询语句
   功能:根据sql查询语句从表中读取相应的记录
   返回值:函数内变量$result_arr[记录号][字段名]
  
*/
  
function read_data($sql)
  {
   
$this->result = mysql_query($sql,$this->ConnId) or die('查询失败!'.mysql_error());
   
   
//获取记录总数
   $this->total_records = mysql_num_rows($this->result);
   
   
if($this->total_records>0)
   {
    
//利用limit关键字获取本页所需显示的记录
    $sql = $sql." limit ".$this->begin_record.','.$this->max_line;
    
    
$this->result = mysql_query($sql,$this->ConnId) or die('获取数据失败!'.mysql_error());
    
    
//获取当前页的记录数
    $this->current_records = mysql_num_rows($this->result);
    
    
$i = 0;
    
$result_arr = array();
    
    
while($row=mysql_fetch_array($this->result))
    {
     
$result_arr[$i++= $row;
    }
//while
    
    
return $result_arr;
   }
//if
  }//function read_data();
  
  
  
  
/*
   函数名:navigate()
   功能:显示首页、上页、下页、末页
  
*/
  
  
function navigate()
  {
   
//获取总页数
   $this->total_pages = ceil($this->total_records/$this->max_line);
   
   
//获取当前页数
   $this->current_page = ceil($this->begin_record/$this->max_line)+1;
   
   
//用for循环输出阿拉伯数字分页页码
   for($i=0;$i<$this->total_pages;$i++)
   {
    
$FirstId = 0;  //数据库首行记录号,即ID=1
    $page_record = $this->max_line*$i+$FirstId;  //当前页读取的起始行数ID
    $page = $i+1;  //显示的阿拉伯页码
    if($page!=$this->current_page)
     
echo "<a href=".$_SERVER['PHP_SELF']."?begin_record=".$page_record.">".$page."</a>   ";
    
else
     
echo "<font color=red size=6><a href=".$_SERVER['PHP_SELF']."?begin_record=".$page_record.">".$page."</a></font>   ";
   }
//for
   
  }
//function navigate();
  
 }
//class ClassDataGrid;
?>