0
 19   2   1
  View Articles

Name  
   손병목  (2003-08-15 18:28:41, Hit : 19785, Vote : 1630)
Homepage  
   http://www.itmembers.net
Subject  
   게시판에 여러 개의 파일 첨부하기(1/2)
정말 오랜만에 강좌 업데이트합니다.
이번 주에 답변형 게시판에 대한 강좌를 시작하려고 하는데, 그보다 앞서 우선 여러 개의 파일을 첨부할 수 있는 기능을 추가해보겠습니다. 앞 강좌에서 1개의 파일을 첨부할 수 있는 기능을 추가했는데, 앞 강좌의 연장선상에서 진행하겠습니다. 사실 게시판을 만드는데 달랑 첨부 파일이 하나만 업로드할 수 있다면 기능이 좀 약하다는 느낌이 들잖아요.


이번 실습에서는 3개의 파일을 업로드할 수 있도록 하겠습니다. 여기에 약~~~간만 손되면 첨부 파일의 갯수는 맘껏 조정할 수 있습니다.

만들어 볼 폼음 우선 아래와 같습니다.


이 기능을 모두 구현하기 위해서는 다음과 같이 5개의 파일을 손 봐야 합니다.

  • 글 쓰기 폼과 DB 저장 부분 : write.php insert.php
  • 글 내용 보기 : view.php
  • 글 내용 수정 폼과 DB 저장 부분 : modify.php modify_ok.php


그 전에 DB 테이블에 첨부 파일의 이름을 저장할 수 있도록 몇 개의 필드를 추가해야겠죠.

이 강좌와 관련된 소스 파일(5개)은 자료실에 등록해 두었습니다. 참조하시기 바랍니다.

bbs 테이블 수정

기존 테이블은 첨부 파일을 하나만 저장할 수 있도록 되어 있었습니다.
첨부 파일 하나를 저장하기 위해서는 파일의 정확한 경로와 이름을 모두 저장하는 필드와 파일 이름만 저장하는 필드, 이렇게 두 개의 필드가 필요했습니다.
따라서 3개의 파일을 저장하기 위해서는 파일의 경로와 이름을 저장하는 필드, 파일 이름만 저장하는 필드 등 각각 2개씩 추가해야겠지요.



필드를 어떻게 추가해야하는지 모른다구요?
http://localhost/myadmin/ 이렇게 해서 추가를 합니다. 그래도 모르시겠다면 PHP 게시판 1 강좌 중에서 테이블 생성하는 부분을 참조하시기 바랍니다.


write.php

비교적 간단합니다.
기존 파일 첨부 부분을 아래와 같이 수정합니다.
for 문을 사용하여 파일 첨부 입력 폼을 3개까지 만들 수 있도록 했습니다.
여기서 주의할 것은 파일 첨부를 위한 input name의 속성 값이 각각 다르게 지정해야 한다는 겁니다.
127행을 보시면 name 속성에 $selectfile 값이 대입되도록 되어 있습니다.
$selectfile 값은 124행에서 지정하였듯이 "upfile"이라는 문자 뒤에 $num 값이 연결된 형식, 즉 upfile1 upfile2 upfile3 과 같은 식으로 지정되는 겁니다.



insert.php

이 강좌의 핵심이 되는 부분입니다.
그러나 기본적인 원리에 대해서는 이미 수 차례에 걸쳐 이미 설명을 드렸던 것이니 자세한 설명은 따로 하지 않겠습니다.
파일 업로드 기능 구현 및 게시판에 파일 첨부 기능 추가와 관련된 강좌를 참조하시기 바랍니다.

역시 for 문을 사용해서 업로드한 파일을 3개까지 반복하여 저장하고 있습니다.



25행을 보면, $upfile = ${"upfile".$num} 이라고 되어 있습니다.
$num의 값이 1,2,3으로 바뀔 때마다 $upfile의 값도 $upfile1, $upfile2, $upfile3으로 바뀌도록 한 것입니다.
변수를 지정할 때 중괄호 { } 의 용도에 대해 단적으로 알 수 있는 부분입니다.
중괄호 { }를 적절히 사용하면 변수 이름을 다양하게 응용할 수 있습니다.

만약 위 예에서 만약 $upfile = $upfle.$num 과 같이 했다면 어떻게 될까요?
그러면 $upfile에 저장된 값과 $num의 값이 합쳐져서 이상한 값이 $upfile에 저장될 것입니다.

마지막으로 insert 문을 볼까요?



이렇게 써도 되는데, 다음과 같이 필드명을 나열하여 쓰는 것이 정석입니다.
가끔 위와 같이 해서 저장이 안된다는 분들이 있어 아래와 같이 사용하기를 권장합니다.
(이 강좌를 처음부터 순서대로 제대로 따라하시면 상관없는데 그렇지 않은 경우에 저장이 안될 수 있으니까요...)

$sql = "insert into bbs
(number,name,password,email,homepage,subject,memo,count,ip,writetime,file_name1,s_file_name1,file_name2,s_file_name2,file_name3,s_file_name3)
values('','$name','$password','$email','$homepage','$subject','$memo',$count,'$ip',$writetime,'$target1','$upfile1_name','$target2','$upfile2_name','$target3','$upfile3_name')";



어떠세요?
너무 오랜만에 업데이트해서 따라하시는 데에 힘들진 않으셨나요?

이상, 광복절 오후에 동주아빠 손병목이었습니다.

Prev
   게시판에 여러 개의 파일 첨부하기(2/2)

손병목
Next
   게시판에 파일 첨부 기능 추가(3/3) [1]

손병목


Copyright 1999-2021 Zeroboard / skin by Zetyx