http://www.csdn.net/expert/topic/1027/1027771.xml?temp=.5635797

解决方案 »

  1.   

    给你一个分页的类.
    <? 
    //【警告】:未经许可请勿随便修改 
    //------------------------------------------------------------------------------------------ 
    //------------------------------------------------------------------------------------------ 
    //   
    // 【文件名】:    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
      

  2.   

    //$strnum是取得满足条件的数据条数,$str书去的数据,$recordperpage是每页显示的行数(informix数据库)改成相应的数据库即可,把列表矿选择的值传给$recordperpage就可以了
     function display_data_pages($strnum,$str,$recordperpage)
     {
    $conn_id= db_connect();
    $r_id=ifx_query($strnum,$conn_id);
    $tmprow = ifx_fetch_row($r_id,1); 
            for (reset($tmprow);$fieldname=key($tmprow);next($tmprow)){
                 $fieldvalue=$tmprow[$fieldname];
    $rownums=intval($fieldvalue);
    }
    ifx_free_result($r_id);
    $pages=ceil($rownums/$recordperpage);  //总页数
    if ($pages==0) $pages=1;
    //判断偏移量参数是否传递给了脚本,如果没有就使用默认值0global $offset;
    if (empty($offset))
    {
        $offset=1;
    }
    $currentpage=ceil($offset/$recordperpage); //显示当前页
    echo("共有".$rownums."条记录        ");
    echo("分".$pages."页显示       ");
    echo("当前页:".$currentpage."<br>\n");
    $endset=$offset+$recordperpage;
    $res_id = ifx_query($str,$conn_id);
    $row = ifx_fetch_row($res_id,1); 
    for($k=1;$k<$offset;$k++)
      $row = ifx_fetch_row($res_id,"NEXT"); 
    for($j=$offset;$j<$endset&&$j<=$rownums;$j++) 
    {
      echo "<tr>"; 
            for(reset($row);$fieldname=key($row);next($row)){
                    $fieldvalue=$row[$fieldname];
      $fdvalue=adjust_fieldvalue($fieldname,$fieldvalue);
      echo "<td>&nbsp;".$fdvalue."</td>";
    }  
    echo "</tr>";
    $row=ifx_fetch_row($res_id,"NEXT");
         }
    //要写出到所有页面的链接
    echo  "</table><br>";
    /*
     echo "选择第 ";
    for ($i=1; $i <= $pages; $i++)
    {
      $newoffset=($recordperpage*($i-1))+1;
      echo " <a href=\"$PHP_SELF?offset=$newoffset\">$i</a>&nbsp;";
    }
     echo " 页";
    echo "<br>";
    */$nextoffset=$recordperpage*$currentpage+1;
    $prevoffset=$recordperpage*($currentpage-2)+1;
    $firstoffset=1;
    $lastoffset=($pages-1)*$recordperpage+$firstoffet+1;
    $strf="href=\"$PHP_SELF?offset=$firstoffset\"";
    $strl="href=\"$PHP_SELF?offset=$lastoffset\"";
    //判断是否需要上一页连接
    if (($currentpage>1) && ($currentpage<=$pages)) $stra="href=\"$PHP_SELF?offset=$prevoffset\"";
        else $stra="";
    //判断是否需要下一页连接
    if (($pages!=0) && ($currentpage<$pages)) $strb="href=\"$PHP_SELF?offset=$nextoffset\"";
    else $strb="";
     echo "<table  width=\"40%\" border=\"0\"  cellspacing=\"0\">
      <tr> 
        <td>
          <div align=\"center\"><a $strf>首页</a></div>
        </td>
        <td>
          <div align=\"center\"><a $stra>前页</a></div>
        </td>
        <td>
          <div align=\"center\"><a $strb>后页</a></div>
        </td>
        <td>
          <div align=\"center\"><a $strl>尾页</a></div>
        </td>
      </tr></table>";  
    echo "<br><br><br>";
    ifx_free_result($res_id);
    ifx_close($conn_id);
     }
      

  3.   

    关键是获取页码变量如$page,设置每页SIZE为20,如:$PAGESIZE=20;然后用select语句的limit参数即可.
    如:
    $pagesize=20;
    $start=($page-1) * $pagesize;
    $Qry=mysql_query("select * from yourtable where (filter) limit $start, $pagesize",$dbconnect);
    .....
      

  4.   

    客户端页面必须纪录当前页(利用 SESSION/COOKIE/URL 之类),这是关键页面上应该有相应的页面跳转链接,类似
    <a href=xxx.php?page=xx>
    可以做成“一溜”,像"1 2 3 4 .."
    也可以用一个小编辑框、下拉框之类根据客户端传过来的 $page 选页,数据库查询办法用楼上的就可以了