그누보드 게시판 데이터베이스 여분 필드 확장 (wr11 이상 추가)
페이지 정보

본문
그누보드 기본 여분 필드(wr1~10)가 부족할 때 wr11 이상을 추가하고 값이 정상 저장되도록 설정하는 방법을 안내합니다.
그누보드 게시판 테이블 wr_11 이후 여분 필드 추가 방법
그누보드 기본 여분 필드는 wr_1부터 wr_10까지만 기본 제공되므로, wr_11 이후의 필드를 사용하려면 데이터베이스와 스킨 파일을 직접 수정해야 합니다.
1. phpMyAdmin에서 필드 생성
phpMyAdmin을 사용하여 원하는 게시판 테이블에 wr_11 이후의 필드를 직접 추가해야 합니다.
- 좌측 목록에서 필드를 추가하려는 게시판 테이블을 선택합니다. (테이블 이름 형식:
g5_write_게시판아이디) - 상단 탭 메뉴에서 구조를 클릭합니다.
Add [ ] field(s)입력란에 추가할 필드 개수를 입력하고 실행합니다. (예: 10개 추가 시wr_11부터wr_20까지 생성)- 위치는
wr_10다음 또는 테이블의 마지막으로 지정합니다. - 기존 여분 필드와 동일한 형식으로 속성을 설정한 뒤 저장합니다.
2. 스킨 파일 수정 (값 저장 처리)
기본 코어 파일(bbs/write.php)의 가변 변수는 wr_1부터 wr_10까지만 설정되어 있으므로, 11번 이후 필드 값은 스킨 폴더에 write_update.skin.php 파일을 새로 생성하여 업데이트 쿼리를 처리해야 합니다.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$sql = " update $write_table set wr_11 = '$wr_11', wr_12 = '$wr_12', wr_13 = '$wr_13', wr_14 = '$wr_14', wr_15 = '$wr_15', wr_16 = '$wr_16', wr_17 = '$wr_17', wr_18 = '$wr_18', wr_19 = '$wr_19', wr_20 = '$wr_20' where wr_id = '$wr_id' ";
sql_query($sql);
?>
- 유의사항: 마지막 변수(
wr_20 = '$wr_20') 뒤에는 쉼표(,)가 절대 들어가면 안 되며, 나머지 변수들 사이에는 쉼표를 꼭 넣어야 합니다.
3. 입력 폼 및 수정 모드 값 불러오기 확인
write.skin.php파일에 아래와 같은 입력 폼을 추가하여 테스트합니다.
<input type="text" name="wr_11" value="<?php echo $write['wr_11']?>" id="wr_11" class="frm_input" size="20">
- 수정 모드일 때 저장된 값을 정상적으로 불러오려면 반드시
<?php echo $write['wr_11']?>형식으로 작성해야 합니다. 단순<?php echo $wr_11?>형태로 작성하면 저장된 값을 불러오지 못합니다.
그누보드 여분 필드(wr_11 이상) 저장 오류 원인 및 해결 방법
그누보드 기본 여분 필드는 wr_1부터 wr_10까지만 코어에 반영되어 있어, wr_11 이상의 필드를 추가하고 글을 저장해도 값이 DB에 저장되지 않는 원인은 데이터를 받아 DB에 업데이트하는 저장 로직(쿼리)이 누락되었기 때문입니다.
wr_10까지는 기본으로 적용되어 그냥 사용할 수 있지만, 11번 이후부터는 스킨 파일 등을 통해 저장 과정을 직접 수정해야 합니다.
1. 원인 확인 및 필수 조치 사항
- DB 필드 생성 여부 확인: phpMyAdmin 등을 이용해 원하는 게시판 테이블(
g5_write_[게시판아이디])에wr_11,wr_12등의 필드가 실제로 생성되어 있는지 확인합니다. - 저장 로직(write_update.skin.php) 구현: 입력폼을 늘리거나 필드를 생성하더라도, 데이터를 전송받아 DB에 기록하는 쿼리가 없으면 값이 유실됩니다. 스킨 폴더 안에
write_update.skin.php파일을 생성하여 추가된 필드의 업데이트 쿼리를 작성해야 합니다.
2. 해결을 위한 스킨 파일 작성 방법
사용 중인 게시판 스킨 폴더 안에 write_update.skin.php 파일을 새로 생성한 뒤 아래와 같이 코드를 작성합니다.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$sql = " update $write_table set wr_11 = '$wr_11', wr_12 = '$wr_12', wr_13 = '$wr_13', wr_14 = '$wr_14', wr_15 = '$wr_15', wr_16 = '$wr_16', wr_17 = '$wr_17', wr_18 = '$wr_18', wr_19 = '$wr_19', wr_20 = '$wr_20' where wr_id = '$wr_id' ";
sql_query($sql);
?>
유의 사항
- 쿼리문의 마지막 변수(
wr_20 = '$wr_20') 뒤에는 쉼표(,)가 절대 들어가면 안 됩니다. 나머지 변수 뒤에는 쉼표를 넣어야 합니다.- 입력 페이지(write.skin.php)에서 값을 불러오거나 수정 모드에서 정상적으로 표시하려면 단순
$wr_11형태가 아니라 반드시<?php echo $write['wr_11']?>형태로 코드를 작성해야 합니다.
그누보드 여분 필드(wr_11 이상) 값 출력 방법
그누보드에서 wr_10까지만 기본 가변 변수로 설정되어 있어, wr_11 이후의 여분 필드 값을 수정 모드나 입력 페이지에서 불러오려면 스킨 파일에서 직접 값을 지정해 주어야 합니다.
1. 글쓰기 스킨(write.skin.php) 설정
입력 폼의 value 속성에서 $wr_11 형태가 아니라 반드시 배열 형태를 사용하여 기존 저장된 값을 불러와야 합니다.
<input type="text" name="wr_11" value="<?php echo $write['wr_11']?>" id="wr_11" class="frm_input" size="20">
2. 뷰 스킨(view.skin.php) 설정
상세보기 화면에서 저장된 여분 필드 값을 출력할 때도 마찬가지로 $view 배열을 통해 호출합니다.
<?php echo $view['wr_11']?>
주의 사항
bbs/write.php파일 내 가변 변수 생성 루프가 기본적으로10번까지만 지정되어 있기 때문에, 위와 같이 스킨 파일에서 직접$write['wr_11']형태로 처리하는 것이 안전합니다.
그누보드 링크 입력 개수 늘리기
그누보드 게시판의 기본 링크 입력 개수는 2개로 고정되어 있습니다. 이를 3개 이상으로 늘리려면 config.php 파일 설정 변경, 데이터베이스(DB) 필드 추가, 그리고 스킨 파일(write_update.skin.php)을 통한 저장 로직 구현을 모두 거쳐야 합니다.
1. config.php 파일 수정
그누보드 설치 경로의 config.php 파일에서 링크 기본 개수를 지정하는 상수를 수정합니다.
- 파일 내에서
G5_LINK_COUNT설정 부분을 찾습니다. - 기본값
define('G5_LINK_COUNT', 2);를 원하는 숫자(예:5)로 변경합니다.
참고사항 (특정 게시판만 적용할 경우)
config.php를 수정하면 모든 게시판에 일괄 적용됩니다. 특정 게시판(free등)에만 적용하려면config.php의 해당 코드를 주석 처리하고(// define('G5_LINK_COUNT', 2);),extend/user.config.php파일에 아래와 같이 조건문을 추가합니다.if ($bo_table == 'free') { define('G5_LINK_COUNT', 5); } else { define('G5_LINK_COUNT', 2); }
2. DB 테이블 필드 추가
입력폼만 늘리고 DB 필드가 없으면 값이 저장되지 않으므로, phpMyAdmin 등의 DB 도구를 이용하여 게시판 테이블에 추가 필드를 생성해야 합니다.
- 원하는 개수만큼
wr_link3부터 필요한 번호까지 필드를 추가합니다. (예: 링크 클릭 수가 저장되는wr_link3_hit등도 함께 구성)
3. 스킨 파일(write_update.skin.php) 생성 및 저장 로직 구현
기본 스킨 폴더 내에 write_update.skin.php 파일이 없다면 새로 생성하고, 추가된 링크 데이터를 SQL문으로 업데이트하도록 코드를 작성합니다.
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$sql = " update $write_table set wr_link3 = '$wr_link3', wr_link4 = '$wr_link4', wr_link5 = '$wr_link5' where wr_id = '$wr_id' ";
sql_query($sql);
?>
상황별 판단 및 행동 가이드
| 내 상황 | 우선할 판단 | 다음 행동 |
|---|---|---|
여분 필드를 wr_11 이상으로 늘려 저장하고 싶음 | 기본 코어 변수가 wr_10까지만 지원되므로 DB 작업과 스킨 파일 수정이 필수적임 | phpMyAdmin에서 테이블에 필드를 생성하고, 스킨 폴더에 write_update.skin.php를 생성하여 UPDATE 쿼리를 구현함 |
| 링크 입력 개수를 2개에서 3개 이상으로 늘리고 싶음 | config.php 수정만으로는 입력폼만 늘어나고 값이 저장되지 않으므로 DB 필드 추가가 병행되어야 함 | config.php의 G5_LINK_COUNT 값을 수정하고, DB에 wr_link3 등의 필드를 추가한 뒤 write_update.skin.php에 저장 쿼리를 작성함 |
실전 FAQ
Q. config.php나 입력 폼만 수정하고 DB에 필드를 추가하지 않으면 어떻게 되나요?
- A: 입력 화면에서는 폼이 정상적으로 노출되지만, 실제 데이터를 받아 저장할 데이터베이스 컬럼이 존재하지 않기 때문에 글을 작성하거나 수정해도 해당 값은 저장되지 않고 유실됩니다.
Q. 특정 게시판에만 링크 개수나 여분 필드를 다르게 적용하고 싶을 때는 어떻게 해야 하나요?
- A:
config.php를 직접 수정하면 모든 게시판에 일괄 적용되므로, 전역 설정을 건드리는 대신config.php의 해당 설정을 주석 처리하고extend/user.config.php파일에 조건문(if ($bo_table == '게시판아이디'))을 사용하여 특정 게시판별로 개수를 다르게 지정할 수 있습니다.
함께 보면 좋은 글
참고자료
기타 참고자료
- 이전글PHP 서버 파일 존재 여부 확인 방법과 fileexists() 활용 26.10.01
- 다음글그누보드 회원가입 여분 필드 배열 데이터 처리 및 저장 가이드 26.09.30
댓글목록
등록된 댓글이 없습니다.