Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275

Как реализовать поиск на сайте по всей стране и по городам?

25.02.2017, 07:38. Показов 817. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всем привет!...

делаю поиск на сайте и выдает мне ошибку Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in Z:\home\uslugi\www\view_search.php on line 45

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
<?php
 session_start();
 include("include/bd.php");
 if (isset($_POST['submit_s'])) {$submit_s = $_POST['submit_s'];}
 if (isset($_POST['search']))   {$search = $_POST['search'];}
 if (isset($_POST['city']))     {$city = $_POST['city'];}
 
if (isset($submit_s)) {
 if (empty($search) or strlen($search) < 4) {exit("Поисковый запрос не введен, либо он менее 4-х символов.");}
 $search = trim($search);
 $search = stripslashes($search);
 $search = htmlspecialchars($search);
}
else
{
 exit("<p>Вы обратились к файлу без необхадимых параметров.</p>");
}
?>
...
<?php 
        $result33 = mysql_query("select `id`,`title`,`city`,`text`,`img`,`date`,`raiting` from `date` where `title` like '%$search' and `city`=".$city."",$db); - вот она 45 строчка.
if (!$result33)
{
echo "<p>Запрос из выборки базы данных не прошел. Напишите об этом администратору. <em><strong>Код ошибки:</strong></em></p>";
//exit(mysql_error());
}
if (mysql_num_rows($result33) > 0) {
    $myrow33 = mysql_fetch_array($result33);
    do
    {
    printf ("<tr>
    <td width='30%%' rowspan='4'><div align='center'><img src='%s' width='100' height='100'></div></td>
    <td colspan='2' valign='top'><strong>Наименование:</strong> <a href='view_post.php?id=%s'>%s</a></td>
  </tr>
  <tr>
    <td colspan='2' valign='top'><strong>Город:</strong> %s</td>
  </tr>
  <tr>
    <td colspan='2' valign='top'><div><strong>Краткое описание:</strong> %s</div></td>
  </tr>
  <tr>
    <td width='30%%' valign='top'><strong>Дата публикования:</strong> %s</td>
    <td width='30%%' valign='top'><strong>Рейтинг:</strong> %s</td>
  </tr>",$myrow33["img"],$myrow33["id"],$myrow33["title"],$myrow33["city"],$myrow33["substring(`text` from 1 for 100)"],$myrow33["date"],$myrow33["raiting"]);
}
while ($myrow33 = mysql_fetch_array($result33));    
    
} else /*ошибка тут*/ {
    echo "<p>Информация по Вашему запросу не найдена!...</p>";
    //exit();
} 
?>
если делать поиск по следующему запросу
SQL
1
SELECT id,title,city,text,img,DATE,raiting FROM DATE WHERE title $search AND city="$city"
то все находит и то находит по полному названию заголовка, а хотелось бы по тому же одному слову.

и еще видите у меня есть возможность искать по городу. у меня там есть раздел - поиск по всей стране.
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
<form name="form1" method="post" name="post_s" action="view_search.php"><font color="#FFFFFF"><strong>Поиск:</strong></font>
           <input name="search" type="text" size="50" maxlength="40">
                      <select name="city">
                      <option>Поиск по всей стране</option>
           <?php
            $result = mysql_query("select city from city order by city",$db);
if (!$result)
{
echo "<p>Запрос из выборки базы данных не прошел. Напишите об этом администратору. <em><strong>Код ошибки:</strong></em></p>";
exit(mysql_error());
}
if (mysql_num_rows($result) > 0){
$myrow = mysql_fetch_array($result);
do
{
printf ("<option>%s</option>",$myrow["city"]);
}
while ($myrow = mysql_fetch_array($result));
}
else
{
echo "<p>Информация по запросу не может быть извлечина, в таблице нет записей!</p>";
exit();
}
           ?>
           </select>
<input type="submit" name="submit_s" value="Поиск" class="submit">
</form>
вот теперь как реализовать поиск по всей стране и по городам?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.02.2017, 07:38
Ответы с готовыми решениями:

Как правильно реализовать поиск на сайте?
Если у вас есть статьи по реализации несложного поиска, скиньте пожалуйста. У меня пока есть код: $se= @$_GET; if($se) $search =...

как сделать чтобы один блок DIV со страницы index отображался на всех остальных страницах сайта?
как отобразить определенный блок div на всех страницах сайта, чтобы написать в блоке див на странице index.php и все написаное отобразилось...

Понять как реализовать поиск на сайте GET > POST - MOD REWRITE
Вообщем есть на сайте форма поиска, Форма поиска отправляет GET запрос, При отправки GET запроса URL содержит к примеру :...

13
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
25.02.2017, 08:48
Строки нужно брать в кавычки:
PHP
1
$result33 = mysql_query("select `id`,`title`,`city`,`text`,`img`,`date`,`raiting` from `date` where `title` like '%$search' and `city`='{$city}'", $db);
Про $city говорю.
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.02.2017, 08:57  [ТС]
Para bellum, к сожелению ничего не находит. вот например у меня есть запись в базе - оценка всех видов имущества. он находит запись по полному наименованию или по слову имущества и так же происходит по всем записям которые есть в БД.
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
25.02.2017, 09:03
like '%$search' знака % в конце нет.

Добавлено через 21 секунду
like '%$search%'
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.02.2017, 09:22  [ТС]
Пифагор, спасибо большое за поправку! заработало.
а такой момент - по городам поиск работает, а если мне надо сделать поиск по всей стране?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
25.02.2017, 09:27
Цитата Сообщение от kuzmich-kz Посмотреть сообщение
к сожелению ничего не находит
Так я и не сказал, что будет искать. Нужно же было исправить ошибку:
Цитата Сообщение от kuzmich-kz Посмотреть сообщение
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in Z:\home\uslugi\www\view_search.php on line 45
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.02.2017, 10:54  [ТС]
Para bellum, исправил! работает поиск. сейчас другая головная боль. поиск по городам работает, но у меня еще есть поиск по всей стране. вот думаю как осуществить и мыслей нету
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
25.02.2017, 12:22
kuzmich-kz, уберите
SQL
1
AND `city`='{$city}'
И будет искать независимо от городов. Затем сделайте условие, если значение city было указано -- дополняйте запрос. Так как-то:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
$where = [
    "`title` like '%$search'",
];
 
# Если указан город
if (isset($_POST['city'])) {
    $city = mysql_real_escape_string($_POST['city']);
    
    # Дополняем запрос
    $where[] = "`city`='{$city}'";
}
 
$where = implode(' AND ', $where);
 
$result33 = mysql_query("select `id`,`title`,`city`,`text`,`img`,`date`,`raiting` from `date` where {$where}", $db);
И ещё: like в таком виде %значение% будет делать при каждом запросе поиск по всем записям, даже если с них нет ничего похожего. Что неприемлемо, если в таблице много записей.

Поэтому рекомендую искать город по его началу: значение%. В таком случае можно будет сделать индекс на поле city и like не будет пробегать по всем записям.

Вот, посмотрите: https://ruhighload.com/post/%D... 0%B2+MySQL
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.02.2017, 12:55  [ТС]
Para bellum, выдает ошибку на эту строку
PHP
1
    $where = ["`title` like '%$search'"];
если даже просто закоментировать эту строку и начать заново поиск не выбирая город, то он ничего не находит, а если выбираем город - то находит

Добавлено через 8 минут
сама ошибка
PHP
1
Parse error: syntax error, unexpected '[' in Z:\home\uslugi\www\view_search.php on line 39
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
25.02.2017, 13:17
Это из-за того, что Вы используете версию PHP ниже 5.4
Исправьте так:
PHP
1
$where = array("`title` like '%$search'");
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.02.2017, 13:55  [ТС]
Para bellum, исправил и все равно ничего не находит
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
25.02.2017, 13:56
После
PHP
1
$where = implode(' AND ', $where);
Впишите:
PHP
1
var_dump($where);
И скажите, что выведет.
0
2 / 2 / 0
Регистрация: 17.12.2013
Сообщений: 275
25.02.2017, 14:05  [ТС]
выдал ошибку
array(2) { [0]=> string(67) "`title` like '%оценка всех видов имущества'" [1]=> string(9) "`city`=''" }
Запрос из выборки базы данных не прошел. Напишите об этом администратору. Код ошибки:


Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in Z:\home\uslugi\www\view_search.php on line 56
Информация по Вашему запросу не найдена!...

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
    <?php 
     $where = array("`title` like '%$search'");
 
# Если указан город
if (isset($_POST['city'])) {
    $city = mysql_real_escape_string($_POST['city']);
    
    # Дополняем запрос
    $where[] = "`city`='{$city}'";
}
 
var_dump($where);
        $result33 = mysql_query("select `id`,`title`,`city`,`text`,`img`,`date`,`raiting` from `date` where {$where}",$db);
if (!$result33)
{
echo "<p>Запрос из выборки базы данных не прошел. Напишите об этом администратору. <em><strong>Код ошибки:</strong></em></p>";
//exit(mysql_error());
}
if (mysql_num_rows($result33) > 0) { - вот самая 56 строка
    $myrow33 = mysql_fetch_array($result33);
    do
    {
    printf ("<tr>
    <td width='30%%' rowspan='4'><div align='center'><img src='%s' width='100' height='100'></div></td>
    <td colspan='2' valign='top'><strong>Наименование:</strong> <a href='view_post.php?id=%s'>%s</a></td>
  </tr>
  <tr>
    <td colspan='2' valign='top'><strong>Город:</strong> %s</td>
  </tr>
  <tr>
    <td colspan='2' valign='top'><div><strong>Краткое описание:</strong> %s</div></td>
  </tr>
  <tr>
    <td width='30%%' valign='top'><strong>Дата публикования:</strong> %s</td>
    <td width='30%%' valign='top'><strong>Рейтинг:</strong> %s</td>
  </tr>",$myrow33["img"],$myrow33["id"],$myrow33["title"],$myrow33["city"],$myrow33["substring(`text` from 1 for 100)"],$myrow33["date"],$myrow33["raiting"]);
}
while ($myrow33 = mysql_fetch_array($result33));    
    
} else /*ошибка тут*/ {
    echo "<p>Информация по Вашему запросу не найдена!...</p>";
    //exit();
} 
?>
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
25.02.2017, 14:13
Цитата Сообщение от kuzmich-kz Посмотреть сообщение
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean
А это откуда появилось? Я просил не заместо implode вставить ту строку, а после implode.

Попробуйте так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
$where = array(
    "`title` like '%{$search}%'",
);
 
# Если указан город
if (!empty($_POST['city'])) {
    $city = mysql_real_escape_string($_POST['city']);
    
    # Дополняем запрос
    $where[] = "`city`='{$city}'";
}
 
$where = implode(' AND ', $where);
 
$result33 = mysql_query("select `id`,`title`,`city`,`text`,`img`,`date`,`raiting` from `date` where {$where}", $db);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.02.2017, 14:13
Помогаю со студенческими работами здесь

Как перенаправить посетителя сайта на страницу, соответствующую его городу?
Здравствуйте! Как перенаправить посетителя сайта на страницу, соответствующую его городу? Есть ли уже готовые скрипты, которые можно просто...

Как это код вставить на страницу на сайте?
Как это код вставить на страницу на сайте? // Получаем строку, которую нам передали в параметрах $string = $_SERVER; if (!$string)...

Как реализовать ввод данных в форму сайта и выводом на страницу
Доброго времени суток дорогие специалисты. Помогите решить задачу. Задача состоит в следующем. Пристутствует форма на сайте с n-...

Как сделать cookie для всех страниц сайта?
Доброго времени суток. У меня такая ситуация: Есть сайт, допустим &quot;test.ru&quot; и в корне сайта есть папка &quot;pages&quot;, а в этой...

Как вставить плагин СТРАНИЦА от Фейсбука на обычный сайт, без движка?!
Всем привет! Клиент заказал на одну из страниц его сайта вставить его страницу из Фейсбука. Сайт обычный, на чистом коде. Ну ладно,...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru