그누보드 여분필드 체크박스 다중 활용 시 빈 값 및 구분자 출력 문제 해결
페이지 정보

본문
그누보드 여분필드를 체크박스로 다중 활용할 때 발생하는 빈 값과 어색한 구분자 출력 문제를 해결하고, 안전하게 데이터를 처리하는 방법을 알아봅니다.
여분필드 체크박스 출력 시 구분자 노출 문제 원인
그누보드 게시판 스킨에서 여러 개의 체크박스 값을 여분필드(예: $view['wr_8']) 하나에 구분자(| 등)로 묶어 저장한 뒤, 뷰 페이지(view.skin.php)에서 <?php echo $view['wr_8']?>와 같이 조건 처리나 개별 분리 없이 단순히 전체를 출력하면 중간에 선택되지 않은 빈 자리에까지 구분 기호가 남게 되어 ||||체크내용|| 형태처럼 어색하게 노출됩니다.
view.skin.php에서 여분필드 체크박스 빈 값 및 구분자 출력 문제 해결 방법
그누보드 게시판의 여분필드 데이터를 체크박스 다중 값으로 저장한 뒤 view.skin.php에서 단순히 전체 값을 출력하면, 선택되지 않은 빈 자리에 구분자(|)가 남아 ||||체크내용|| 형태처럼 어색하게 노출될 수 있습니다. 이를 해결하려면 explode 함수로 데이터를 쪼갠 뒤 개별 배열 인덱스의 존재 여부를 조건문(if)으로 확인하여 출력해야 합니다.
1. 뷰 파일 수정 위치 및 방법
view.skin.php 파일에서 대상 여분필드(예: $view['wr_8'])를 불러와 처리합니다.
<?php $wr8 = explode("|", $view['wr_8']);?>
<?php if($wr8[0]) {?> 사과 <?php }?>
<?php if($wr8[1]) {?> 수박 <?php }?>
<?php if($wr8[2]) {?> 딸기 <?php }?>
<?php if($wr8[3]) {?> 포도 <?php }?>
<?php if($wr8[4]) {?> 참외 <?php }?>
2. 작동 방식 및 주의사항
- 인덱스 조건 처리:
explode("|", $view['wr_8'])를 통해 파이프(|) 기준으로 문자열을 배열로 분리한 후, 각 인덱스($wr8[0],$wr8[1]등)에 값이 존재하는지if문으로 검사합니다. - 장단점: 이미지 디자인이나 페이지 중간에 개별 항목을 직접 끼워 넣을 때 유용한 방식이며, 값이 비어 있는 인덱스의 구분자가 함께 출력되는 현상을 방지할 수 있습니다.
write.skin.php와 view.skin.php에서 체크박스 배열 처리 방법
그누보드 여분필드를 다중 체크박스로 활용할 때, 입력 폼인 write.skin.php와 출력 뷰인 view.skin.php에서 배열 형태(name="check1[]")와 in_array 함수를 조합하여 값을 안정적으로 저장하고 수정 시 체크 상태를 복원할 수 있습니다.
1. write.skin.php에서의 처리 방법
체크박스 여러 개를 하나의 여분필드 데이터로 연동하려면 name 속성을 배열 형태로 지정하고, 기존에 저장된 값을 explode로 분리한 뒤 in_array 함수로 체크 여부를 판별해야 합니다.
<?php
$check1 = explode(",", $write['wr_1']);
// 또는 구분자가 '|'인 경우: $check1 = explode("|", $write['wr_8']);
?>
과일:
<input type="checkbox" name="check1[]" value="사과"<?php echo in_array("사과", $check1)? ' checked="checked"': ''?>> 사과
<input type="checkbox" name="check1[]" value="수박"<?php echo in_array("수박", $check1)? ' checked="checked"': ''?>> 수박
<input type="checkbox" name="check1[]" value="딸기"<?php echo in_array("딸기", $check1)? ' checked="checked"': ''?>> 딸기
만약 코드를 적용하는 과정에서 일부 에디터(예: 아톰에디터)의 자동 서식 변환 등으로 인해 문법 오류나 게시판 깨짐 현상이 발생한다면, checked="checked" 대신 간결하게 checked만 출력하도록 수정하여 에디터 간섭을 줄일 수 있습니다.
<?php echo in_array("사과", $check1)? ' checked': ''?>
2. view.skin.php에서의 처리 방법
체크된 값들을 뷰 페이지에 출력할 때는 단순히 전체 여분필드 값을 출력하면 빈 자리에 구분 기호가 남아 어색해질 수 있으므로, explode로 분리한 뒤 개별 배열 인덱스 존재 여부를 if 조건문으로 확인하여 출력해야 합니다.
<?php $wr8 = explode("|", $view['wr_8']);?>
<?php if($wr8[0]) {?> 사과 <?php }?>
<?php if($wr8[1]) {?> 수박 <?php }?>
<?php if($wr8[2]) {?> 딸기 <?php }?>
상황별 판단 및 행동 지침
- 내 상황: 그누보드 여분필드를 체크박스로 다중 활용하여 값을 저장했으나, 뷰 페이지(
view.skin.php)에서 단순 출력 시 빈 자리에 구분자(|등)가 남아 어색하게 노출되는 문제 - 우선할 판단: 데이터를 전체 문자열로 그대로 출력하지 않고,
explode함수를 통해 배열로 분리한 뒤 개별 인덱스의 존재 여부를 조건문으로 제어하는 방식 적용 - 다음 행동:
view.skin.php에서<?php $wr8 = explode("|", $view['wr_8']);?>코드를 배치한 뒤, 각 항목별로if($wr8[0])등의 조건문을 걸어 값이 존재하는 경우에만 개별 출력되도록 스킨 파일을 수정하고 결과 확인
실전 FAQ
- Q. 체크박스 항목을 수정할 때 이전 선택 상태가 유지되도록 하려면 어떻게 하나요?
write.skin.php파일에서 기존 저장된 여분필드 값을explode로 분리한 뒤, 각 체크박스의value값과 비교하여in_array함수와 삼항 연산자를 통해checked속성이 출력되도록 구성해야 합니다.
- Q. 코드 적용 후 게시판이 깨지거나 에러가 발생하는 이유는 무엇인가요?
- 사용하는 에디터(예: 아톰 에디터 등)의 자동 서식 변환 기능으로 인해 따옴표나 콤마 등의 문법이 왜곡될 수 있습니다. 이 경우
checked="checked"대신 간결하게checked만 출력하도록 코드를 수정하거나 에디터의 서식 변환 설정을 점검해야 합니다.
- 사용하는 에디터(예: 아톰 에디터 등)의 자동 서식 변환 기능으로 인해 따옴표나 콤마 등의 문법이 왜곡될 수 있습니다. 이 경우
함께 보면 좋은 글
- 그누보드 댓글 비밀글 체크박스 무조건 체크 상태로 만들기
- 그누보드 회원가입 정보 공개 및 메일링 수신 체크박스 강제 설정 방법
- 그누보드 회원가입 스킨 여분필드 선택값으로 레벨 자동 부여 방법
참고자료
기타 참고자료
- 이전글그누보드 회원 간 쪽지 차단 및 관리자 전용 발송 설정 방법 26.10.26
- 다음글그누보드 댓글 답변 글 들여쓰기 여백 조정 방법 26.10.25
댓글목록
등록된 댓글이 없습니다.