联系我们
  • 成才热线:
                0531-86996651  86996089
  • 地理位置:
                济南市山大路201号创展中心
                文化东路北100米
  • 乘车路线:
                16路、48路、K94路、112路
                文化东路站
  • PEAQQ群:
                39852963  25515397
  • PHP连接MSSQL的分页函数
    发布时间:2008-04-20 00:05:59    作者:yusion     类别:PHP技术    访问次数:313

    离开济南三个多月了,时常会想起乔老师与同学们。于是经常到road2lamp.com上逛逛,多了解一下培训班里的动态。

    来北京后进一家行业门户网站,这家公司以前一直用ASP+SQL SERVER2000的架构,我发现其中有一个xx模板,在检索数据时,慢得令人无耐,仔细分析了一下ASP源码与数据表,发现慢在了分页上,默认情况下会检索几千万行数据,使用传统的ADO来分页,必然会效率大减。于是我想到了MySql中的 LIMIT ,但是在sqlserver中并没有 LIMIT,想了一下午,终于想出来一个较好的分页方法,索性用PHP将分页显示部分重写一遍,执行一下,果然速度大幅提高。

    考虑到同学们以后有可能会遇到 PHP连接非MYSQL,现将本人写的分页函数贴上来,请乔老师与同学们指正!

    page.inc.php
    ------------------------------------------------------------------------------------------------------------------------
     
     //在PHP里操作 MSSQL 的通用分页函数
     
     
     function page($curpage,$sql,$pers=100){            //传入请求页码,SQL语句,每页记录数,返回取得结果集和分页HTML代码段
      $sql = str_replace("select","select top {$pers} ",$sql);  //原SQL语句
      $rowcount = mssql_query("select count(*) ".strstr($sql,'from')); 
      $rscount = mssql_result($rowcount,0,0);  //得到总记录数
      $pagecount = ceil($rscount/$pers);    //得到总页数
      
      if($curpage<1 || !isset($curpage)){
        $curpage = 1;
      }elseif($curpage > $pagecount){
       $curpage = $pagecount;
      }
      $cpe = $curpage;
      $offpage = ($cpe=$cpe-1) * $pers;            //偏移量
      
      //构造子SQL语句
      $sub_sql = " where a.id not in(select top {$offpage} a.id ".strstr($sql,'from').") and ";
      $sql = str_replace("where",$sub_sql,$sql);
      
      
      $row_info = array();
      $row_info['rs']   = @mssql_query($sql);             //得到欲返回的结果集
      
      if($curpage>1){
       $page4 = "
    首页";
      }else{
       $page4 = "首页";
      }
      
      
      $row_info['page'] = "当前页码:第{$curpage}页, 共{$pagecount}页,{$rscount}条记录,{$page4}  ";
      
        if($curpage>1){
         $pg = $curpage-1;
         $page1 = "
    上一页";
        }else{
        $page1 = "上一页";
       }
       
       if($curpage < $pagecount){
        $pg =$curpage+1;
        $page2 = "
    下一页";
        }else{
       $page2= "下一页";
       }

      if($curpage < $pagecount){
       $page5 = "
    尾页";
      }else{
       $page5 = "尾页";
      }
       
       $row_info['page'] .= $page1."/".$page2."    ".$page5;   //构造分页链接文本
        
       return $row_info;  
     }
    ?>
    ------------------------------------------------------------------------------------------------------------------------

    注:gotopage是前台的JS函数,这个可以自己更改




    回复:

    请输入验证码: 点击重置图片