2011-03-21 68 views
1

我在頁面上有一個表單。它有太多的東西,如複選框和文本字段和下拉菜單。 但是,當我不選擇其中一個複選框時,我發現窗體的PHP頁面顯示錯誤。

例子:

的HTML代碼:

Checkbox 1<input type="checkbox" name="check1" value="on" /> 
Checkbox 2<input type="checkbox" name="check2" value="on" /> 

PHP代碼:

$check1 = $_GET['check1']; 
$check2 = $_GET['check2']; 

如果選擇在URL發送兩個項目,它工作正常:

localhost/project/checkbox.php?check1=on&check2=on 

但是,當我取消選擇其中1個,假設CHECK2,那麼URL是這樣的:

localhost/project/checkbox.php?check1=on 

,它顯示了我一個錯誤 - 即$ CHECK2是一個未定義的指標。

但我不希望它顯示錯誤,如果複選框沒有被選中。我也試過if聲明來檢查我是否在URL中獲得它,但它沒有工作。

有沒有辦法首先檢查天氣中的數據是否在URL中傳遞?因爲我沒有得到錯誤。 其實錯誤不是主要的,因爲我得到正確的結果,我知道我可以關閉php.ini中的錯誤報告,但那不是我想要做的。我希望它首先檢查數據是否進入?

謝謝...

回答

2

if (isset($_GET['check2']) && !empty($_GET['check2'])會做檢查,如果CHECK2 GET參數存在並且不爲空。

+1

你可以使用空($ _ GET [ 'CHECK2']) – dynamic 2011-03-21 18:27:28

+0

感謝anubhava ......你的回答是完美的......:D。 – 2011-03-21 18:30:36

+0

@ yes123:如果該查詢參數包含0或空格字符,則會失敗。 '$ x = 0;回顯空($ x)? 'y':'n'表示'y'。空是一個可怕的愚蠢功能。 – 2011-03-21 18:38:44

0

該複選框值僅在註冊時進行註冊。所以,你可以簡單地做一個檢查這樣的:

$check1 = isset($_GET['check1']); 
$check2 = isset($_GET['check2']); 

$check1$check2現在有布爾值:

echo "Checkbox 1 one is " . ($check1 ? "checked" : "not checked") . PHP_EOL; 
echo "Checkbox 2 one is " . ($check2 ? "checked" : "not checked") . PHP_EOL;