我的表单中有大约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建议一种不同的有效方法来实现这一点,我将不胜感激。
答案 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的评论)。