티스토리 뷰

프로그램의 설명
이 페이지는 입력을 받는 부분으로 iframe을 이용해 현재 페이지 내에서 파일의 업로드와 삭제가 가능하게 만들었다
또한 댓글을 달면 계층이 생기게끔 만든 계층형 게시판으로서 먼저 올라온 글을 출력해 주는 부분을 만들었다
질문일 경우 view프로그램에서 idx값을 가져오게 된다 idx값이 없다면 리스트에서 글쓰기를 한것이고
값이 있다면 view프로그램에서 댓글을 선택한게 된다

계층을 위한 변수
$idx, $content, $subject

업로드 다운로드를 위한 스크립트
fileupload()
file_delete()

사용기법
iframe을 이용한 처리기법

히든박스의 이유
저장프로그램인 write_ok.php로 갈때 가져가야 할 값들을 가져가기 위해 있는 값들

사용되는 Table
T_study  ->  게시판의 내용이 저장되는 테이블
t_file   ->  파일의 사이즈와 이름 다운로드 횟수등이 저장되는 테이블



스크립트 부분


function send() {
 if(fn.subject.value=="") {
  alert("제목을 입력하세요");
  fn.subject.focus();
  return;
 }
 if(fn.content.value=="") {
  alert("내용을 입력하세요");
  fn.content.focus();
  return;
 }
 if(document.all.group.value=="0"){
  alert("세부 게시판을 선택해 주세요");
  document.all.group.focus();
  return;
 }
 var filecnt=document.all.filelist.options.length;
 for(var i=0;i fn.action="write_ok.php";
 fn.target="_self";
 // action과  target은 파일 업로드로 변경된 것을 다시 변경 시켜주는것이다
 fn.submit();
}
//-------------------------------파일 전송 ----------------------------------------
function fileupload() {
 fn.target="uploadform";
 fn.action="upload.php";
 fn.submit();
}
function file_delete() {
 fn.target="uploadform";
 fn.action="filedelete.php";
 fn.submit();



// 파일업로드를 위한 멀티 셀렉트 박스


// 파일업로드 시킬 버튼과 투명도 조절


   
   
           
              <input name="file" type="file" id="file" onChange="fileupload()">
           

// 아이프래임으로 감쳐논 또 다른 페이지

<iframe src="" name="uploadform" style="display:none;"></iframe>

// 레이어 1의 스타일

#Layer1 {
 position:absolute;
 height:0;
 z-index:1;
 width: 100;
}


숨겨져있는 아이프래임 파일 업로드소스  이름 : upload.php

include("../include/config.php");
$sql = "select ifnull(max(c_idx)+1,1) from t_file";
$rs = mysql_query($sql);
$idx = mysql_result($rs,0,0);
if(@copy($HTTP_POST_FILES["file"]["tmp_name"],"data/$idx")) {
$filename=$HTTP_POST_FILES["file"]["name"];//업로드된 원본 파일명
$size=$HTTP_POST_FILES["file"]["size"];//업로드된 파일의 크기(byte)
$sql="insert into t_file(c_idx,c_file,c_size,c_down) values('$idx','$filename','$size','0')";
if(mysql_query($sql)) {
echo("
<script language='javascript'>
 var myEle = document.createElement('option');
 myEle.text = '$filename';
 myEle.value = $idx;
 parent.fn.filelist.add(myEle);
 </script>
 ");
}
else {
echo("<script>
alert('1파일업로드를 하지 못했습니다.');
</script>");
}

mysql_close();
}
else echo("<script>
alert('313파일업로드를 하지 못했습니다.');
</script>");
?>


//숨겨져있는 아이프래임의 파일삭제 이름 : filedelete.php

include("../include/config.php");
$cnt = count($filelist);
$filenum=join("','",$filelist);
$sql = "delete from t_file where c_idx in ('$filenum')";
echo $sql;
if(@mysql_query($sql)); {
for ($i=0;$i<$cnt;$i++) {
unlink("data/$filelist[$i]");
}
?>
<script language="javascript">
 var filecnt=parent.fn.filelist.options.length-1;
 for(var i=filecnt;i>=0;i--) {
 // 큰값부터 지우고 내려오는 이유는 작은것부터 삭제했을경우 번호들이 한단계식 낮아지기 때문에
 // 나중에 반복해야 하는 갯수가 실제 갯수보다 작아져 스크립트 오류를 낸다
 // -1을 해준 이유는 셀렉트 박스의 일련 번호는 0부터 시작하지만 갯수체크는 1부터 시작하기 때문이다
 if(parent.fn.filelist.options[i].selected==true)
 parent.fn.filelist.options.remove(i);
 
 }
 </script>
}
?>

출처 : naver 지식iN 답변
http://kin.naver.com/db/detail.php?d1id=1&dir_id=10111&eid=lIVPYZCUmq7viqML3bD7g7c16MdYNwLh&qb=UEhQIMbEwM8gv6m3r7CzILW/vcMgvve3zrXl

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함