그누보드 게시판 추가 필드 활용: 전화번호 분할 입력 및 저장 구현
페이지 정보

본문
그누보드4 게시판 글쓰기 폼에서 전화번호, 주소 등의 여러 입력값을 하나의 여분 필드(wr_10)에 구분자(|)로 합쳐서 저장하고, 상세 및 목록 페이지에서 분리하여 출력하는 방법을 확인할 수 있습니다.
그누보드4 추가 필드 입력 폼 구성 방법
그누보드4 게시판 글쓰기 폼(write.skin.php)에서 전화번호와 주소 등 여러 개의 추가 필드를 구현하려면, 상단에 여분 필드(wr_10)의 값을 explode() 함수로 분할하여 각 변수에 담는 코드를 배치한 후 HTML 입력 폼을 구성해야 한다.
1. 상단 데이터 분할 코드 배치
write.skin.php 파일 상단에 아래와 같이 explode() 함수를 사용하여 wr_10 필드 값을 파이프 기호(|) 기준으로 나누어 각각의 변수($tel1, $tel2, $hp1, $zip1, $add1, $sex 등)에 할당한다.
<?php
//전화번호, 팩스, 핸드폰, 성별, 주소
$wr10 = explode("|",$write['wr_10']);
$tel1 = $wr10[0];
$tel2 = $wr10[1];
$tel3 = $wr10[2];
$fax1 = $wr10[3];
$fax2 = $wr10[4];
$fax3 = $wr10[5];
$hp1 = $wr10[6];
$hp2 = $wr10[7];
$hp3 = $wr10[8];
$sex = $wr10[9];
$zip1 = $wr10[10];
$zip2 = $wr10[11];
$addr1 = $wr10[12];
$addr2 = $wr10[13];
?>
2. 폼 이름 변경 및 입력 폼 HTML 작성
일부 방화벽 프로그램에서 기본값인 fwrite를 차단하는 문제를 방지하기 위해 폼 이름을 hwrite로 변경하여 구성한다.
- 전화번호·팩스·휴대전화 입력 폼: 앞자리 선택을 위한
<select>박스와 두 번째, 세 번째 자리를 입력하는<input type='text'>요소로 나누어 구성하며, 숫자에만 반응하도록onkeydown='onlyNumber(this);'속성을 지정한다. - 주소 입력 폼: 우편번호 앞/뒷자리 입력 필드와 우편번호 찾기 버튼(
win_zip('hwrite', 'zip1', 'zip2', 'add1', 'add2')), 기본주소(add1) 및 상세주소(add2) 입력 필드를 배치한다. - 성별 입력 폼: 남/여 선택을 위한 라디오 버튼(
type="radio" name="sex")을 배치한다.
3. 코드 적용 시 주의사항
원문 예시 코드 적용 시 우편번호 뒷자리 출력부의 구문 오류(echo $zip; 2를 echo $zip2;로 수정)와 추가2 필드 값 출력부의 구문 오류(value="<?php echo $write['wr_2']?; >">를 value="<?php echo $write['wr_2'];?>">로 수정)가 발생하지 않도록 확인해야 한다.
writeupdate.skin.php에서 여분 필드(wr10)에 데이터 저장하기
그누보드 게시판 스킨 폴더 내에 write_update.skin.php 파일을 생성하거나 수정하여, 분할 입력된 전화번호, 주소 등의 데이터를 하나의 여분 필드(wr_10)에 구분자(예: | 또는 -)로 결합하여 데이터베이스에 저장할 수 있습니다.
1. 구현 방법
write_update.skin.php 파일 상단에 개별 페이지 접근 방지 코드를 작성한 후, 입력받은 각 변수를 구분자로 연결하여 $wr_10 변수에 담고 sql_query를 통해 업데이트합니다.
<?php
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 입력받은 데이터를 구분자(|)로 결합
$wr_10 = "{$tel1}|{$tel2}|{$tel3}|{$hp1}|{$hp2}|{$hp3}|{$zip1}|{$zip2}|{$add1}|{$add2}";
// 데이터베이스의 wr_10 필드에 업데이트
sql_query(" update {$write_table} set wr_10 = '{$wr_10}' where wr_id = '{$wr_id}' ");
?>
2. 주의사항 및 확인
- 구분자 선택: 데이터 내에 포함될 수 없는 문자를 구분자로 사용해야 합니다. 원문 사례에서는 주소 등에 포함될 수 있는
-대신|를 구분자로 권장합니다. - 데이터 확인: 저장 후 phpMyAdmin 등을 통해 DB의
wr_10필드에 데이터가 의도한 형식으로 저장되었는지 확인하십시오. - 출력 연동: 저장된 데이터를 상세 페이지(
view.skin.php)에서 출력할 때는explode("|", $view['wr_10'])함수를 사용하여 다시 배열로 분리한 뒤 각 항목을 출력합니다.
상세 페이지 및 목록 페이지에서 여분 필드(wr_10) 데이터 분리 및 출력 방법
그누보드 글쓰기 폼에서 | 구분자로 합쳐져 여분 필드(wr_10)에 저장된 전화번호, 팩스, 휴대전화, 성별, 주소 등의 데이터를 상세 페이지(view.skin.php)에서 각각의 항목으로 나누어 출력하려면 PHP의 explode() 함수를 사용해야 합니다.
1. view.skin.php 상단 데이터 분리 코드 추가
상세 페이지 파일 상단에 아래와 같이 explode("|", $view['wr_10']) 코드를 배치하여 하나의 필드에 저장된 문자열을 배열로 분리하고 각 변수에 할당합니다.
<?php
//전화번호, 팩스, 핸드폰, 성별, 주소
$wr10 = explode("|", $view['wr_10']);
$tel1 = $wr10[0];
$tel2 = $wr10[1];
$tel3 = $wr10[2];
$fax1 = $wr10[3];
$fax2 = $wr10[4];
$fax3 = $wr10[5];
$hp1 = $wr10[6];
$hp2 = $wr10[7];
$hp3 = $wr10[8];
$sex = $wr10[9];
$zip1 = $wr10[10];
$zip2 = $wr10[11];
$add1 = $wr10[12];
$add2 = $wr10[13];
?>
2. 출력 위치에 HTML 태그 및 변수 배치
분리된 변수들을 활용하여 상세 보기 화면의 원하는 위치에 각각 출력합니다.
- 전화번호 출력 예시:
<?php echo $tel1;?>-<?php echo $tel2;?>-<?php echo $tel3;?> - 팩스번호 출력 예시:
<?php echo $fax1;?>-<?php echo $fax2;?>-<?php echo $fax3;?> - 휴대전화 출력 예시:
<?php echo $hp1;?>-<?php echo $hp2;?>-<?php echo $hp3;?> - 성별 출력 예시:
<?php echo $sex;?> - 주소 출력 예시:
(<?php echo $zip1;?>-<?php echo $zip2;?>) <?php echo $add1;?> <?php echo $add2;?>
3. 주의사항
- 원문 코드 적용 시
view.skin.php상단에서 변수 할당 시 중복 정의된 부분(예:$hp3 = $wr10[9])이 없도록 성별 변수는$sex = $wr10[9];와 같이 올바르게 지정되었는지 확인해야 합니다. - 목록 페이지(
list.skin.php)에서 출력할 때도 유사하게 반복문 내에서$list[$i]['wr_10']값을 대상으로explode("|", $list[$i]['wr_10'])처리를 거쳐 각 항목을 분리해 출력할 수 있습니다.
그누보드 게시판 추가 필드 구현 시 주의사항 및 코드 오류 수정
그누보드에서 여분 필드(wr_10 등)를 활용하여 전화번호, 주소, 성별 등 여러 입력값을 구분자(|)로 결합해 저장하고 출력할 때, 원문 코드에 포함된 일부 오타나 변수 중복 정의를 수정하지 않으면 PHP 파싱 오류나 데이터 누락이 발생할 수 있습니다.
주요 코드 수정 항목
- 우편번호 출력부 오타 수정
write.skin.php파일의 우편번호 뒷자리 출력부에서 잘못 입력된 구문을 바로잡아야 합니다.- 수정 전:
value="<?php echo $zip; 2?>" - 수정 후:
value="<?php echo $zip2;?>"
- 추가 필드 값 출력부 오타 수정
write.skin.php내 추가2 필드의 value 속성에 포함된 잘못된 문법을 수정해야 합니다.- 수정 전:
value="<?php echo $write['wr_2']?; >"> - 수정 후:
value="<?php echo $write['wr_2'];?>">
- 변수 중복 정의 방지 ($hp3)
view.skin.php파일 상단에서 배열을 분해할 때$hp3변수가 중복으로 할당되는 오류가 있으므로, 성별(sex) 변수에는 올바른 배열 인덱스를 지정해야 합니다.- 수정 전:
$hp3 = $wr10[9]; - 수정 후:
$sex = $wr10[9];
상황별 판단 및 행동 가이드
- 내 상황: 그누보드 게시판 글쓰기 폼에서 전화번호나 주소 등 여러 입력값을 하나의 여분 필드(
wr_10)에 쪼개어 받고 싶을 때- 우선할 판단: 각 입력 필드(전화번호, 팩스, 휴대전화, 주소 등)의 값을 개별 컬럼 대신 파이프(
|) 등의 구분자로 묶어 하나의 여분 필드에 직렬화하여 저장할 스킨 구조를 설계합니다. - 다음 행동:
write.skin.php상단에서explode()로 데이터를 분할하고,write_update.skin.php에서 합쳐서 저장하며,view.skin.php및list.skin.php에서 다시 분리해 출력하는 코드를 적용합니다.
- 우선할 판단: 각 입력 필드(전화번호, 팩스, 휴대전화, 주소 등)의 값을 개별 컬럼 대신 파이프(
- 내 상황: 소스 코드 적용 후 우편번호나 추가 필드 출력부에서 PHP 문법 오류나 변수 중복 할당 문제가 발생할 때
- 우선할 판단: 원문 예시 코드에 포함된 오타(예: 우편번호
$zip; 2, 추가2 필드의 특수문자 및$hp3변수 중복 정의)를 파악하고 수정합니다. - 다음 행동: 우편번호 뒷자리는
$zip2로 바로잡고, 성별 등의 변수 할당 인덱스($sex = $wr10[9])를 올바르게 수정하여 에러를 방지합니다.
- 우선할 판단: 원문 예시 코드에 포함된 오타(예: 우편번호
실전 FAQ
- Q. 글쓰기 폼에서 입력받은 데이터를 하나의 여분 필드에 저장할 때 어떤 구분자를 사용하는 것이 안전한가요?
- A. 주소 등 상세 내용에 일반적인 기호인 하이픈(
-)이 포함될 수 있으므로, 데이터 충돌을 막기 위해 파이프(|) 기호를 구분자로 사용하는 것이 안전합니다.
- A. 주소 등 상세 내용에 일반적인 기호인 하이픈(
- Q. 코드 적용 후 상세 페이지(
view.skin.php)나 목록 페이지에서 데이터가 깨지거나 잘못 출력되면 무엇을 확인해야 하나요?- A.
explode("|", $view['wr_10'])배열 인덱스가 폼에서 저장한 순서와 일치하는지 확인하고,$hp3나$sex처럼 변수명이 중복 정의되거나 잘못된 인덱스를 가리키고 있지 않은지 소스 상단의 변수 매핑을 점검해야 합니다.
- A.
함께 보면 좋은 글
- 그누보드 관리자 회원 수정 페이지 여분 필드(mb1~mb10) 입력 폼 추가 방법
- 그누보드 게시판 입력 필드 URL에 http 프로토콜 자동 추가하기
- 그누보드 게시판 내 개인정보(이름, 전화번호) 마스킹 처리 방법
참고자료
기타 참고자료
- sir.kr — 그누보드 게시판 글쓰기에서 전화번호 추가 방법 문의드립니다 - SIR - 개발자 커뮤니티
- sir.kr — 여분필드 배열사용하여 입력하고 출력하는 방법 도움 부탁합니다 - SIR - 개발자 커뮤니티
- gnustudy.com — 배열을 사용해서 여분필드 한 개로 연락처 입력란 3등분하기 - 게시판스킨강좌, 그누보드5강좌
- sir.kr — 그누보드 게시판 체크박스에 관한 소스 여쭤봅니다 고수님들한번만 보고 가주세요 - SIR - 개발자 커뮤니티
- wordpress.eond.com — 그누보드 한 개의 게시물에서 필드값에 따라 다른 내용 보여주기 — 워드프레스마켓
- sir.kr — 분할된 여분필드 목록에서 출력 - SIR - 개발자 커뮤니티
- 이전글그누보드5 휴대폰 번호 입력 시 하이픈(-) 자동 추가 및 형식 변환 방법 26.09.29
- 다음글그누보드4 목록에서 회원과 비회원 글쓴이 이름 굵기(bold) 동일하게 설정하기 26.09.27
댓글목록
등록된 댓글이 없습니다.