2012-01-11 74 views
4

我有一個包含許多複選框的表單。複選框數組只顯示選中的值 - PHP

ex。我想要所有的數組中的所有複選框。陣列'dodatkowe'。

,當我檢查所有複選框有:

Array ([0] => 1 [1] => 1 [2] => 1) 

,但是當我檢查例如僅次於我的:

Array ([0] => 1) 

我需要的是,當我檢查例如第二個複選框:

Array ([0] => 0 [1] => 1 [2] => 0) 
+2

瀏覽器只提交選中的複選框,所以你永遠不會看到未選中的複選框的值。 – Neil 2012-01-11 21:27:21

回答

3

給他們的索引,所以你可以具體參考他們...

... 
<input name="dodatkowe[1]" type="checkbox" value="1" /> 
<input name="dodatkowe[2]" type="checkbox" value="1" /> 
<input name="dodatkowe[3]" type="checkbox" value="1" /> 
... 

不知道爲什麼你覺得你需要看到選中的值,這可以被認爲是檢查的值的倒數....任何試圖做,這是一個黑客,並且是不必要的。

+1

可能,每個前面都有一個:''(改變'dodatkowe ['當然是相應的]之後的數字) – Wrikken 2012-01-11 21:25:35

2

如果複選框未選中,將不包括它的價值傳入的參數,但第一步是給複選框一個唯一的ID:

<input name="dodatkowe[0]" type="checkbox" value="1" /> 
<input name="dodatkowe[1]" type="checkbox" value="1" /> 
<input name="dodatkowe[2]" type="checkbox" value="1" /> 

然後你可以使用PHP來檢查是值有:

$maxfields = 3; 
$selectboxes = $_REQUEST['dodatkowe']; 
for($i = 0; $i < $maxfields; $i++) 
    if(!isset($selectboxes[$i])) $selectboxes[$i] = 0; 

這將會把所有不存在的字段爲0,$selectboxes應該包含你正在尋找的結果。

+2

不確定我喜歡或者會推薦)直接修改'$ _REQUEST' ...可能會引起混淆,取決於您需要對提交的值進行哪些進一步處理。 – jondavidjohn 2012-01-11 21:31:16

+0

正確...您可能需要考慮在之前將其複製到另一個變量。 .. – bardiir 2012-01-11 21:32:42