2011-06-19 14 views
0

我有多個複選框用於從表單插入MySQL。如何統計具有不同「名稱」屬性的選中複選框的數量?

<fieldset id="my_checkboxes"> 

     <legend>My Checkboxes (Select at least 2)</legend> 

     <label for="checkbox1"> 
      <input type="checkbox" id="checkbox1" value="yes" name="the_checkbox" /> 
      CheckBox #1 
     </label> 

     <label for="checkbox2"> 
      <input type="checkbox" id="checkbox2" value="yes" name="the_checkbox2" /> 
      CheckBox #2 
     </label> 

    </fieldset> 

我需要能夠讓每個複選框有一個唯一的NAME屬性,因爲每個複選框將數據插入到數據庫它自己的專欄。 (否則,我只會使用the_checkbox[]作爲每個名稱)。

我的問題是我需要讓用戶選擇至少2個複選框才能提交表單。因爲我有單獨的名稱爲每個,我再也無法爲它計數通過名稱使用下面的代碼:

$checkboxcount = count($_POST['the_checkbox']); 
if($checkboxcount < 1) 
{ 
    $errors[] = $checkboxcount; 
} 

MY SQL語句如下所示:

$sql = "INSERT INTO $db_table(the_checkbox,the_checkbox2) values 
(
'".mysql_real_escape_string(stripslashes($_REQUEST['the_checkbox']))."', 
'".mysql_real_escape_string(stripslashes($_REQUEST['the_checkbox2']))."' 
)"; 

你會建議我到什麼任答:計數複選框,即使單獨的名稱,或B.保持相同的名稱,但以某種方式插入數據到MySQL作爲單獨的列名稱?

+0

你的SQL語句是什麼樣的? –

+0

用SQL語句編輯問題。 – Joe

+0

首先,你應該接受邁克爾的答案,因爲它正確地符合你的要求。其次,你不應該像你的代碼那樣使用REQUEST。相反,只有在複選框被選中的情況下,您才應該將值轉換爲第二個變量。否則,你將在某些服務器上出現問題。這是因爲只有CHECKED框被張貼到表單。 +1爲邁克爾 – itsols

回答

2

如果您希望保留不同的名字,然後做這樣的事情:

$chkbox_count = 0; 
if (isset($_POST['the_checkbox']) && $_POST['the_checkbox'] == "yes") $chkbox_count++; 
if (isset($_POST['the_checkbox2']) && $_POST['the_checkbox'] == "yes") $chkbox_count++; 
// etc... 

我通常更願意使用一組相關的複選框中使用相同的名稱雖然不同的值,但方式你直接將它們傳遞給一個SQL字符串,使得你的方法不同名稱更容易處理。

+0

完美!謝謝,這很好。現在我只需確保我仍然可以在Validate插件的jQuery端驗證這一點。 – Joe

+0

你的回答是正確的。但我認爲沒有必要檢查值'是',因爲只有選中的框到達服務器。所以只用isset就足夠了。 – itsols

相關問題