Checkbox Php:提交获取表单后,仅检查选中的复选框

时间:2017-01-05 17:10:00

标签: php forms checkbox checked

这是我的代码

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

但是当我提交表格时,复选框都被检查了,我不想保持只检查复选框我检查了不是其他人 以下示例

enter image description here

2 个答案:

答案 0 :(得分: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 } ?>

答案 1 :(得分:0)

请查看此代码,我认为它解决了您的问题。

.col-xs-4 {
  background: gainsboro;
  height: 100px;
  text-align: center;
  line-height: 100px;
  border: 1px solid white;
}

.col-xs-4:hover {
  background: lightgray;
}

.col-xs-12 {
  background: lightgray;
  height: 100px;
  text-align: center;
  line-height: 100px;
  border: 1px solid white;
}