[스킨제작팁] 셀렉트,체크박스 코딩양 줄이기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

[스킨제작팁] 셀렉트,체크박스 코딩양 줄이기 정보

[스킨제작팁] 셀렉트,체크박스 코딩양 줄이기

본문

스킨 제작을 하다보면 셀렉트와 체크박스 코딩할 일이 많습니다.
유지 보수가 간편하고 Ctrl+c Ctrl+v에 조금 더 최적화(;;) 된 팁입니다.
양이 적은 경우 아래 일반적인 방법으로 해도 큰 무리가 없습니다만,
항목이 늘어나고 변동요지가 많을 경우 좀 귀찮습니다.

1. 일반적인 방법(write.skin.php)
1) 셀렉트
<select name='wr_1' itemname="년" class="select02">
<option value='2008' <? if($write[wr_1] == 2008) echo " selected "; ?>>2008
<option value='2007' <? if($write[wr_1] == 2007) echo " selected "; ?>>2007
</select>
2) 체크박스
<td>
<input type="checkbox" class="20box" name="wr_1" value="가" <? if ($write[wr_1] == '가') echo "checked";?>> 가
<input type="checkbox" class="20box" name="wr_1" value="나" <? if ($write[wr_1] == '나') echo "checked";?>> 나
</td>


2. 간단한 함수를 생성해서 최적화(?)
함수1.
function select_option_go($_array, $selectValue='') {
foreach($_array as $value) {
$result .= "<option value='$value' ";
if($value == $selectValue) $result .= " selected";
$result .= ">$value</option>\n";
}
return $result;
}
함수2.
function input_checkbox_go($name, $_array, $opt = '', $ch_br = '') {
foreach ($_array as $key => $value) {
echo "<input name='{$name}[]' type='checkbox' value='{$value}'";
if(is_array($opt) && in_array($value,$opt)) echo ' checked';
echo ">{$value} \n";
if($ch_br) echo "<br>\n";
}
}
함수3. view.skin.php에서 사용할 녀석
function print_checkbox_go($name, $_array, $opt, $ch_br = '') {
global $board_skin_path;
foreach ($_array as $key => $value) {
if(is_array($opt) && in_array($value,$opt)) echo "<img src='{$board_skin_path}/img/box_check01.gif'> <span class='red'>$value</span> \n";
else echo "<img src='{$board_skin_path}/img/box_check02.gif'> $value \n";
if($ch_br) echo "<br>\n";
}
}
항목셋팅 예
// 년
for($i=date('Y'); $i >= 1950; $i--) $setValue['연식'][] = $i;
// 연료
$setValue['연료'][] = '가솔린';
$setValue['연료'][] = '디젤';
$setValue['연료'][] = 'LPG';
$setValue['연료'][] = '가솔린/LPG겸용';
$setValue['연료'][] = '가솔린/CNG겸용';
$setValue['연료'][] = '하이브리드';
// 편의장치1
$setValue['편의장치1'][] = '썬루프';
$setValue['편의장치1'][] = '파노라마썬루프';
$setValue['편의장치1'][] = 'HID/제논램프';
$setValue['편의장치1'][] = '오토라이트';
$setValue['편의장치1'][] = '스마트키/키레스고';
$setValue['편의장치1'][] = '엔진스타트버튼';
$setValue['편의장치1'][] = '라이트세척장치';
$setValue['편의장치1'][] = '자동주차시스템';
$setValue['편의장치1'][] = '전자주차브레이크';

사용방법(write.skin.php)
1) 셀렉트
<select name='wr_1' style='width:60px;'>
<option value=''>::년::</option>
<?=select_option_go($setValue['연식'],$write['wr_1'])?>
</select> 년 

<select name='wr_2'>
<option value=''>::선택하세요::</option>
<?=select_option_go($setValue['연료'],$write['wr_2'])?>
</select>
2) 체크박스
<?=input_checkbox_go('wr_3',$setValue['편의장치1'],$write['wr_3'], '<br>')?>
or
<?=input_checkbox_go('wr_3',$setValue['편의장치1'],$write['wr_3'])?>


실제 사용예시

화면

해당 소스 코딩(write.skin.php)
변수셋팅화면 일부

write_update.head.php 에서 후처리 일부
write_update.skin.php 모습
view화면
해당 코딩 view.skin.php


가장 큰 이점 중 하나가 view단에서 재빠른 처리가 가능하다고나 할까요.;
예시 화면은 실제 적용시 몇 가지 부분들이 추가된 장면입니다만, 기본은 거의 같습니다.
추천
12

댓글 12개

제가 js사용을 잘 안하는 편이라서 그런 것도 있습니다만,
사실 위 팁에서 말하고자 하는 중점 내용은

// 편의장치1
$setValue['편의장치1'][] = '썬루프';
$setValue['편의장치1'][] = '파노라마썬루프';
처럼 배열로 항목을 저장해서 루프문을 이용하자이지요.;
js에서도 응용이 가능한 부분이구요.
이렇게 한다음 jquery로 제어해도 되겠지요..

아니면 체크박스를 통째로 jquery로 만든다는 말씀인가요?
저렇게 많은 항목을 코딩할때 jquery던 js건
이 팁의 목적은 코딩 자체의 편리함을 주는 방법이 아닐런지..

실제로 체크박스 옵션수십개씩 다루고 가공을 많이 해야 하는 스크린샷과 같은 경우를
직접 코딩해보지 않으셨으면 아마 이해가 잘 안가실수도 있겠습니다.

완전 노가다거든요;;

좋은팁 감사합니다. 앞으로 자주 쓸것 같네요
//write.skin.php의 내용

<?
$setValue['편의장치1'][] = '썬루프';
$setValue['편의장치1'][] = '파노라마썬루프';
$setValue['편의장치1'][] = 'HID/제논램프';
$setValue['편의장치1'][] = '오토라이트';
$setValue['편의장치1'][] = '스마트키/키레스고';
$setValue['편의장치1'][] = '엔진스타트버튼';
$setValue['편의장치1'][] = '라이트세척장치';
$setValue['편의장치1'][] = '자동주차시스템';
$setValue['편의장치1'][] = '전자주차브레이크';
?>


<?=input_checkbox_go('wr_16',$setValue['편의장치1'],$write['wr_16'])?>


//write.update.skin.php의 내용

$wr_16 = implode("|" ,$편의장치); //1번
$wr_16 = implode("|" ,$wr_16); //2번



$sql_common = '';
for ($i = 11 ; $i <=24 ; $i ++ ) {
$tmp = "wr_$i" ;
$sql_common .= "$tmp = '{$$tmp}',";
}
$sql_common .= "wr_30 = '{$wr_30}'";

sql_query(" update $write_table set {$sql_common} where wr_id = '$wr_id' ");


1번 2번 다 DB에 아무 값도 들어 가지 않습니다.

어디가 잘못 된건지요??
서누니 님  안녕하세요
좋은 팁 자료 올려주셔서 감사드립니다


저는 왕초보입니다만

서누니님께서 올려주신 셀렉트,체크박스 코딩양 줄이기  를
사용하고 싶은데  전문가적인 부분으로 설명이 되어있어서
왕초보 입장에서는 알~ 길이 없습니다ㅠ.ㅠ;

죄송한데요  새내기 입장에서 설명을 부탁드릴 수가 있을까요?
제가 체크박스 여러개로 되어있는것을 꼭 만들어 사용하고 싶은데
도통 사용이 안되네요...ㅜ.ㅠ

염치에도 불구하고 요청을 드려봅니다.
감사합니다.
서누니님께서 올려주신 소스중에서 화면으로 캡쳐하여 올려주셔서
제가 일일이 두눈 부르켜 떠가면서 타이핑 했습니다.  2% 아쉬워서요^^
저같은 사람에게 필요할 것 같아서 올려봅니다.
참조하세요...  혹시 오타난 부분 이해해 주세요...
내용부분  처음에는 잘~ 입력하다  나중에는 복사해서 대충 수정했습니다.  알아서 수정해서 사용해주세요^^




<table class='sh_table'>
  <tr>
    <th class='center width16'>내/외장옵션</th>
    <th class='center width16'>편의장치1</th>
    <th class='center width16'>편의장치2</th>
    <th class='center width16'>안전장치</th>
    <th class='center width16'>AV/오디오/항법</th>
    <th class='center width16'>튜닝</th>
  </tr>
  <tr>
    <td class='lineH22'>
    <?=input_checkbox_go('내외장옵션',$setValue['내외장옵션'],$checkValue['내외장옵션'],'<br>')?>
    </td>
    <td class='lineH22'>
    <?=input_checkbox_go('편의장치1',$setValue['편의장치1'],$checkValue['편의장치1'],'<br>')?>
    </td>
    <td class='lineH22'>
    <?=input_checkbox_go('편의장치2',$setValue['편의장치2'],$checkValue['편의장치2'],'<br>')?>
    </td>
    <td class='lineH22'>
    <?=input_checkbox_go('안전장치',$setValue['안전장치'],$checkValue['안전장치'],'<br>')?>
    </td>
    <td class='lineH22'>
    <?=input_checkbox_go('AV오디오항법',$setValue['AV오디오항법'],$checkValue['AV오디오항법'],'<br>')?>
    </td>
    <td class='lineH22'>
    <?=input_checkbox_go('튜닝',$setValue['튜닝'],$checkValue['튜닝'],'<br>')?>
    </td>
  </tr>
</table>








//내외장옵션
  $setValue['내외장옵션'][] = '파워윈도우';
  $setValue['내외장옵션'][] = '에어컨';
  $setValue['내외장옵션'][] = '풀오토에어컨';
  $setValue['내외장옵션'][] = '좌/우독립에어컨';
  $setValue['내외장옵션'][] = '가죽시트';
  $setValue['내외장옵션'][] = '열선시트';
  $setValue['내외장옵션'][] = '통풍시트';
  $setValue['내외장옵션'][] = '안마시트';
  $setValue['내외장옵션'][] = '버켓시트';
  $setValue['내외장옵션'][] = '메모리시트';
  $setValue['내외장옵션'][] = '분할폴딩시트';
  $setValue['내외장옵션'][] = '운전석전동시트';
  $setValue['내외장옵션'][] = '조수석전동시트';
  $setValue['내외장옵션'][] = '뒷좌석전동시트';
  $setValue['내외장옵션'][] = '알루미늄휠';
  $setValue['내외장옵션'][] = '크롬휠';
  $setValue['내외장옵션'][] = '광폭타이어';
  $setValue['내외장옵션'][] = '샤크안테나';
  $setValue['내외장옵션'][] = '데이라이트';

//편의장치1
  $setValue['편의장치1'][] = '썬루프1';
  $setValue['편의장치1'][] = '썬루프2';
  $setValue['편의장치1'][] = '썬루프3';
  $setValue['편의장치1'][] = '썬루프4';
  $setValue['편의장치1'][] = '썬루프5';
  $setValue['편의장치1'][] = '썬루프6';
  $setValue['편의장치1'][] = '썬루프7';
  $setValue['편의장치1'][] = '썬루프8';
  $setValue['편의장치1'][] = '썬루프9';
  $setValue['편의장치1'][] = '썬루프10';
  $setValue['편의장치1'][] = '썬루프11';
  $setValue['편의장치1'][] = '썬루프12';
  $setValue['편의장치1'][] = '썬루프13';
  $setValue['편의장치1'][] = '썬루프14';
  $setValue['편의장치1'][] = '썬루프15';
  $setValue['편의장치1'][] = '썬루프16';
  $setValue['편의장치1'][] = '썬루프17';
  $setValue['편의장치1'][] = '썬루프18';
  $setValue['편의장치1'][] = '썬루프19';

// 편의장치2
  $setValue['편의장치2'][] = '타이어1';
  $setValue['편의장치2'][] = '타이어11';
  $setValue['편의장치2'][] = '타이어12';
  $setValue['편의장치2'][] = '타이어13';
  $setValue['편의장치2'][] = '타이어14';
  $setValue['편의장치2'][] = '타이어15';
  $setValue['편의장치2'][] = '타이어16';
  $setValue['편의장치2'][] = '타이어17';
  $setValue['편의장치2'][] = '타이어18';
  $setValue['편의장치2'][] = '타이어19';
  $setValue['편의장치2'][] = '타이어101';
  $setValue['편의장치2'][] = '타이어111';
  $setValue['편의장치2'][] = '타이어112';
  $setValue['편의장치2'][] = '타이어113';
  $setValue['편의장치2'][] = '타이어114';
  $setValue['편의장치2'][] = '타이어115';
  $setValue['편의장치2'][] = '타이어116';
  $setValue['편의장치2'][] = '타이어117';
  $setValue['편의장치2'][] = '타이어118';
 
//안전장치
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';
  $setValue['안전장치'][] = '에어백1';

// AV오디오항법
  $setValue['AV오디오항법'][] = '오디오GPS1';
  $setValue['AV오디오항법'][] = '오디오GPS2';
  $setValue['AV오디오항법'][] = '오디오GPS3';
  $setValue['AV오디오항법'][] = '오디오GPS4';
  $setValue['AV오디오항법'][] = '오디오GPS5';
  $setValue['AV오디오항법'][] = '오디오GPS6';
  $setValue['AV오디오항법'][] = '오디오GPS7';
  $setValue['AV오디오항법'][] = '오디오GPS8';
  $setValue['AV오디오항법'][] = '오디오GPS9';
  $setValue['AV오디오항법'][] = '오디오GPS10';
  $setValue['AV오디오항법'][] = '오디오GPS11';
  $setValue['AV오디오항법'][] = '오디오GPS12';
  $setValue['AV오디오항법'][] = '오디오GPS13';
  $setValue['AV오디오항법'][] = '오디오GPS14';
  $setValue['AV오디오항법'][] = '오디오GPS15';
  $setValue['AV오디오항법'][] = '오디오GPS16';
  $setValue['AV오디오항법'][] = '오디오GPS17';
  $setValue['AV오디오항법'][] = '오디오GPS18';
  $setValue['AV오디오항법'][] = '오디오GPS19';

// 튜닝
  $setValue['튜닝'][] = '엔진튜닝1';
  $setValue['튜닝'][] = '엔진튜닝2';
  $setValue['튜닝'][] = '엔진튜닝3';
  $setValue['튜닝'][] = '엔진튜닝4';
  $setValue['튜닝'][] = '엔진튜닝5';
  $setValue['튜닝'][] = '엔진튜닝6';
  $setValue['튜닝'][] = '엔진튜닝7';
  $setValue['튜닝'][] = '엔진튜닝8';
  $setValue['튜닝'][] = '엔진튜닝9';
  $setValue['튜닝'][] = '엔진튜닝10';
  $setValue['튜닝'][] = '엔진튜닝11';
  $setValue['튜닝'][] = '엔진튜닝12';
  $setValue['튜닝'][] = '엔진튜닝13';
  $setValue['튜닝'][] = '엔진튜닝14';
  $setValue['튜닝'][] = '엔진튜닝15';
  $setValue['튜닝'][] = '엔진튜닝16';
  $setValue['튜닝'][] = '엔진튜닝17';
  $setValue['튜닝'][] = '엔진튜닝18';
  $setValue['튜닝'][] = '엔진튜닝19';









$wr_17 = implode('^',$내외장옵션);
$wr_18 = implode('^',$편의장치1);
$wr_19 = implode('^',$편의장치2);
$wr_20 = implode('^',$안전장치);
$wr_21 = implode('^',$AV오디오항법);
$wr_22 = implode('^',$튜닝);
$wr_23 = implode('^',$운행용도);
$wr_24 = implode('^',$기본물품);
$wr_25 = implode('^',$AS보증);
$wr_26 = implode('^',$괸리항목);
$wr_27 = implode('^',$중요특징);





write_update.skin.php

<?
if(!defined("GNUBOARD_"))exit; //개별 페이지 접근 불가
$sql_common = ";
for($i=11; $i<=29; $i++){
  $tmp = "wr_$i";
  $sql_common.=" $tmp = '{$$tmp}',";
}
  $sql_common.="wr+30 = '{$wr_30}'";
  $sql = "
    update $write_table
    set
      {$sql_common}
    where
      wr_id = '$wr_id'";
  sql_query($sql);
?>
전체 3,309 |RSS
그누4 팁자료실 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT