Сведения о вопросе

SOON

08:52, 1st August, 2020

Теги

PHP    

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

Просмотров: 386   Ответов: 13

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


Имеется база данных, предположим, автомобилей. По поисковому запросу, состоящему примерно из 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 запрос и постоянно его передавать дальше. Хотя как-то это не очень красиво…



  Сведения об ответе

PROGA

17:34, 11th August, 2020

кукис ||
сессии ||
output_add_rewrite_var()


  Сведения об ответе

PROGA

08:10, 9th August, 2020

Запоминаем в сессию параметры, чтобы их можно было потом извлечь по числовому ключу, а ключ таскаем за собой
получиться

$_SESSION['search_history'] = array(
1 => "?page=4¶m1=21¶m2=33¶m3=13&...¶m44=123"
, 2 => «данные другого поиска»
, итд
)

Если нужно вернуться на страницу поиска, просто извлекаем из массива по ключу значение.


  Сведения об ответе

LAST

21:04, 12th August, 2020

а что если записывать параметры поиска в куки? и в последствии обрабатывать их


  Сведения об ответе

COOL

14:59, 14th August, 2020

Сессии, куки?


  Сведения об ответе

crush

07:45, 10th August, 2020

>Выше отписался о том что это не подходит, так как в рамках одной сессии может быть N-количества результатов поиска

Сессии имхо оптимальный вариант. а чем мешает хранить в сессии массив (хеш) с результатами поиска ?? или если их не нужно несколько держать переменную и при каждом изменении поискового запроса просто перетирать ее ???


  Сведения об ответе

PHPH

13:35, 14th August, 2020

1. взять «?page=4&param1=21&param2=33&param3=13&...&param44=123»
2. пропустить через base64
3. запихать в виде hidden-поля в страницу
4. …
5. Profit!


  Сведения об ответе

DINO

21:40, 14th August, 2020

Единственное, что пришло в голову, в плане раздельности вкладок одного браузера — это SessionStorage. Но это уже JS и своими руками. Да и не везде работает еще.


  Сведения об ответе

davran

21:06, 1st October, 2020

А что если все это держать в скрытом поле формы заказа? И брать значение с Referer?


  Сведения об ответе

LAST

06:54, 25th August, 2020

можно использовать AJAX и передавать параметры через POST


  Сведения об ответе

+-*/

13:02, 6th August, 2020

В вашем юзкейсе описана ситуация, когда лучше всего использовать AJAX для отправки заявки, а возврат к поиску через js:window.history


  Сведения об ответе

+-*/

07:25, 5th August, 2020

Варианты с AJAX отпадают сразу же ибо не кошерно, так как требуется работа и с мобильными браузерами, а их не все поддерживают;
Вариант с различными запросами в сессии самый интересный, и я о нем думал, но все-таки, при некоторой паранойе, решил что это отпадает, так как может быть открытых предположительно 20-30 окон поиска и тогда вылетим за рамки ограничений сессии (если не простой сайт), а хотелось некоторой универсальности…
Спасибо за ответы, но пока что я не увидел ни одного приемлимого решения.
Не верю что никто не задумывался о прослойке какой-то.


  Сведения об ответе

#hash

00:52, 22nd August, 2020

Обработчик поиска формирует результативный набор записей, сохраняет их (целиком или только id) в сессии с ключом (там же сохранить и параметры запроса можно, например md5 от строки поиска и редиректит на что-то вроде /search?key=hash — по хистори можно ходить какое-то время да и на бд нагрузка меньше


  Сведения об ответе

SILA

00:14, 13th August, 2020

то есть ваша форма обрабатывается этой же страницей? или там идёт обращение к другой и потом перенаправление обратно?


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться