BOARD

팁·활용

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

페이지 정보

profile_image
작성자 최고관리자
댓글 0건 조회 15회 작성일 26-09-30 15:55

본문

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

그누보드 게시판 글쓰기 폼(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) 로직은 어떻게 처리하나요?

  • 실행 중 막히는 지점: 제공된 기본 코드는 선택 입력 형태이므로 사용자가 값을 선택하지 않거나 비워둘 경우 빈 값이 그대로 저장될 수 있습니다. 운영 환경에 따라 서버 측 혹은 클라이언트 측에서 필수 선택 여부를 확인하는 유효성 검사 코드를 추가하는 것을 권장합니다.

함께 보면 좋은 글

참고자료

기타 참고자료

댓글목록

등록된 댓글이 없습니다.