2013-03-12 160 views
1

我是新來的PHP ... 只是想我about.php文件中這一段簡單的代碼(通過超鏈接鏈接到index.php文件):PHP未定義指數:

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

我得到以下錯誤:


注意:未定義指數:名d:\ XAMPP \ htdocs中\ stathis1 \關於\ about.php
請輸入您的姓名

回答

1

因爲$_POST["name"]沒有設置,你會得到通知。因此,您需要先測試它是否存在,然後將其分配給您的變量$name變量,如果未設置則爲空字符串。

你可以改變的,而不是空的(),因爲isset()函數功能不觸發通知中未定義的索引時

$name = $_POST["name"];

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

+0

我不明白的錯誤,但仍計劃沒有做什麼是應該,這是把插入的名稱textarea的... 我相信光標永遠不會進入if(!isset($ name))條件... – SoulMagnet 2013-03-12 22:28:05

+0

不要忘記關閉窗體'' – 2013-03-12 22:29:50

+0

確定表單標記已關閉... – SoulMagnet 2013-03-12 22:35:22

1

使用isset()函數。

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語句周圍的代碼之後,所以只在「名稱」存在時執行。

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 2013-03-12 22:43:35