我正在尝试创建一个用户可以检查要删除的邮件的功能。显然,如果检查了多条消息,它们都将被删除。
我有以下代码
<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,则处理它并删除它。 但是,无论是一条消息还是十条消息,我如何通过多条消息实现这一目标? 感谢
答案 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值仅在选中时才存在。