复选框在while循环中

时间:2010-12-05 22:22:35

标签: php

我正在尝试创建一个用户可以检查要删除的邮件的功能。显然,如果检查了多条消息,它们都将被删除。

我有以下代码

<form action="process.php" method="post">
    <input type="hidden" name="deleteMessages" />
    <?php
    while($row=mysql_fetch_assoc($q))
    {
        if($row['to_viewed'] == 0)
        {
        ?>
        <tr>
            <td><input type="hidden" name="check_box_1" value="0" />
                <input type="checkbox" name="check_box_1" value="1" />
            </td>
            <td><b><a href='<?php echo $_SERVER['PHP_SELF']; ?>?p=view&mid=<?php echo $row['id']; ?>'><?php echo $row['title'] ?></a></b></td>
            <td><b><a href='<?php echo $_SERVER['PHP_SELF']; ?>?p=view&mid=<?php echo $row['id']; ?>'><?php echo $row['from']; ?></a></b></td>                
            <td><b><?php echo $row['created']; ?></b></td>
        </tr>
        <?php
        }
        else if($row['to_viewed'] == 1)
        {
        ?>
        <tr>
            <td><input type="hidden" name="check_box_1" value="0" />
                <input type="checkbox" name="check_box_1" value="1" />
            </td>
            <td><a href='<?php echo $_SERVER['PHP_SELF']; ?>?p=view&mid=<?php echo $row['id']; ?>'><?php echo $row['title'] ?></a></td>
            <td><a href='<?php echo $_SERVER['PHP_SELF']; ?>?p=view&mid=<?php echo $row['id']; ?>'><?php echo $row['from']; ?></a></td>                
            <td><?php echo $row['created']; ?></td>
        </tr>
        <?php
        }
    }
    ?>
    <input type="submit" value="Delete All" />
    </form>

我想通过复选框,如果值为1,则处理它并删除它。 但是,无论是一条消息还是十条消息,我如何通过多条消息实现这一目标? 感谢

3 个答案:

答案 0 :(得分:2)

在表格中填写:

<input type="checkbox" name="check_box_delete[]" value="<?php echo $row['id']; ?>" /> 

然后处理:

if(isset($_POST['check_box_delete']))
{
    foreach($_POST['check_box_delete'] as $id)
    {
        // Delete $id
    }
}

答案 1 :(得分:0)

<input type="checkbox" 
       name="mid_to_delete[]" 
       value="some message id"
       id="mid_to_delete_some_message_id">
<label for="mid_to_delete_some_message_id">Delete "Some subject"</label>

然后

<?php
    foreach ($_POST['mid_to_delete'] as $mid) {
        delete_some_message_id($mid);
    }
?>

由于仅提交了成功的控件,并且未选中的复选框不成功,因此您获得的所有值都将是已选择删除的值。 (显然你仍然需要执行auth / authz以确保删除的消息是允许用户删除的消息)

答案 2 :(得分:0)

您可以通过使用数组指示符后缀[]命名输入字段,让php在数组中存储多个值。 例如,名为checkbox[]的所有复选框都将存储在$_POST['checkbox'][]中。 请注意,这可能不适用于复选框,因为它们的$ _POST值仅在选中时才存在。