Слетает фильтр при клике на другую страницу пагинации
После выбора фильтра, формируется новая пагинация (с правильным числом страниц), однако по клику на любую следующую страницу отфильтрованных элементов фильтр слетает и выводятся все элементы из БД, а не те, которые выбрал фильтром. Нужно как-то обновить ссылки пагинации? Или что можно сделать?
Вот класс пагинации.
Фильтр работает обычным способом - при клике на фильтр Ajax передает в php выбранный фильтр и его значение, php формирует sql запрос и возвращает ответом выбранные элементы из БД. Сразу после выбора фильтра все работает как надо (выводятся только отфильтрованные элементы из БД), но стоит нажать на любую другую страницу в пагинации и фильтр сбивается, и выводятся все элементы из БД, а не только те, которые отфильтровал.
Ответы (2 шт):
Общее решение - вам надо добавлять параметры фильтрации в url при ajax-запросе, и обновлять пагинацию, с помощью того-же jQuery:
$.ajax({
url: 'ajax/some.php',
success: function(data){
history.pushState('data', '', 'https://site.ru/?q='+query);
...
$(".pagination-item").attr('href', window.location.href + "&page"+index);
...
}});
Вопрос решен.
Все что нужно было сделать это добавить на страницу, на которой выводятся данные php код, который берет гет параметры и на их основе строит запрос к БД. Например если есть
?price=100 или ?price=100&color=red, то строить запрос
SELECT * FROM table WHERE price = '100' AND color = 'red';