CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

翻页算法?

楼主yihis(雪狼)2001-08-16 11:37:56 在 Web 开发 / PHP 提问

有谁能告诉我数据库是oracle的php翻页算法?不是mysql中的“limit   *,*”。 问题点数:13、回复次数:9Top

1 楼yihis(雪狼)回复于 2001-08-16 13:50:12 得分 0

为什么没人回答?Top

2 楼yuezw()羊拉多纳()回复于 2001-08-16 15:39:02 得分 0

用循环处理!Top

3 楼swall(壹心)回复于 2001-08-16 15:50:28 得分 0

可先把所有数据存在二维数组中,再用循环取出来。Top

4 楼yihis(雪狼)回复于 2001-08-16 15:56:29 得分 0

当然,就算不翻页也要用循环处理,能否说的再具体些?Top

5 楼yihis(雪狼)回复于 2001-08-16 16:11:48 得分 0

在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);  
  ?>  
  但是不成功,谁能告诉我问题出在哪?  
  Top

6 楼swall(壹心)回复于 2001-08-16 16:59:16 得分 4

你的不成功是指什么?  
   
  还有,你的那段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   }       ?>   Top

7 楼yihis(雪狼)回复于 2001-08-16 17:38:03 得分 0

谢谢你,我写了一个,跟你的差不多,已经成功了。我想知道有没有什么方法不用数组的?很浪费资源啊。  
  $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];  
  }Top

8 楼zxyufan(宇凡)回复于 2001-08-16 17:38:10 得分 5

给你写个分页控制类  
   
  <?  
  //分页控制类  
  //宇凡   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>";  
  }  
   
  }  
  ?>  
   
  Top

9 楼gye(嗯嗯)回复于 2001-08-16 22:44:01 得分 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>";Top

相关问题

  • 算法
  • 算法
  • 算法!
  • 算法
  • 算法...
  • 算法
  • 算法啊算法!!
  • JSP的翻页?
  • 翻页功能
  • 翻页功能

关键词

  • oracle
  • 翻页
  • ociresult
  • myora
  • curs
  • ora
  • stmt
  • getcolumn
  • gg
  • page

得分解答快速导航

  • 帖主:yihis
  • swall
  • zxyufan
  • gye

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo