将每查出来的一条记录作为一个表,每页放20个这样的表,该怎样实现分页?
你是说表格吧?
也就是说一页取出20条记录吧。
SELECT * FROM tablename WHERE 1 LIMIT 0,20;
0 是表示开始值,
20是表示记录数。

解决方案 »

  1.   

    先建一个PHP文件保存为test.php
    用Oracle调用数据库字段,用for 循环!代码如下
    <? 
    $MAXROWS=20;//每页所取的条书
    $conn=连接Oracle数据库;
    $str="调用数据库字段";
    if(isset($from)){
    $step=$total-$from;
    $step=$step>$MAXROWS?$MAXROWS:$step;
    $str="$str limit $from,$step";
    $res=mysql_db_query($data,$str,$db);
    for ($i=0;$i<$step;$i++){
    $row=mysql_fetch_row($res);
    ?>
    再循环里添加一段php 代码 如下:
     
      <?
    print "<a href=\"test.php?from=0&total=$total&pages=$pages\">";
    print "第一页</a>&nbsp;&nbsp;";
    if ($pages>2&&$from>=$MAXROWS){
    print"<a href=\"test.php?from=";
    print ($from-$MAXROWS)."&total=$total&pages=$pages\">";
    print"上一页</a>&nbsp;&nbsp;";
    }
    if($from+$MAXROWS<$total){
    print"<a href=\"test.php?from=";
    print ($from+$MAXROWS)."&total=$total&pages=$pages\">";
    print"下一页</a>&nbsp;&nbsp;";
    }
    print"<a href=\"test.php?from=";
    print($pages*$MAXROWS-$MAXROWS)."&total=$total&pages=$pages\">末页</a>";
    }
    else{
    $res=mysql_db_query($data,$str,$db);
    $total=mysql_num_rows($res);
    $step=$total>$MAXROWS?$MAXROWS:$total;
    $pages=ceil($total/$MAXROWS);
    for ($i=0;$i<$step;$i++){
    $row=mysql_fetch_row($res);
              echo "<tr>"; 
             echo "<td  width=60% align=\"left\" ><font color=000000><a href=\"news_view.php?subj_id=$row[0]\">".$row[2]."</a></font></td>";
      echo "<td width=25% align=\"left\">".$row[5]."</td>";
         echo "<td width=15% align=\"center\">".$row[4]."</td>";
      echo "</tr>";
         }
     echo "</table>";
    //echo "<HR color=#E3E3E3 noshade width=80% size=1>";
    if ($pages>1){
    print"<a href=\"test.php?from=0&total=$total&pages=$pages\">";
    print"首页</a>&nbsp;&nbsp;";
    }
    if ($pages>2){
    print"<a href=\"test.php?from=$step&total=$total&pages=$pages\">";
    print"下一页</a>&nbsp;&nbsp;";
    }
    if ($pages>=2){
    print"<a href=\"test.php?from=";
    print($pages*$MAXROWS-$MAXROWS)."&total=$total&pages=$pages\">末页</a>";
    }
    }
    print "<a href=\"test.php?from=0&total=$total&pages=$pages\">";
    print "第一页</a>&nbsp;&nbsp;";
    if ($pages>2&&$from>=$MAXROWS){
    print"<a href=\"test.php?from=";
    print ($from-$MAXROWS)."&total=$total&pages=$pages\">";
    print"上一页</a>&nbsp;&nbsp;";
    }
    if($from+$MAXROWS<$total){
    print"<a href=\"test.php?from=";
    print ($from+$MAXROWS)."&total=$total&pages=$pages\">";
    print"下一页</a>&nbsp;&nbsp;";
    }
    print"<a href=\"sw_telerint "共 ".$pages." 页 ".$total." 条/ 每页20条";
      echo "</font>";
    ?>
      

  2.   

    TO: sandyuk
       不好意思,我说错了,应该是表格。你能具体一点吧。谢谢!
      

  3.   

    TO:ye_fushou大哥:
       我是基于Oracle数据库的,你说的是基于MySQL。
      

  4.   

    强烈建议使用OCIFetchStatement函数
    OCIFetchStatement($stmt, $results, $skip,$RowCount,OCI_FETCHSTATEMENT_BY_ROW);
    $results是返回的结果,$skip是从第几行开始取,$RowCount是取多少行。
    比如你每页20条记录,如果是第三页就可以
    OCIFetchStatement($stmt, $results, 20*2,20,OCI_FETCHSTATEMENT_BY_ROW);
      

  5.   

    我有一个oracle的操作类,另外有分页的函数,给个email我,我发给你。
      

  6.   

    TO;rengs(冷雨)   我要求的是先判定记录数,然后自动分页,而不是刻意的在每一个要显示的页都去写代码。
      上面的 ye_fushou 的代码我看了,比较适合我的想法,只是她用的是MySql数据库的函数。所以我现在想知道的是怎样用ORACLE的函数代替MySql。  很谢谢你的指导:),如有机会,改天我请客!
      

  7.   

    用Oracle
    $cnn=ocilogon("用户名","密码","数据库");//连接oracle
    $stmt=OCIParse($cnn,"SQL查询语句");
    //估计有BUG
    为什么不试试ODBC连接Oracle数据库哪?
    我一般用ODBC!因为我很懒!
      

  8.   

    rengs(冷雨) mail给我如何?谢谢了[email protected]
      

  9.   

    ODBC也有问题的,我就是用ODBC,被搞死了
      

  10.   

    function format_page($sql,$intsize)
    {
    global $objDB;
    global $curpage;
    global $pagesize;
    global $totalcount;
    global $pagecount;
    if (intval($curpage)==0)
    $curpage=1;
    $pagesize=$intsize;
    //取得记录总数
    $countsql="select count(*) from ($sql)";
    $objDB->execQuery($countsql);
    $totalcount=$objDB->getField(1,1);
    $objDB->freeResult();
    $objDB->execQuery($sql);
    $ret = $objDB->getAllRows(&$Rows,($curpage-1)*$pagesize,$pagesize);
    $pagecount = ($totalcount%$pagesizeceil)?($totalcount/$pagesize):ceil($totalcount/$pagesize);
    $objDB->freeResult();
    return $Rows;
    }//处理数据库记录数组
    function format_Rows($Rows,$intRows)
    {
    //处理后可以直接使用下标来读取数组内容
    $aryRow = $Rows[$intRows];
    return array_values($aryRow);

    }//打印分页连接
    function show_page_link()
    {
    global $curpage;
    global $pagesize;
    global $totalcount;
    global $pagecount;
    global $PHP_SELF;
    global $QUERY_STRING;
    if (intval($curpage) ==0)
    $curpage=1;

    $URL=$PHP_SELF;
    $QueryString=$QUERY_STRING;
    $QueryString= StripSlashes(ereg_replace("curpage=[0-9]*&?","",$QueryString));

    ?>
    &nbsp; 
    <?
    if (intval($curpage) > 1 )
    {
    ?><a href="<?=$URL?>?curpage=1&<?=$QueryString?>"><img src="../images/start.gif" width="15" height="15" border="0" align="bottom" title="首页" ></a><a href="<?=$URL?>?curpage=<?=$curpage-1?>&<?=$QueryString?>"><img src="../images/pre.gif" border="0" height="15" width="15" title="上一页" align="bottom"></a><?
    }
    else
    {
    ?><img src="../images/start.gif" width="15" height="15" border="0" align="bottom" title="首页" ><img src="../images/pre.gif" border="0" height="15" width="15" title="上一页" align="bottom"><?
    }
    if (intval($curpage)< $pagecount)
    {
    ?>
    <a href="<?=$URL?>?curpage=<?=$curpage+1?>&<?=$QueryString?>"><img src="../images/next.gif" width="15" height="15" border="0" align="bottom" title="下一页"></a><a href="<?=$URL?>?curpage=<?=$pagecount?>&<?=$QueryString?>"><img src="../images/end.gif" width="15" height="15" border="0" align="bottom" title="未页"></a> 
    <?
    }
    else
    {
    ?>
    <img src="../images/next.gif" width="15" height="15" border="0" align="bottom" title="下一页"><img src="../images/end.gif" width="15" height="15" border="0" align="bottom" title="未页"> 
    <? }
    echo "&nbsp;页次:".$curpage."/".$pagecount."&nbsp;共".$totalcount."条记录";
    ?>
    <input type="hidden" name="curpage" value="<?=$curpage?>">
    <?
    }//$objDB是oracle操作类的对象,里面的getAllRows的方法如下
    //得到全部查询结果
    //参数:$Rows 返回查询结果,$Skip 从第几行开始,$RowCont 返回多少行
    function getAllRows($Rows,$Skip,$RowCount,$result="")
    {
    if($result != "") $this->QueryResult = $result;
    return @OCIFetchStatement($this->QueryResult,&$Rows,$Skip,$RowCount,OCI_FETCHSTATEMENT_BY_ROW);
    }
      

  11.   

    调用:
    <form name="form1" method="post" action="">
        <input type="hidden" name="act" value="del">    <table width="50%" border="0" cellpadding="1" cellspacing="1" class="table">
          <tr class="table0"> 
            <td width="10%">&nbsp;</td>
            <td width="30%" align="center">类别ID</td>
            <td width="60%" align="center">用户类别描述</td>
          </tr>
    <? $sql = "select usertype_id,description from t_usertype";
    $pagesize=10;
    $aryRow=format_page($sql,$pagesize);
    for ($i=0;$i<$pagesize && $i < count($aryRow);$i++)
    {
    $rows=format_Rows($aryRow,$i);
    echo ($i%2 == 1?"<tr class=table1 >":"<tr class=table2 >\n");?>
          <td> <input type="checkbox" name="checkbox" value="'<?=$rows[0]?>'"></td>
          <td>&nbsp; 
            <?=$rows[0]?>
          </td>
          <td>&nbsp; 
            <?=$rows[1]?>
          </td>
    </tr>
    <?
    }
    ?>
          <tr align="left" class="table3"> 
            <td colspan="3"><input type="checkbox" name="checkbox2" value="checkbox" onClick="selectAll(this.form);">
              全选 
              <input name="Submit" type="button" class="button" value="删除" onClick="doSubmitDel(this.form,'<?=$PHP_SELF?>','<?=$strUrl?>');"> 
              <input name="Submit3" type="button" class="button" value="修改" onClick="doSubmitEdit(this.form,'usertype_config.php','<?=$strUrl?>');" > 
              <input name="Submit2" type="button" class="button" value="增加" onClick="self.location='usertype_config.php?<?=$strUrl?>'" > 
    <?
    show_page_link();
    ?>
            </td>
          </tr>
        </table>
    </form>
      

  12.   

    TO:rengs(冷雨)
       多谢大哥的不吝赐教。
       我会照着大家提供的帮助去测试。