2011-10-20 35 views
0

我爲我的表單使用了position absolute's validation engine。我想檢查是否至少選擇了組中的一個複選框。在examples中,通過爲複選框組設置相同的name屬性來完成。 我不能說出名稱相同的複選框,因爲我用下面的代碼保存在數據庫中的狀態:如何驗證多選框狀態?

$values = array(
    'checkbox1'   => null, 
    'checkbox2'   => null 
); 

foreach (array_intersect_key($_POST, $values) as $key => $value) { 
    $values[$key] = mysql_real_escape_string($value); 
} 

$query_add_candidate=sprintf("INSERT INTO dbase (checkbox1, checkbox2) VALUES ('$values[checkbox1]', '$dates[checkbox2]')" 

現在checkbox1checkbox2單獨驗證,怎麼一回事,因爲他們有不同的名稱。我如何檢查是否至少有一個被選中?

這裏是我的HTML代碼:

<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="checkbox1" id="maxcheck1" value="1"/> Text1 
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="checkbox2" id="maxcheck2" value="2"/> Text2 

回答

1

if(!$_POST['checkbox1'] && !$_POST['checkbox2']){ 
    echo 'Error check at least one'; 
} 

,但你真正想要的是一個數組, HTML,

<input type="checkbox" value="ch1" name="check[]" /> 
<input type="checkbox" value="ch2" name="check[]" /> 

PHP

<?php 
if(empty($_POST['check'])){ 
echo 'Error: hey, check at least one will you!?'; 
} 

?> 

所以這樣你就不必請逐一檢查它們,特別是如果您在同一頁面上加載了它們。

注意:你也應該知道,如果複選框未選中它也不會在PHP $ _POST全局設置,否則,如果它被選中,將顯示無論value="..."持有,

+0

好了,我有三個複選框,我想將它們的狀態保存到數據庫: '$ date1 \t = isset($ _ POST [「date」] [0])? $ _POST [「date」] [0]:0; $ date2 \t = isset($ _ POST [「date」] [1])? $ _POST [「date」] [1]:0; $ date3 \t = isset($ _ POST [「date」] [2])? $ _POST [「date」] [2]:0;'但是[這是它的工作方式](http://i.imgur.com/RecYS.jpg) - 左邊是複選框的狀態,右邊是數組內容。 – mkas

+0

我不明白你的問題,檢查和保存意味着什麼?也會丟失前綴零(前導),因爲如果它們保存爲整數(即​​數字),則零不會添加任何值,因此您可能必須將它們保存爲字符串。 – Val

1

如果隨後公佈的檢查,

所以如果你有它$_POST["checkbox_name"]那麼它的檢查,否則它不會被公佈。

在PHP
0

你可以添加大量代碼來以不良方式重新實現控制數組,也可以更改構建查詢的代碼,以便接受控制數組。

我寧願後者。