2012-12-05 78 views
0

簡單的問題,我沒有選擇任何單選按鈕,我得到錯誤信息 未定義指數:性別PHP單選按鈕 - 未定義指數

<?PHP 
if(isset($_POST['register'])){ 

    $gender=$_POST['gender']; 
    echo $gender; 
    } 
?> 

<html> 
    <form action="testing.php" method="POST"> 
     <input type="radio" name="gender" value="male" />Male 
     <input type="radio" name="gender" value="female" />Female 
    <input type="submit" name="register" value="Register" /> 
    </form> 
</html> 

回答

3
<?PHP 
if(isset($_POST['register'])){ 


    if(!empty($_POST['gender'])) { 

     $gender=$_POST['gender']; 
     echo $gender; 

     } 
    } 
?> 

<html> 
    <form action="radio.php" method="POST"> 
     <input type="radio" name="gender" value="male" />Male 
     <input type="radio" name="gender" value="female" />Female 
    <input type="submit" name="register" value="Register" /> 
    </form> 
</html> 
0

的「性別」投入的價值沒有得到提交如果沒有選定的單選按鈕。這與不勾選複選框相同。你需要檢查它是否存在,並且有使用

if(!empty($_POST['gender'])) { 
    ... 
} 

檢查包括:isset($_POST['gender'])array_key_exists('gender', $_POST)儘管這些的其他方式不檢查,如果該值爲零或空字符串(這可能是也可能不是一個有效的值你想要什麼)

1

未經檢查的單選按鈕和複選框不會被窗體發佈,所以它們不會出現在$_POST中。

1

當然,如果您不選擇單選按鈕,則會出現錯誤。 因爲當你沒有選擇一個值時不會發布。 您可以1)檢查索引是否存在與isset()或2)在加載頁面時檢查一個單選按鈕,以便始終發送該值。

0

問題出在$_POST['gender']。既然你沒有選擇任何東西,性別是未定義的。

您可以檢查使用array_key_exists('gender', $_POST)

3

你可以使用@ $定義指數_ POST [「性別」]不引發錯誤

0

的問題就可以輕鬆解決這個樣子。

if(isset($_POST['register'])){ 
    if(isset($_POST['gender'])) { 
     $gender = $_POST['gender']; 
    }else{ 
     $gender = ""; 
    } 
} 

如果您需要使用PHP進行驗證,您可以對$ gender =「」進行驗證。

<html> 
<form action="radio.php" method="POST"> 
    <input type="radio" name="gender" value="male" />Male 
    <input type="radio" name="gender" value="female" />Female 
<input type="submit" name="register" value="Register" /> 
</form>