2011-05-30 128 views
2

請注意,我剛開始學習php。我已經通過了幾個不同的多日教程,現在我正在嘗試自己編寫一個小郵件列表腳本。這個,我敢肯定,這是一個簡單的問題/答案,但我沒有想出如何提出問題的方式已經在谷歌上找到了任何結果。從複選框返回true/false值,false時出錯

我有一個名爲「htemail」複選框,當我把它發送到腳本我有這樣的代碼:

if(!$_POST['htemail']){ 
    $usehtml = 0; 
}else{ 
    $usehtml = 1; 
} 

echo($usehtml); 

如果複選框被選中,則返回1,但如果它不是,我得到以下錯誤:

Notice: Undefined index: htemail in C:\wamp\www\mailing list\createUser.php on line 7 Call Stack #TimeMemoryFunctionLocation 10.0004673576{main}()..\createUser.php:0 0.

我認爲做的第一件事就是到各地向後翻轉的代碼,以便它檢查檢查是否存在等第一(我不知道爲什麼我認爲這將有助於)

在此先感謝您的任何答案。

回答

4

如果未檢查,則瀏覽器可能不會包含在發佈數據中。使用功能isset進行檢查。如果沒有設置,意味着它沒有被檢查,反過來是不正確的,如果設置,可能仍然是錯誤的。

if(isset($_POST['htemail']) && $_POST['htemail'] == "Value"){ //where "Value" is the 
      //same string given in the HTML form, as value attribute the the checkbox input 
    $usehtml = 1; 
}else{ 
    $usehtml = 0; 
} 

至於isset替代你可以使用array_key_exists

2

你想要的是檢測陣列成員的存在,然後檢查它的內容:

$usehtml = 0; 

if (isset($_POST['htemail']) && strtolower($_POST['htemail']) == 'yes'){ 
    $usehtml = 1; 
} 

echo($usehtml); 

isset()檢查,以確保數組成員存在,在這種情況下,您可以檢查以確保值的計算結果爲您所需的值。

此外,上面我已經命令評估默認爲一個值(0),然後改變爲另一個值,如果另一個變量存在。這樣做和if/else語句之間確實沒有太大區別,但我認爲閱讀和理解更清晰。