Флажок 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 } ?>

введите описание изображения здесь

Но когда я отправляю форму, флажки все отмечены, и я не хочу, чтобы оставались отмеченными только флажок, который я установил, а не другие
Пример ниже

введите описание изображения здесь

0

Решение

Проблема из-за этой линии,

<?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 } ?>
1

Другие решения

пожалуйста, посмотрите на этот код, я думаю, что это решило вашу проблему.

<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>
0

По вопросам рекламы [email protected]