我有一个由checkboxes
创建的while loop
列表,但是在提交表单后,checkboxes
会被清除。我曾尝试将记录中的unique id
值放在一个隐藏字段中,然后在if query
中使用它,然后将checkbox
标记为已选中但它什么都不做< / p>
<?php
while($row = mysqli_fetch_array($result)){
$posted = $row['auditID'];
?>
<tr class="hover">
<td width="180"><? echo $row['auditName']; ?>
<input type="hidden" name="audit_id_confirm" value="<? echo $row['auditID'];?>">
</td>
<td width="33"><input type="checkbox" name="audit_selected[]"
value="<? echo $row['auditID'];?>"
<?php if($_POST['audit_id_confirm'] == $posted){ echo "checked"; }?>>
</td>
</tr>
<?php
}
?>
答案 0 :(得分:4)
我通过检查id = f对它进行了排序,其中id号是在已发布的数组中。
<?php
$selected = $_POST['audit_selected'];
while($row = mysqli_fetch_array($result)){
$audit = $row['auditID'];
if(in_array($audit, $selected)) {
$check="checked='checked'";
}else{
$check = '';
} ?>
<tr class="hover">
<td width="180">
<?php echo $row['auditName'].' '.$num_audited; ?></td><td width="33"> <input type="checkbox" name="audit_selected[]" value="<?php echo $row['auditID'];?>" <?php echo $check; ?> >
</td>
</tr>
<?php }
?>
答案 1 :(得分:0)
<?php if($_POST['audit_id_confirm'] == $posted){ echo "checked"; }?>>
将以上行替换为:
<?php if($_POST['audit_id_confirm'] == $posted){ echo "checked='checked'"; }?>>
您未正确向Html实体提供checked
属性。
答案 2 :(得分:0)
您需要在表格中存储的信息之一是复选框的状态。 因此,您可以在表中创建一个新列,将其命名为“checkboxstate”。 现在在代码中使用以下代码插入复选框:
<input type="checkbox" name="<?php echo($posted); ?>">
到目前为止,我们创建了几个名称与$ posted相同的复选框,换句话说,每个复选框的行名称为“$ posted”值。
现在唯一剩下的就是提交表单并存储复选框信息,它将返回TRUE或FALSE,我们将把它保存在我们的表格中,在“checkboxstate”列中。
所以现在在我们的表中,我们将有一堆包含多个列的行,其中一列将是“checkboxstate”,其值将为TRUE或FALSE。
此时我们已经解决了这个问题,剩下的就是插入一个简单的if来显示一个选中的复选框或一个未选中的复选框。
<?php
while($row = mysqli_fetch_array($result)){
$posted = $row['auditID'];
$cbs = $row['checkboxstate'];
?>
<tr class="hover">
<td width="180"><? echo $row['auditName']; ?></td>
<td width="33">
<?php if($cbs == "true") echo "<input type='checkbox' name='$posted' checked='checked'>"; else echo "<input type='checkbox' name='$posted'>";
</td>
</tr>
<?php
}
?>