复选框组添加到数据库

时间:2012-12-16 15:15:35

标签: php mysql checkbox

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

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语句,我根本不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

你需要的是使用一个数组,这意味着用尾随开口[命名输入字段并关闭方括号],如此......

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

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

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

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

答案 1 :(得分: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);