Что вы можете сделать, это получить COUNT(*)
того, сколько строк в вашем наборе данных. Затем решите, сколько элементов вы хотите на странице. $numberOfRows / $itemsPerPage
дает вам количество страниц. В MySQL для ограничения результатов вы используете LIMIT X, Y
X - начало диапазона, а Y - количество элементов, которые вы хотите получить. Таким образом, чтобы получить все элементы на странице, ваш запрос будет LIMIT ($currentPage * $itemsPerPage), $itemsPerPage
Тогда вам решать, в зависимости от того, как вы хотите отформатировать свою нумерацию страниц, написать логику представления. Просто перейдите назад: если текущая страница равна 1, предыдущая кнопка отключена. Если страница не 1, то номер текущей страницы - это количество страниц с начала. Если общее количество страниц больше, чем текущая страница, считайте с текущей страницы до последней страницы (если только вы не хотите сократить количество страниц в какой-то момент)
Я использую следующий метод для создания списка страниц независимо от направления. Я мог бы добавить 5 для текущей страницы и 0 в качестве целевой страницы, и он вернул бы список из 5 страниц, чтобы я мог перебрать их по порядку.
/*
* Generates a list of pages based on the current page to the goal page number
*/
function generatePageList($currentPage, $goal) {
$span = $goal - $currentPage;
$step = abs($span) / $span;
$list = array();
for($x = $currentPage; $x !== $goal;) {
// We want to add the step at the beginning of the loop, instead of
// at the end
// Fixes bug when there are only two pages
$x += $step;
$list[] = $x;
}
return $list;
}