一个odbc连mssql分页的类

  <!--二泉.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();

  ?>