Это мой код
<?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 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 } ?>
пожалуйста, посмотрите на этот код, я думаю, что это решило вашу проблему.
<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>