2 / 2 / 0
Регистрация: 05.07.2019
Сообщений: 60
|
||||||
1 | ||||||
Как сделать запрос наличия в форме поискового запроса запроса на поиск одноразовым?13.07.2019, 22:57. Показов 1458. Ответов 22
Метки нет (Все метки)
Здравствуйте. У меня проблема. Я PHP изучаю всего несколько месяцев и делаю по совместительству себе свой сайт. Делаю новостную ленту для него с поиском новостей. Поиск уже выдаёт результат запроса, и даже в обратном порядке и с использованием пагинации, НО ПРОБЛЕМА - он выдаёт результат поиска только на первой странице, а на второй и последующих страницах выдаёт сообщение о том, что я не ввёл запрос для поиска - после завершения первой итерации запроса снова запускается условие (if) наличия поискового запроса в форме для него. Как сделать так, чтобы этого не было, а результаты поиска выводились на все страницы пагинатора?
Вот код файла с обработчиком запроса и пагинатором:
0
|
13.07.2019, 22:57 | |
Ответы с готовыми решениями:
22
Поиск по тексту с коллекцией в качестве поискового запроса Название поддомена как целевого поискового запроса Как открыть в браузере страницу с результатами заданного поискового запроса? Перенаправление поискового запроса |
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
|
|
14.07.2019, 01:30 | 2 |
Передавать поисковой запрос методом GET и подставлять его в URL вместе с параметром
page .
1
|
2232 / 1278 / 611
Регистрация: 23.08.2015
Сообщений: 3,228
|
|
14.07.2019, 01:33 | 3 |
Serg019, Поиск и подобные всякие фильтрации делаются не постом, а get-ом. У вас должны оставаться get параметры в адресной строке.
1
|
1261 / 959 / 225
Регистрация: 01.10.2018
Сообщений: 3,713
|
|
14.07.2019, 10:57 | 4 |
Верно. При обработке POST-запроса делается перенаправление методом GET по адресу /search?s=код_запроса[&page=1] и при наличии дополнительных страниц к нему добавляется параметр page (или меняется значение этого параметра). Либо, если поисковый запрос не кодируется (не считая использования "URL-кодировки"), можно делать запрос методом GET напрямую с формы.
Добавлено через 3 минут В первом случае код запроса можно передавать и в пути: /search/код_запроса[?page=1] Добавлено через 9 минут Выбор $count нужно делать с тем же условием отбора, что и в основном запросе к базе данных, если индексация не устроена более сложным образом.
1
|
2 / 2 / 0
Регистрация: 05.07.2019
Сообщений: 60
|
|
14.07.2019, 13:03 [ТС] | 5 |
Да, но как сделать так, чтобы проверка наличия запроса в поисковой форме в случае большого количества результатов самого запроса происходила бы только один раз? Вот в чём суть моего вопроса.
0
|
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
|
|
14.07.2019, 15:01 | 6 |
Serg019, так делать не надо. Просто добавьте поисковой запрос в URL-адреса всех страниц навигации и всё.
0
|
2 / 2 / 0
Регистрация: 05.07.2019
Сообщений: 60
|
|
15.07.2019, 13:45 [ТС] | 7 |
А чем же тогда POST плох и зачем его придумали?
0
|
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
|
|
15.07.2019, 13:47 | 8 |
Serg019, к примеру, если отправить форму с логином и паролем методом GET, то логин и пароль будут видны в URL, в т.ч. в истории браузера. Поэтому в подобных ситуациях лучше использовать POST.
1
|
1261 / 959 / 225
Регистрация: 01.10.2018
Сообщений: 3,713
|
|
15.07.2019, 18:16 | 9 |
POST - основной метод передачи данных на сервер. POST-параметры могут иметь значительно большие размеры, передаваться без кодирования, что имеет большое значение при загрузке файлов на сервер.
0
|
2 / 2 / 0
Регистрация: 05.07.2019
Сообщений: 60
|
|
16.07.2019, 13:59 [ТС] | 10 |
Хорошо. Если это не надо делать, то почему у меня результаты запроса к БД выводятся только на первой странице, а на последующих высвечивается моё сообщение о том, что я не ввёл данные для поиска и больше ничего?
0
|
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
|
|
16.07.2019, 14:05 | 11 |
Serg019, потому что вы не передаёте поисковой запрос на другие страницы.
0
|
1261 / 959 / 225
Регистрация: 01.10.2018
Сообщений: 3,713
|
|
16.07.2019, 17:49 | 12 |
Serg019, я же вам все расписал. "Код запроса" должен присутствовать в адресах всех результирующих страниц. Добавляется/изменяется только параметр page (у результирующих страниц, начиная со второй).
0
|
2 / 2 / 0
Регистрация: 05.07.2019
Сообщений: 60
|
|
17.07.2019, 13:47 [ТС] | 13 |
Это я понял. А как он передаётся на последующие страницы? Я не понимаю.
0
|
1261 / 959 / 225
Регистрация: 01.10.2018
Сообщений: 3,713
|
|
17.07.2019, 18:09 | 14 |
Просто наследуйте в ссылках этот параметр. Естественно, если он проходит валидацию при обработке текущего запроса.
0
|
2 / 2 / 0
Регистрация: 05.07.2019
Сообщений: 60
|
|||||||||||||||||||||
17.07.2019, 18:42 [ТС] | 15 | ||||||||||||||||||||
Вот изменённая версия первоначального кода вместе с формой для поиска:
Да, да. В файле-источнике запроса тоже есть пагинация, но В НЁМ ВСЁ РАБОТАЕТ и запрос на вторую и далее страницу пагинатора проходит. В файле-приемнике где-то происходит обнуление? Может в if-фе? Добавлено через 9 минут var_dump ($count) в файле-приемнике на первой странице выдачи запроса показывает, что в этой переменной находится 21 ID-значение, соответствующее количеству совпадающих с запросом строк БД (что верно). На второй же странице выдачи запроса - уже в нём значение NULL. Почему? Не понимаю.
0
|
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
|
||||||
17.07.2019, 19:02 | 16 | |||||
Вы не подставляете поисковый запрос в URL.
Прочитайте ещё раз внимательно все ответы. Вам нужно подставлять поисковой запрос в URL. Подставлять в URL. Примерно так:
0
|
1261 / 959 / 225
Регистрация: 01.10.2018
Сообщений: 3,713
|
|
17.07.2019, 19:05 | 17 |
И именовать COUNT(*) не обязательно. Выбирать значение из массива можно по нулевому индексу (только используйте соответствующую mysqli-функцию) или просто как значение первого (единственного) элемента массива.
0
|
2 / 2 / 0
Регистрация: 05.07.2019
Сообщений: 60
|
||||||
17.07.2019, 20:30 [ТС] | 18 | |||||
Извините, пожалуйста, но на эту строчку (<a href="?page=15&form1=$_GET['form1']">15</a>)
ругается парсер - выдаёт синтаксическую ошибку "syntax error, unexpected '=' in C:\xampp\htdocs\My saits\My first websaits\search2.php on line 148" . У меня PHP 5.6.20. У меня:
0
|
1261 / 959 / 225
Регистрация: 01.10.2018
Сообщений: 3,713
|
|
17.07.2019, 20:51 | 19 |
Это вам для примера написали, а не для копипаста
У вас должна быть специальная функция для сборки адреса. Или начните хотя бы с использования стандартных функций. Конкретно в показанном коде может фигурных скобок не хватать. Но оно вам и не нужно. Шаблоны по-другому пишутся. Отделите обработку входных параметров и основную логику (включая выполнение запросов к базе данных) от шаблонов.
0
|
2232 / 1278 / 611
Регистрация: 23.08.2015
Сообщений: 3,228
|
||||||
17.07.2019, 21:26 | 20 | |||||
Serg019,
0
|
17.07.2019, 21:26 | |
17.07.2019, 21:26 | |
Помогаю со студенческими работами здесь
20
Фильтрация поискового запроса Как сделать гибкий фильтр запроса. Или множественный запрос Получить результаты поискового запроса Получить изображение с поискового запроса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |