我正在创建一个表单,其中一个输入是来自数据库的许多复选框。如果表单没有正确填写,则应该返回表单,但是一旦用户返回,仍然应该选中所选复选框。
包含表单的页面使用if
,如果用户犯了错误,他/她会收到一个包含会话的表单,因此填写的内容仍然存在。另一种形式没有会话。
这是我用来从数据库中读出复选框选项的代码:
$STH = $DBH -> prepare("SELECT * FROM tbloptions");
$STH -> execute();
$STH -> setFetchMode(PDO::FETCH_OBJ);
while($row = $STH -> fetch())
{
$optionID = $row -> optionID;
$option = $row -> option;
?>
<input type="checkbox" name="<?php echo $option ?>" value="<?php echo $optionid ?>"> <?php echo $option ?><br>
<?php
}
?>
我应该将什么代码用于包含会话的表单以及我应该使用什么代码来创建会话
感谢
答案 0 :(得分:0)
将方括号添加到复选框名称会在组
中创建所选值的数组<input type="checkbox" name="chk_group[]" value="<?php echo $optionid ?>" /><?php echo $option ?><br />
这可以通过简单的循环在PHP中检索:
<?php
if (isset($_POST['chk_group'])) {
$optionArray = $_POST['chk_group'];
for ($i=0; $i<count($optionArray); $i++) {
echo $optionArray[$i]."<br />";
}
}
?>
接下来,如果选项位于$ optionArray数组中,您可以使用“checked”arg重新显示表单
答案 1 :(得分:0)
这取决于您处理表单变量的方式。以下假设没有处理,并且数据已发布。
确定复选框“name”的值是否设置为“value”,如果是,请检查它:
<input type="checkbox" name="<?php echo $option ?>" value="<?php echo $optionid ?>" <?php if($_POST[$option]==$optionid){echo' checked="checked"';} ?>> <?php echo $option ?>
...