테스트 사이트 - 개발 중인 베타 버전입니다

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

· 14년 전 · 5932 · 12
스킨 제작을 하다보면 셀렉트와 체크박스 코딩할 일이 많습니다.
유지 보수가 간편하고 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년 전
서누니 님 안녕하세요
좋은 팁 자료 올려주셔서 감사드립니다


저는 왕초보입니다만

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

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

염치에도 불구하고 요청을 드려봅니다.
감사합니다.
12년 전
서누니님께서 올려주신 소스중에서 화면으로 캡쳐하여 올려주셔서
제가 일일이 두눈 부르켜 떠가면서 타이핑 했습니다. 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);
?>

게시글 목록

번호 제목
34706
34693
34563
34536
34521
34480
34479
34466
34437
34436
34435
34406
34398
34387
34382
34375
34364
34336
34294
34293