如何计算具有不同“名称”属性的已检查复选框的数量?

时间:2011-06-19 02:01:46

标签: php forms

我有一个带有多个复选框的字段集,用于表单中的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']))."'
)";

你建议我使用A.计算复选框,即使是单独的名字,或B.保持相同的名称,但不知何故以单独的列名称将数据插入MySQL?

1 个答案:

答案 0 :(得分: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字符串的方式使得不同名称的方法更容易处理。 / p>