学院首页>网络编程>PHP>一个odbc连mssql分页的类

一个odbc连mssql分页的类

作者: 来源:不详 添加时间:2006-5-25 20:46:57
  <!--二泉.net -->
<?
class Pages{
 var $cn;  //连接数据库游标
 var $d;//连接数据表的游标
 var $result; //结果
 var $dsn;  //dsn源
 var $user;  //用户名 
 var $pass;  //密码
 
 var $total;  //记录总数
 var $pages;  //总页数
 var $onepage; //每页条数
 var $page;  //当前页
 var $fre;  //上一页
 var $net;  //下一页
 var $i;//控制每页显示

 function getConnect($dsn,$user,$pass){
  $this->cn=@odbc_connect($dsn,$user,$pass);
  if(!$this->cn){
$error="连接数据库出错";
$this->getMess($error);
  }
 }
 
 function getDo($sql){//从表中查询数据
  $this->d=@odbc_do($this->cn,$sql);
  if(!$this->d){
$error="查询时发生了小错误......";
$this->getMess($error);
  }
  return $this->d;
 }

 function getTotal($sql){
  $this->sql=$sql;
  $dT=$this->getDo($this->sql);  //求总数的游标
  $this->total=odbc_result($dT,'total');//这里为何不能$this->d呢?
  return $this->total;
 }

 function getList($sql,$onepage,$page){
  $this->s=$sql;
  $this->onepage=$onepage;
  $this->page=$page;
  $this->dList=$this->getDo($this->s); //连接表的游标
  $this->pages=ceil($this->total/$this->onepage);
  if($this->pages==0)
$this->pages++; //不能取到第0页
  if(!isset($this->page))
$this->page=1;
  $this->fre = $this->page-1;  //将显示的页数
  $this->nxt = $this->page+1;
  $this->nums=($this->page-1)*$this->onepage;
  //if($this->nums!=0){
  // for($this->i=0;$this->i<$pg->getNums();odbc_fetch_row($this->dd),$this->i++);//同上
  //}
  //$this->i=0;//为何这部分不能封装?
  return $this->dList;
 }

 function getFanye(){
  $str="";
  if($this->page!=1)
$str.="<a href=".$PHP_SELF."?page=1> 首页 </a><a href=".$PHP_SELF."?page=".$this->fre."> 前页 </a>";
else
 $str.="<font color=999999>首页 前页</font>";
  if($this->page<$this->pages)
$str.="<a href=".$PHP_SELF."?page=".$this->nxt."> 后页 </a>";
else
 $str.="<font color=999999> 后页 </font>";
  if($this->page!=$this->pages)
$str.="<a href=".$PHP_SELF."?page=".$this->pages."> 尾页 </a>";
else
 $str.="<font color=999999> 尾页 </font>";
  
  $str.="共".$this->pages."页";
  $str.="您正浏览第<font color=red>".$this->page."</font>页";
  return $str;
 }
 
 function getNums(){
  return $this->nums;
 }
 
 function getOnepage(){//每页实际条数
  return $this->onepage;
 }

 function getI(){
  return $this->i;
 }
 
 function getPage(){
  return $this->page;
 }

 function getMess($error){//定制消息
  echo"<center>$error</center>";
  exit;
 }
}

$pg=new Pages();
$pg->getConnect("lei","sa","star");
$pg->getTotal("select count(*) as total from xs");//连学生表求总数
$pg->getList("select xs_name from xs order by xs_id",8,$page);
if($pg->getNums()!=0){
 for($i=0;$i<$pg->getNums();odbc_fetch_row($pg->dList),$i++);//同上
}
$i=0;
while(odbc_fetch_row($pg->dList)){
 $name=odbc_result($pg->dList,"xs_name");
 echo $name."<br>";
 if($i==$pg->getOnepage()){//跳出循环
  break;
 }
 $i++;
}
echo$pg->getFanye();
?>

 
站内搜索