我知道这里有“PHP keep checkbox checked after submitting form”,但该线程并没有解决我的问题,因为我有多个复选框,我需要的是当你选中一个复选框时,请在提交后保持检查。
目前使用此代码没有任何反应,我尝试了另一种方式但是当我选中“id7”复选框时,所有复选框都会被选中。
我必须知道我给它的id检查了哪个复选框,但我不知道如何。
while ($fila = mysql_fetch_array($rs)) {
echo utf8_encode("
<tr>
<td>
".$fila['title']."
</td>
");?>
<td>
<input type="checkbox" name="checklist[]" value="<?php echo htmlspecialchars($fila['id']); ?>" <?php if(isset($_POST['checklist[]']) && is_array($_POST['checklist[]']) && in_array('$fila', $_POST['checklist[]'])) echo 'checked="checked"'; ?> />
</td>
<?php
}
}
?>
答案 0 :(得分:1)
首先,复选框的值为$fila['id']
,因此在您进行检查时,请使用$fila['id']
代替$fila
。此外,当PHP接收名称中带有[]
的数组输入字段时,[]
将被删除,以便正确的POST变量为$_POST['checklist']
。
尝试更改此行:
<input type="checkbox" name="checklist[]" value="<?php echo htmlspecialchars($fila['id']); ?>" <?php if(isset($_POST['checklist[]']) && is_array($_POST['checklist[]']) && in_array('$fila', $_POST['checklist[]'])) echo 'checked="checked"'; ?> />
到
<input type="checkbox" name="checklist[]" value="<?php echo htmlspecialchars($fila['id']); ?>" <?php if(isset($_POST['checklist']) && is_array($_POST['checklist']) && in_array($fila['id'], $_POST['checklist'])) echo 'checked="checked"'; ?> />
答案 1 :(得分:0)
如果刷新页面,请使用$ _SESSION中的值来确定是否应勾选复选框。像(未经测试)的东西:
<input type="checkbox" name="vehicle" value="Bike"
<?php if (isset($_SESSION['bike_checked']) echo 'checked'; ?>> I have a bike<br>
<input type="checkbox" name="vehicle" value="Car"
<?php if (isset($_SESSION['car_checked']) echo 'checked'; ?>> I have a car<br>
<input type="submit" value="Submit">