본문 바로가기

프론트앤드 수업

[php,mysql] img파일 받기, 파일 생성, mysql 연동하기

728x90

베스트 셀러등록 , 베스트셀러 목록을 추가했다.

등록 선택시 이미지를 포함한 내용추가 php로 이동

  <form action="process/best_process.php" method='post' enctype="multipart/form-data">

파일을 등록할때는 필수적으로 form 안에 enctype="multipart/form-data" 를 추가해주어야한다.

그리고 전송을 하게되면 $_FILES['이름'] 안에 서버내에 임시위치에 파일이 추가된다.

등록하면 sql 테이블에 img의 임시파일을 내가 원하는 위치로 이동시켜 저장하고 해당 경로를 컬럼명 img에 넣어준다.

move_uploaded_file($file['tmp_name'],"C:Apache24/htdocs/php/book/img/".$file['name']);

php로 이미지파일을 저장하는 방법.

move_uploaded_file(현재파일의위치, '저장할위치'); 으로 저장하면 된다.

처음 post로 내용을 받아오면 'tmp_name'에 임시로 저장된 위치가 저장되기에 그곳에잇는 파일을 내가 원하는 위치로 이동시켜 저장했다.

$query = "insert into books(`title`,`price`,`desc`,`img`)
            values('{$_POST['title']}',{$_POST['price']},'{$_POST['desc']}','img/{$file['name']}')";

테이블안에는 이미지를 저장할 수 없기에 이미지가 있는 위치를 저장하도록 한다.

img/파일명

내용을 넣을때 ' < 는 이스케이프문을 함께 사용하지 않으면 사용이 불가능하니 `(백틱)을 사용하도록 한다.

베스트셀러의 목록이다.

데이터를 가져올때 img컬럼에 값이 없으면 가져오도록 만들었다.

 $conn = mysqli_connect('localhost','root','1234','test');
        $query = "select * from books where img is not null";
        $result = mysqli_query($conn,$query);
        function printList(){
            global $result;
            while($row = mysqli_fetch_array($result)){
                echo "
                    <li>
                      <a href='bestdetail.php?id={$row['id']}'><img src='{$row['img']}'></a>
                      </li> ";
          }
        }

그리고 이미지를 클릭하면 GET방식으로 ID를넘겨 상세내용을 볼 수 있도록 만들었다.

 $bookid = $_GET['id'];
        $conn = mysqli_connect('localhost','root','1234','test');
        $query = "select * from books where id={$bookid}";
        $result = mysqli_query($conn,$query);
        $row = mysqli_fetch_array($result);

받아온 GET['id']로 자료를 조회해 해당 자료만 뿌려주면 완료!

 

 

※폼태그로 파일을 전송할때
1) form 에 속성 추가 
enctype="multipart/form-data"
2) 폼으로 전송된 파일은 php슈퍼글로벌 $_FILES 에 담겨있음
실제 저장되는 임시위치 $_FILES['img']['tmp_name']
3) 임시 위치에서 원하는 위치로 파일을 업로드
move_uploaded_file(임시위치,이동할위치);

 

728x90
댓글