본문 바로가기

프론트앤드 수업

[php,mysql] 연동 게시물이미지 삭제, 수정[파일삭제까지]

728x90

수정,삭제 버튼 생성.

               <input type="hidden" name="id" value="<?=$_GET['id']?>">
               <input type="hidden" name="img" value="<?=$row['img']?>">     

이미지버튼 변경시 id만을 넘겨주는게 아니라 변경전 img의 이름값도 함께넘겨줘 넘어간 이후

이와 변경된 img의 이름을 확인해서 비교해준다.

수정 내용 입력시 2가지 쿼리에서 선택된다.

1. 이미지파일을 수정한경우.

2. 이미지파일을 수정하지 않은경우.

    $conn = mysqli_connect('localhost','root','1234','test');
     $query = "update books set  
     `title`='{$_POST['title']}',`desc` ='{$_POST['desc']}' ,
     `price`={$_POST['price']}
     where id = {$_POST['id']}";
     $query2 = "update books set  
     `title`='{$_POST['title']}',`desc` ='{$_POST['desc']}' ,
     `price`={$_POST['price']}, `img` ='img/{$file['name']}'
     where id = {$_POST['id']}";
     if($_POST['img']== "img/".$file['name']){
        $result = mysqli_query($conn,$query);
    }else{
         unlink("../".$_POST['img']);
         $result3 = move_uploaded_file($file['tmp_name'],"C:Apache24/htdocs/php/book/img/".$file['name']);
        $result2 = mysqli_query($conn,$query2);
     }
    header('Location:../index.php'); 

이미지파일을 수정하지않은 경우에는 제목,가격, 내용만을 변경한다.

이미지파일을 수정한 경우에는 제목,가격,내용,이미지 테이블의 내용을 변경하고,

원레있던 파일을 unlink로 삭제해준다. (unlink사용시 절대경로 사용시 동작하지않으니 상대경로를 사용)

변경완료 !.

    $conn = mysqli_connect('localhost','root','1234','test');
    $query = "delete from books where id={$_POST['id']}";
    $result = mysqli_query($conn,$query);
    unlink("../".$_POST['img']);

삭제의경우 다른것 없이 id만을 받아와서 해당 내용을 모두 지우고 unlink로 파일까지 지워준다.

이미지 수정시 이름 나오게 만들기

input은 style position:absolute를 줘서 위치를 고정시키고 opacity :0 을입력해 보이지 않게 만든다.

2개의 labal을줘서 하나는 파일선택 하나는 기본 img명을 입력해놓고 하나의 label에 스타일을 줘서 버튼과 비슷하게 만든다.

내용의 변경은 script를 사용했다.

         <input type="file" style="position:absolute; top:0; left:0; opacity:0" name='imge' onchange='imageChange(this)'></td>

                 function imageChange(input){
            let valueArr = input.value.split('\\');
            // imaLabel의 내용을 input의 value값으로 변경
            console.log(input.value);
            document.querySelector('#imgLabel').innerHTML = valueArr[valueArr.length-1]
        }
728x90
댓글