0

MySQL データベースにレコードが保存されています。画像は次のように保存されます。

[image1.jpg],[image2.jpg],[image3.jpg]...等

SQL Select クエリを使用して行を選択しています。

$images = explode(',',$project['images']);

各画像を展開する (, で区切られた)

で、〜がある:

<?php
        foreach($images as $image)
        {
            $display_image = substr($image, 1, -1);
            ?>
            <tr>
                <td><img src="/img/project-gallery/<?php echo $display_image; ?>" width="160px" /></td>
            </tr>
            <?php
        }
        ?>

次のように、フォームで HTML チェックボックスを使用して画像 (選択したもののみ) を削除するにはどうすればよいですか?

<input type="checkbox" name="images[]" id="images[]" />
4

3 に答える 3

0

画像自体をデータベースに保存しないでください。悪い習慣と見なされます。イメージをいくつかのフォルダーのディスクに保存し、パス、サイズ、または必要なパラメーターを含むデータベース内のイメージに関する記録のみを保持します。

最初に各画像に一意の ID を動的に割り当て、最終的に次のように見せるimage_id_checkbox_1必要image_id_checkbox_2があります。

PHP で次のようにして、リクエストの投稿を処理し、チェックされた画像のみを取得します。

if (isset($_POST['delete_selected_images'])) {
    $index = 0;
    foreach ( $_POST as $key => $value ) {
        if ( substr($key, 0, 18) == 'image_id_checkbox_') {
            if ( $value == 'on' ) {
                deleteImage(str_replace('image_id_checkbox_', '', $key));
                ++$index;
            }
        }
    }

関数は次のdeleteImageようにする必要があります。

function deleteImage( $image_id )
{   
  $image = $config['images_path']. '/' .$image_id. '.jpg';
  if ( file_exists($image) ) {
      @chmod($image, 0777);
      @unlink($image);
  }  
}
于 2013-10-14T21:00:56.213 に答える
0

これは非常に幅広い質問なので、HTML の部分だけを扱います。

<input>各画像の横に要素を追加したい...次のようなもの:

<tr>
    <td>
        <input name="images_to_delete[]" type="checkbox" value="<?php echo $display_image; ?>" />
        <img src="/img/project-gallery/<?php echo $display_image; ?>" width="160px" />
    </td>
</tr>

<form>そして、このテーブル/リストをタグで囲む必要があります。このフォームの送信を処理するための php ページも必要ですが、それはあなたに任せます。

PHP では、配列を取得したら$images_to_delete、これは元の $images 文字列から画像を削除できる 1 つの方法です。

$images = "," . $images . ","; // add comma to beginning and end of list

foreach ($images_to_delete as $image_to_delete) {
    str_replace("," . $image_to_delete . ",", ","); // e.g. replaces ",image1.jpg," with ","
}

$images = substr($images, 1, -1); // remove comma from beginning and end
于 2013-10-14T20:53:30.797 に答える