2017-12-13 25 views
0

私はMySQL DBとフォルダから削除できるファイルアップロードシステムを持っています。 唯一の問題は、フォルダ内のすべてのファイルが1つではなく削除されることです。各フォルダは、人の名前を持つカスタムフォルダです。フォルダからのファイルの削除とmysqlの結合テーブル

2つのテーブルのIDが等しいジョイントテーブルがあります。私はファイルの場所を知るために人の名前を受け取るために参加したテーブルを必要とします。例えば

$analyse = mysqli_query($conn, "SELECT * 
           FROM analyse 
           INNER JOIN persons ON 
           analyse.id_person = persons.id"); 

while ($row = mysqli_fetch_array($analyse)) { 
    $img = $row['img_name']; 
    $name= $row['name']; 
    $frontname= $row['frontname']; 
    $image_url = "../persons/{$name} {$frontname}/analyse/{$img}"; 
    $result = mysqli_query($conn, "DELETE FROM analyse WHERE id=$id"); 
    unlink($image_url); 
    if($result){ 
     header('Location: ' . $_SERVER['HTTP_REFERER']); 
    } else { 
     echo "Failed to delete"; 
    } 
} 

は、これは、これまで複数のファイルではなく、私が選択されたいずれか一つで削除されている場合、私の作業コードである人X ID 15とIDを持つ三つの異なるIDを持つ画像が、それぞれの時間を持っています(15)である。私は、ID 15

UPDATE 私は解決策、いつも私のDBの行の最初だった削除する経由して来たIDを見つけて、すべてのファイルの代わりに、単一の選択したファイルを削除できるようにしたいです。私の配列の取り出しは間違っていて、私のIDも結果的にでした。 答えをありがとう。

+0

選択した画像のIDをどのように渡しますか? –

+0

私はURLからIDを取得します: $ id = $ _GET ['id']; – JDB

+0

そして、私は自分のフォームの中にそれを渡すどのようにこの:

wilt verwijderen?')">Verwijder
JDB

答えて

0

削除クエリで制限1を使用してみてください。

$analyse = mysqli_query($conn, "SELECT * 
           FROM analyse 
           INNER JOIN persons ON analyse.id_person = persons.id"); 

while ($row = mysqli_fetch_array($analyse)) { 
    $img = $row['img_name']; 
    $name= $row['name']; 
    $frontname= $row['frontname']; 
    $image_url = "../persons/{$name} {$frontname}/analyse/{$img}"; 
    $result = mysqli_query($conn, "DELETE FROM analyse WHERE id=$id LIMIT 1"); 
    unlink($image_url); 
    if($result){ 
     header('Location: ' . $_SERVER['HTTP_REFERER']); 
    } else { 
     echo "Failed to delete"; 
    } 
} 
+0

と彼が何をしたい場合、これがない第二のファイルの代わりに、最初の1 –

+0

を削除することですが、更新してください確かに仕事。 – JDB

関連する問題