2017-06-25 13 views
0

ユーザがクリックしたときにデータベースから画像を削除する方法を教えてください。PHPでクリックして画像をアレイから削除

私は、これは画像の配列がpost_gallery_imgデータベース列にどのように見えるかです

<input id="galleryImgs" type="file" multiple="multiple" name="files[]"> 

...カンマで区切られた各リンクでテーブルに画像へのリンクを配置入力フィールドを持っています。

Img1.jpg、Img2.jpg、Img3.jpg、Img4.jpg、

私は、データベースから画像を呼び出して、このPHPコードでそれらを示しています。

$query = "SELECT post_gallery_img FROM posts WHERE post_id = $get_post_id"; 
$select_gallery_imgs = mysqli_query($connection, $query); 

while($row = mysqli_fetch_assoc($select_gallery_imgs)) { 
    $post_gallery_img = $row['post_gallery_img']; 

    $post_gallery_img = explode(',', $row['post_gallery_img']); 

    foreach($post_gallery_img as $out) { 
     echo '<img id="editPostGalleryImgs" src="../userImages/' . $out . '" alt="Post Image">'; 
    } 
} 

これは、それがenter image description here

今私の目標は、ユーザが第2の画像をクリックしてみましょう、それが配列から削除されると、「アップデート後は」post_gallery_imgをクリックしたときに持っているユーザーにどのように見えるかです列が新しい配列で更新されます。

私はこのようなものを探しています。

$implodeArray = implode(',', array_filter($post_gallery_img)); 

$query = "UPDATE posts SET post_gallery_img = CONCAT('{$implodeArray}' , ',') WHERE post_id = $get_post_id "; 

$delete_img = mysqli_query($connection, $query); 

答えて

0

あなたはPHPから画像を削除してから、新しい値でデータベース内のフィールドを更新できます。

<?php 
$before = "image1,image2,image3,image4"; 
$image_to_remove = $_GET['image_to_delete']; 
$images_list = explode(",", $before); 
$new_images_list = array(); 
foreach($images_list as $img){ 
    if($img == $image_to_remove){ 
     continue; 
    } 
    $new_images_list[] = $img; 
} 
$after = implode(",", $new_images_list); 

$query = "UPDATE posts SET post_gallery_img = '$after' WHERE post_id = $get_post_id "; 

前のコードが安定したバージョンではありません、あなたはそれを適応する必要がありニーズ。

更新:私が行った更新を見れば、グローバル変数$ _GETを使用して削除するイメージを取得できます。

あなたは、このようなリンクを作成する場合は...

<a href="some.php?image_to_delete=YOUR_IMAGE_NAME">Remove image</a> 

...ヨ[ 'image_to_delete']削除するイメージの名前を$ _GETをで受け取ることになります。

+0

ユーザーがクリックして特定の画像を削除する方法を教えてください。 – Brad

+0

グローバル変数$ _GETを使用してイメージを取得できます。私はあなたの前のコードを更新する予定です。 – Synkronice

0

jQueryでこれを行うことができます。

  1. 画像と[投稿を更新]ボタンをフォームに挿入します。
  2. 画像に1つずつ、フォームに非表示のチェックボックスを追加します。チェックボックスのvalueプロパティをイメージ名と同じに設定する - Img1.jpg、Img2.jpgなどすべてのチェックボックスをデフォルトで 'checked'に設定する
  3. イメージのjQueryクリックハンドラを追加すると、イメージがクリックされると、それに対応する隠しチェックボックスはチェックされません。
  4. フォームが送信されたら、チェックボックスの値を取得し、post_gallery_imgフィールドを更新します。
関連する問題