对动态生成的按钮执行不同的操作。 PHP

时间:2012-08-11 11:24:19

标签: php

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

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

3 个答案:

答案 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.phpedit.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变量,并在提供页面之前将其删除。

或者,您可以考虑使用图片旁边的复选框 - 然后一个表单和一个提交按钮可以在一个表单中执行多个删除操作 - 在我看来效率更高。

希望这有帮助!