Проблема с определением количества страниц на основе общих результатов запроса

Я создаю страницу для кого-то, где он будет отображать все заказы в базе данных, ограничено 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>

1

Решение

Ваш код работает нормально, проблема в том, что ваш оператор, оператор, где вы делите на 10, должен быть в скобках, потому что это нужно сначала вычислить, а затем добавить 1 к нему, в вашем коде выполняется сложение, которое равно 11, а затем 11/11 = 1;
Вы, вероятно, должны также обернуть его в функцию пола.

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

Другие решения

Пожалуйста, используйте приведенный ниже код, я проверял.

$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>
0
По вопросам рекламы [email protected]