我注意到PHP似乎只返回選中複選框的值。我希望看到複選框的列表,而不僅僅是選中複選框的值。有沒有辦法檢測未經檢查的框的變量?即使未從HTML檢查到PHP,我如何獲得所有複選框變量?
我問,因爲我想能夠更新設置。例如,我有幾個已經選中的選項,但是如果用戶決定取消選中一個選項,我需要知道未選中的值,以便我可以更新要禁用的選項。
我注意到PHP似乎只返回選中複選框的值。我希望看到複選框的列表,而不僅僅是選中複選框的值。有沒有辦法檢測未經檢查的框的變量?即使未從HTML檢查到PHP,我如何獲得所有複選框變量?
我問,因爲我想能夠更新設置。例如,我有幾個已經選中的選項,但是如果用戶決定取消選中一個選項,我需要知道未選中的值,以便我可以更新要禁用的選項。
我剛碰到這個問題。我通過添加重複的hidden
字段來解決此問題。當瀏覽器發送此信息時,第二個字段將覆蓋第一個字段(因此請確保hidden
字段在前)。
<input type="hidden" name="foo" value="">
<input type="checkbox" name="foo" value="bar">
如果checkbox
未選中你:
$_REQUEST[ 'foo' ] == ""
如果checkbox
被選中你:
$_REQUEST[ 'foo' ] == "bar"
哇!真棒解決方案!感謝大家。 – netrox 2009-12-22 03:57:35
一個非常聰明的主意! +1 – 2009-12-22 04:00:07
它非常依賴於客戶的實施。 – 2012-12-19 08:51:49
純粹的PHP實現似乎不可能,你可以嘗試使用jQuery/AJAX。
這不是純粹用PHP來完成的。
瀏覽器只會發送有關複選框的信息(如果它們已選中),如果您還想發送有關未選中複選框的信息,則必須在表單中添加隱藏字段並使用JavaScript來管理它們。
假設你有要檢查3個複選框,並update_settings是你的函數的名稱,它把複選框的名字作爲第一個參數,把一個布爾值作爲第二個參數(激活或不激活)。
看看下面的代碼片段:
$checkboxes = array("checkbox1", "checkbox2", "checkbox3");
foreach($checkboxes as $checkbox){
$checked = isset($_POST[$checkbox]);
update_settings($checkbox, $checked);
}
我們雖然Peter Kovacs解決它去上班,我不認爲這是不現實的,因爲你可以使用isset已經檢查您的變量。
我剛剛偶然發現了這個問題,我通過更新數據庫中的所有值來取消選中,然後重新檢查POST數據中的所有值,對此進行了排序,這對我來說很好,但可能不是每個人的茶。
嗯,如果你能夠填充所有的複選框,你不應該能夠知道哪些是基於被檢查的那些未被選中的複選框嗎? – 2009-12-22 03:41:57