刷新后保持循环选中的复选框

时间:2015-09-17 11:42:24

标签: php html checkbox page-refresh

刷新后我无法选中正确的复选框。我已经查看了其他问题,但似乎没有人处理这个问题,其中复选框是从for循环生成的(至少我找不到任何东西)。

当我检查一些复选框时,3个随机复选框,刷新时我有3个复选框。然而,这些总是前3个,而不是我检查的确切的。

显然我的代码存在一些我应该解决的问题,但这也让我提出了另一个问题。通过循环生成元素是不好的做法吗?我认为它更好,因为它避免了或多或少重复的行

              $numberOfLanguages = count($languageOptions);
              for ($i = 0; $i < $numberOfLanguages; $i++) {
                $check = '';

                if (empty($_POST['language'][$i])) {
                  $check = '';
                }

                if (!empty($_POST['language'][$i])) {
                  $check = 'checked';
                }

            ?>

                  <li><input type="checkbox" name="language[]" value=" <?php echo $languageOptions[$i] ?>" <?php if($check == 'checked'): ?>checked="checked"<?php endif; ?> /><?php echo $languageOptions[$i] ?></li>

            <?php

              }

1 个答案:

答案 0 :(得分:1)

您还必须在输入标记的名称中包含行号,否则您将始终获得元素0,1和2.如:

<li><input type="checkbox" name="language[<?php echo $i; ?>]"...

从循环生成相似标记可以更容易地维护代码并发现错误;有时您必须这样做,因为内容来自数据库。所以不,这不是一种不好的做法。