У меня есть SQL-запрос, который выводит кучу строк, которые соответствуют определенным критериям. Я пытаюсь добавить разбиение на страницы для этого процесса, чтобы его было проще в использовании.Добавление PHP Pagination
Мой процесс таков:
- Рисунок из нижнего предела этой страницы, выяснить высокий предел этой страницы
- Толкай (ех 1 - - 20, 21 40, и т.д.). эти строки из таблицы MySQL
- Список этих строк
- Если есть больше чем 20, добавить
floor($totalRows/20)
страниц - ???
- Pagination
Моя пагинация, кажется, работает частично правильно, но на последней странице (независимо от того, что может быть) перечисляет один меньше, чем количество строк должны быть. Вот мой код:
$page = $_GET["p"];
$bL = (($page - 1) * 20) + 1;
$tL = $page * 20;
$total = mysql_num_rows(mysql_query("SELECT id FROM coupons WHERE zone = '$zone' AND dateExp > CURDATE()"));
if($tL > $total)
{
$tL = (($page - 1) * 20) + ($total % 20);
}
$gotRows = "SELECT * FROM coupons WHERE zone = '$zone' AND dateExp > CURDATE() ORDER BY retailerName LIMIT " . $bL . ", " . $tL;
//list all those rows
$numPages = floor($total/20) + 1;
echo "<p id='results'>" . $total . " result" . $plural . " · Displaying " . $bL . " to " . $tL . " </p>";
echo "</table>";
$pG = 1;
while($pG <= $numPages)
{
if($pG == $page)
{
echo $pG;
}
else
{
echo "<a href='zone?z=" . $zone . "&p=" . $pG . "'>" . $pG . "</a>";
}
if($pG != $numPages)
{
echo "·";
}
$pG = $pG + 1;
}
Любая помощь?
Редактировать: Nevermind, я решил проблему с строками. Но моя проблема со ссылками на страницу, которая находится внизу, все еще сохраняется. На странице 1 он работает правильно - «1» не является ссылкой, «2» есть. Однако на странице 2 отображается только «1». «2» не отображается.
Есть много вопросов о SO, связанных с разбиением на страницы PHP/MySQL .. Вы уже просмотрели их? – drudge
Теперь разбиение на страницы прекрасно работает - я просто пытаюсь исправить ошибку на странице. – AKor