2017-12-13 12 views
0

MySQL 데이터베이스 및 폴더에서 삭제할 수있는 파일 업로드 시스템이 있습니다. 유일한 문제는 폴더의 모든 파일이 단일 폴더 대신 삭제된다는 것입니다. 각 폴더는 사용자의 이름이있는 사용자 정의 폴더입니다.폴더 및 mysql 조인 테이블에서 파일 삭제

두 테이블의 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

그가의 대신 –

+0

하나의 제의 두 번째 파일을 삭제하려면 어떻게이하지 않는를 업데이트하십시오 주석 코드를 작성하지 않는 참으로 일합니다. – JDB