Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
898
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
951
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
941
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1725
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6087
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4398
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Возврат к результатам поиска. (PHP)?
Просмотров: 386
 
Ответов: 13
Не хочется изобретать велосипед, но толком решения найти немогу в сети. Поэтому пока не начал писать свое, хотел бы спросить у хабранаселения.
Имеется база данных, предположим, автомобилей. По поисковому запросу, состоящему примерно из 4-5 полей выводим список результатов, далее переходим на 4 страницу в результатах поиска. В итоге в URL у нас получается нечто подобное:
www.autosite.com/catalog/?page=4¶m1=21¶m2=...
На этой странице мы находим что нам нужно, и переходим на просмотр этого объекта:
www.autosite.com/view/id10001/
На странице просмотра этого объекта, необходимо выполнить, например, отправку заявки через форму на этот объект. Т.е. перезагрузить еще раз страницу.
Отсюда вопрос:
Как реализовать более корректно возврат к результатам поиска, т.е. таскание за собой постоянно в URL строку:
?page=4¶m1=21¶m2=33¶m3=13&...¶m44=123
Причем могут постоянно изменяться параметры поиска, добавляться-удаляться, и составление и таскание за собой этих параметров как-то не особо удобно. Пока что единственным вариантом вижу написание прослойки, которая будет обрабатывать любой входящий URL запрос и постоянно его передавать дальше. Хотя как-то это не очень красиво…
Запоминаем в сессию параметры, чтобы их можно было потом извлечь по числовому ключу, а ключ таскаем за собой
получиться
$_SESSION['search_history'] = array(
1 => "?page=4¶m1=21¶m2=33¶m3=13&...¶m44=123"
, 2 => «данные другого поиска»
, итд
)
Если нужно вернуться на страницу поиска, просто извлекаем из массива по ключу значение.
>Выше отписался о том что это не подходит, так как в рамках одной сессии может быть N-количества результатов поиска
Сессии имхо оптимальный вариант. а чем мешает хранить в сессии массив (хеш) с результатами поиска ?? или если их не нужно несколько держать переменную и при каждом изменении поискового запроса просто перетирать ее ???
Варианты с AJAX отпадают сразу же ибо не кошерно, так как требуется работа и с мобильными браузерами, а их не все поддерживают;
Вариант с различными запросами в сессии самый интересный, и я о нем думал, но все-таки, при некоторой паранойе, решил что это отпадает, так как может быть открытых предположительно 20-30 окон поиска и тогда вылетим за рамки ограничений сессии (если не простой сайт), а хотелось некоторой универсальности…
Спасибо за ответы, но пока что я не увидел ни одного приемлимого решения.
Не верю что никто не задумывался о прослойке какой-то.
Обработчик поиска формирует результативный набор записей, сохраняет их (целиком или только id) в сессии с ключом (там же сохранить и параметры запроса можно, например md5 от строки поиска и редиректит на что-то вроде /search?key=hash — по хистори можно ходить какое-то время да и на бд нагрузка меньше
Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться