http://www.csdn.net/Expert/FAQ/FAQ_Index.asp?id=4694

解决方案 »

  1.   

    http://www.csdn.net/expert/topic/970/970397.xml?temp=.4401819
      

  2.   

    这是我写的一个函数:
    <?php
    // +-------------------------------------------------------------------------------------+
    // | function page ($select, $id, $no, $page_count, $dbname, $tablename)                 |
    // |    1。$select是mysql语句.例:select * from wang order by id desc  |
    // |     2。$id是数据库id  |
    // |   3。$no是你要查看的页数                                        |
    // |   4。$page_count是一页有多少行组成  |
    // |   5。$dbname是数据库的名称  |
    // |   6。$tablename是数据库表的名称  |
    // +-------------------------------------------------------------------------------------+
    // | 程序功能及方法:                      |
    // | 定义好六个变量,调用函数page你将得到一个数组,该数组由四个值组成,  |
    // | 'page_count'是共有多少页,'pre_page'是上一页是第几页,'down_page'是下一页是第几页,  |
    // | 'data_page'是数据库中的数据  |
    // +-------------------------------------------------------------------------------------+
    // | 返回数据:                                                                           |
    // | 如想打印你得到的数据,$变量['你需要的'],如:你想看共有多少页,$变量['page_count']即可; |
    // | 如想要数据库的数据,则需要做循环,  |
    // | 如:while ($row = @mysql_fetch_object($b['data_page'])),  |
    // | $row就是你想要的所有数据,打印出来即可  |
    // +-------------------------------------------------------------------------------------+
    function Page ($select, $id, $no, $page_count, $dbname, $tablename)
    {
    // +----------------------------------------------------+
    // | 认证$page_count是否小于一 |
    if ($page_count < 1) {
    print "不能小于一";
    exit;
    }
    // +----------------------------------------------------+

    // +----------------------------------------------------+
    // | 认证$id是否真 |
    if (!$id) {
    print '数据库不存在';
    exit;
    }
    // +----------------------------------------------------+ $query     = "select count(*) as " . $dbname . " from " . $tablename;
    $result     = mysql_query($query) or die(mysql_error());
    $row     = mysql_fetch_array($result);
    $rows_count = $row["$dbname"];
    //$resrlt     = @mysql_query($select); //sql语句执行
    //$rows_count = @mysql_num_rows($resrlt); //统计行数
    $rows     = ceil($rows_count / $page_count); //获取页数
    settype($no, 'integer'); //将$page的类型设为integer
    $no --; // +----------------------------------------------------+
    // | 认证$no是否符合条件 |
    if ($no < 0) {
    $no = 0;
    } else if ($no > $rows - 1) {
    //$no = $rows - 1;
    print "没有这一页的数据";
    exit;
    }
    // +----------------------------------------------------+ $start  = $no * $page_count; //获取从第几行开始读 
    $reclue = @mysql_query($select." limit ".$start.",".$page_count); //获取数据
    if ($no < $rows - 1) {
    $no2 = $no + 2; //获取下一页
    }
    if ($no != 0) {
    $no1 = $no; //获取上一页
    }
    $a['page_count'] = $rows;
    $a['pre_page']  = $no1;
    $a['down_page']  = $no2;
    $a['data_page']  = $reclue;
    return $a;
    }
    ?>
      

  3.   

    <? 
    //【警告】:未经许可请勿随便修改 
    //------------------------------------------------------------------------------------------ 
    //------------------------------------------------------------------------------------------ 
    //   
    // 【文件名】:    c_mysql_page.inc 
    // 【作  用】:    MySQL分页函数类 
    // 【作  者】:    天灰 
    //  
    // 【最后修改日期】:        2001/07/16[cxx]      
    // 【变量定义规则】:‘C_’=字符型,‘I_’=整型,‘N_’=数字型,‘L_’=布尔型,‘A_’=数组型 
    //------------------------------------------------------------------------------------------ 
    //------------------------------------------------------------------------------------------ 
    //    ※c_mysql_page()                构造函数,设置分页初始参数 
    //    ※page_standard()               分页显示函数(标准型) 
    //    ※GetRecordStartEnd()           获得取记录的开始结束位置         
    //    ※getmaxpage()                  获得记录集的最大页数 
    //    ※checkpage()                   检查当前页数是否在0和最大页数之间 
    //------------------------------------------------------------------------------------------ 
    class c_mysql_page 

         
    //------------------------------------------------------------------------------------------ 
    //        变量定义 
    //------------------------------------------------------------------------------------------     
        var $I_pagesize = 10;               //每页记录数 
        var $C_width    = '90%';            //表格宽度    
    //------------------------------------------------------------------------------------------     //------------------------------------------------------------------------------------------ 
    //        函数名:c_mysql_page ($I_pagesize, $c_width)  
    //        作  用:构造函数,设置分页初始参数 
    //        参  数:$I_pagesize, $c_width 
    //        返回值:变量 
    //        备  注:构造函数随着类的建立而自动执行 
    //------------------------------------------------------------------------------------------ 
        function c_mysql_page ($I_pagesize=10, $C_width='85%')  
        { 
            if (isset($I_pagesize)){$this -> I_pagesize     = $I_pagesize;} 
            if (isset($C_width)){$this -> C_width         = $C_width;} 
        } //------------------------------------------------------------------------------------------ 
    //        函数名:page_standard($I_sumrecord,$C_page,$C_url="self",$C_otherpara="") 
    //        作  用:分页显示函数(标准型) 
    //        参  数:$I_sumrecord        记录总数 
    //                $C_url              URL 
    //                $C_page             URL后的参数 
    //                $C_otherpara        URL后的参数2 
    //                $bgcolor            表格的背景颜色 
    //        返回值:<table> 
    //        备  注:无 
    //------------------------------------------------------------------------------------------ 
        function page_standard($I_sumrecord,$C_page,$C_url="self",$C_otherpara="",$bgcolor="") 
        { 
            //检查参数 
            if ((!$I_sumrecord) || (!$C_page)){AlertExit("参数不全!");} 
             
            global $PHP_SELF,$$C_page;                            //全局变量$C_page 
             
            //检测$I_pagesize是否合法 
            if($this -> I_pagesize < 1){AlertExit("请设定每页的记录数!");} 
             
            if($I_sumrecord < 1){return false;}                        //检测总记录数 
             
            if($C_url == "self"){$C_url = $PHP_SELF;}                //设置URL 
             
            $I_page = $$C_page;                                        //重新赋当前页值 
            $I_maxpage = $this -> getmaxpage($I_sumrecord);            //取出总页数 
            $I_page = $this -> checkPage($I_maxpage,$I_page);        //检查当前页号 
                     
            //显示表  
            echo "<table align=center width=". $this -> C_width ." bgcolor=". $bgcolor .">"; 
            echo "<tr>"; 
            echo "<td align=left>共<font color=red><b>" . $I_sumrecord. "</b></font>条主题&nbsp当前第<font color=red><b>" . $I_page . "/". $I_maxpage. "</b></font>页</td>"; 
            if ($I_maxpage > 1) 
            { 
                echo "<td align=right>"; 
                if($I_page > 1 && $I_page < $I_maxpage) 
                { 
                    echo "<a href= $C_url?$C_page=1&$C_otherpara>首页</a>&nbsp;";         
                    $pre=$I_page-1; 
                    echo "<a href=$C_url?$C_page=$pre&$C_otherpara>上页</a>&nbsp;";     
                    $next=$I_page+1; 
                    echo "<a href=$C_url?$C_page=$next&$C_otherpara>下页</a>&nbsp;";         
                    echo "<a href=$C_url?$C_page=$I_maxpage&$C_otherpara>末页</a>&nbsp;&nbsp;"; 
                } 
                elseif($I_page == 1) 
                { 
                    $next = $I_page+1; 
                    echo "<a href=$C_url?$C_page=$next&$C_otherpara>下页</a>&nbsp;";     
                    echo "<a href=$C_url?$C_page=$I_maxpage&$C_otherpara>末页</a>&nbsp;&nbsp;";     
                } 
                elseif($I_page == $I_maxpage) 
                {         
                    echo "<a href=$C_url?$C_page=1&$C_otherpara>首页</a>&nbsp;";     
                    $pre=$I_page-1; 
                    echo "<a href=$C_url?$C_page=$pre&$C_otherpara>上页</a>&nbsp;&nbsp;"; 
                } 
                 
                //显示select 
              //  echo "转到"; 
               // echo "<SELECT style=font-size:9pt NAME=gopage class='ff' OnChange=WindowLocation($C_url,$C_otherpara,$C_page)>";//OnChange=".WindowLocation($C_url,$C_otherpara,$C_page)." 
               // for($i=1;$i <= $I_maxpage;$i++) 
              //  { 
                    //如$i==$I_page,此选项选中(selected) 
              //      if($i == $I_page){echo "<option value=$i selected>$i&nbsp;</option>";} 
              //      else{echo "<option value=$i>$i&nbsp;</option>";} 
             //   } 
              //  echo "</SELECT>页</td>"; 
            } 
            echo "</tr>"; 
            echo "</table>"; 
        } 
    //------------------------------------------------------------------------------------------ 
    //------------------------------------------------------------------------------------------ 
    //        函数名:GetRecordStartEnd($I_page) 
    //        作  用:获得取记录的开始结束位置 
    //        参  数:$I_page            当前页 
    //        返回值:全局变量$I_rowstart,$I_pagesize 
    //        备  注:无 
    //------------------------------------------------------------------------------------------ 
        function GetRecordStartEnd($I_page) 
        { 
            global $I_rowstart;         
            global $I_pagesize; 
            $I_rowstart = ($I_page-1)*$this -> I_pagesize; 
            $I_pagesize = $this -> I_pagesize;             
        } 
    //------------------------------------------------------------------------------------------ 
    //------------------------------------------------------------------------------------------ 
    //        函数名:getmaxpage($intRecordNum) 
    //        作  用:获得记录集的最大页数 
    //        参  数:$I_sumrecord        记录总数 
    //        返回值:最大页数$I_maxpage(整型) 
    //        备  注:无 
    //------------------------------------------------------------------------------------------ 
        function getmaxpage($I_sumrecord) 
        { 
            if (!$I_sumrecord){AlertExit("参数不全!");}//检查参数 
            $I_maxpage = ceil($I_sumrecord / $this -> I_pagesize);  
            return $I_maxpage; 
        } 
    //------------------------------------------------------------------------------------------ 
    //------------------------------------------------------------------------------------------ 
    //        函数名:checkpage($I_maxpage,$I_page) 
    //        作  用:检查当前页数是否在0和最大页数之间 
    //        参  数:$I_maxpage        最大页数 
    //                $I_page            当前页数 
    //        返回值:当前页数$I_page(整型) 
    //        备  注:无 
    //------------------------------------------------------------------------------------------ 
        function checkpage($I_maxpage,$I_page) 
        { 
            if($I_maxpage == 0){$I_page = $I_maxpage;} 
            if ($I_page < 1){$I_page =
      

  4.   

    vivanboy(被迫早起的鸟儿).太感谢你了,我看你的方法应该可以实现,虽然我还没有仔细看wangxiangjun_sun() ,anziqi(枫叶无情)你们给的MYSQL的哦,可能没看清楚我的问题:)我在挂一天,然后结贴
      

  5.   

    至于存储过程。要用到临时表,将查询出来的纪录全部倒入到临时表,这个临时表比查询结果集多一个id(identity(1,1))字端,主要就是靠这个id字段来选出当前页的纪录,然后返回。select * into #TmpTable from tabaleName
    alter table #TmpTable add id int identity(1,1) primary key