Сергей К.
1649 сообщений
#14 лет назад
Crist, как крайний метод можно использовать и это. Посмотрим если нет лучше метода.
Роман Беляев
16382 сообщения
#14 лет назад
Цитата ("WebDesignStudio"):
Не вариант. Результатов поиска может быть больше чем одна страница. Тогда при переходе данные фильтра теряются.


Это по какой такой причине? Ничего не теряется.
Сергей К.
1649 сообщений
#14 лет назад
Ну подумайте. При отправке из формы, все будет хорошо, данные отправляются. А если у нас будет навигация по страницам 1 2 3 .... Это же ссылки. Как в данном случае передать данные из POST? :idea:
Или я пропустил этот урок?
Роман Беляев
16382 сообщения
#14 лет назад
Цитата ("WebDesignStudio"):
Или я пропустил этот урок?

Наверное
Цитата ("WebDesignStudio"):
А если у нас будет навигация по страницам 1 2 3 .... Это же ссылки.

По какой такой причине это обязательно должны быть обычные ссылки? Генерировать через js POST опять и все будет работать. А нет, так можно и просто ссылками - не обязательно же передавать один параметр - идентификатор поиска. Можно вторым параметром передать страницу. Вообще задача тривиальная.
Роман Беляев
16382 сообщения
#14 лет назад
На всякий случай - подробнее. При генерации страницы на стороны сервера строим уникальный идентификатор любым способом. Передаем его на страницу. В форме передаем POST запрос за адрес script.php?i=идентификатор, на стороне сервера получаем данные, пишем в базу с этим идентификатором, результат возвращаем пользователю. При переходе по страницам делаем ссылки script.php?i=идентификатор&p=1, на стороне сервера получаем параметры поиска по его идентификатору из базы, ищем, берем нужную страницу и возвращаем.
В этом месте можно еще и кэширование приделать сразу же. Идентификатор есть, данные есть.
Сергей К.
1649 сообщений
#14 лет назад
Цитата ("frig"):
Можно вторым параметром передать страницу. Вообще задача тривиальная.

Совсем не тривиальная. Результатов поиска может быть больше одной страницы, как я уже говорил, и при переходе по ссылки нужно передать эти параметры. Через яваскрипт, да, можно будет как то передать, но это будет не совсем правильно. В данном случае уже гораздо лучше будет использовать сессии.
А просто через ссылку передать POST данные не возможно. Вряд ли я этот урок пропустил


Цитата ("frig"):
На всякий случай - подробнее. При генерации страницы на стороны сервера строим уникальный идентификатор любым способом. Передаем его на страницу. В форме передаем POST запрос за адрес script.php?i=идентификатор, на стороне сервера получаем данные, пишем в базу с этим идентификатором, результат возвращаем пользователю. При переходе по страницам делаем ссылки script.php?i=идентификатор&p=1, на стороне сервера получаем параметры поиска по его идентификатору из базы, ищем, берем нужную страницу и возвращаем.
В этом месте можно еще и кэширование приделать сразу же. Идентификатор есть, данные есть.

Это способ номер 2, который я описал уже тут
Роман Беляев
16382 сообщения
#14 лет назад
Цитата ("WebDesignStudio"):
это способ номер 2, который я описал уже тут


Это передача данных через POST о которой я говорил.
Сергей К.
1649 сообщений
#14 лет назад
Цитата ("frig"):
Это передача данных через POST о которой я говорил.

это использование базы данных. Это способ номер 2.
Исправил там. GET или POST.
Роман Беляев
16382 сообщения
#14 лет назад
Цитата ("WebDesignStudio"):
это использование базы данных.

Естественно.
Цитата ("WebDesignStudio"):
Это способ номер 2.

В способе номер 2 было написано вообще сложно понять что. Был написан GET и какие образом можно было используя GET сократить ссылку мне не понятно. Объясните?

Цитата ("WebDesignStudio"):
Способ имеет право на жизнь, когда таких комбинаций будет не много. Если параметров большое количество, количество строк тоже будет огромной, естественно скорость будет падать от этого.


В каком месте и каких комбинаций будет много и как из-за этого будет падать скорость?
Сергей К.
1649 сообщений
#14 лет назад
Цитата ("frig"):
когда таких комбинаций будет не много

Например, первый пользователь выберет красная машина 2001 года, бензин а кто то выберет зеленую машину. Параметров таких много еще. Вот что я имел в виду.
В базу будет много записей. Очень много.
Роман Беляев
16382 сообщения
#14 лет назад
Естественно на каждый запрос будет запись. Да, это довольно много, но хранить запрос больше суток смысла нет, так что таблица будет не критичных размеров.
Евгений О.
263 сообщения
#14 лет назад
Цитата ("WebDesignStudio"):
Не вариант. Результатов поиска может быть больше чем одна страница. Тогда при переходе данные фильтра теряются.


Это несложно обойти. В форме поиска Вы пишете, например, такие параметры (я опускаю все возможные детали):

<form method="POST" action="my.script">
<input name="Brand" type="text">
<input name="Color" type="text">
<input name="Page" type="hidden" value=1>
</form>

Тогда, на первой и последующих страницах результата Вы пишете такой код:

<form method="POST" action="my.script">
<input name="Brand" type="hidden" value="$ValueOfBrandFromPreviousPage">
<input name="Color" type="hidden" value="$ValueOfColorFromPreviousPage">
<input name="Page" type="hidden" value=1>
</form>

Разумеется, значения переменных $ValueOfBrandFromPreviousPage и $ValueOfColorFromPreviousPage должны подставляться скриптом на стороне сервера (скрипт, просто, "ретранслирует" полученные от формы поиска параметры), а значение параметра Page должно формироваться программой на JS на странице результатов поиска. Это, пожалуй, будет наиболее простой вариант, базу данных, кеширование и прочие модные чудеса добавить можно будет позже - если в этом возникнет необходимость.
Сергей К.
1649 сообщений
#14 лет назад
Illarion_SA, это то что frig уже описал выше, или нет?
Роман Беляев
16382 сообщения
#14 лет назад
Illarion_SA, проблема в том, что страницу тоже надо будет отправлять через POST, а это уже полюбому js.
Да и вариант с хэшем хорош еще и тем, что запрос получается коротеньким. Не надо каждый раз гонять на сервер все параметры. Вообще вариантов много и все они по своему хороши. Зависит от особенностей применения.
Задача тривиальная. Повторюсь.