Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: PHP поиск по БД

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: PHP поиск по БД
Puk
Отправлено: 21 Июня, 2012 - 15:11:01
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)

[+]


Всем привет!

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

Заранее спасибо Хорошо

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include ("../adds/config.php");
  4.  
  5. ?>
  6.  
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  8. <html xmlns="http://www.w3.org/1999/xhtml">
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  11.  
  12. </head>
  13.  
  14. <body>
  15. <form action="all.php" method="post">
  16.  
  17. Название <br>
  18.  
  19. <input type="text" name="nmag" size="60" value="">
  20.  
  21. <input type="submit" name="submit" value="Искать">
  22.  
  23. <input type="reset" name="reset" value="Очистить">
  24.  
  25. </form>
  26.  
  27. <br>
  28. <br>
  29.  
  30. <?PHP
  31.  
  32.  
  33. $query = "SELECT * FROM mag WHERE UPPER(name_mag) LIKE '".strtoupper($_POST['nmag'])."%'";
  34.  
  35. $result = mysql_query($query) or die("Запрос ошибочный");
  36.  
  37. print "<table>\n";
  38.  
  39. while ($line = mysql_fetch_array($result, MYSQL_NUM)) {
  40.  
  41. print "\t<tr>\n";
  42.  
  43. for ($i=1;$i<=1;$i++) { print "\t\t<td><a href=\"lit/lit.php?id=$line[0]\">$line[1]</a></td>\n"; }
  44.                        
  45.  
  46. print "\t</tr>\n";
  47.  
  48. }
  49.  
  50. print "</table>\n";
  51.  
  52. if (!mysql_num_rows($result)) echo "Поиск результатов не дал";
  53.  
  54.  
  55.  
  56. ?>
  57.  
  58.  
  59. </body>
  60. </html>
  61.  
 
 Top
Petro
Отправлено: 21 Июня, 2012 - 15:15:38
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




Сделай условие, если $query == "" то ничего не выводить.


-----
Нет ничего более постоянного, чем временное.
 
 Top
Puk
Отправлено: 21 Июня, 2012 - 15:20:03
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)

[+]


Petro пишет:
$query == ""


Я ботан в этом деле. Пока, что могу ориентироваться и делать выводы только в готовом материале. Как это условие будет выглядеть в "жизни"?
 
 Top
Petro
Отправлено: 21 Июня, 2012 - 15:28:55
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




Зачем взялся за этот код если ты азов не знаеш.
Я конечно сам 0, но с палочкой )))

if ($query == "") { таблицу не выводить;}
else {таблицу выводить;}


-----
Нет ничего более постоянного, чем временное.
 
 Top
Puk
Отправлено: 21 Июня, 2012 - 15:50:23
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)

[+]


Petro пишет:
Зачем взялся за этот код если ты азов не знаеш.
Я конечно сам 0, но с палочкой )))

if ($query == "") { таблицу не выводить;}
else {таблицу выводить;}


кстати, про палочку...код не работает.
Спасибо за внимание.
 
 Top
jonston
Отправлено: 21 Июня, 2012 - 15:51:13
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




Puk пишет:
Petro пишет:
Зачем взялся за этот код если ты азов не знаеш.
Я конечно сам 0, но с палочкой )))

if ($query == "") { таблицу не выводить;}
else {таблицу выводить;}


кстати, про палочку...код не работает.
Спасибо за внимание.


подожди щас напишу тебе решение
(Добавление)
Пробуй:
PHP:
скопировать код в буфер обмена
  1.  
  2. if($_POST['nmag'] == '') $and = " AND name_mag = '".$_POST['nmsg']."'";
  3. $query = "SELECT * FROM mag WHERE UPPER(name_mag) LIKE '".strtoupper($_POST['nmag'])."%'".$and;
  4.  
  5. $result = mysql_query($query) or die("Запрос ошибочный");
  6.  
  7. print "<table>\n";
  8.  
  9. while ($line = mysql_fetch_array($result, MYSQL_NUM)) {
  10.  
  11. print "\t<tr>\n";
  12.  
  13. for ($i=1;$i<=1;$i++) { print "\t\t<td><a href=\"lit/lit.php?id=$line[0]\">$line[1]</a></td>\n"; }
  14.                        
  15.  
  16. print "\t</tr>\n";
  17.  
  18. }
  19.  
  20. print "</table>\n";
  21.  
  22. if (!mysql_num_rows($result)) echo "Поиск результатов не дал";
  23.  
  24.  


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
Puk
Отправлено: 21 Июня, 2012 - 16:09:56
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)

[+]


jonston

Есть. Спасибо большое! По пиву!

(Отредактировано автором: 21 Июня, 2012 - 16:10:50)

 
 Top
jonston
Отправлено: 21 Июня, 2012 - 16:15:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




Puk пишет:
jonston

Есть. Спасибо большое! По пиву!


ставь спасибо тогда)


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
Puk
Отправлено: 21 Июня, 2012 - 16:24:39
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)

[+]


jonston пишет:
Puk пишет:
jonston

Есть. Спасибо большое! По пиву!


ставь спасибо тогда)


не могу... ??? Непонял! пишет, что я слишком мало "отметился" на форуме. хрень какая то. не вижу взаимосвязи с простой благодарностью Недовольство, огорчение
 
 Top
jonston
Отправлено: 21 Июня, 2012 - 16:30:25
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




ну ничего страшного


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
Puk
Отправлено: 21 Июня, 2012 - 16:33:56
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)

[+]


О...проявился другая проблема. Теперь на начальной странице в поле вывода данных сразу же появляется надпись "Поиск результатов не дал".
Вроде её и можно удалит вообще, что бы глаза не мозолила, но в случае некоректного запроса будет просто пустота. Это тоже как то не то.
Как это можно исправить?
p.s. если слишком сложно, тогда ну его нафиг. обойдусьУлыбка
 
 Top
jonston
Отправлено: 21 Июня, 2012 - 16:37:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




можно убери вот эту строку
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!mysql_num_rows($result)) echo "Поиск результатов не дал";
  3.  


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
Puk
Отправлено: 21 Июня, 2012 - 16:40:51
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)

[+]


jonston пишет:
можно убери вот эту строку
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!mysql_num_rows($result)) echo "Поиск результатов не дал";
  3.  


Ну это то, о чём писал. Если её убрать, то тогда в случае левого запроса, ничего не появится. Вроде и не трагедия, но ...
 
 Top
jonston
Отправлено: 21 Июня, 2012 - 16:47:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




Puk пишет:
jonston пишет:
можно убери вот эту строку
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!mysql_num_rows($result) && isset($_POST['nmsg'])) echo "Поиск результатов не дал";
  3.  


Ну это то, о чём писал. Если её убрать, то тогда в случае левого запроса, ничего не появится. Вроде и не трагедия, но ...


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
Puk
Отправлено: 21 Июня, 2012 - 17:00:48
Post Id


Новичок


Покинул форум
Сообщений всего: 21
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)

[+]


jonston

Чувак, ты гений. Бил Гейтс на твоём фоне - фуфел.
Спасибо ещё раз Мдя

(Отредактировано автором: 22 Июня, 2012 - 08:20:14)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB