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
Форумы портала PHP.SU :: Версия для печати :: PHP поиск по БД
Форумы портала PHP.SU » » Вопросы новичков » PHP поиск по БД

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

1. Puk - 21 Июня, 2012 - 15:11:01 - перейти к сообщению
Всем привет!

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

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

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.  
2. Petro - 21 Июня, 2012 - 15:15:38 - перейти к сообщению
Сделай условие, если $query == "" то ничего не выводить.
3. Puk - 21 Июня, 2012 - 15:20:03 - перейти к сообщению
Petro пишет:
$query == ""


Я ботан в этом деле. Пока, что могу ориентироваться и делать выводы только в готовом материале. Как это условие будет выглядеть в "жизни"?
4. Petro - 21 Июня, 2012 - 15:28:55 - перейти к сообщению
Зачем взялся за этот код если ты азов не знаеш.
Я конечно сам 0, но с палочкой )))

if ($query == "") { таблицу не выводить;}
else {таблицу выводить;}
5. Puk - 21 Июня, 2012 - 15:50:23 - перейти к сообщению
Petro пишет:
Зачем взялся за этот код если ты азов не знаеш.
Я конечно сам 0, но с палочкой )))

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


кстати, про палочку...код не работает.
Спасибо за внимание.
6. jonston - 21 Июня, 2012 - 15:51:13 - перейти к сообщению
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.  
7. Puk - 21 Июня, 2012 - 16:09:56 - перейти к сообщению
jonston

Есть. Спасибо большое! По пиву!
8. jonston - 21 Июня, 2012 - 16:15:34 - перейти к сообщению
Puk пишет:
jonston

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


ставь спасибо тогда)
9. Puk - 21 Июня, 2012 - 16:24:39 - перейти к сообщению
jonston пишет:
Puk пишет:
jonston

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


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


не могу... ??? Непонял! пишет, что я слишком мало "отметился" на форуме. хрень какая то. не вижу взаимосвязи с простой благодарностью Недовольство, огорчение
10. jonston - 21 Июня, 2012 - 16:30:25 - перейти к сообщению
ну ничего страшного
11. Puk - 21 Июня, 2012 - 16:33:56 - перейти к сообщению
О...проявился другая проблема. Теперь на начальной странице в поле вывода данных сразу же появляется надпись "Поиск результатов не дал".
Вроде её и можно удалит вообще, что бы глаза не мозолила, но в случае некоректного запроса будет просто пустота. Это тоже как то не то.
Как это можно исправить?
p.s. если слишком сложно, тогда ну его нафиг. обойдусьУлыбка
12. jonston - 21 Июня, 2012 - 16:37:57 - перейти к сообщению
можно убери вот эту строку
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!mysql_num_rows($result)) echo "Поиск результатов не дал";
  3.  
13. Puk - 21 Июня, 2012 - 16:40:51 - перейти к сообщению
jonston пишет:
можно убери вот эту строку
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!mysql_num_rows($result)) echo "Поиск результатов не дал";
  3.  


Ну это то, о чём писал. Если её убрать, то тогда в случае левого запроса, ничего не появится. Вроде и не трагедия, но ...
14. jonston - 21 Июня, 2012 - 16:47:28 - перейти к сообщению
Puk пишет:
jonston пишет:
можно убери вот эту строку
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!mysql_num_rows($result) && isset($_POST['nmsg'])) echo "Поиск результатов не дал";
  3.  


Ну это то, о чём писал. Если её убрать, то тогда в случае левого запроса, ничего не появится. Вроде и не трагедия, но ...
15. Puk - 21 Июня, 2012 - 17:00:48 - перейти к сообщению
jonston

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

 

Powered by ExBB FM 1.0 RC1