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 :: метод post.

 PHP.SU

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


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

> Описание: пожалуйста, помогите разобраться
enermult
Отправлено: 02 Мая, 2011 - 23:26:14
Post Id


Новичок


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


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




Доброго времени суток!
Я недавно начал изучать php, и возникла проблема с написанием кода.
Вообщем у меня есть база с инфой о фильмах (название, режиcсер, время фильма и год).
Я хочу сделать поиск по этой базе, но у меня почему-то из формы для запроса ничего не передается.

Вот форма:
CODE (html):
скопировать код в буфер обмена
  1.  <html>
  2.  <head>
  3.  <title>Search</title>
  4.  </head>
  5.  <body>
  6.  <center>
  7.  Enter the original title, director's name, duration or year of the film you are looking for:
  8.  <form action="search.php" method="post" onsubmit="javascript: if ((search_query.value=='')||(search_query.value=='Поиск...')) { return false; } else { return true; }">
  9.  <input type="text" name="search_query" onfocus="if (this.value=='Поиск...') this.value=''" value="Поиск..." style="font: 12px Verdana; height:20px; width:200px;" />
  10.  <input type="submit" name="name" value="Найти" style="font: bold 12px Verdana; background-color:#FFFFFF; height:20px; width:50px;"/>
  11.  </form>
  12.  </center>
  13.  </body>
  14.  </html>

вот search.php:
PHP:
скопировать код в буфер обмена
  1. <html>
  2.  <head>
  3.  <title>Search Results</title>
  4.  </head>
  5.  <body>
  6.  <?PHP
  7.  mysql_pconnect ("localhost", "root", "pass") or die ("Can't connect!");
  8.  mysql_select_db("dbcurse") or die("Can't select database!");
  9.  
  10.  global $search_query;
  11.  
  12.  if(isset($_POST['search_query'])){$search_query = $_POST['search_query'];}
  13.  
  14.    
  15.   $query= mysql_query("SELECT * FROM films WHERE title = '$search_query' OR director = '$search_query' OR duration = '$search_query'
  16. OR year = '$search_query' ORDER BY year DESC");
  17.  
  18.  
  19.   $result= mysql_num_rows($query);
  20.  if ($result == 0)
  21.  {
  22.   echo "Sorry, couldn't find anything about your query ($search_query)";
  23.  exit;
  24.  }
  25.  else if ($result == 1)
  26.  {
  27.  echo "Found <b>1</b> match!<br>";
  28.  }
  29.  else {
  30.  echo "Found <b>$result</b> matches! <br>";
  31.  }
  32.  
  33.    while ($row= mysql_fetch_array($query))
  34.  {
  35.  
  36.  $title= $row["title"];
  37.  $director = $row["director"];
  38.  $duration = $row["duration"];
  39.  $year= $row["year"];
  40.  
  41.  echo "The original title of the film is: $title.<br>";
  42.  echo "The director's name of the film(s) is: $director.<br>";
  43.  echo "The duration of the film(s) is: $duration minutes. <br>";
  44.  echo "The year of the film(s) is: $year.<br>";
  45.  }
  46.  
  47.  ?>
  48.  </body>
  49.  </html>

когда я что-то ввожу в форму и жму "найти", в браузере вылезает следующее:
Цитата:
1 match!
"; } else { echo "Found $result matches!
"; } while ($row= mysql_fetch_array($query)) { $title= $row["title"]; $director = $row["director"]; $duration = $row["duration"]; $year= $row["year"]; echo "The original title of the film is: $title.
"; echo "The director's name of the film(s) is: $director.
"; echo "The duration of the film(s) is: $duration minutes.
"; echo "The year of the film(s) is: $year.
"; } ?>

это пишется независимо от того, есть ли это в базе, один там результат, несколько или вообще ничего.
когда просто запускаю search.php все работает, на монитор выводится:
Цитата:
Sorry, couldn't find anything about your query ()
, т.к. ничего не запрошено,
или я могу, например, в ручную установить значение, заменив 12 строчку в search.php на:
, запустив его, мне вылезет:
Цитата:
Found 2 matches!
The original title of the film is: Inception.
The director's name of the film(s) is: Nolan.
The duration of the film(s) is: 148 minutes.
The year of the film(s) is: 2010.
The original title of the film is: The Town.
The director's name of the film(s) is: Affleck.
The duration of the film(s) is: 124 minutes.
The year of the film(s) is: 2010.
как я и хочу, то что есть в базе.

Насколько я понимаю, проблема в том, что из формы отправки не передаются значения, а значит проблема в ней. Или передаются, но у меня никак не получается их вытащить из POST, т.е. я как-то неправильно пишу 12ю строчку в search.php.

Пожалуйста, помогите разобраться, сам никак не могу найти свою ошибку.
Заранее благодарен.
 
 Top
Саныч Модератор
Отправлено: 02 Мая, 2011 - 23:39:32
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




убрать global $search_query;


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
enermult
Отправлено: 03 Мая, 2011 - 00:25:35
Post Id


Новичок


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


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




убирал, результат такой же, только еще вылезает 5 "notice: undefined variable: $search_query..." про 15,16 и 22 строчку...
 
 Top
Alex_pac
Отправлено: 03 Мая, 2011 - 01:47:20
Post Id



Новичок


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


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




CODE (html):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head>
  4. <title>Search</title>
  5. </head>
  6. <body>
  7. <script type="text/javascript">
  8. function presubmit() {
  9. var t = document.MyForm.search_query.value;
  10.         return ((t.length>0)&&(t!='Поиск...'));
  11. }
  12. onload = function() {
  13.         search_input = document.MyForm.search_query;
  14.         search_input.onfocus = function () {
  15.                 if (search_input.value=='Поиск...') {
  16.                         search_input.value = '';
  17.                 }
  18.         }
  19.         search_input.onblur = function () {
  20.                 if (search_input.value.length<1) {
  21.                         search_input.value = 'Поиск...';
  22.                 }
  23.         }
  24. }
  25. </script>
  26. <center>
  27. Enter the original title, director's name, duration or year of the film you are looking for:
  28. <form name="MyForm" action="search.php" method="post" onsubmit=" return presubmit(); ">
  29.         <input type="text" name="search_query"  value="Поиск..." style="font: 12px Verdana; height:20px; width:200px;" />
  30.         <input type="submit" name="name" value="Найти" style="font: bold 12px Verdana; background-color:#FFFFFF; height:20px; width:50px;"/>
  31. </form>
  32. </center>
  33. </body></html>
  34.  


PHP:
скопировать код в буфер обмена
  1. <html>
  2.  <head>
  3.  <title>Search Results</title>
  4.  </head>
  5.  <body>
  6. <?PHP
  7. mysql_connect ("localhost", "root", "pass") or die ("Can't connect! <hr>" . mysql_error());
  8. mysql_select_db("dbcurse") or die("Can't select database!<hr>" . mysql_error());
  9.  
  10. function universal_like_escape($str) {
  11.         return '%'.str_replace('*','%',addCslashes(mysql_real_escape_string(str_replace('\\','\\\\',$str)), '_%')).'%';
  12. }
  13.  
  14. if(isset($_POST['search_query'])) {
  15. //start script
  16.  
  17. $search_query = universal_like_escape ($_POST['search_query']);
  18.  
  19.  
  20. $result= mysql_query(
  21.         "SELECT * FROM films WHERE title LIKE '$search_query' OR director LIKE '$search_query' OR duration LIKE '$search_query' OR year LIKE '$search_query' ORDER BY year DESC"
  22. );
  23. if (($count_rows = mysql_num_rows($result)) > 0) {
  24.         echo "Found <b>$count_rows</b> match!<br>";
  25.         while ($row=mysql_fetch_assoc($result)) {
  26.                  echo "The original title of the film is: {$row[title]}.<br>
  27.                         The director's name of the film(s) is: {$row[$director]}.<br>
  28.                         The duration of the film(s) is: {$row[duration]} minutes. <br>
  29.                         The year of the film(s) is: {$row[year]}.<br>";
  30.         }
  31. } else {
  32.         echo "Sorry, couldn't find anything about your query ({$_POST[search_query]})";
  33. }
  34. } else { echo 'переменная $_POST[search_query] не передана скрипту'; }
  35.  ?>
  36.  </body>
  37.  </html>
 
 Top
enermult
Отправлено: 03 Мая, 2011 - 03:32:57
Post Id


Новичок


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


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




отдельно все ок, если вводим через форму, браузер выплевывает:
Цитата:
" . mysql_error()); mysql_select_db("dbcurse") or die("Can't select database!
" . mysql_error()); function universal_like_escape($str) { return '%'.str_replace('*','%',addCslashes(mysql_real_escape_string(str_replace('\\','\\\\',$str)), '_%')).'%'; } if(isset($_POST['search_query'])) { //start script $search_query = universal_like_escape ($_POST['search_query']); $result= mysql_query( "SELECT * FROM films WHERE title LIKE '$search_query' OR director LIKE '$search_query' OR duration LIKE '$search_query' OR year LIKE '$search_query' ORDER BY year DESC" ); if (($count_rows = mysql_num_rows($result)) > 0) { echo "Found $count_rows match!
"; while ($row=mysql_fetch_assoc($result)) { echo "The original title of the film is: {$row[title]}.
The director's name of the film(s) is: {$row[$director]}.
The duration of the film(s) is: {$row[duration]} minutes.
The year of the film(s) is: {$row[year]}.
"; } } else { echo "Sorry, couldn't find anything about your query ({$_POST[search_query]})"; } } else { echo 'переменная $_POST[search_query] не передана скрипту'; } ?>

может у меня в компе бесы, хотя врядли.
 
 Top
Alex_pac
Отправлено: 03 Мая, 2011 - 06:36:00
Post Id



Новичок


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


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




такое ощущение что сервер у вас не работает и не может php парсить.

(Отредактировано автором: 03 Мая, 2011 - 06:36:17)

 
 Top
Ezi
Отправлено: 03 Мая, 2011 - 08:35:50
Post Id



Частый гость


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


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




возможно кодировки не совпадают! Но я тоже думаю что с сервером проблема, перезапусти сервер и проверь результат.


-----
Хочешь жить - умей вертеться
 
 Top
enermult
Отправлено: 03 Мая, 2011 - 15:42:26
Post Id


Новичок


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


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




большое всем спасибо за помощь, работают оба кода.
косяк в серваке был, перенастроил все по инструкции с сайта, заработало.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Если скрипт не работает »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB