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

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

1. michael22 - 04 Мая, 2007 - 10:02:53 - перейти к сообщению
Есть такое дело: предупреждаю, что я начинающий!
Вот скрипт:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo"<form  value=Добавка method=get>";
  4. echo"<input type=text name=text3>";
  5. echo"<input type=text name=text>";
  6. echo"<input type=text name=text2>";
  7. echo"<input type=submit value=Добавить>";
  8. echo"</form>";
  9. echo"<br>";
  10. echo"<form   value=избавка method=get>";
  11. echo"<input type=text name=text4>";
  12. echo"<input type=submit value=Удалить>";
  13. echo"</form>";
  14.  
  15. $host = "localhost";
  16. $user = "root";
  17. $password = "1222";
  18.  
  19. $controluser = "pma";
  20. $controlpass = "pass";
  21. $db="uuu";
  22.  
  23. // Производим попытку подключения к серверу MySQL:
  24. if (!mysql_connect($host, $user, $password,$controluser,$controlpass))
  25. {
  26. echo "<h2>MySQL Error!</h2>";
  27. }
  28.  
  29. // Выбираем базу данных:
  30.  
  31. // Выводим заголовок таблицы:
  32. echo "<table border="1" width="100%" bgcolor="#FFFFE1">";
  33. echo "<tr><td>№</td><td>Имя</td><td>Логин</td>";
  34.  
  35.  
  36. // SQL-запрос:
  37. $q = mysql_query ("SELECT * FROM go");
  38.  
  39. // Выводим таблицу:
  40. for ($c=0; $c<mysql_num_rows($q); $c++)
  41. {
  42. echo "<tr>";
  43.  
  44. echo "<td>$f[C_NO]</td><td>$f[FIO]</td><td>$f[LOGIN]</td>";
  45.  
  46.  
  47. echo "</tr>";
  48. }
  49. echo "</table>";
  50. //Удалить
  51. mysql_query("DELETE FROM GO WHERE C_NO =$text4 ");
  52. //добавить
  53. mysql_query("INSERT INTO GO VALUES('$text3','$text','$text2')");
  54.  
  55. ?>
  56.  

все работает, как надо, вообщем. я доволен, но работая, выдает ошибку:
Notice: Undefined variable: text3 in C:apachelocalhostwwwbase.php on line 64

Notice: Undefined variable: text in C:apachelocalhostwwwbase.php on line 64

Notice: Undefined variable: text2 in C:apachelocalhostwwwbase.php on line 64

Неопределены переменные!
Вопрос: Как исправить, что исправить (можно совет)? И вообще, как это возможно, что все работает, когда переменные неопределенны, судя по этой Notice?


Прога то простенькая: выводит из БД таблицу, добавляет и удаляет из неё!
ПОМОГИТЕ
2. evgenijj - 04 Мая, 2007 - 12:27:38 - перейти к сообщению
У тебя в файле php.ini выставлено register_globals = Off, т.е. к переменным, получаемым из формы, надо обращаться не по их именам ($text, $text2, $text3), а через суперглобальный массив $_GET ($_GET["text"], $_GET["text2"], $_GET["text3"]).
Возможен еще вариант - эти сообщения об ошибках появляются, когда пользователь нажал кнопку "Удалить". Ведь в этом случае отправляется на сервер только переменная $text4.

Вот это:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. for ($c=0; $c<mysql_num_rows($q); $c++)
  4. {
  5.   echo "<tr>";
  6.   $f = mysql_fetch_array($q);
  7.   echo "<td>$f[C_NO]</td><td>$f[FIO]</td><td>$f[LOGIN]</td>";
  8.   echo "</tr>";
  9. }
  10. ?>
  11.  

выглядит уж очень сложно:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. while( $f = mysql_fetch_array($q) )
  4. {
  5.   echo "<tr>";
  6.   echo "<td>".$f["C_NO"]."</td><td>".$f["FIO"]."</td><td>".$f["LOGIN"]."</td>";
  7.   echo "</tr>";
  8. }
  9. ?>
  10.  


P.S.
1. У тега form нет атрибута value
2. А что за слово такое интересное - "избавка"?
3. По поводу того, что у тебя все работает - звучит сомнительно. Неопределынные переменные в зависимости от ситуации будут интерпретироваться PHP либо как пустая строка, либо как 0.
Поэтому при занесении информации в БД туда будут вставлены пустые строки:
INSERT INTO `GO` VALUES('','','');
А при попытке удаления
DELETE FROM `GO` WHERE ID=0;
4. Было бы логично в обработчике формы узнать, какую кнопку нажал пользователь - "Добавить" или "Удалить"?
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. echo"<form value=Добавка method=get>";
  4. echo"<input type=text name=text3>";
  5. echo"<input type=text name=text>";
  6. echo"<input type=text name=text2>";
  7. echo"<input type=submit name='add' value=Добавить>";
  8. echo"</form>";
  9. echo"<br />";
  10. echo"<form value=избавка method=get>";
  11. echo"<input type=text name=text4>";
  12. echo"<input type=submit name='remove' value=Удалить>";
  13. echo"</form>";
  14. ?>
  15.  

Обработчик
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if( isset( $_GET["add"] ) )
  4. {
  5.   // Добавляем запись в БД
  6. }
  7. ..................................
  8. if( isset( $_GET["remove"] ) )
  9. {
  10.   // Удаляем запись из БД
  11. }
  12.  
  13. ?>
  14.  
3. michael22 - 04 Мая, 2007 - 13:30:25 - перейти к сообщению
Спасибо тебе мудрец Евгений! Балгодаря тебе все теперь работает без ошибок, и оказалось решение проблем очень простым. Ты был абсолютно во всем прав. Теперь я знаю, на что мне обратить внимание. Буду смотреть про $_GET,$_POST. и вообще, спасибо за подробный ответ!
4. valenok - 04 Мая, 2007 - 13:34:11 - перейти к сообщению
=)

И правила не забудь посмотреть.

 

Powered by ExBB FM 1.0 RC1