코딩줄이기 - 배열로 라디오/체크박스 출력하기 > 그누보드5 팁자료실

그누보드5 팁자료실

코딩줄이기 - 배열로 라디오/체크박스 출력하기 정보

코딩줄이기 - 배열로 라디오/체크박스 출력하기

첨부파일

쓰기페이지_라디오.PNG (1.4K) 25회 다운로드 2016-03-18 11:59:04
쓰기페이지_체크박스.PNG (2.6K) 12회 다운로드 2016-03-18 11:59:04
뷰페이지.PNG (1.1K) 15회 다운로드 2016-03-18 11:59:04
array_to_input.lib.php (2.3K) 105회 다운로드 2016-03-18 12:00:58

본문

사용예

1. 배열 셋팅
<?php
$매물형태 = array('전세', '임대', '사글세/년세', '매매');
$옵션1 = array();
$옵션1[] = '에어컨';
$옵션1[] = '냉장고';
$옵션1[] = '세탁기';
$옵션1[] = '가스레인지';
$옵션1[] = '인덕션';
$옵션1[] = '전자레인지';
?>


2. write.skin.php 코딩

        <tr>
            <th scope="row">매물형태</th>
            <td>
<?php
echo array_to_input($매물형태, 'radioValue', 'wr_7', '', $write['wr_7']);
?>
            </td>
        </tr>
        <tr>
            <th scope="row">옵션</th>
            <td>
<?php
echo array_to_input($옵션1, 'checkValue', 'wr_10', '', $write['wr_10']);
?>
            </td>
        </tr>

※ 체크박스의 value값을 배열의 value값으로 설정 할 때 'checkValue'
※ 체크박스의 value값을 배열의 key값으로 설정 할 때 'checkKey'


3. write_update.head.skin.php 설정
<?php
@sort($wr_10);
$wr_10 = implode('|',$wr_10);
?>


4. view.skin.php 코딩
<tr>
<th>옵션</th>
<td colspan="3"><?=str_replace('|', ', ', $view['wr_10'])?></td>
</tr>



배열의 키값을 value로 사용하느냐, 배열의 값을 value로 사용하느냐는 옵션으로 조정가능하게 처리하고
귀차니즘을 줄이기 위해 만든 함수입니다.
최대 장점중 하나는 글쓰기 수정시 체크해주는 부분을 신경 안써도 된다고나 할까요.
셀렉트의 옵션도 해당 함수로 처리가능합니다.
각 생성되는 체크박스나 라디오에 id값은 자동으로 부여됩니다. class는 선택 입력가능하구요.
(js로 추가 처리 가능하게 해둔 부분입니다)


[함수]
function array_to_input($in_array, $type = 'selectKey', $input_name = '', $class_name = '', $in_value = null) {
if(!is_array($in_array)) return false;
$result = array();
$tmp_se = array();

if(isset($in_value)) {
if(strpos($type, 'select') === false) {
$check_text = ' checked';
} else {
$check_text = ' selected';
}
if(!is_array($in_value)) $in_value = array($in_value);
foreach($in_value as $value) {
if(strpos($type, 'Value') === false) {
$tmp_se[$value] = $check_text;
} else {
$tmp = array_search($value, $in_array);
if($tmp !== false) $tmp_se[$tmp] = $check_text;
}
}
}
if($type == 'selectKey') {
foreach($in_array as $key => $value) {
$result[] = '<option value="'.$key.'"'.$tmp_se[$key].'>'.$value.'</option>';
}
return implode("\n", $result);
}

if($type == 'selectValue') {
foreach($in_array as $key => $value) {
$result[] = '<option value="'.$value.'"'.$tmp_se[$key].'>'.$value.'</option>';
}
return implode("\n", $result);
}

if($type == 'radioKey') {
foreach($in_array as $key => $value) {
$result[] = '<input type="radio" name="'.$input_name.'" value="'.$key.'" class="'.$class_name.'" id="'.$input_name.$key.'"'.$tmp_se[$key].'> <label for="'.$input_name.$key.'">'.$value.'</label>&nbsp;';
}
return implode("\n", $result);
}

if($type == 'radioValue') {
foreach($in_array as $key => $value) {
$result[] = '<input type="radio" name="'.$input_name.'" value="'.$value.'" class="'.$class_name.'" id="'.$input_name.$key.'"'.$tmp_se[$key].'> <label for="'.$input_name.$key.'">'.$value.'</label>&nbsp;';
}
return implode("\n", $result);
}

if($type == 'checkKey') {
foreach($in_array as $key => $value) {
$result[] = '<input type="checkbox" name="'.$input_name.'[]" value="'.$key.'" class="'.$class_name.'" id="'.$input_name.$key.'"'.$tmp_se[$key].'> <label for="'.$input_name.$key.'">'.$value.'</label>&nbsp;';
}
return implode("\n", $result);
}

if($type == 'checkValue') {
foreach($in_array as $key => $value) {
$result[] = '<input type="checkbox" name="'.$input_name.'[]" value="'.$value.'" class="'.$class_name.'" id="'.$input_name.$key.'"'.$tmp_se[$key].'> <label for="'.$input_name.$key.'">'.$value.'</label>&nbsp;';
}
return implode("\n", $result);
}

return false;
}
추천
6

댓글 12개

제가 찾던 기능이었는데 ( 몇 개월간 고심하던것인데 한방에 해결되는것 같아서 너무 감사한 마음이 많이 듭니다~
그누보드4에서 사용했던것을  어떻게 수정해서 적용하나 고심했는데... 감사감사합니다
잘~ 사용해보겠습니다~

그림자밟기님과 고수님들께 한가지 문의드립니다
예를들어 wr_1 한곳에
체크박스, 라디오 도 사용하면서
셀렉트 선택하는것도 같이 사용하려면 어떻게 적용하면 되나요?
왕초보여서 송구한 마음으로 여쭈어봅니다


추천도장찍고, 댓글 남깁니다..
그림자밟기님  감사합니다^^*
통상 위와 같은 경우에는 name을 다르게 하고, 후작업으로 wr_1에 저장하는 방식을 택합니다.

write.skin.php
<select name="wr_1_1"></select>
<input type="checkbox" name="wr_1_2[]" value="체크박스">
<input type="checkbox" name="wr_1_2[]" value="체크박스">
<input type="radio" name="wr_1_3" value="라디오">
<input type="radio" name="wr_1_3" value="라디오">

write_update.head.skin.php
<?php
$wr_1_2 = implode('|',$wr_1_2); // 체크박스는 배열로 넘어오기 때문에 먼저 작업
$wr_1 = $wr_1_1.'^|^'.$wr_1_2.'^:^'.$wr_1_3;
?>

view.skin.php
<?php
list($view[wr_1_1], $view[wr_1_2], $view[wr_1_3]) = explode('^:^', $view[wr_1]);
?>

write.skin.php 수정을 위해
<?php
if($w == 'u') {
    list($write[wr_1_1], $write[wr_1_2], $write[wr_1_3]) = explode('^:^', $write[wr_1]);
}
?>
그림자밟기 님  친절하게 설명과 가르쳐주심에
너무 감사를 드립니다~

시간이 가도~ 아직 걸음을 때는 단계에 있는 한사람으로 더~ 분발하도록 하겠습니다~

말씀하신대로~ 한번 잘~ 적용해보겠습니다~
감사합니다~ 꾸벅~

( 아침저녁으로 쌀쌀한데 감기조심하시고~ 한주간도 화이팅입니다 그림자밟기님^^*
& 그누보드 식구들도~ 화이팅여~ )
필수입력 체크 말씀이시죠?

wr_1로 예를 들겠습니다.
(체크박스와 라디오는 동일합니다.)

아래 방식으로 하기 위해서는 위 함수로 입력시 class명까지 지정해줘야 합니다.

<?php
echo array_to_input($매물형태, 'radioValue', 'wr_1', 'wr_1', $write['wr_1']);
?>

write.skin.php 하단부

  function fwrite_submit(f)
    {

요쪽 함수에 아래 처럼 체크하면 되겠습니다.

var check_value = $(".wr_1:checked");
var check_length = check_value.length;
if(!check_length) {
    alert("항목을 선택해 주십시오");
    f.wr_1.focus();
    return false;
}
초보라서 무슨말인지 하나도 모르겠습니다.......ㅠ.ㅠ
혹시 적용하신 스킨있으심...예제하나주심 안될까요?
전체 2,432 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

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