고수님들 열람금지// 옵션필드 활용 > 그누3 팁자료실

그누3 팁자료실

고수님들 열람금지// 옵션필드 활용 정보

그누호환 고수님들 열람금지// 옵션필드 활용

본문

확장변수를 활용하여 필드를 마음껏 늘여보자!
// 중복이면 어쩌지???

옵션필드 wr_1~wr_5 가운데 wr_1 필드를 사용한다고 가정하여 적어봅니다.
다 아시고 있는 고수님들에게는 웃음거리지만 저는 많은 고민을 해야 했습니다.
그러므로 저처럼 무지한 분들이 또 있을거라고 생각하고 글을 적어봅니다.
비웃지 말아 주시기를 바랍니다.
^^;

일단 저는 작동을 잘하여 팁이랍시고 올리지만 설명을 하라고 하면 난감합니다.
저도 초보이므로.......


이 팁은 관리자님의 부동산 스킨과 예스모아님의 쇼핑스킨에서 빌려온 것입니다.
관리자님의 스킨은 초보자인 제가 이해하기가 약간 어렵고,
예스모아님의 스킨은 쉽지만 view 화면에서 화면출력에서 애러가 있었습니다.
예스모아님의 쇼핑스킨에도 댓글이 있는데 확장한 필드들이 화면에 안보이는 것이었죠.


일단 gblist.skin.php 와 gbform.skin.php 상단은 아래와 같이 넣어주시면 됩니다.
먼저 알아두셔야 할것은 $ex_filed, $ext_00 등의 변수명은 자신이 기억하기 좋은
이름으로 바꾸어 사용하셔도 됩니다.

<? if (!defined("_GNUBOARD_")) exit; ?>

<? //-- ### 확장변수 ### --//--
$ex_filed = explode("|",$wr_1]);
$ext_00  = $ex_filed[0]; //-- ### 12시에
$ext_01  = $ex_filed[1]; //-- ### 거시기
$ext_02  = $ex_filed[2]; //-- ### 머시기
$ext_03  = $ex_filed[3]; //-- ### 징허네
$ext_04  = $ex_filed[4]; //-- ### 아이가
.
.
.
.
.
.
?>

확장 필드를 사용하면서 자주 쓰이는 항목이 숫자가 표시되어야 할 경우입니다.
그럴경우 list, view 스킨에 <?=nf($ext_01)?>원 을 사용하면 123,456원의 형식으로
출력이 됩니다.


아래는 gbview.skin.php 상단에 넣은 모양입니다.
$wr_1 와 $write[wr_1] 와의 차이가 있습니다.
이 차이로 인해서 view 화면에 출력이 안되는 것이었습니다.

<? if (!defined("_GNUBOARD_")) exit; ?>

<? //-- ### 확장변수 ### --//--
$ex_filed = explode("|",$write[wr_1]);
$ext_00  = $ex_filed[0]; //-- ### 12시에
$ext_01  = $ex_filed[1]; //-- ### 거시기
$ext_02  = $ex_filed[2]; //-- ### 머시기
$ext_03  = $ex_filed[3]; //-- ### 징허네
$ext_04  = $ex_filed[4]; //-- ### 아이가
.
.
.
.
.
.
?>


form 화면에서는

<input name="ext_01" itemname="입금액" value="<?=$ext_01?>" type="text" size="4" maxlength="4" class="input">
의 형식으로 코딩을 하시면 되겠고,

셀렉트 박스를 사용하시려면
<select name='ext_01' itemname="12시에">
<option value=''>선택
<option value='만나요'>만나요
<option value='브라보콘'>브라보콘
<option value='칼물고'>칼물고
<option value='거울을'>거울을
</select>
의 형식으로 입력을 하시면 됩니다.

그외 체크박스와 라디오 버튼이 있는데 아직까지 저는 사용해보지 못했습니다.

그리고 gbupdate.skin.php 파일이 있는데 예스모아님의 파일에는

<? if (!defined("_GNUBOARD_")) exit; ?>

<?  //-- ### 확장변수
$wr_1 = "$ext_00|$ext_01|$ext_02|$ext_03|$ext_04";

if(!$wr_comment) { //--코멘트가 아닌경우만 업데이트 : db내용 삭제되는 문제
$sql = " update $write_table set wr_1 = '$wr_1' where wr_id = '$wr_id' ";
sql_query($sql);
}
?>
의 형식으로 배포되어 있습니다.
$ext_00|$ext_01|$ext_02|$ext_03|$ext_04 을 계속 늘여가면 필드가 확장이 되겠죠.

if(!$wr_comment) { //--코멘트가 아닌경우만 업데이트 : db내용 삭제되는 문제
여기의 주석을 읽어보면 뭔가 문제가 있는 모양인데 아직 저는 잘 모르겠습니다.
아직 로컬에서 작업중인 홈인지라 공개로 테스트를 해보지 못했습니다.


관리자님이 제공해 주시고 예스모아님이 쉽게 코딩한 이 아이디어는 필드의 제약을
받지않고 마음껏 확장이 가능한 장점이 있습니다.
주문서 폼이라든지 많은 필드를 필요로 하는 구인구직, 또는 부동산, 장터 등에
널리 활용이 가능합니다.

부족한 글 읽어주셔서 감사합니다.
추천
0
  • 복사

댓글 전체

DDGR님,'|'가 들어가면 어떤 식으로 출력이 되는지요.
뒤에 말씀을 보면 혹시 검색관계 아닌지 추정만 되는데.......

현재 일정이 너무 촉박한 관계로 테스트를 거의 못해본 것이 찝찝하기는 합니다.
^^
제가 예전에 한번 스킨 짜집기하면서 사용한 방법이군요... ^^;
그런데 $ext_0x 의 내용에 '|'가 들어가면 아마 본래의 의도와 다르게 나올겁니다. 그래서 생각한건 구분자 '|' 대신에 '%&$%&$' 같은, 사용자(또는 의뢰자)가 거의 타이핑할 확률이 적은 것으로 했던 기억이...-_-;
예를들어 $ext_0x 들의 내용이
$ext_00 = 가나다
$ext_01 = 라마|바  // 여기 '|'가 들어갔다고 가정
$ext_02 = 사아자
$ext_03 = 차카타

이렇게 되면 explode()로 배열저장할 때 문제가 됩니다.

의도된 바로는

가나다
라마|바
사아자
차카타

로 변수에 저장이 되야하지만 '|'를 구분자로 하기때문에

가나다
라마

사아자
차카타

로 저장된다는 뜻이었습니다..
© SIRSOFT
현재 페이지 제일 처음으로