blackseabreathe
@blackseabreathe
brackets

Почему некорректно работает пагинация при фильтрации?

Здравствуйте, прошу совета и помощи.

У меня есть страница, на которой я вывожу информацию из БД.
И так как информации много, то нужно сделать пагинацию. Чтобы не писать велосипед нашел на хорошем сайте класс пагинации. тут

И использую его. Появилась проблема:

При загрузке страницы все работает хорошо:

// пагинация
include($dr.'/pagination/pagination.php');
$peger = new DBPaginator($url2, 6);  // 6 - колво выводов на странице

$items = $peger->getItems("SELECT * FROM `apple` ORDER BY `id` DESC");

foreach ($items as $item){
...
}


Так пагинация работает отлично. НО.

У меня есть фильтры.

Допустим, на страницу из БД я вывожу все яблоки. Пагинатор на странице выводит по 6 яблок и снизу сама навигация

1,2,3,4,5....

Если я выбираю фильтр (например, красные яблоки), в это время Ajax отправляет запрос в php с указанным значением фильтра (red, например). Php принимает значение фильтра и делает новую выборку из БД
// пагинация
include($dr.'/pagination/pagination.php');
$peger = new DBPaginator($urlForPagi, 6);  // 6 - колво выводов на странице

$items = $peger->getItems("SELECT * FROM `apple ` WHERE `color` = $_POST['color'] ORDER BY id DESC");


и через echo json_encode отдает результат, а jquery подгружает на страницу новые яблоки, удаляя предыдущие. Без перезагрузки страницы. А также подгружается новая пагинация (пагинация новой выборки (красные яблоки)).

Мне непонятно следующее. При выводе всех яблок на странице есть пагинация, например 1,2,3,4,5, и когда выбрали красные яблоки, то старая пагинация удаляется и подгружается новая из выборки 1,2 (по 6 штук красных яблок на странице) - посчитал красные яблоки в БД и понял что пагинация работает в этом смысле правильно. НО.

Когда загрузились только красные яблоки из БД и появилась пагинация красных яблок, стоит нажать, например, на страницу 2, то почему-то выводятся все яблоки, а должны только красные.
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
1)
WHERE `color` = $_POST['color']
Вообще дыра, хоть бы проверку какую-нибудь, молчу про подготовленные выражения, которые маст хэв так то...
2) метод пост не очень подходит для передачи параметров типа фильтр и страницы, для этого обычно используют гет параметры, которые легко интегрировать в линки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы