日期:2014-05-17  浏览次数:20453 次

大家看看我的分页为什么不好用?
$sql_AZSQD= "select   *   from   s_QZJX_AZSQD   where   ejdwbm= '$coid '   and   substr(sblbdm,1,2)= '$id '   order   by   sqdbh   desc ";
<?
if   ($page== " ")     {   $page   =   0;   }
$count=10;           //我现在暂时把记录总数写成10
$i=$count-1;  
$msgnum=2;  
$start   =   $page   *   $msgnum;
$end   =   $start   +   $msgnum;
if   ($end   >   $i)   $end=$i;
$totalpage=$i/$msgnum;
if   ($page> $totalpage)     {   $page   =   $totalpage;   }
if   ($totalpage> round($totalpage)){$totalpage=round($totalpage)+1;}
else{$totalpage=round($totalpage);}
if   ($page> 0){$row=$page*$msgnum   +   1;}
if   ($row== " ")   {$row=1;}
?>

for   ($i=$start;   $i <$end;   $i++)
{
        //这里是读取记录
}

<?
$pagestr= " ";
if   ($page> 0)   $pagestr=$pagestr. " <a   href=$thispage?lb=$lb&xlb=$xlb&kk=$kk&usr=$usr&page= ".($page-1). "> 上页 </a>   -   ";
$pagestr=$pagestr. "[第   ";
for   ($i=0;   $i <$totalpage;   $i++)   {
    if   ($i!=$page)   {
          $pagestr   =   $pagestr. " <a   href=$thispage?lb=$lb&xlb=$xlb&kk=$kk&usr=$usr&page=$i> ".($i+1). " </a>   ";
    }   else{
          $pagestr   =   $pagestr. " <font   color=red> ".($i+1). " </font>   ";
    }
}
$pagestr=$pagestr. "   页]   ";
if   ($page <($totalpage-1))   $pagestr=$pagestr. "-   <a   href=$thispage?lb=$lb&xlb=$xlb&kk=$kk&usr=$usr&page= ".($page+1). "> 下页 </a>   ";
echo     "共   ".$totalpage. "   页   ".$pagestr;

现在我的分页别的都好用,只是在第一页就把所有数据全读了出来,怎么能把数据分段呢?我不能用limit,因为是对oracle操作,我只想用这个for   ($i=$start;   $i <$end;   $i++)循环来分段数据,谢谢大家,谁帮帮吧

------解决方案--------------------
用adodb把,十分方便
------解决方案--------------------
select * from (select rownum rm,s_QZJX_AZSQD.* from s_QZJX_AZSQD) where s_QZJX_AZSQD.ejdwbm= '$coid ' and s_QZJX_AZSQD.substr(sblbdm,1,2)= '$id ' and rm> =1 and rm <=10 ----oracle中取1到10行
------解决方案--------------------
不通用的东西,不要用!

如果你的是MySQL,请使用传说中最前的分页功能——limit!!

如果是MSSQL活着其他的数据库,请使用镶嵌select语句分页!保证你用的爽!

嘿嘿,具体方法就是不公布,就是不公布~等我写完函数之后,一块贴出来吧
------解决方案--------------------
"第一页就把所有数据全读了出来 "你如果存的是数组计算开始结束的下标不就好了
------解决方案--------------------
$totalpage=$i/$msgnum;
if ($page> $totalpage) { $page = $totalpage; }
if ($totalpage> round($totalpage)){$totalpage=round($totalpage)+1;}
else{$totalpage=round($totalpage);}

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

这里也有问题$page 会出现小数,我会这么写:

$totalpage=ceil($i/$msgnum);
if ($page> $totalpage) { $page = $totalpage; }

==================================