Я создаю страницу для кого-то, где он будет отображать все заказы в базе данных, ограничено 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; } ?>"><<<<</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; } ?>">>>>></a></td>
</tr>
Ваш код работает нормально, проблема в том, что ваш оператор, оператор, где вы делите на 10, должен быть в скобках, потому что это нужно сначала вычислить, а затем добавить 1 к нему, в вашем коде выполняется сложение, которое равно 11, а затем 11/11 = 1;
Вы, вероятно, должны также обернуть его в функцию пола.
if($mresult->num_rows > 10)
{
$maxpage = (floor($mresult->num_rows / 10)) + 1;
}
else
{
$maxpage = 1;
}
Пожалуйста, используйте приведенный ниже код, я проверял.
$query = "select * from orders";
$history_res = mysql_query($query);
//count records
$totrecords = mysql_num_rows($history_res);
$totpages = ceil($totrecords / 10);
return $totpages;
Реализация кода, предоставленного @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; } ?>"><<<<</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; } ?>">>>>></a></td>
</tr>