2015-02-25 3 views
-1

Я просто пытаюсь получить текст из текстового поля и распечатать его с помощью метода POST, но я получаю ошибку Undefined индекс: имя в 14-й строкекак отлаживать неопределенную ошибку индекса в приведенном ниже коде?

<html> 
    <head> 
     <title>Form with PHP </title> 
    </head> 
    <body> 
     <form method = "post"> 
      <input type ="text" name="name"> 
      <input type="button" value="submit" id="submit"> 
     </form> 

<?php 
    $name=$_POST["name"]; 
    echo "my name is" .$name; 


?> 
</body> 
</html> 
+2

Если вы не используете JS, чтобы опубликовать форму, вы должны изменить ваши кнопки «отправить» в 'тип =«отправить»' – lmarcelocc

+1

^ах, что тоже ... но ОП по-прежнему получать undefined index, поэтому он работает. –

+0

Вы задали много вопросов и еще не приняли никаких ответов. Этот сайт идет в обоих направлениях. Если вы ожидаете ** бесплатную ** помощь, вы должны вознаградить тех, кто помогает вам, приняв их ответ. Прочитайте [Как принимается ответ?] (Http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) и начинайте возвращаться к сообществу. –

ответ

5

Вы должны использовать условный оператор isset() на входе формы в/name, потому что вы используете весь код внутри той же страницы.

Уведомление появляется при начальной загрузке страницы; поэтому, потому что он еще не «установлен».

Здесь:

if(isset($_POST['name'])){ 

    $name=$_POST["name"]; 
    echo "my name is" .$name; 

} 

или разделите вашу форму HTML и PHP на отдельные страницы и установить действие на action="handler.php". Тем не менее, использование условного isset() лучше всего использовать в любом случае.

Вы также можете изменить кнопку вашего представить к типу представить:

<input type="submit" value="submit" id="submit"> 

Однако, судя по вашему представить кнопочного типа; кажется, вы можете использовать JS в сочетании с тем, что вы разместили для кода, и не включили его в свой вопрос, поэтому вы должны также опубликовать его и/или убедиться, что вы правильно настроили для него атрибуты.

+0

С какого момента isset является условным заявлением? Oo –

+0

@MarcoMura я не понимаю. –

+0

@MarcoMura Я понимаю, что вы имеете в виду. Я написал * в элементе формы *, но сделал небольшое редактирование. –

0

Если вы загружаете страницу (без отправки формы), то $ _POST ['name'] не будет существовать, поэтому он дает сообщение об ошибке «undefined index». Вам нужно будет убедиться, что он существует до его использования.

if (isset($_POST['name'])) { 
    $name=$_POST["name"]; 
    echo "my name is" .$name; 
} 
0

Вы используете $name вместо $_POST["name"]. Правильный путь:

if(!empty($_POST['name'])) 
    echo "my name is" .$_POST["name"]; 
+0

Вы не должны использовать 'empty()', чтобы проверить, установлена ​​ли переменная. 'isset()' - это функция для использования. –

Смежные вопросы