Возврат к результатам поиска. (PHP)?

Не хочется изобретать велосипед, но толком решения найти немогу в сети. Поэтому пока не начал писать свое, хотел бы спросить у хабранаселения.


Имеется база данных, предположим, автомобилей. По поисковому запросу, состоящему примерно из 4-5 полей выводим список результатов, далее переходим на 4 страницу в результатах поиска. В итоге в URL у нас получается нечто подобное:

www.autosite.com/catalog/?page=4&param1=21&param2=...


На этой странице мы находим что нам нужно, и переходим на просмотр этого объекта:

www.autosite.com/view/id10001/


На странице просмотра этого объекта, необходимо выполнить, например, отправку заявки через форму на этот объект. Т.е. перезагрузить еще раз страницу.


Отсюда вопрос:

Как реализовать более корректно возврат к результатам поиска, т.е. таскание за собой постоянно в URL строку:

?page=4&param1=21&param2=33&param3=13&...&param44=123

Причем могут постоянно изменяться параметры поиска, добавляться-удаляться, и составление и таскание за собой этих параметров как-то не особо удобно. Пока что единственным вариантом вижу написание прослойки, которая будет обрабатывать любой входящий URL запрос и постоянно его передавать дальше. Хотя как-то это не очень красиво…
  • Вопрос задан
  • 3048 просмотров
Пригласить эксперта
Ответы на вопрос 12
@Nc_Soft
кукис ||
сессии ||
output_add_rewrite_var()
Ответ написан
zlobin
@zlobin
Занимаюсь программированием на PHP
а что если записывать параметры поиска в куки? и в последствии обрабатывать их
Ответ написан
Комментировать
alexxxst
@alexxxst
Сессии, куки?
Ответ написан
LIAL
@LIAL
>Выше отписался о том что это не подходит, так как в рамках одной сессии может быть N-количества результатов поиска

Сессии имхо оптимальный вариант. а чем мешает хранить в сессии массив (хеш) с результатами поиска ?? или если их не нужно несколько держать переменную и при каждом изменении поискового запроса просто перетирать ее ???
Ответ написан
Комментировать
@shsmad
1. взять «?page=4¶m1=21¶m2=33¶m3=13&...¶m44=123»
2. пропустить через base64
3. запихать в виде hidden-поля в страницу
4. …
5. Profit!
Ответ написан
Комментировать
Единственное, что пришло в голову, в плане раздельности вкладок одного браузера — это SessionStorage. Но это уже JS и своими руками. Да и не везде работает еще.
Ответ написан
Комментировать
Radik_Wind
@Radik_Wind
А что если все это держать в скрытом поле формы заказа? И брать значение с Referer?
Ответ написан
Комментировать
Desiderata
@Desiderata
можно использовать AJAX и передавать параметры через POST
Ответ написан
Комментировать
SowingSadness
@SowingSadness
web-разработчик
В вашем юзкейсе описана ситуация, когда лучше всего использовать AJAX для отправки заявки, а возврат к поиску через js:window.history
Ответ написан
Комментировать
Vertex
@Vertex Автор вопроса
Варианты с AJAX отпадают сразу же ибо не кошерно, так как требуется работа и с мобильными браузерами, а их не все поддерживают;
Вариант с различными запросами в сессии самый интересный, и я о нем думал, но все-таки, при некоторой паранойе, решил что это отпадает, так как может быть открытых предположительно 20-30 окон поиска и тогда вылетим за рамки ограничений сессии (если не простой сайт), а хотелось некоторой универсальности…
Спасибо за ответы, но пока что я не увидел ни одного приемлимого решения.
Не верю что никто не задумывался о прослойке какой-то.
Ответ написан
Комментировать
Обработчик поиска формирует результативный набор записей, сохраняет их (целиком или только id) в сессии с ключом (там же сохранить и параметры запроса можно, например md5 от строки поиска и редиректит на что-то вроде /search?key=hash — по хистори можно ходить какое-то время да и на бд нагрузка меньше
Ответ написан
Cheese
@Cheese
то есть ваша форма обрабатывается этой же страницей? или там идёт обращение к другой и потом перенаправление обратно?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы