【问题标题】:Keep checkboxes in array checked on form submit在表单提交时检查数组中的复选框
【发布时间】:2013-09-11 15:37:09
【问题描述】:

我有一个由while loop 创建的checkboxes 列表,但是当提交表单时,checkboxes 被清除。我试图使用记录中值的unique id,方法是将其放在隐藏字段中,然后在if query 中使用它,然后将checkbox 标记为选中,但它什么也不做

<?php 
    while($row = mysqli_fetch_array($result)){
    $posted = $row['auditID'];
?>
 <tr class="hover">
    <td width="180"><? echo $row['auditName']; ?>
       <input type="hidden" name="audit_id_confirm" value="<? echo $row['auditID'];?>">
    </td>
    <td width="33"><input type="checkbox" name="audit_selected[]"
       value="<? echo $row['auditID'];?>" 
       <?php if($_POST['audit_id_confirm'] == $posted){ echo "checked"; }?>>
    </td>  
 </tr>
<?php
    }
?>

【问题讨论】:

    标签: php forms checkbox mysqli


    【解决方案1】:

    我通过检查 id=f 对它进行排序,id 号在已发布的数组中。

    <?php
        $selected = $_POST['audit_selected'];
    
        while($row = mysqli_fetch_array($result)){
            $audit = $row['auditID'];
            if(in_array($audit, $selected)) {
                   $check="checked='checked'";
            }else{
               $check = '';
            } ?>
            <tr class="hover">
                <td width="180">
                    <?php echo $row['auditName'].' '.$num_audited; ?></td><td width="33">    <input type="checkbox" name="audit_selected[]" value="<?php echo $row['auditID'];?>" <?php echo $check; ?> >
                </td>  
            </tr>
        <?php }
    ?>
    

    【讨论】:

      【解决方案2】:
      <?php if($_POST['audit_id_confirm'] == $posted){ echo "checked"; }?>>
      

      将上面的行替换为:

      <?php if($_POST['audit_id_confirm'] == $posted){ echo "checked='checked'"; }?>>
      

      您没有正确地向 Html 实体提供 checked 属性。

      【讨论】:

      • 你到底想做什么
      • 当表单发布时,我希望它保留复选框中的检查
      • 我检查并发现问题是$_POST['audit_id_confirm']没有发布,这就是它没有出现的原因。粘贴您的完整代码
      • 你要哪位代码,页面大约900行。该值确实发布了,因为我可以在页面中进一步回显该值,但我不想查看它,我只是希望复选框保持选中状态
      • 转储$_POST['audit_id_confirm']$posted 看看它们是否相同?
      【解决方案3】:

      您需要在表格中存储的信息之一是复选框的状态。 因此,您可以在表中创建一个新列,将其称为“checkboxstate”。 现在在您的代码中使用以下代码插入复选框:

      <input type="checkbox" name="<?php echo($posted); ?>">
      

      到目前为止,我们已经创建了几个名称与 $posted 相同的复选框,换句话说,每个复选框将具有其行的“$posted”值的名称。

      现在剩下的就是提交表单并存储复选框信息,这将返回 TRUE 或 FALSE,我们将把它保存在我们的表中,在“checkboxstate”列中。

      所以现在在我们的表中,我们将有一堆包含几列的行,其中一列将是“checkboxstate”,其值为 TRUE 或 FALSE。

      此时我们已经基本解决了这个问题,剩下的就是插入一个简单的 if 来显示选中的复选框或未选中的复选框。

      <?php
      while($row = mysqli_fetch_array($result)){
      $posted = $row['auditID'];
      $cbs = $row['checkboxstate'];
      ?>
      <tr class="hover">
      <td width="180"><? echo $row['auditName']; ?></td>
      <td width="33">
      <?php if($cbs == "true") echo "<input type='checkbox' name='$posted' checked='checked'>"; else echo "<input type='checkbox' name='$posted'>"; 
      </td>  
      </tr>
      <?php
      }
      ?>
      

      【讨论】:

      • 感谢您的帮助,但使用表格并不是一个真正的选择,因为我有几个页面我想用不同的值等做类似的事情
      猜你喜欢
      • 2013-08-25
      • 2020-01-14
      • 2012-05-23
      • 2013-01-27
      • 1970-01-01
      • 2021-09-22
      • 2013-01-21
      相关资源
      最近更新 更多