2017-01-05 17 views
0

Это мой кодCheckbox 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 } ?> 

enter image description here

Но когда я отправить форму флажки все проверены и что я wan't это держать проверяется только флажок я проверил не другие Пример Ниже

enter image description here

ответ

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 } ?> 
+0

Спасибо .... решаемые – Minimal

+0

@Minimal Рад, что смог помочь. ;-) Кстати, вы должны привыкнуть * принимать * ответы, иначе вопросы будут всплывать как * открытые * вопросы. Более того, это также поможет другим разработчикам помочь вам в дальнейшем. Пожалуйста, прочитайте, [как принять ответ на переполнение стека?] (Http://meta.stackexchange.com/a/5235) –

0

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

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