使用php mysql组合复选框值

时间:2011-09-14 17:35:32

标签: php sql

我的表单中有大约20个复选框

<input type="checkbox" name="c1" value="1" />
<input type="checkbox" name="c2" value="2" />
<input type="checkbox" name="c3" value="3" />
<input type="checkbox" name="c4" value="4" />

我想将这些值添加到数据库中。我只是想在我的数据库中创建20个字段而不是在db中存储的所有值中获取1,2,3,4然后在查询时使用php来分解和显示它。

有人可以告诉我,在提交时我应该如何连接检查字段中的值1,2,3,4,以便我可以传递给数据库。

如果有人可以使用php建议一种不同的有效方法来实现这一点,我将不胜感激。

2 个答案:

答案 0 :(得分:5)

您可以将复选框的名称更改为相同的名称,例如

<input type="checkbox" name="cb[]" value="1" />
<input type="checkbox" name="cb[]" value="2" />

然后通过$_GET$_POST通过

访问它们
if (isset($_POST['cb'])) {
    $my_values = implode(",", $_POST['cb']);
}

如果您希望对它们进行排序,那么您将需要执行以下操作:

if (isset($_POST['cb'])) {
    $my_values = $_POST['cb'];
    sort($my_values);
    $my_db_value = implode(',', $my_values);
}

对于记录,我同意@Shef,因为数据库可以处理额外的负载。但是,根据高度可扩展的解决方案中何时需要此信息,这是一种完全可以接受的方法。

答案 1 :(得分:1)

要回答您的初始问题,首先您需要为所有相同的名称命名,所以:

<input type="checkbox" name="box[]" value="1" />
....
<input type="checkbox" name="box[]" value="20" />

PHP脚本:

$boxes = $_POST['box'];
$values = implode(",", $boxes); // $values now has "1,2,3,4...", insert into table

更好的方法是有一个单独的表(参见@Shef的评论)。