0

私は PHP ギャラリー アプリケーションに取り組んでおり、ここで助けが必要です。実際、特定のディレクトリの画像が直接表示されるページがあります。表示された各画像には、それぞれの画像を個別に削除するために使用される動的に生成された送信ボタンがあります。

すべての画像には独自の送信ボタンがあり、その画像を削除するために使用されます。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 ループ内に form タグを追加し、それらの各フォームを自分自身に投稿することをお勧めします。各フォームには、画像 ID を含む隠しフィールドを含めることができます。次に、ページが読み込まれるたびに、画像の $_POST 変数を確認し、ページを提供する前にそれを削除するだけです。

または、画像の横にチェックボックスを使用することを検討することもできます.1つのフォームと1つの送信ボタンで複数の削除を1回で実行できます.私の意見では、はるかに効率的です.

お役に立てれば!

于 2012-08-11T11:34:59.590 に答える