一个odbc连mssql分页的类
author:一佰互联 2019-05-01   click:171
<!--二泉.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();?>