0

我正在开发一个 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>

所以,我需要制定一个方法,以便每个按钮删除其各自的图像,并将表单发回给自己。

4

3 回答 3

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.phpedit.php应在最后包含以下代码:

<?php

header("Location: http://www.example.com/");

?>
于 2012-08-11T11:26:57.870 回答
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);
?>
于 2012-08-13T04:40:45.657 回答
0

我建议在你的 foreach 循环中添加表单标签,并将这些表单中的每一个发布给 self. 每个表单都可以简单地包含一个带有图像 ID 的隐藏字段。然后每次页面加载时,您只需检查图像的 $_POST 变量并在提供页面之前将其删除。

或者,您可以考虑使用图像旁边的复选框 - 然后一个表单和一个提交按钮可以同时执行多个删除 - 我认为效率更高。

希望这可以帮助!

于 2012-08-11T11:34:59.590 回答