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.SU

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


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

> Без описания
4ester
Отправлено: 18 Ноября, 2009 - 20:57:10
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2009  


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




Вообщем нашёл скрипт поиска по базам MySQL и переделал его под себя. Однако, вместо результата поиска
выводится пустая страничка. Не могу понять где ошибка (у меня mysql 5.0.67; php 5.2.9; apache 2.2.10)
Вот собственно скрипты:

formp.php

PHP:
скопировать код в буфер обмена
  1. <form action="poiskmag.php" method="post">
  2. Поиск<br><input type="text" name="dan" size="60" value="">
  3. <input type="submit" name="submit" value="Искать">
  4. <input type="reset" name="reset" value="Очистить">
  5. </form>



poiskmag.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $link = mysql_connect("localhost", "root", "16061994") or die("Не соединилось!!!");
  4. mysql_select_db("test") or die("Не найдена БД");
  5.  
  6. $query = "SELECT opis, price FROM obiva WHERE '%dan%'";
  7. $result = mysql_query($query) or die("Запрос ошибочный");
  8.  
  9. print "<table>\n";
  10. while ($line = mysql_fetch_array($result, MYSQL_NUM)) {
  11. print "\t<tr>\n";
  12. for ($i=1;$i<=4;$i++) { print "\t\t<td>$line[$i]</td>\n"; }
  13. print "\t</tr>\n";
  14. }
  15.  
  16. print "</table>\n";
  17. mysql_close($link);
  18. ?>
  19.  
 
 Top
EGORR
Отправлено: 18 Ноября, 2009 - 21:10:14
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Нояб. 2009  
Откуда: Ярославль


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




Так ты не забираешь присланное значение.
Обработчик должен получить $_POST['dan']
PHP:
скопировать код в буфер обмена
  1. if(isset($_REQUEST['dan']))
  2. {
  3.         $dan = $_REQUEST['dan'];
  4.  
  5.         $query = "SELECT opis, price FROM obiva WHERE dan LIKE '%$dan%'";
  6. }


PS Для краткости не привожу проверку полученного.

(Отредактировано автором: 18 Ноября, 2009 - 21:21:28)

 
 Top
4ester
Отправлено: 18 Ноября, 2009 - 21:54:09
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2009  


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




EGORR пишет:
Так ты не забираешь присланное значение.
Обработчик должен получить $_POST['dan']
PHP:
скопировать код в буфер обмена
  1. if(isset($_REQUEST['dan']))
  2. {
  3.         $dan = $_REQUEST['dan'];
  4.  
  5.         $query = "SELECT opis, price FROM obiva WHERE dan LIKE '%$dan%'";
  6. }


PS Для краткости не привожу проверку полученного.


Пишет что запрос ошибочный
(Добавление)
EGORR пишет:
Так ты не забираешь присланное значение.
Обработчик должен получить $_POST['dan']
PHP:
скопировать код в буфер обмена
  1. if(isset($_REQUEST['dan']))
  2. {
  3.         $dan = $_REQUEST['dan'];
  4.  
  5.         $query = "SELECT opis, price FROM obiva WHERE dan LIKE '%$dan%'";
  6. }


PS Для краткости не привожу проверку полученного.


хотя сейчас вместо WHERE dan написал Where opis
и получился результат
спасибо
 
 Top
EGORR
Отправлено: 18 Ноября, 2009 - 22:13:39
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Нояб. 2009  
Откуда: Ярославль


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




4ester пишет:
хотя сейчас вместо WHERE dan написал Where opis
и получился результат

Сорри... Я же не знал что у тебя в таблице. Так. схематично описал... Улыбка
(Добавление)
4ester пишет:
CODE (text):
скопировать код в буфер обмена
  1. $link = mysql_connect("localhost", "root", "16061994") or die("Не соединилось!!!");

Кстати, я надеюсь эта строка здесь только для примера?
Если нет, то это весьма неосмотрительно.
 
 Top
4ester
Отправлено: 18 Ноября, 2009 - 22:42:28
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2009  


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




EGORR пишет:
4ester пишет:
хотя сейчас вместо WHERE dan написал Where opis
и получился результат

Сорри... Я же не знал что у тебя в таблице. Так. схематично описал... Улыбка
(Добавление)
4ester пишет:
CODE (text):
скопировать код в буфер обмена
  1. $link = mysql_connect("localhost", "root", "16061994") or die("Не соединилось!!!");

Кстати, я надеюсь эта строка здесь только для примера?
Если нет, то это весьма неосмотрительно.

Однако ой
(Добавление)
уже поменял Закатив глазки
(Добавление)
EGORR не могли ли Вы написать что означает этот массив?

PHP:
скопировать код в буфер обмена
  1. while ($line = mysql_fetch_array($result, MYSQL_NUM)) {
  2.  
  3.  
  4. echo "\t<tr>\n";
  5.  
  6. for ($i=1;$i<=4;$i++) { print "\t\t<td>$line[$i]</td>\n"; }
  7.  
  8. echo "\t</tr>\n";
  9.  
  10. }
  11.  
 
 Top
EGORR
Отправлено: 19 Ноября, 2009 - 09:41:26
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Нояб. 2009  
Откуда: Ярославль


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




mysql_fetch_array - это массив с результатом выборки.
Для просмотра массивов заведи себе небольшую функцию. Как эта например.
PHP:
скопировать код в буфер обмена
  1. function Pre($Arr)
  2. {
  3.     echo "<span style=\"font-size: 1.5em;color: green;\">Items - ".count($Arr)."</span><br>";
  4.     echo "<pre style=\"font-size: 1.5em;\">";
  5.     print_r($Arr);
  6.     echo "</pre>";
  7. }

Просмотришь ею, и многое станет понятней.


Я бы этот кусок написал бы так
PHP:
скопировать код в буфер обмена
  1.    $start   = "<table>\n<tr>\n"
  2.    $out     = "<td>Пусто...</td>";
  3.    $end     = "</tr>\n</table>\n"
  4.    $line    = mysql_fetch_array($result, MYSQL_ASSOC);
  5.    if(count($line > 0))
  6.    {
  7.         foreach($line as $data)
  8.         {
  9.                 $out .=   "<td>Описалово - $data['opis'] Стоимость -  $data['price']</td>";
  10.         }
  11.    }
  12.    $outData = $start.$out.$end;
  13.    echo  $outData
;
 
 Top
Мелкий Супермодератор
Отправлено: 19 Ноября, 2009 - 12:51:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




EGORR пишет:
Я бы этот кусок написал бы так

И получите всегда вывод только 1 строки, ибо mysql_fetch_assoc работает именно так. И зачем там foreach?


-----
PostgreSQL DBA
 
 Top
4ester
Отправлено: 19 Ноября, 2009 - 14:20:14
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2009  


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




EGORR пишет:
mysql_fetch_array - это массив с результатом выборки.
Для просмотра массивов заведи себе небольшую функцию. Как эта например.
PHP:
скопировать код в буфер обмена
  1. function Pre($Arr)
  2. {
  3.     echo "<span style=\"font-size: 1.5em;color: green;\">Items - ".count($Arr)."</span><br>";
  4.     echo "<pre style=\"font-size: 1.5em;\">";
  5.     print_r($Arr);
  6.     echo "</pre>";
  7. }

Просмотришь ею, и многое станет понятней.


Я бы этот кусок написал бы так
PHP:
скопировать код в буфер обмена
  1.    $start   = "<table>\n<tr>\n"
  2.    $out     = "<td>Пусто...</td>";
  3.    $end     = "</tr>\n</table>\n"
  4.    $line    = mysql_fetch_array($result, MYSQL_ASSOC);
  5.    if(count($line > 0))
  6.    {
  7.         foreach($line as $data)
  8.         {
  9.                 $out .=   "<td>Описалово - $data['opis'] Стоимость -  $data['price']</td>";
  10.         }
  11.    }
  12.    $outData = $start.$out.$end;
  13.    echo  $outData
;


Обратно выводит пустую страницу
Вот код
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. /* Соединение, выбор БД */
  4.  
  5. $link = mysql_connect("localhost", "root", "") or die("Не соединилось!!!");
  6. mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error: " . mysql_error());
  7.  
  8. mysql_select_db("test") or die("Не найдена БД");
  9.  
  10. /* Выполнение SQL запроса */
  11.       if (isset($_REQUEST['dan']))
  12.       {
  13.       $dan = $_REQUEST['dan'];
  14.       $query = "SELECT * FROM obiva WHERE opis LIKE '%$dan%'";
  15.       }
  16. echo $query;
  17. $result = mysql_query($query) or die("Запрос ошибочный");
  18. echo $result;
  19.  
  20. /* Печать результатов в HTML */
  21.  
  22.       $start = "<table>\n<tr>\n";
  23.       $out = "<td>Пусто...</td>";
  24.       $end = "</tr>\n</table>\n";
  25.       $line = mysql_fetch_array($result, MYSQL_ASSOC);
  26.       if(count($line > 0))
  27.       {
  28.       foreach($line as $data)
  29.       {
  30.       $out .= "<td>Описание - $data['opis'] Стоимость - $data['price']</td>";
  31.       }
  32.       }
  33.       $outData = $start.$out.$end;
  34.       echo $outData;
  35. }
  36. echo $line;
  37.  
  38. echo "</table>\n";
  39.  
  40. /* Освобождение памяти, занятой результатом запроса */
  41.  
  42.  
  43. /* Закрытие соединения */
  44.  
  45. mysql_close($link);
  46.  
  47. ?>
 
 Top
EGORR
Отправлено: 19 Ноября, 2009 - 16:16:49
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Нояб. 2009  
Откуда: Ярославль


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




Мелкий совершенно прав.
Я был невнимателен.
Вот так будет лучше
PHP:
скопировать код в буфер обмена
  1. if (isset($_REQUEST['dan']))
  2. {
  3. $dan = $_REQUEST['dan'];
  4.  
  5.  //-------------------//
  6. $link  = mysql_connect("localhost", "root", "") or die("Не соединилось!!!");
  7. mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error: " . mysql_error());
  8. mysql_select_db("test") or die("Не найдена БД");
  9. $query = "SELECT opis, price FROM obiva WHERE opis LIKE '%$dan%'";
  10. $result = mysql_query($query) or die("Запрос ошибочный");
  11. $line = mysql_fetch_array($result,MYSQL_NUM);
  12.  //-------------------//
  13.  $outData = "<p>Ничего не найдено</p>" ;
  14. if($line)
  15. {
  16. $out = "<table>\n";
  17. $end   = "</table>\n";
  18.    while ($row = mysql_fetch_array($result, MYSQL_NUM))
  19.     {
  20.        $out .=  "<tr>\n<td>Описание - " .$row[0] ."  Стоимость -  " .$row[1] ."</td>\n</tr>\n";
  21.     }
  22.  $outData = $out.$end;
  23. }
  24.  
  25.  }
  26.  
  27.  echo $outData;
  28.  
  29.  

(Отредактировано автором: 19 Ноября, 2009 - 16:19:28)

 
 Top
4ester
Отправлено: 19 Ноября, 2009 - 18:25:02
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2009  


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




EGORR пишет:
Мелкий совершенно прав.
Я был невнимателен.
Вот так будет лучше
PHP:
скопировать код в буфер обмена
  1. if (isset($_REQUEST['dan']))
  2. {
  3. $dan = $_REQUEST['dan'];
  4.  
  5.  //-------------------//
  6. $link  = mysql_connect("localhost", "root", "") or die("Не соединилось!!!");
  7. mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error: " . mysql_error());
  8. mysql_select_db("test") or die("Не найдена БД");
  9. $query = "SELECT opis, price FROM obiva WHERE opis LIKE '%$dan%'";
  10. $result = mysql_query($query) or die("Запрос ошибочный");
  11. $line = mysql_fetch_array($result,MYSQL_NUM);
  12.  //-------------------//
  13.  $outData = "<p>Ничего не найдено</p>" ;
  14. if($line)
  15. {
  16. $out = "<table>\n";
  17. $end   = "</table>\n";
  18.    while ($row = mysql_fetch_array($result, MYSQL_NUM))
  19.     {
  20.        $out .=  "<tr>\n<td>Описание - " .$row[0] ."  Стоимость -  " .$row[1] ."</td>\n</tr>\n";
  21.     }
  22.  $outData = $out.$end;
  23. }
  24.  
  25.  }
  26.  
  27.  echo $outData;
  28.  
  29.  


Обратно пустая страница Ниндзя
Вот код
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. if (isset($_REQUEST['dan']))
  4. {
  5. $dan = $_REQUEST['dan'];
  6.  
  7. //-------------------//
  8. $link = mysql_connect("localhost", "root", "") or die("Не соединилось!!!");
  9. mysql_query("/*!40101 SET NAMES 'cp1251' */") or die("Error: " . mysql_error());
  10. mysql_select_db("test") or die("Не найдена БД");
  11. $query = "SELECT opis, price FROM obiva WHERE opis LIKE '%$dan%'";
  12. $result = mysql_query($query) or die("Запрос ошибочный");
  13. $line = mysql_fetch_array($result,MYSQL_NUM);
  14. //-------------------//
  15. $outData = "<p>Ничего не найдено</p>" ;
  16. if($line)
  17. {
  18. $out = "<table>\n";
  19. $end = "</table>\n";
  20. while ($row = mysql_fetch_array($result, MYSQL_NUM))
  21. {
  22. $out .= "<tr>\n<td>Описание - " .$row[0] ." Стоимость - " .$row[1] ."</td>\n</tr>\n";
  23. }
  24. $outData = $out.$end;
  25. }
  26.  
  27. }
  28. echo $outData;
  29. ?>
 
 Top
EGORR
Отправлено: 19 Ноября, 2009 - 18:31:12
Post Id



Новичок


Покинул форум
Сообщений всего: 43
Дата рег-ции: Нояб. 2009  
Откуда: Ярославль


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




Я код предыдущего поста проверил у себя на локале. Все работало.
Попробуй занести в базу на латинице инфо. И поискать её.
 
 Top
4ester
Отправлено: 19 Ноября, 2009 - 18:41:45
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Нояб. 2009  


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




Не работает хоть ты убей
У меня изначально все данные на латинице
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB