我正在开发一个PHP Gallery应用程序,需要一些帮助。实际上我有一个页面,直接显示特定目录中的图像。显示每个图像时,会有一个动态生成的提交按钮,用于分别删除各个图像。
每个图片都有自己的提交按钮,用于删除该图像。作为php的新手,我需要一些可以调用的方法,只删除实际或物理目录中的图像。
我编码的图像和按钮之间存在相似之处,因此每个图像及其各自的按钮都有诸如“img_1”之类的名称,而其按钮是“del_1”。
<form id="albumGallery" name="albumGallery" method="POST">
<?php
$dir = htmlspecialchars($_GET["p"]) . "/";
$imgs = array();
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (!is_dir($file) && preg_match("/\.(bmp|jpe?g|gif|png)$/", $file)) {
array_push($imgs, $file);
}
}
closedir($dh);
} else {
die('cannot open ' . $dir);
}
$i=0;
echo "<div id='images'>";
foreach ($imgs as $idx=>$img) {
//$class = ($idx == count($imgs) - 1 ? ' class="last"' : '');
echo '<table style="float: left; border: 1px solid #EFEFEF; border-radius: 5px; padding: 5px; margin: 5px;"><tr><td><a href="'. $dir . $img .'" rel="example_group" ><img src="' . $dir . $img . '" alt="' . $img . '" id="'. "img_" . $i .'"/>
</a></td></tr><tr><td><input type="submit" class="ctrlDelete" value="" id="'. "del_" . $i .'"/></td></tr></table>';
$i++;
}
echo "</div>";
?></form>
所以,我需要创建一个方法,以便每个按钮删除其各自的图像,并将表单发回给自己。
答案 0 :(得分:2)
对于您的问题,最好使用锚点。如果需要,您可以将它们设置为伪按钮。然后只生成delete.php?id=23
之类的链接,它将执行相应的删除脚本并传递$_GET
参数。
以下是非常简单的实现:
<table>
<tr>
<td>Title</td>
<td>Image</td>
<td>Actions</td>
<tr>
<?php
foreach ($table as $row)
{
echo "<tr>";
echo "<td>".$row['title']."</td>";
echo "<td>".$row['image']."</td>";
echo "<td>";
echo "<a href='delete.php?id=".$row['id']."'>Delete</a>";
echo "<a href='edit.php?id=".$row['id']."'>Edit</a>";
echo "</td>";
echo "</tr>";
}
?>
</table>
delete.php
和edit.php
最后应包含以下代码:
<?php
header("Location: http://www.example.com/");
?>
答案 1 :(得分:1)
@Edward Ruchevits 谢谢你的帮助:D,
我没有使用header();方法但使用了javascript的settimeout();重定向我的页面。这是我的代码......
<script type="text/javascript">
setTimeout("window.location = '<?php echo $_SERVER['HTTP_REFERER'] ?>'", 1);
</script>
<?php
$path = htmlspecialchars($_GET["p"]);
unlink($path);
?>
答案 2 :(得分:0)
我建议在foreach循环中添加form标签,并将每个表单发布到self。每个表单可以简单地包含带有图像ID的隐藏字段。然后,每次加载页面时,您只需检查图像的$ _POST变量,并在提供页面之前将其删除。
或者,您可以考虑使用图片旁边的复选框 - 然后一个表单和一个提交按钮可以在一个表单中执行多个删除操作 - 在我看来效率更高。
希望这有帮助!