BOARD

강좌·기초

그누보드4 게시판 글쓰기 첨부파일 입력창 고정 출력 방법

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 16회 작성일 26-09-25 16:05

본문

그누보드4 게시판 글쓰기 첨부파일 입력창 고정 출력 방법

그누보드4(G4) 환경에서 게시판 글쓰기 시 동적으로 생성되는 첨부파일 입력창 대신, 지정된 개수만큼 고정된 HTML 입력창을 출력하여 운영자와 개발자가 편리하게 적용할 수 있도록 돕습니다.

그누보드4 게시판 첨부파일 입력창 고정 출력 방법

그누보드4(G4) 환경에서 게시판 글쓰기 화면의 첨부파일 입력창을 동적으로 추가하는 방식 대신, 지정된 개수만큼 고정된 HTML 폼으로 미리 출력하려면 게시판 스킨 파일인 write.skin.php를 수정합니다.

1. 기존 동적 스크립트 제거

write.skin.php 파일에서 자바스크립트를 이용해 파일 입력창을 동적으로 늘리고 줄이는 기존 코드를 제거합니다. 대상 코드는 <? if ($is_file) {?>로 시작하여 add_file() 및 del_file() 함수와 variableFiles 테이블을 다루는 자바스크립트 영역입니다.

2. 고정 HTML 폼으로 교체

기존 동적 코드 영역을 게시판 설정인 $board[bo_upload_count] 값과 연동하여 필요한 개수만큼 고정된 행(<tr>)을 출력하는 PHP 및 HTML 코드로 교체합니다.

<?php if ($is_file) { // 첨부파일 있을때?>
<tr>
 <td style='padding-left:20px; height:30px;'>· 파일1</td>
 <td><input class="box" type="file" name='bf_file[]' /><?php if(!$file[0][href]){ echo " (필수입력)"; } if($file[0][href]) echo "<input type='checkbox' name='bf_file_del[0]' value='1'><a href='{$file[0][href]}'>{$file[0][source]}({$file[0][size]})</a> 파일 삭제"; if ($is_file_content) echo "<br /><input type='text' class=ed size=50 name='bf_content[0]' value='".addslashes(get_text($file[0][bf_content]))."' title='업로드 이미지 파일에 해당 되는 내용을 입력하세요.' />";?></td>
</tr>

<?php if ((int)$board[bo_upload_count] >= 2 || (int)$board[bo_upload_count] == 0) {?>
<tr>
 <td style='padding-left:20px; height:30px;'>· 파일2</td>
 <td><input class="box" type="file" name='bf_file[]' /><?php if($file[1][href]) echo "<input type='checkbox' name='bf_file_del[1]' value='1'><a href='{$file[1][href]}'>{$file[1][source]}({$file[1][size]})</a> 파일 삭제"; if ($is_file_content) echo "<br /><input type='text' class=ed size=50 name='bf_content[1]' value='".addslashes(get_text($file[1][bf_content]))."' title='업로드 이미지 파일에 해당 되는 내용을 입력하세요.' />";?></td>
</tr>
<?php }?>

<!-- 필요에 따라 파일3부터 파일10까지 동일한 조건문 형식으로 확장 -->
<?php } // 첨부파일 있을때?>

3. 주의사항

  • 파일 삭제 및 수정 시 입력된 데이터 처리 로직(bf_file_del, bf_content 등)이 올바르게 동작하는지 검증이 필요합니다.

수정 모드 시 기존 등록 파일과 삭제 체크박스 연결 방법

그누보드4 게시판 스킨 파일(write.skin.php)에서 첨부파일 입력창을 고정 출력할 때, 글 수정 모드($w == 'u')에서 기존에 업로드된 파일 정보와 삭제 체크박스, 그리고 설명글 입력을 각 고정 입력창에 연결하려면 배열 인덱스를 이용한 조건문 코드를 각 파일 항목에 배치해야 합니다.

구현 방식 및 조건

  • 각 파일 번호별로 배열 인덱스(예: $file[0], $file[1])를 사용하여 기존 등록 파일의 존재 여부와 링크 정보를 확인합니다.
  • {$file[배열인덱스][href]} 값이 존재할 경우 파일 삭제를 위한 체크박스(bf_file_del[배열인덱스])와 기존 파일명, 용량을 함께 출력합니다.
  • 파일 설명글 사용 여부($is_file_content)에 따라 각 파일 번호에 맞는 설명 입력 텍스트 박스(bf_content[배열인덱스])를 연결하여 기존에 입력된 설명글($file[배열인덱스][bf_content])이 유지되도록 합니다.

코드 예시 (파일1 기준)

<tr>
<td style='padding-left:20px; height:30px;'>· 파일1</td>
<td>
<input class="box" type="file" name='bf_file[]' />
<?php 
if(!$file[0][href]){ echo " (필수입력)"; }
if($file[0][href]) echo "<input type='checkbox' name='bf_file_del[0]' value='1'><a href='{$file[0][href]}'>{$file[0][source]}({$file[0][size]})</a> 파일 삭제"; 
if ($is_file_content) echo "<br /><input type='text' class=ed size=50 name='bf_content[0]' value='".addslashes(get_text($file[0][bf_content]))."' title='업로드 이미지 파일에 해당 되는 내용을 입력하세요.' />"; 
?>
</td>
</tr>

동일한 방식으로 파일2부터 필요한 개수만큼 [1], [2] 등의 인덱스로 순서대로 코드를 확장하여 고정 입력창에 각각 연결합니다.

그누보드4 첨부파일 입력창 고정 출력 적용 가이드

  • 내 상황: 그누보드4(G4) 게시판 글쓰기 시 동적으로 파일 입력창을 추가하는 방식 대신, 지정된 개수만큼 고정된 입력창을 미리 출력하고 싶을 때
  • 선택 기준: write.skin.php 내의 기존 동적 자바스크립트(add_file, del_file 등)를 제거하고, 게시판 설정($board[bo_upload_count])에 따라 파일 입력 HTML 폼을 직접 나열하는 방식을 선택합니다.
  • 다음 행동: write.skin.php에서 동적 스크립트 영역을 삭제한 후, 각 파일 번호별(파일1, 파일2...)로 name='bf_file[]'과 수정 모드용 배열 인덱스($file[0], $file[1] 등)를 포함한 HTML 코드를 작성하여 배치합니다.

실전 FAQ

Q. 파일 삭제 및 수정 시 데이터 처리 로직 검증은 어떻게 하나요?

  • 실행 중 막히는 점: 고정 폼으로 변경 시 글 수정 모드($w == 'u')에서 기존 파일 삭제 체크박스(bf_file_del)나 설명글(bf_content)이 올바른 배열 인덱스와 매칭되지 않으면 데이터가 유실될 수 있습니다.
  • 예외 및 대안: 각 고정 파일 항목마다 정확한 배열 번호(예: 첫 번째는 [0], 두 번째는 [1])가 지정되어 있는지 확인하십시오. 게시판 설정의 업로드 개수 제한과 실제 출력된 고정 입력창의 개수가 일치하는지 반드시 테스트 환경에서 먼저 검증해야 합니다.

Q. 파일 개수를 10개 이상으로 늘리려면 어떻게 하나요?

  • 대안: 코드 내의 (int)$board[bo_upload_count] >= 숫자 조건문을 원하는 개수만큼 추가로 작성하십시오. 단, 서버의 PHP 설정(upload_max_filesize, post_max_size)과 그누보드 게시판 설정의 업로드 제한이 해당 개수를 수용할 수 있는지 확인해야 합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.