Heim >Backend-Entwicklung >PHP-Tutorial > 大家看看小弟我的分页为什么不好用
大家看看我的分页为什么不好用?
$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 {
//这里是读取记录
}
$pagestr= " ";
if ($page> 0) $pagestr=$pagestr. " 上页 - ";
$pagestr=$pagestr. "[第 ";
for ($i=0; $i if ($i!=$page) {
$pagestr = $pagestr. " ".($i+1). " ";
} else{
$pagestr = $pagestr. " ".($i+1). " ";
}
}
$pagestr=$pagestr. " 页] ";
if ($page 下页 ";
echo "共 ".$totalpage. " 页 ".$pagestr;
现在我的分页别的都好用,只是在第一页就把所有数据全读了出来,怎么能把数据分段呢?我不能用limit,因为是对oracle操作,我只想用这个for ($i=$start; $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 ------解决方案--------------------
不通用的东西,不要用!
如果你的是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; }
==================================