我目前有一个表单,其中使用从MySQL数据库填充复选框
//possible array values in row(value)
$values = array('F', 'R', 'C', 'T', 'S');
// $names = array('football', 'rugby', 'cricket', 'tennis', 'swimming')
$sql = "SELECT value, description
FROM table_1
WHERE ID = '$userid'";
$result = mysqli_query($conn, $sql);
while ($row= mysqli_fetch_array($result)) {
$db_values[] = $row['0'];
然后使用预先选择复选框
<?php
foreach ($values as $value) {
$selected = in_array($value, $db_values) ? ' checked="checked"' : null;
echo "<input type='checkbox' name='sports[]' id ='sport' value=" . $value . $selected . "/>" . $value . "<br />";
} ?>
这部分工作正常,输出为:
<input type='checkbox' name='sports[]' id ='sport' value='F' checked='checked'/>F
第1部分:我试图进一步编辑它,以便在复选框旁边显示名称,而不是像这样的值:
<input type='checkbox' name='sports[]' id ='sport' value='F' checked='checked'/>football
有人对此有什么想法吗?
第2部分:我现在正尝试更新选中/取消选中的复选框,并将值更新到同一个数据库表中。我试过:
$sports = $_POST["sports"];
for ($i=0; $i < sizeof($sports); $i++) {
$sql = "UPDATE table_1
SET value='$sports[$i], ID='$userid'
WHERE ID='$userid'";
$result = mysqli_query($conn, $sql);
但我可能完全错了这一部分,但我不知道如何让它发挥作用。
我不断收到错误:
Duplicate entry 'ID-value' for key 'PRIMARY'
对于每一个选择,我都提交
提前感谢您的帮助。
编辑。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
表_1类似于
ID | Sport
John | F
John | C
John | R
Paul | R
如果我勾选复选框,然后单击更新,就会出现问题。如果用户没有条目,并且我选中该框,则它似乎可以更新ID Sport的组合是的主键
您不应该在一个页面中多次相同id。
并用'
将值属性括起来
<?php
foreach ($values as $value) {
$selected = in_array($value, $db_values) ? ' checked="checked"' : null;
echo "<input type='checkbox' name='sports[]' id ='sport' value='" . $value ."' " . $selected . "/>" . $value . "<br />";
} ?>
创建像这样的阵列
$arr['F'] = "Football";
$arr['R'] = "Rugby";
$arr['C'] = "Cricket";
$arr[$value] instead of $value
编辑
<?php
$arr['F'] = "Football";
$arr['R'] = "Rugby";
$arr['C'] = "Cricket";
foreach ($values as $value) {
$selected = in_array($value, $db_values) ? ' checked="checked"' : null;
echo "<input type='checkbox' name='sports[]' id ='sport' value=" . $value . $selected . "/>" . $arr[$value] . "<br />";
}
?>