С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для strongK
1 / 1 / 2
Регистрация: 01.02.2014
Сообщений: 65

"Поиск не дал результатов" в скрипте поиска по сайту

05.10.2014, 13:45. Показов 3681. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Пишу скрипт поиска по сайту, не могу сделать что бы выводилась надпись "поиск не дал результатов" если искомая фраза отсутствует . Пытаюсь сделать с помощью if (mysql_num_rows ($result)>0) else, но почему то не работает.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?php
/* проверяем что бы запрос был только с формы ввода поиска */
$knopka = $_POST['knopka'];
if (isset($knopka))
{
 
/* ловим поисковый запрос и записываем в переменую */
$fraza = $_POST['query'];
 
/* проверяем $fraza пустая или меньше 4 символов*/
if (empty ($fraza) or strlen ($fraza) <4 or strlen ($fraza) >22)
{
exit("<p><strong><font color='red'>Поисковый запрос не введён или он менее 4-х символов либо превышает 22 символа.</font></strong><p>");
}
 
/* проверяем $fraza добавляем слеши перед кавычками, чтобы они стали в виде escape-последовательности,
// например ' замениться на ', " замениться на "  */
$fraza=addslashes($fraza);
 
// заменяем все специальные символы эквивалентом 
$fraza=htmlspecialchars ($fraza);
 
/* проверяем $fraza обрезаем все символы кроме русских букв и цифр*/
if (preg_match("/[^а-я0-9]/i",$fraza)) 
{
exit("<p><strong><font color='red'>К сожелению поиск не дал результатов. Попробуйте изменить или сократить Ваш запрос</font></strong><p>");
}
 
/* проверяем $fraza удаляем случайные пробелы*/
$fraza=trim($fraza);
 
$query = trim($query); 
$query = mysql_real_escape_string($query);
$query = htmlspecialchars($query);
 
$query = "SELECT poster, nazvanie, godvihoda, strana, novost, ganr, podrobno FROM news WHERE nazvanie LIKE '%$fraza%';";
 
$query = mysql_query($query);
while($result = mysql_fetch_assoc($query))
 
/* если в строке значение больше 0 */
if  (mysql_num_rows ($result)>0)
{
 
/* то выводим найденный результат */
printf ("
  <div class='new'>
  <div class='new-poster'><img src='/kadrs_images/images_poster/%s'></div> 
  <div class='new-nazvanie-filma'>%s</div> 
 
  <div class='new-god'>Выход:&nbsp;&nbsp;<font color='#000066'>%s год</font></div>
  
  <div class='new-ganr'>Жанр:&nbsp;&nbsp;&nbsp;&nbsp;<font color='#000066'>%s</font></font></div> 
  
  <div class='new-strana'>Страна:&nbsp;<font color='#000066'>%s</font></div> 
   
  <div class='new-opisanie-filma'> %s</div>
  
  <div class='new-podrobnee'><a href='%s'>узнать подробнее >></a></div></div>", 
  $result["poster"], $result["nazvanie"], $result["godvihoda"],$result["ganr"], $result["strana"],  $result["novost"], $result["podrobno"]);
}
 
/* иначе выводим  */
else
{
echo "Поиск не дал результатов";
}
}
else exit("<p><strong><font color='red'>Вы обратились к поиску по сайту напрямую, без запроса.</font></strong><p>");
?>
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.10.2014, 13:45
Ответы с готовыми решениями:

Поиск не дал результатов: URIs not supported
django.db.utils.NotSupportedError: URIs not supported The above exception was the direct cause of the following exception: ...

Автоматизация поиска по сайту и обработки результатов
Доброго времени суток, есть сайт на котором реализована система поиска по БД. Я задолбался уже все искать вручную… Все что нужно...

Варочная панель Whirlpool AKT 860. При включении выгорают резисторы R101 и R102. Поиск схемы результатов не дал
Был скачек напряжения. Выгорели силовые (защитные резисторы), был заменён диодный мост. Конденсаторы в порядке. Включил, снова коротыш и...

5
 Аватар для UchihaSV
285 / 234 / 113
Регистрация: 08.06.2013
Сообщений: 725
05.10.2014, 19:45
Лучший ответ Сообщение было отмечено strongK как решение

Решение

У тебя же сначала идет выборка из бд удовлетворяющих данных твоему запросу, и потом перебор всех найденных массивов значений и потом для каждого такого массива ты проверяешь больше ли нуля найдено значений для этого массива. Не кажется ли тебе это бредом?
Нужно это проверку делать не для каждого найденного массива, а для самого ресурса, перед превращением его в массивы:
PHP
1
2
3
4
5
6
7
8
9
10
...
$query = mysql_query($query);
if  (mysql_num_rows($query)>0) {
    while($result = mysql_fetch_assoc($query)) {
        ...
    }
}
else {
    echo "Поиск не дал результатов";
}
1
15 / 8 / 6
Регистрация: 12.03.2014
Сообщений: 22
05.10.2014, 20:07
Если я верно понял вашу идею.
То сделать нужно вот так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$queryResult = mysql_query( $query );
if ( mysql_num_rows( $queryResult ) > 0 )
{
    while ( $result = mysql_fetch_assoc( $queryResult ) )
    {
        // Выводим данные из массива $result.
    }
}
else
{
    // пишем что запрос не дал результата
}
?>
Дело в том что вы из функции mysql_fetch_assoc() получаете массив, а после пытаетесь передать его функции mysql_num_rows(), которой надо передавать именно те данные что вам вернула функция mysql_query(), она возвращает "ресурс" из которого другие функции работающие с базой данных, могут получат требуемые результаты.
Плюс месторасположение условий было не совсем верным.

Думаю в выше предоставленном варианте, все должно заработать
1
05.10.2014, 20:11

Не по теме:

NR55RU, зачем повторяться? =)

0
05.10.2014, 20:14

Не по теме:

UchihaSV, Так когда начал писать ответа не было, а пока отходил чаю налить, пришел перечитал, ткнул ответить а тут уже и ответ есть :)

0
 Аватар для strongK
1 / 1 / 2
Регистрация: 01.02.2014
Сообщений: 65
05.10.2014, 23:44  [ТС]
UchihaSV и NR55RU, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.10.2014, 23:44
Помогаю со студенческими работами здесь

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

поиск по сайту. Строка поиска: субклассинг === ошибка :(
Не работает поиск по сайту. Строка поиска: субклассинг в результате получил ошибку вместо ссылочек :(

Живой поиск - вывод результатов поиска
Доброго времени суток. Есть живой поиск, все работает, нужно что бы на этой же странице выводились результаты поиска. Есть 3 поля...

Алгоритм поиска, индексы, оптимизация. поиск по сайту знакомств
Есть сайт знакомств с БД по которой осуществляется поиск собеседника по этим полям: - возраст(tinyint) (из формы поиска почти всегда...

Поиск по данным xm и вывод результатов поиска на сайт
Подскажите, пожалуйста, скрипт для поиска элементов по xml-файлу и выводу результатов поиска на сайт. Есть xml-файл с данными объектов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru