그누보드 게시판 스킨에 생년월일 및 출생시간·양력/음력 입력 필드 추가하기
페이지 정보

본문
그누보드 게시판 글쓰기 폼(write.skin.php)에 생년월일, 출생시간, 양력/음력 선택 기능을 추가하고 저장 및 출력하는 방법을 안내합니다.
게시판 글쓰기 폼에 생년월일 및 양력/음력 입력 필드 추가하기
그누보드 게시판 글쓰기 폼(write.skin.php) 상단에 생년월일, 출생시간, 양력/음력 정보를 선택할 수 있는 셀렉트 박스(select)를 추가하려면 연도, 월, 일, 시, 분, 음양 구분을 위한 PHP 코드와 HTML 태그를 배치해야 합니다.
1. write.skin.php 상단 코드 추가
글쓰기 스킨 파일 상단에 기존 wr_5 필드 값을 불러와서 연·월·일·시·분·양음력으로 분리하는 PHP 코드를 넣습니다.
<?php
// wr_5 생년월일 시분 양음
$birth = explode("-",$write['wr_5']);
$Tyear = $birth[0];
$Tmonth = $birth[1];
$Tday = $birth[2];
$Thour = $birth[3];
$Tmin = $birth[4];
$eumyang = $birth[5];
?>
2. write.skin.php 폼 영역 HTML 및 셀렉트 박스 추가
사용자가 직접 생년월일과 출생시간, 양력/음력을 선택할 수 있도록 입력 폼 항목을 추가합니다.
<tr>
<td style='padding-left:20px; height:30px;'>· 출생일시(*)</td>
<td style='padding-left:0px;'>
<select name='eumyang' class="app_input" required>
<option value='양력' <?php if($eumyang == "양력") echo "selected";?>>양력</option>
<option value='음력평달' <?php if($eumyang == "음력평달") echo "selected";?>>음력평달</option>
<option value='음력윤달' <?php if($eumyang == "음력윤달") echo "selected";?>>음력윤달</option>
</select>
<select name="Tyear">
<option value=""></option>
<?php $i = 1; $j = date('Y'); for ($i = 1910; $i <= $j; $i++) { echo "<option value='{$i}'"; if ($i ==$Tyear ) { echo " selected"; } echo ">{$i}</option>"; }?>
</select>년
<select name="Tmonth">
<option value=""></option>
<?php $i = 1; for ($i = 1; $i <= 12; $i++) { if ($i < 10) { $j = "0". $i; } else { $j = $i; } echo "<option value='{$j}'"; if ($j == $Tmonth) { echo " selected"; } echo ">{$j}</option>"; }?>
</select>월
<select name="Tday">
<option value=""></option>
<?php $i = 1; for ($i = 1; $i <= 31; $i++) { if ($i < 10) { $j = "0". $i; } else { $j = $i; } echo "<option value='{$j}'"; if ($j == $Tday) { echo " selected"; } echo ">{$j}</option>"; }?>
</select>일
<select name="Thour">
<option value=""></option>
<?php $i = 1; for ($i = 0; $i <= 23; $i++) { if ($i < 10) { $j = "0". $i; } else { $j = $i; } $k = ''; if ($j == 00) $k = "오전 0시"; elseif ($j == '01') $k = "오전 1시"; elseif ($j == '02') $k = "오전 2시"; elseif ($j == '03') $k = "오전 3시"; elseif ($j == '04') $k = "오전 4시"; elseif ($j == '05') $k = "오전 5시"; elseif ($j == '06') $k = "오전 6시"; elseif ($j == '07') $k = "오전 7시"; elseif ($j == '08') $k = "오전 8시"; elseif ($j == '09') $k = "오전 9시"; elseif ($j == '10') $k = "오전 10시"; elseif ($j == '11') $k = "오전 11시"; elseif ($j == '12') $k = "오전 12시"; elseif ($j == '13') $k = "오전 1시"; elseif ($j == '14') $k = "오전 2시"; elseif ($j == '15') $k = "오전 3시"; elseif ($j == '16') $k = "오전 4시"; elseif ($j == '17') $k = "오전 5시"; elseif ($j == '18') $k = "오전 6시"; elseif ($j == '19') $k = "오전 7시"; elseif ($j == '20') $k = "오전 8시"; elseif ($j == '21') $k = "오전 9시"; elseif ($j == '22') $k = "오전 10시"; elseif ($j == '23') $k = "오전 11시"; elseif ($j == '24') $k = "오후 12시"; echo "<option value='{$j}'"; if ($j == $Thour) { echo " selected"; } echo ">{$k}</option>"; }?>
</select>시
<select name="Tmin">
<option value=""></option>
<?php $i = 1; for ($i = 0; $i <= 59; $i++) { if ($i < 10) { $j = "0". $i; } else { $j = $i; } echo "<option value='{$j}'"; if ($j == $Tmin) { echo " selected"; } echo ">{$j}</option>"; }?>
</select>분
</td>
</tr>
<tr><td colspan=2 height=1 bgcolor=#e7e7e7></td></tr>
주의사항 및 사전 확인
wr_5필드는 그누보드 게시판의 확장 필드입니다. 이미 다른 용도로wr_5를 사용 중인 경우 데이터 충돌이 발생할 수 있으므로, 적용 전 반드시 해당 게시판의 데이터베이스를 백업하고 사용 여부를 확인하시기 바랍니다.
게시판 글쓰기 폼에서 입력받은 생년월일 및 출생시간, 양력/음력 데이터 저장하기
그누보드 글쓰기 폼에서 선택된 생년월일, 출생시간, 양력/음력 데이터는 write_update.skin.php 파일에서 하나의 문자열로 결합한 뒤 게시판 테이블의 wr_5 필드에 저장할 수 있습니다.
1. 적용 위치 및 사전 확인
- 수정 파일:
write_update.skin.php - 대상 필드: 게시판 여분필드
wr_5 - 주의사항:
wr_5필드를 이미 다른 용도로 사용 중인 경우 기존 데이터와 충돌이 발생할 수 있습니다. 적용 전 반드시 해당 게시판의 데이터베이스를 백업하고 사용 여부를 확인하시기 바랍니다.
2. 저장 코드 구현 방법
write_update.skin.php 파일에 아래 코드를 추가하여 폼에서 넘어온 연, 월, 일, 시, 분, 양음력 값을 하이픈(-)으로 연결한 후 쿼리를 실행합니다.
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// wr_5 생일생시 저장
$wr_5 = "{$Tyear}-{$Tmonth}-{$Tday}-{$Thour}-{$Tmin}-{$eumyang}";
$sql5 = " update `{$write_table}` set wr_5 = '{$wr_5}' where wr_id = '{$wr_id}' ";
sql_query($sql5);
?>
3. 입력값 검증 및 저장 확인
- 입력값 검증: 데이터 저장 전, 필수 입력값이 모두 선택되었는지 확인하는 로직을 추가하는 것을 권장합니다.
write_update.skin.php상단에 아래와 같은 조건문을 추가하십시오.if(empty($_POST['Tyear']) || empty($_POST['Tmonth']) || empty($_POST['Tday'])) { alert('생년월일을 모두 선택해주세요.'); } - 저장 확인: 코드를 적용한 뒤 게시판 글쓰기 폼에서 임의의 날짜와 시간을 입력하고 등록을 진행합니다. 데이터베이스의 해당 게시판 테이블(
{$write_table})에서wr_5컬럼에 데이터가연도-월-일-시-분-양음력형식(예:1990-01-01-00-00-양력)으로 정상적으로 저장되었는지 확인합니다.
게시판 상세 페이지(view.skin.php)에서 저장된 wr_5 필드 값 분리 및 출력 방법
그누보드 게시판의 wr_5 필드에 하이픈(-)으로 결합되어 저장된 생년월일, 출생시간, 양력/음력 정보를 상세 보기 화면인 view.skin.php에서 각각 분리하여 출력하려면 PHP의 explode 함수를 활용합니다.
1. view.skin.php 상단 코드 추가
view.skin.php 파일의 최상단 부분에 아래 코드를 삽입하여 저장된 wr_5 값을 하이픈 기준으로 나누고 각각의 변수로 할당합니다.
<?php
// wr_5 생년월일 시분 양음
$birth = explode("-",$view['wr_5']);
$Tyear = $birth[0];
$Tmonth = $birth[1];
$Tday = $birth[2];
$Thour = $birth[3];
$Tmin = $birth[4];
$eumyang = $birth[5];
?>
2. 주의사항 및 사전 확인
wr_5필드는 그누보드 게시판의 확장 필드입니다. 이미 다른 용도로wr_5를 사용 중인 경우 데이터 충돌이 발생할 수 있으므로, 적용 전 반드시 해당 게시판의 데이터베이스를 백업하고 사용 여부를 확인하시기 바랍니다.- 기존 데이터가 존재한다면 데이터 손실을 방지하기 위해 백업 후 작업을 진행해야 합니다.
게시판 여분필드 wr_5 충돌 시 대처 방법
그누보드 게시판에서 wr_5 필드를 이미 다른 용도로 사용 중이거나 기존 데이터와 충돌할 가능성이 있는 경우, 적용하기 전에 데이터베이스를 백업하고 사용 여부를 확인해야 합니다.
1. 적용 전 확인 및 백업
- 적용 전 반드시 해당 게시판의 데이터베이스를 백업하여 데이터 손실에 대비합니다.
- 관리자 페이지의 게시판 설정이나 데이터베이스 쿼리를 통해 해당 게시판에서
wr_5필드가 이미 다른 용도(예: 별명, 연락처 등)로 사용되고 있는지 확인합니다.
2. 다른 여분필드 활용 검토
- 이미
wr_5필드에 기존 데이터가 존재한다면, 해당 데이터를 다른 필드로 이전하거나 백업한 후 작업을 진행해야 합니다. - 혹은 코드가 참조하는 필드명을
wr_5대신 비어 있는 다른 여분필드(예:wr_1~wr_10)로 변경하여 스킨 파일(write.skin.php,write_update.skin.php,view.skin.php)의 소스 코드를 수정·적용할 수 있습니다.
생년월일 필드 추가 및 적용 순서
내 상황에 맞추어 아래 순서로 파일을 수정하고 적용하십시오.
| 내 상황 | 우선할 판단 | 다음 행동 |
|---|---|---|
| wr_5 필드가 다른 용도로 쓰이지 않는지 확인 필요 | 데이터베이스 백업 및 기존 여분필드 사용 여부 점검 | write.skin.php, write_update.skin.php, view.skin.php에 코드 적용 |
| 글쓰기 폼에 생년월일·시간·양음력 선택 상자 배치 필요 | 연도(1910~현재), 월, 일, 시, 분, 양음력 select 태그 및 상단 $birth = explode 코드 삽입 | write.skin.php 상단 및 폼 영역에 HTML/PHP 코드 반영 |
| 입력된 생년월일 데이터를 DB에 저장 필요 | 하이픈(-)으로 값을 결합하여 wr_5 필드에 업데이트 쿼리 실행 | write_update.skin.php 파일에 저장 로직 추가 |
| 상세 페이지에서 저장된 생년월일 데이터 출력 필요 | view.skin.php 상단에서 wr_5 값을 explode로 분리하여 각 변수에 할당 | view.skin.php 파일 상단에 파싱 코드 추가 |
실전 FAQ
Q. wr_5 필드를 이미 다른 용도로 사용 중인 경우 어떻게 해야 하나요?
- 예외 및 대안:
wr_5필드가 이미 별명이나 연락처 등 다른 데이터로 사용 중이라면 데이터 충돌이 발생합니다. 이 경우 적용 전 반드시 데이터베이스를 백업하고, 비어 있는 다른 여분필드(wr_1~ `wr_10 중 빈 번호)를 선택하여 스킨 파일의 필드명을 변경해 사용해야 합니다.
Q. 입력값 검증(Validation) 로직은 어떻게 처리하나요?
- 실행 중 막히는 지점: 제공된 기본 코드는 선택 입력 형태이므로 사용자가 값을 선택하지 않거나 비워둘 경우 빈 값이 그대로 저장될 수 있습니다. 운영 환경에 따라 서버 측 혹은 클라이언트 측에서 필수 선택 여부를 확인하는 유효성 검사 코드를 추가하는 것을 권장합니다.
함께 보면 좋은 글
- 그누보드5 회원가입 스킨에 여분 필드(mb1~mb5) 추가 기초 가이드
- 그누보드 새글 페이지 스킨에 게시판 추가 필드 및 조건부 출력하기
- 그누보드 게시판 입력 필드 URL에 http 프로토콜 자동 추가하기
참고자료
기타 참고자료
- 이전글그누보드 새글(new.php) 페이지 스킨 아이콘 출력 및 커스터마이징 방법 26.09.30
- 다음글그누보드 게시판 수정 페이지 내 삭제 버튼 추가 방법 26.09.30
댓글목록
등록된 댓글이 없습니다.