php 翻页问题,请教

<?phpinclude("conn.php");$pagesize=5;$url=$_SERVER["REQUEST_URI"];$url=parse_url($url... <?php
include("conn.php");

$pagesize=5;
$url=$_SERVER["REQUEST_URI"];
$url=parse_url($url);
$url=$url['path'];

$numb=mysql_query("select * from `test`");
$num=mysql_num_rows($numb);
if($_GET['page']){
$pageval=$_GET['page']; //得到当前页
}
if($num>$pagesize){
if($pageval<=1){
$pageval=1;
echo "共 $num 条". " <a href=$url?page=".($pageval+1).">下一页</a>"; }
else if($pageval >= $num)
{
echo "共 $num 条". " <a href=$url?page=".($pageval-1).">上一页</a>"; }
else
{
echo "共 $num 条". " <a href=$url?page=".($pageval-1).">上一页</a>"."<a href=$url?page=".($pageval+1).">下一页</a>"; }
$page=($pageval-1)*$pagesize;
$page.=',';

}
echo "<br />";
@ $sql="select * from `test` limit $page $pagesize";
$query=mysql_query($sql);
while($row=mysql_fetch_array($query)){
echo "<b>".$row['name']."|".$row['sex'];
echo "<hr>";
}
?>
那个IF语句是什么意思?
else if($pageval >= $num)
{
echo "共 $num 条". " <a href=$url?page=".($pageval-1).">上一页</a>";
} 为什么判断$pageval>=$num 是什么意思?
展开
 我来答
百度网友0c90796
2011-09-15 · TA获得超过1611个赞
知道大有可为答主
回答量:2638
采纳率:0%
帮助的人:1122万
展开全部
我们的数据库中有100条记录,我们希望分页显示,每页显示10条,那么我们应该怎么来实现呢?

我们来看页数与记录数之间的关系:

第一页:显示1-10条数据,sql语句的limit部分应该是limit 0,10

第二页:显示11-20条数据,sql语句的limit部分应该是limit 10,10

第三页:显示21-30条数据,sql语句的limit部分应该是limit 20,10

以此类推。。。

我们从上面的数据发现limit部分,变化的始终只有第一个起始偏量,而第二个偏量是不变的,这是因为我们每页显示的都是10条。

我们的第一条数据对应的limit起始偏量是0,第二条对应的是1,这是由于mysql语法决定的。

现在,我们使用PHP语言来表述:

$page:当前的页数,默认为第一页

$page_size:每页显示多少条记录,这个是固定不变的

$offset:limit语句的起始偏量,这个变量随着$page的值的改变而改变,我们的limit语句部分是…limit $offset,$page_size,现在$page_size不变

,应此我们只需要找出$offset与$page的对应关系即可,从上面的数据我们可以分析一个数列:

第一项【也就是第一页】的值是0=(1-1)*10【这里,由于limit的第二个偏量不变,所以我们只需要分析第一个偏量】

第二项【也就是第二页】的值是10=(2-1)*10

第二项【也就是第三页】的值是20=(3-1)*10

。。。以此类推,不难得出,这是一个首项为0,公差为10的等差数列,它的通项公式为:pn=(n-1)*10,这里的pn就是我们的$offset,对应过来

,即:$offset=($page-1)*$page_size.

那么分页的limit也就是limit ($page-1)*$page_size,$page_size。

假设我们的数据表是goods,那么分页sql应该是select * from goods limit ($page-1)*$page_size,$page_size。

由于每一页的page值都不一样,所以我们每次读出的数据也是不一样的,这样就实现了,分页的效果。

PS:转载请注明 转自第一php网
dahuang871015
2011-09-14 · 超过64用户采纳过TA的回答
知道答主
回答量:281
采纳率:0%
帮助的人:197万
展开全部
我觉得应该是个bug.这个if应该是判断当前页面是否是最后一页,
if($pageval * $pagesize > $num);
更多追问追答
追问
我是想知道这个括号里的是什么意思。  
为什么是当前页*每页条数>总数 ,这样。 谢谢
追答
这个括号里应该就是判断是否为最后一页,判断条件应该是
($pageval -1) * $pagesize < $num < = $pageval * $pagesize;
之前是我错了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
manager100
2011-09-13 · TA获得超过113个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:162万
展开全部
判断是否在请求的页面之后
追问
什么请求的页面?    否则如果$pageval页面大于等于$num总数,为什么是这样比较呢?
追答
你想象一下页面排一队,编上号。这个就比如说“选取60号以后的页面”一样,只是显示了选取$pageval以后的页面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
狼头058
2012-10-19
知道答主
回答量:12
采纳率:0%
帮助的人:1.9万
展开全部
如果$pageval<$sum,就没有必要显示分页条了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dzsyp1314
2011-09-14 · TA获得超过153个赞
知道答主
回答量:224
采纳率:0%
帮助的人:27.6万
展开全部
。。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式