在mysql中我是这样做
<?
$mylink=@mysql_connect("***","***","***") or die("无法连接到数据库!");
mysql_select_db("***",$mylink) or die("无法选择数据库!");
$mysql="select * from ??? where ()";
$result=@mysql_query($mysql,$mylink) or die("浏览失败");
$page_size=2;
if($page<=0)
 {$page=1;}
$message_count=mysql_num_rows($result);
$page_count=ceil($message_count/$page_size);
$offset=($page-1)*$page_size;
$mysql="select * from ??? where () limit $offset,$page_size";
$result=@mysql_query($mysql,$mylink) or die("浏览失败");
 if($result) $i=1;
?>
<?
 while($myarray=mysql_fetch_array($result))
  {
?>
其中是循环显示$myarray["***"]
  <?}?>
<?
 $i++;
 $prevpage=$page-1;
 $nextpage=$page+1;
    if($page<=1) echo "第一页";
    else echo "<a href='$PATH_INFO?page=1'>第一页</a>";
    if($page<2) echo "上一页";
    else echo"<a href='$PATH_INFO?page=$prevpage'>上一页</a>";
    if($page+1>$page_count) echo "下一页";
    else echo"<a href='$PATH_INFO?page=$nextpage'>下一页</a>";
    if($page>=$page_count) echo "最后一页";
    else echo"<a href='$PATH_INFO?page=$page_count'>最后一页</a>";
   ?>
在oracle中,我是这么做的
<?
$conn = ocilogon("****","***","*****");
$id = OCIParse($conn,"select * from ****");
OCIDefineByName($id,"****",&$a1);
OCIDefineByName($id,"****",&$a2);
OCIDefineByName($id,"****",&$a3);OCIExecute($id);
$i=0;
while (OCIFetch($id)) {echo $a1;
echo $a2;
echo $a3;
$i++;
if ($i>10) break;
}
OCIFreeStatement($id);
OCILogoff($conn);
?>
但是不成功,谁能告诉我问题出在哪?

解决方案 »

  1.   

    你的不成功是指什么?还有,你的那段oracle的程序,事实上每次都只取出前十条。对吧?翻页不能这样的,要把所有的数据存到二维数组中。然后再取出。比如:         $query="SELECT **,**,**,** from caishuinews";
             $stmt = OCIParse($conn,$query) or die;   
             OCIExecute($stmt);          $i=0;
              while(OCIFetchInto($stmt,&$id,OCI_ASSOC+OCI_RESULT_CLOB))
                   {
                       $gg[$i][1]=OCIResult($stmt,1);
                       $gg[$i][2]=OCIResult($stmt,2);
                       $gg[$i][3]=OCIResult($stmt,3);
                       $gg[$i][4]=OCIResult($stmt,4);
                    $i++;
                   }
            
             for($i=$start;$i<$end;$i++)
                  { 
            ?> 
            <tr> 
              <td width="38" valign="top" align="center">
                 <?php print $gg[$i][2];?>
                 (<?php echo $gg[$i][4];?>)
              </td>
            </tr>
            <?php }   ?> 
      

  2.   

    谢谢你,我写了一个,跟你的差不多,已经成功了。我想知道有没有什么方法不用数组的?很浪费资源啊。
    $db=ora_logon($username,$password);
    $curs=ora_open($db);
    $sql="select a,b,c from table";
    ora_parse($curs,$sql);
    ora_exec($curs);
    $i=0;
    while(ora_fetch($curs))
    {
    $myora[$i][0]=ora_getcolumn($curs,0);
    $myora[$i][1]=ora_getcolumn($curs,1);
    $myora[$i][2]=ora_getcolumn($curs,2);
    $i++;
    }
    $offset=15;
    $pages=ceil($i/$offset);
    if(empty($page))
    {$page=1;}
    if($page>$pages)
    {$page=$pages;}
    if($page<1)
    {$page=1;}
    $start=$page*$offset-$offset;
    $end=$start+$offset;
    if($end>$i)
    {$end=$i;}
    if($page!=1)
    {
    //写入上一页的连接
    }
    if($page!=$pages && $pages!=1)
    {
    //写入下一页的连接
    }
    运用:
    for($start1=$start;$start1<$end;$start1++)
    {
    echo $myora[$start1][0];
    echo $myora[$start1][1];
    echo $myora[$start1][2];
    }
      

  3.   

    给你写个分页控制类<?
    //分页控制类
    //宇凡 8月15日
    ?>
    <?
    class PageControl
    {
    var $PageAmount; //总页数
    var $RecordAmount; //总记录数
    var $Page; //当前页码
    var $RecordRow_Per_aPage = 10; //每页显示的记录条数,事先预定,不通过程序更改
    var $NextPage; //下一页的页码
    var $PriorPage; //上一页的页码
    var $StartIndex; //相当于每页显示的起始位置的索引
    var $UsingIndex; //当前使用的数据的索引
    var $arrIDList; //保存ID的数组function pagecontrol($IDList,$PageNow)
    {
        if (($PageNow == "") || (round($PageNow) == 0))
    {
    $PageNow=1;
    }
    $this->arrIDList = $IDList;
        $this->Page = $PageNow;
        $this->RecordAmount = count($IDList);    if ($this->RecordAmount % $this->RecordRow_Per_aPage == 0) {
          $this->PageAmount = $this->RecordAmount / $this->RecordRow_Per_aPage;
        } else {
          $this->PageAmount = round($this->RecordAmount / $this->RecordRow_Per_aPage);
        }

        $this->StartIndex = ($this->Page - 1) * $this->RecordRow_Per_aPage;
        $this->UsingIndex = $this->StartIndex - 1;  //这里减一的目的:得到数据的普遍方法是先Next()再Get数据,比如数据集.    if ($this->Page != $this->PageAmount) {
          $this->NextPage = $this->Page + 1;
        } else {
          $this->NextPage = $this->PageAmount;
        }    if ($this->Page != 1) {
          $this->PriorPage = $this->Page - 1;
        } else {
          $this->PriorPage = 1;
        }
    }function next_record()
    {
        $result = false;
        if (($this->UsingIndex != $this->RecordAmount - 1) && ($this->UsingIndex - $this->StartIndex < 9)) {
          $this->UsingIndex += 1;
          $result = true;
        } else {
          $result = false;
        }
        return $result;
    }function get()
    {
        $result = $this->arrIDList[$this->UsingIndex];
        return $result;
    }function show_FirstLink()
    {
    echo " <a href=".$PHP_SELF."?p=1>最前页</a> ";
    }function show_PriorLink()
    {
    echo " <a href=".$PHP_SELF."?p=".$this->PriorPage.">上一页</a> ";
    }function show_NextLink()
    {
    echo " <a href=".$PHP_SELF."?p=".$this->NextPage.">下一页</a> ";
    }function show_LastLink()
    {
    echo " <a href=".$PHP_SELF."?p=".$this->PageAmount.">最后页</a> ";
    }function show_JumpForm()
    {
    echo "<FORM METHOD=POST ACTION=".$PHP_SELF.">直接到<INPUT TYPE=text NAME=p size=2 class=input>页 <INPUT TYPE=submit value=GOGOGO class=bottem></FORM>";
    }}
    ?>
      

  4.   

    // $pagenum  为当前页数
    // $linePerPage  每页的行数$conn=ocilogon("","");
    $stmt=ociparse($conn,"");
    ocidefinebyname($stmt,"",&$a);
    ociexecute($stmt);
    $i=0;
    while(ocifetch())
    {
       $i++;
       if($i=<($pagenum-1)*linePerPage)
          continue;
       if($i>$pagenum*linePerPage)
          break;
       echo $a;
    }
    ocifreestatement($stmt);
    ocilogoff($conn);
    if($pagenum>1)
       echo"<a href=\"   \">上一页</a>";
    if($pagenum<$lastPageNo)
       echo""<a href=\"   \">下一页</a>";