Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Сбрасывает поиск.


Автор: Predator199 1.12.2012, 22:51
Поздно, не могу сообразить. Вообщем применил поиск, постраничная навигация и результат верен. К примеру выбрал все записи с =1.  Их у меня вышло на 2 страницы. При переходе на следующую страницу, у меня сбрасывает и я просматриваю все результаты, а не те что мне выдал поиск на 1 странице. Какой из этого есть выход?

Автор: Arantir 2.12.2012, 02:33
Ошибка в во втором файле третьей папки в 48 строке на 11 символе. 
Ваш экстрасенс, умеющий читать код на расстоянии.


У вас ссылки на соседние страницы корректно сделаны? Может все ссылки просто ведут на первую?

Автор: Predator199 2.12.2012, 08:11
Сылки сделаны правильно, переходит на ту страницу которую нажал.
Код

&pm=sear&page=2

Как мне сохранить тот запрос, тот критерий по которому сделал поиск.

Автор: Guedda 2.12.2012, 09:23
Клади их в сессию, либо GET-параметром.

Автор: Predator199 2.12.2012, 09:44
Решил попробовать с сессией. 
Прописываю:
Открываю сессию
Код

session_start();

Передаю переменную в сессию
Код

$_SESSION['count'] = $postcontr;

$_SESSION['count']==1
 Перехожу на 2 страницу, php читает код заново. Сессию открывает по новому и переменная выпадает(не сохраняется).
 Безопастно ли это?

Автор: Arantir 2.12.2012, 10:03
Каким способом вы осуществляете поиск?
Может сделаете как гугл - все параметры поиска оставьте в ссылке (GET)?
Нет смысла выбирать 2 страницы результатов сразу. web-приложения на скриптовых языках живут от запроса до ответа. Если вы сразу не выдали пользователю вторую страницу, то она канула в вечность. В следующий раз ее надо будет генерировать заново.

Если у вас, например, 100 результатов, то просто выдавайте на первой странице 1-50, а на второй 51-100 результаты. Если вы ищете в БД, то такое легко сделать. А количество результатов можно подсчитать без получения результатов, например через COUNT().

Автор: Predator199 2.12.2012, 10:26
У меня 50 результатов поиска, 25 на каждой странице. 1-стр ок, при отправке формы в запрос подставилось (к примеру stat=1).При переходе на 2 страницу  (stat=1) нет в запросе так как не была отправлена форма. Через Get проще, хотелось бы понять поему у меня не получается сохранить переменную в сессии.

Автор: Predator199 2.12.2012, 11:59
Ладно, пока сессии  плохо знаю, сделаю через get. 
На будущее:
Собираюсь сделать "человекопонятный" url, смогу ли я как то спрятать все эти get данные(поиска)? Через хатссе?

Автор: Arantir 2.12.2012, 12:15
Цитата(Predator199 @  2.12.2012,  10:59 Найти цитируемый пост)
Собираюсь сделать "человекопонятный" url, смогу ли я как то спрятать все эти get данные(поиска)? Через хатссе?
Нет. mod_rewrite позволяет 2 вещи - передать информацию запроса в скрипт или сделать редирект на другой адрес (ссылку). Если параметров поиска не будет в ссылке, то и взяться им неоткуда, кроме как из POST запроса.

Чем вас не устраивает "example.com/search?param1=text1&param2=text2"? 
Это же поиск, а не статическая и всегда одинаковая страничка типа "example.com/articles/what-the-f.html".
Если поиск с одним параметром, то можно и так "example.com/search/текст_для_поиска".

Такой мощный ресурс как google оставляет десятиметровые get-ссылки как раз для того, чтобы, во-первых, их можно было скопировать и кому-то скинуть, а во-вторых, чтобы их можно было динамически создавать, например, как это делает браузер при вводе в небольшое поле вверху справа.

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

Небольшая строка запроса (что после "?") в конце ЧПУ ссылки - это не есть плохо, если востребовано. Если вы обратите внимание, то заметите, что это используется очень даже много где. В особенности в случае скрипта поиска по сайту.

Автор: skyboy 2.12.2012, 12:35
Цитата(Guedda @  2.12.2012,  08:23 Найти цитируемый пост)
Клади их в сессию

а) на страницу с результатами нельзя будет сделать закладку, ссылку нельзя будет "отправить другу"
б) для двух отдельных вкладках с результатами разных поисков на сервере будет одна сессия  smile

Добавлено через 2 минуты и 19 секунд
Цитата(Predator199 @  2.12.2012,  10:59 Найти цитируемый пост)
На будущее:

слушай, оставь ты будущее в покое. если у тебя дедлайн на уже готовый сайт не через неделю истекает — делай постепенно

Автор: Aliance 3.12.2012, 11:02
Цитата(Guedda @  2.12.2012,  10:23 Найти цитируемый пост)
Клади их в сессию, либо GET-параметром. 

лучше в гет все же, чтобы ссылку можно было дать кому-то. либо что-то аля хеша в гете, для восстановления по нему из внутр. хранилища данных.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)