как сортировать товары и запомнить пользовательский способ сортировки при переходе на другие страницы

Доброго времени суток всем программистам!

Подскажите пожалуйста как решить следующую задачу на РНР/SQL: 1/ на странице интернет-магазина выводится список товаров в нем, 2/ там же - форма для выбора способа сортировки (по цене: а) по возрастанию, б) по убыванию цены, в) по возрастанию кол-ва, г) по убыванию кол-ва) + поле "цена от" + поле "цена до" + кнопка "Применить сортировку",

3/ суть вопроса - если пользователь отсортировал товары, а потом перешул на любую другую страницу сайта и вернулся опять на страницу с товарами - "его "первый" способ сортировки должен "возродиться и автоматически применится"

4/ при этом он опять может менять сортировку как угодно - страница с товарами должна "живо реагировать".

Я сортировку сделал - все работает "как надо". Но вот реализовать пукнты 3/ и 4/ у меня получается "только криво". Я применяю куки - на странице с товарами если нажата кнопка "Применить сортировку" создаю все куки для "не нулевых полей". Если имитирую переход на другую страницы и возврат - "метод куков" срабатывает - товары на странице отсотрированы "как прошлый раз". Но... теперь перестает "адектватно" работать "обычная" сортировка - она срабатыает только после обновления страницы или после вторго клика по кнопке "Применить сортировку". Короче "куки в действии".

Не знаю как придумать код что бы гармонично решить п.3/ и п.4/...

Спасибо за Ваши подсказки!


Ответы (1 шт):

Автор решения: CoderYooda

Если у Вас реактивное приложение и запросы на сервер строятся посредством ajax\axios и тому подобное, то используйте LocalStorage (или SessionStorage) браузера, и при возвращении на страницу с фильтром подставляйте get параметры из LocalStorage https://learn.javascript.ru/localstorage


Вторым решением может быть хранение параметров фильтрации на стороне сервера $_SESSION["filter_param"] и при возвращении на страницу делать редирект на url с параметрами из сессии. https://www.php.net/manual/ru/reserved.variables.session.php


Более продвинутое решение использовать например, memcached или redis... https://www.php.net/manual/ru/book.memcached.php


P.S. Вопрос у вас довольно абстрактный, поэтому и ответ исключительно с советами.

→ Ссылка