我已经通过处理复选框的解决方案,并认为我理解我需要做什么,但我有一个问题,我把删除按钮放在这个代码中。这是我的表:
<table>
<thead>
<tr>
<th>Camera Name</th>
<th>Date Created</th>
<th>Video Size</th>
<th>Video Length</th>
<th>
<button type="submit" class="deletebutton" name="delete_video" value="Delete" title="Delete the selected videos" onClick="return confirm('Are you sure you want to delete?')">Delete</button><br>
<input type="checkbox" name="radioselectall" title="Select All" />
</th>
</tr>
</thead>
<tbody>
<?php
for($i=0;$i<$num_videos;$i++)
{
//do stuff
//Note: I'm looping here to build the table from the server
?>
<tr >
<td onclick="DoNav('<?php echo $url; ?>');">
<?php echo $result_videos[$i]["camera_name"]; ?>
</td>
<td onclick="DoNav('<?php echo $url; ?>');">
<?php echo setlocalTime($result_videos[$i]["video_datetime"]); ?>
</td>
<td onclick="DoNav('<?php echo $url; ?>');">
<?php echo ByteSize($result_videos[$i]["video_size"]); ?>
</td>
<td onclick="DoNav('<?php echo $url; ?>');">
<?php echo strTime($result_videos[$i]["video_length"]); ?>
</td>
<td>
<form name="myform" action="<?php echo htmlentities($_SERVER['REQUEST_URI']); ?>" method="POST">
<input type="checkbox" name="radioselect" title="Mark this video for deletion"/>
<input type="hidden" name="video_name" value="<?php echo $result_videos[$i]["video_name"]; ?>" />
</form>
</td>
</tr>
...
请注意,我遍历并从服务器填充表,但标题显然没有循环。我曾经把删除按钮放在表格和表格的每一行。但是现在因为我想要多删除,我在每一行创建复选框并将删除按钮放在标题中。我还应该注意video_name
至关重要,因此我知道要删除哪些视频。
但这就是问题所在,因为我没有在表单中提交(删除)(在循环中)我无法处理这些复选框。相反,我只有删除按钮任何人都可以提出更好的方法吗?
答案 0 :(得分:1)
一种解决方案是将视频的ID放在其删除复选框的名称中。然后,您可以阅读收到的复选框并解析其中的视频名称。
答案 1 :(得分:1)
表单应该围绕整个表格,而不是在名称的隐藏输入中,您可以在复选框的名称中使用它:
<input type="checkbox" name="radioselect[<?php echo $result_videos[$i]['video_name']; ?>]" />
然后,在接收POST请求的PHP脚本中,$_POST['radioselect']
将是一个数组。然后您可以使用:
foreach(array_keys($_POST['radioselect']) as $k) { ... }
这将循环选中所选复选框。您在video_name
中获得了$k
,您可以像删除一样来处理它。