2016-11-19 48 views
2

我正在为某人在其中显示数据库中的所有订单(每页限制为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,因为有10个以上的订单,所以最多增加1页。

我已经搜遍网络寻找解决方案,并且空手而来。任何想法或建议?

编辑:

在表的底部添加的代码的实际订单将显示进一步的故障排除:

<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> 
+0

'(11/10 + 1)''是在PHP 2'远我所知。我其实并没有看到你的逻辑有什么问题。 –

+0

[查找带有偏移+限制的mySQL查询结果总数]的可能重复(http://stackoverflow.com/questions/5928611/find-total-number-of-results-in-mysql-query-with-offsetlimit ) – CBroe

回答

0

您的代码运行正常,问题是你的发言,你在哪里声明除以10,应该在括号内,因为需要首先计算,然后加1,在你的代码中,加法等于11,然后11/11 = 1; 你可能应该将它包裹在floor函数中。

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

尝试了你的答案,仍然有同样的问题。 我开始认为问题可能出现在导航部分现在在订单实际列出的表格底部。我编辑了我的原始帖子以显示该代码。 – Bryan

1

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

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

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

实施由@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>