2013-03-12 4 views
1

Я новичок в PHP ... Просто пытаюсь этот простой кусок кода внутри моего файла about.php (который связывает к файлу index.php через гиперссылку):PHP Undefined индекс:

<form action ="about.php" method="POST"> 
<ul> 
    <li> 
     <label for="name"> Enter your name please:</label> 
     <input type="text" name="name"/> 

    </li> 
    <li> 
     <label for="comments" rows="20"> Enter your comments :</label> 
     <textarea id="comments" name="comments" rows="5" cols="38"> 
      <?php 

       $name = $_POST["name"]; 

       if (!empty($name)) { 
       echo "Your name is ".$name."and you like ny site!"; 
       } else { 
       echo "Please enter your name"; 
       } 


       ?> 
     </textarea> 
    </li> 
    <li> 
     <input type="submit" /> 
    </li> 
</ul> 

я получаю следующее сообщение об ошибке:


Примечание: Undefined индекс: имя в D: \ XAMPP \ HTDOCS \ stathis1 \ о \ about.php по линии 71
Пожалуйста, введите ваше имя

ответ

1

Поскольку $_POST["name"] не установлен, вы получите это уведомление. Поэтому вам нужно сначала проверить, существует ли он, а затем назначить его переменной $name или пустой строке, если она не установлена.

Вы можете изменить

$name = $_POST["name"];

к

$name = isset($_POST["name"])?$_POST["name"]:'';

+0

Я не получаю ошибку, но до сих пор программа не делает то, что предполагается, что это поместить вставленный имя в текстовое поле ... Я считаю, курсор никогда не входит в условие if (! isset ($ name)) ... – SoulMagnet

+0

не забудьте закрыть форму с '' –

+0

ok тег формы закрыт ... – SoulMagnet

1

использовать Исеть() вместо пустой(), потому что Исеть() функция не вызывает уведомление, когда индекс не определен.

1

Это потому, что $_POST['name'] еще не отправлен/установлен. Вам нужно либо использовать, если заявление или тройная оператор:

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

    if (!empty($name)) { 
     echo 'Your name is ' . $name . ' and you like ny site!'; 
    } else { 
     echo 'Please enter your name'; 
    } 
} 

Или, короче метод:

$name = isset($_POST['name']) ? $_POST['name'] : ''; 
0

Сразу после запуска вашей PHP часть добавить это, если предложение окружающих код, так что это только выполняется, когда существует «имя».

if(isset($_POST["name"])) 

Как это:

<?php 
    if(isset($_POST["name"])){ 
     $name = $_POST["name"]; 

     if (!empty($name)) { 
      echo "Your name is ".$name."and you like ny site!"; 
     } else { 
      echo "Please enter your name"; 
     } 
    } else { 
     echo "Please enter your name"; 
    } 
?> 
+0

Я получаю «Пожалуйста, введите свое имя» в текстовом поле даже после нажатия кнопки отправки после вставки имени в поле имени .... Почему имя не существует? – SoulMagnet

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