Checkbox Php : 提交 Get 表单后仅选中选中的复选框
Checkbox Php : Keep checked only the checked checkbox after submitting Get form
这是我的代码
<?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 } ?>
但是当我提交表单时,复选框都被选中了,我不想让我只选中我选中的复选框而不选中其他复选框
下面的例子
请看一下这段代码,我认为它解决了你的问题。
<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>
问题是因为这一行,
<?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 } ?>
这是我的代码
<?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 } ?>
但是当我提交表单时,复选框都被选中了,我不想让我只选中我选中的复选框而不选中其他复选框 下面的例子
请看一下这段代码,我认为它解决了你的问题。
<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>
问题是因为这一行,
<?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 } ?>