不是吧,PHP版里没人用MSSQL??

解决方案 »

  1.   

    发一个我自己用的.数据库链接用ADODB.
    <?
    /***
    *分页处理
    *实例运行后,参数:totalPages 为总页数,totalNum 为总记录数 perpage_num 为每页数量
    *
    */
    class pagination{ var $sql;//SQL语句
    var $perpage_num;//每页的记录数量
    var $page;//真实页数
    var $offset;//偏移量
    var $totalNum;//记录总数量
    var $totalPages;//总页数
    var $dbObj;//数据库对象
    var $pageQuery = array();//传递参数
    function pagination($db,$sql,$page=1,$perpage_num=15,$swhere='')
    {
    $this->dbObj = $db;

    //把条件写成一个数组,一般几种情况写出来.
    if (is_array($swhere)) {
    $swhere = $this->GetWhereQueryString($swhere);
    }

    //插入条件
     $sql_where = preg_replace("/select.*from/i","select count(*) from ",$sql);
    $sql1 = stristr($sql,"where");
    $sql2 = stristr($sql1,"order");
    if($sql2)
    $sql3 = str_ireplace($sql2,"",$sql1)." $swhere ";
    else 
    $sql3 = $sql1 . " $swhere ";
    $sql = str_ireplace($sql1,$sql3,$sql);
    if($sql2)
    $sql .= $sql2;
    //echo $sql;
    $this->sql = $sql;
    $this->perpage_num = $perpage_num;
    $this->page = (empty($page))?1:$page;

    $this->offset = ($this->page-1)*$this->perpage_num;//偏移量
    // echo $this->offset;
    $total_sql = preg_replace("/select.*from/i","select count(*) from ",$sql);

    $rs = $this->dbObj->Execute($total_sql);
    $this->totalNum = $rs->fields[0];

    $this->totalPages = ceil($this->totalNum / $this->perpage_num);

    //$this->pageQuery = array();
    }

    /**
     * 生成一个查询语句
     *
     * @param unknown_type $swhere
     * $swhere是一个数组,其中$swhere[][0]是比较的关系,$swhere[][1]是比较的值,$swhere[][2]是接收的参数
     * @return unknown
     */
    function GetWhereQueryString($swhere){
    $tmp = "";
    if(is_array($swhere))
    {
    foreach ($swhere as $key=>$value)
    {
    if($value[0] == "like")
    $tmp .= " and $key like '%".$value[1]."%'";
    else 
    $tmp .= " and $key ".$value[0]." '".$value[1]."'";

    $this->SetPageQuery($value[2],urlencode($value[1]));
    }
    }
    return $tmp;
    }

    function GetData()
    {
    $rs = $this->dbObj->SelectLimit($this->sql,$this->perpage_num,$this->offset);
    $result = array();
    if ($rs) {
            while ($o = $rs->FetchRow()) {
                    $result[] = $o;
                    //$rs->MoveNext();
            } 
    }
    return $result;
    }

    function SetPageQuery($key,$value){ 
    $tmp[key]=$key; $tmp[value]=$value; 
    $this->pageQuery[]=$tmp; 
    //print_r($tmp);


    function ShowPagination()
    {
    global $PHP_SELF,$HTTP_HOST;

    //显示的形式 |<< < 1 2 3 4 5 > >>|
    $strFirst = "首  页";
    $strPre = "上一页";
    $strNext = "下一页";
    $strLast = "尾  页";

    $url = $_SERVER['PHP_SELF']."?page=";

    $k=count($this->pageQuery); 
    $strQuery=""; //生成一个要传递参数字串 
    for($i=0;$i<$k;$i++){ 
    $strQuery.="&amp;".$this->pageQuery[$i][key]."=".$this->pageQuery[$i][value]; 
    }  $intPrev = ($this->page - 1) < 1 ? 1 : ($this->page - 1);//上一页
    $intNext = ($this->page + 1) > $this->totalPages ? $this->totalPages : ($this->page + 1);//下一页

    if($this->page > 1)
    $strHeader = "<a href='".$url."1{$strQuery}' title='首页' class='s1'>{$strFirst}</a> <a href='".$url."{$intPrev}{$strQuery}' title='上一页' class='s1'>{$strPre}</a> ";
    if($this->page < $this->totalPages)
    $strEnd = "<a href='".$url."{$intNext}{$strQuery}' title='下一页' class='s1'>{$strNext}</a> <a href='".$url."{$this->totalPages}{$strQuery}' title='尾页' class='s1'>{$strLast}</a> ";

    if($this->page-2>0)
    $str .= "<a href='".$url.($this->page-2)."{$strQuery}' title='".($this->page-2)."'>".($this->page-2)."</a> ";
    if($this->page-1>0)
    $str .= "<a href='".$url.($this->page-1)."{$strQuery}' title='".($this->page-1)."'>".($this->page-1)."</a> ";
    $str .= "<a href='#' class='s2'>".($this->page)."</a> ";
    if($this->page+1<$this->totalPages)
    $str .= "<a href='".$url.($this->page+1)."{$strQuery}' title='".($this->page+1)."'>".($this->page+1)."</a> ";
    if($this->page+2<$this->totalPages)
    $str .= "<a href='".$url.($this->page+2)."{$strQuery}' title='".($this->page+2)."'>".($this->page+2)."</a> ";

    $strEndPageNum = "<div class='endPageNum'><table align='center'><tr><td>".$strHeader.$str.$strEnd."</td></tr></table></div>";
    return $strEndPageNum;

    }
    }
    ?>