根据查询的总结果检测页数的问题

Posted

技术标签:

【中文标题】根据查询的总结果检测页数的问题【英文标题】:Issue with detecting number of pages based on total results from query 【发布时间】:2017-04-03 05:10:45 【问题描述】:

我正在为某人创建一个页面,它将显示数据库中的所有订单,每页限制为 10 个。

它为此工作,但现在问题是当我尝试使用以下代码获取最大页数时:

$msql = "SELECT * FROM orders";
$mresult = $db->query($msql);
if(is_object($mresult) && $mresult->num_rows > 0)

    if($mresult->num_rows > 10)
    
        $maxpage = $mresult->num_rows / 10 + 1;
    
    else
    
        $maxpage = 1;
    

它不会将 $maxpage 变量设置为 1 以外的任何值,除非数据库中有 20 个或更多订单。

目前,我在数据库中有 11 个测试订单,所以当它除以 10 时,它应该将最大页数设置为 1,+ 1 个附加页,因为有超过 10 个订单。

我在网上搜索了一个解决方案,但空手而归。有什么想法或建议吗?

编辑:

在表格底部添加代码,显示实际订单以供进一步故障排除:

<tr>
    <td colspan="2" align="left"><a href="orders?start=<?php if($page == 1)  echo 0;  else  echo $start - 10;  ?>&page=<?php if($page == 1)  echo 1;  else  echo $page - 1;  ?>">&lt;&lt;&lt;&lt;</a> Prev</td>
    <td align="center">Page <?php if(isset($_GET['page']))  echo $_GET['page'] . ' of ' . $maxpage;  else  echo '1 of 1';  ?></td>
    <td colspan="2" align="right">Next <a href="orders?start=<?php if($page <= $maxpage)  echo 0;  else  echo $start + 10;  ?>&page=<?php if($page < $maxpage)  echo $page + 1;  else  echo $page;  ?>">&gt;&gt;&gt;&gt;</a></td>
</tr>

【问题讨论】:

据我所知,(11 / 10 + 1) 在 PHP 中是 2。其实我看不出你的逻辑有什么问题。 Find total number of results in mysql query with offset+limit的可能重复 【参考方案1】:

你的代码运行良好,问题是你的语句,你除以 10 的语句应该在括号内,因为需要先计算,然后加 1,在你的代码中,加法是done 等于 11,然后 11/11 = 1; 您可能也应该将其包装在 floor 函数中。

if($mresult->num_rows > 10)

    $maxpage = (floor($mresult->num_rows / 10)) + 1;

else

    $maxpage = 1;

【讨论】:

试过你的答案,仍然有同样的问题。我开始认为问题可能在于现在实际列出订单的表格底部的导航部分。我已经编辑了我的原始帖子以显示该代码。【参考方案2】:

请使用下面的代码,我已经测试过了。

$query = "select * from orders";
$history_res = mysql_query($query);

//count records
$totrecords = mysql_num_rows($history_res);
$totpages = ceil($totrecords / 10);
return $totpages;

【讨论】:

【参考方案3】:

实现@Talha 提供的代码,并将我的导航控件更改为以下解决了该问题:

<tr>
    <td colspan="2" align="left"><a href="orders?start=<?php if($page == 1)  echo 0;  else  echo $start - 10;  ?>&page=<?php if($page == 1)  echo 1;  else  echo $page - 1;  ?>">&lt;&lt;&lt;&lt;</a> Prev</td>
    <td align="center">Page <?php echo $page . ' of ' . $maxpage; ?></td>
    <td colspan="2" align="right">Next <a href="orders?start=<?php if($page < $maxpage)  echo $start + 10;  else  echo $start;  ?>&page=<?php if($page < $maxpage)  echo $page + 1;  else  echo $page;  ?>">&gt;&gt;&gt;&gt;</a></td>
</tr>

【讨论】:

以上是关于根据查询的总结果检测页数的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PDF 中显示页数?

wps中word的总页数不包括首页

从打印服务器获取打印机总页数

如何设置Word页脚中的总页数

怎样使word页码中的总页数不包括封面和目录(文章正文中包含很多节)

怎样使word页码中的总页数不包括封面和目录(文章正文中包含很多节)