在表单提交中选中数组中的复选框

时间:2013-09-07 18:07:54

标签: php forms checkbox mysqli

我有一个由checkboxes创建的while loop列表,但是在提交表单后,checkboxes会被清除。我曾尝试将记录中的unique id值放在一个隐藏字段中,然后在if query中使用它,然后将checkbox标记为已选中但它什么都不做< / p>

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

3 个答案:

答案 0 :(得分:4)

我通过检查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 }
?>

答案 1 :(得分:0)

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

将以上行替换为:

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

您未正确向Html实体提供checked属性。

答案 2 :(得分:0)

您需要在表格中存储的信息之一是复选框的状态。 因此,您可以在表中创建一个新列,将其命名为“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
}
?>