0

我有以下查询检索客户端数据以创建复选框组。我需要将选定的复选框作为单独的行添加到数据库中,但我不确定如何编写它,因为我以前没有这样做过。我很困惑,因为复选框的数量会有所不同。

res=mysql_query('SELECT id,name FROM tbl_client WHERE active="1" ORDER BY name DESC',$dbh) or die(mysql_error());
num=mysql_num_rows($res);
for($run=0; $run<$num; $run++)
{
val=mysql_fetch_row($res);
echo '<label><input type="checkbox" name="CheckboxGroup1" value="'.$val[0].'" id="CheckboxGroup1_0" />'.$val[1].'</label><br />';
}

当我提交复选框时,如何访问复选框以便将它们添加到数据库中的各个行?我想我可以使用某种Foreach声明,我只是不知道该怎么做。

4

2 回答 2

1

您需要的是使用一个数组,这意味着使用尾随[方括号来命名您的输入字段,]如下所示......

<label><input type="checkbox" name="CheckboxGroup[]" /></label><br />

当表单提交给 PHP 脚本时,它的作用是创建一个以CheckboxGroup您的$_POST$_GET 超级全局变量命名的数组(取决于表单使用的方法)。因此,如果您的 HTML 中有 1 或 1000 个这些输入元素,它们将全部填充$_POST['CheckboxGroup']在 PHP 中 - 或 $_GET - 下,您可以像这样迭代它们......

foreach ($_POST['CheckboxGroup'] as $checkbox) {
    /* do whatever you want with $checkbox here */
}

请注意,复选框值仅在 UA 被选中时才会在请求中发送。另外,请不要使用 mysql_* 函数与 PHP 中的 mysql 数据库交互,因为它已被弃用,并将从 PHP 的未来版本中删除。对于新应用程序,请考虑使用MySQLiPDO与 PHP 中的 mysql 数据库交互。

于 2012-12-16T15:27:29.727 回答
0

在 HTML 表单中,复选框和单选控件是独一无二的,如果它们没有被客户端触发,它们就不会出现在请求中。因此,您的脚本必须提前知道预期的复选框。对于 type=text、submit 等的输入,请求包含命名控件,即使数据字符串为空。

有几种方法可以完成这类事情。您可以制作带有或不带有命名元素的复选框数组,如下所示:'

<input type="checkbox" name="color[orange]" />Orange
<input type="checkbox" name="color[green]"  />Green

您还可以提供与复选框元素同名的 type=hidden 表单元素。最后一个同名的表单元素将与请求一起呈现。通过这样做,您始终可以拥有可预测的元素数量。如果未触发复选框,则隐藏值将在请求中。如果客户选择了复选框,复选框值将在那里。

尝试设置一个表单,将您的复选框测试提交给一个说明这一点的 PHP 脚本(此处完整显示)

<?php var_dump($_POST);
于 2012-12-16T15:40:08.727 回答