【问题标题】:Checkbox Php : Keep checked only the checked checkbox after submitting Get formCheckbox Php : 在提交 Get 表单后保持选中复选框
【发布时间】:2017-05-20 08:06:15
【问题描述】:
这是我的代码
<?php foreach ($categories as $cat) { ?>
<li>
<input id="category" name="category[]" type="checkbox" value="<?= $cat->term_id; ?>"
<?php if (isset($_GET['category'])) echo "checked='checked'"; ?>><?= $cat->name ?></input>
</li>
<?php } ?>
但是当我提交表单时,所有复选框都被选中,我不想只选中我选中的复选框,而不是其他复选框
下面的例子
【问题讨论】:
标签:
php
forms
checkbox
checked
【解决方案1】:
问题是因为这条线,
<?php if (isset($_GET['category'])) echo "checked='checked'"; ?>> ...
^^^^^^^^^^^^^^^^^^^^^^^^^^
在表单提交时$_GET['category'] 将被设置,因此isset($_GET['category']) 条件将适用于所有复选框。这就是为什么无论您之前选中哪个复选框,都会选中所有复选框的原因。所以你的foreach 循环应该是这样的:
<?php foreach ($categories as $cat) { ?>
<li>
<input id="category" name="category[]" type="checkbox" value="<?= $cat->term_id; ?>"
<?php if (isset($_GET['category']) && in_array($cat->term_id, $_GET['category'])) { echo "checked='checked'"; } ?>><?= $cat->name ?></input>
</li>
<?php } ?>
【解决方案2】:
请看一下这段代码,我认为它解决了你的问题。
<input type="checkbox" name="small" class="checkbox" <?=(isset($_POST['small'])?' checked':'')?> /> Small
<input type="checkbox" name="medium" class="checkbox" <?=(isset($_POST['medium'])?' checked':'')?> > Medium<br>