2014-01-18 29 views
0

我有一個從數據庫接收問題的頁面,並自動生成一個調查頁面。然後使用POST將這些數據發送到相同的表單。代碼然後將問題分解爲複選框/單選按鈕類型,並適當地存儲答案。帶多個複選框的PHP表單處理

這適用於我的單選按鈕類型問題,但對於複選框類型,$ _POST數據中只存在最後選擇的選項。

這是一個樣本複選框問題的生成HTML -

1 . Question One 
    <br/> 
<fieldset> 

     <label for="check[0]"> 
    <input type="checkbox" class="checkbox" id="check[0]" name="check[0]" value="Opt One" required="required" minlength="2">Opt One 
    </label> 

    <br /> 
     <label for="check[1]"><input type="checkbox" class="checkbox" id="check[1]" name="check[0]" value="Opt Two">Opt Two 
    </label> 

    <br /> 
     <label for="check[2]"><input type="checkbox" class="checkbox" id="check[2]" name="check[0]" value="Opt Three">Opt Three 
    </label> 

    <br /> 
     <label for="check[3]"><input type="checkbox" class="checkbox" id="check[3]" name="check[0]" value="Opt Four">Opt Four 
    </label> 

    <br /> 
    <label for="0" class="error" style="display:none"> Please select at least one option. </label> 
    <br/> 
</fieldset> 

例如,如果這是唯一的問題,我選擇「選項一」和「選項二」,然後的print_r($ _ POST)顯示如下 -

Array ([check] => Array ([0] => Opt Two) 

這基本上意味着問題ID 0的選擇的選項是兩個選項(選擇加入一個已經在這裏漏掉了)。

如果需要,我可以顯示更多的代碼,但截至目前,我覺得這與我的HTML語法有關。

+0

給予不同的名稱檢查boxs和嘗試... – user1844933

回答

1
<input type="checkbox" name="check[]" value="Opt One" checked> 
<input type="checkbox" name="check[]" value="Opt Two" checked> 
<input type="checkbox" name="check[]" value="Opt Three" checked> 

<?php print_r($_POST["check"]); ?> 

輸出得到什麼:

Array ([0] => Opt One, [1] => Opt Two, [2] => Opt Three) 
+0

如果我使用name =「check0 []」和name =「check1 []」,這也會起作用嗎? 更新:好吧,所以它的工作原理,但我的方式,我把它命名爲不好的編程習慣,或者是好的? –

0

您可以使用name=check[],然後看到你在$_POST

+0

這如果我有一個工作問題只是對的?如果我有第二個問題,它不會衝突嗎? –

+0

它將使用選中的選項製作一個數組 – cornelb