비

다중 여분필드 쉽게 만드는 함수 - 3. 멀티 체크박스

· 2022-04-01 (금) 13:23:25 · 6942 · 9

 

이 시리즈의 최종편입니다.

사용법은 1편 라디오버튼과 2편 셀렉트박스와 동일합니다.

1. https://sir.kr/g5_tip/18179

2. https://sir.kr/g5_tip/18199

 

write.skin.php 의 상단이나 아니면 write.head.skin.php 을 만들어서 아래의 함수를 입력합니다.

 

[code]

<style>
.wr-checkbox { margin-left:5px; margin-right:7px; }
</style>
<?php
function wr_checkbox($checkbox_wr, $checkbox_str, $checkbox_req) {
    global $write;
    return "
        <script>
        n = ".explode('_', $checkbox_wr)[1].";
        document.write('<span id=wrCheckbox_' + n + ' onmouseover=n=' + n + '>');
        this['checkbox_' + n] = ('".$checkbox_str."').split(',');
        this['checkboxValue' + n] = '".$write[$checkbox_wr]."';
        document.write('<input type=hidden id=wr_' + n + ' name=wr_' + n + ' value=\'' + this['checkboxValue' + n] + '\'>');
        for (this['name_' + n] of this['checkbox_' + n]) document.write('<input type=checkbox name=_' + n + ' value=\'' + this['name_' + n] + '\'><span class=wr-checkbox>' + this['name_' + n] + '</span>');
        document.getElementsByName('_' + n)[document.getElementsByName('_' + n).length - 1].style.paddingRight = '0px';
        for (this['_' + n] of document.getElementsByName('_' + n)) {
            for (this['split_' + n] of this['wr_' + n].value.split(',')) this['_' + n].checked += this['_' + n].value == this['split_' + n];
            this['_' + n].onclick = function() {
                window['wr_' + n].value = '';
                for (this['_' + n] of document.getElementsByName('_' + n)) if (this['_' + n].checked) window['wr_' + n].value += this['_' + n].value + ',';
                window['wr_' + n].value = window['wr_' + n].value.slice(0, -1);
            }
        }
        this['checkboxReq_' + n] = ".$checkbox_req.";
        this['wrCheckbox_' + n].onmouseout = function() {
            if (window['checkboxReq_' + n] && window['wr_' + n].value == '') {
                document.getElementsByName('_' + n)[0].checked = 1;
                document.getElementsByName('_' + n)[0].onclick();
            }
        }
        this['wrCheckbox_' + n].onmouseout();
        document.write('</span>');
        </script>
    ";
}
?>

[/code]

 

함수는 write.skin.php 에서 아래처럼 표현합니다.

[code]

<?php echo wr_checkbox("wr_4", "브라질,이탈리아,독일,우루과이,아르헨,프랑스", 1); ?>

[/code]

 

다음 중 역대 월드컵을 2회 이상 우승한 나라 중 유럽국가는?

31832606_1648786160.0406.jpg

 

기본 옵션은 이전의 게시글과 같습니다.

단 뷰페이지에서는 약간의 옵션이 더 필요합니다.

예를 들어 <?php echo $view['wr_4']; ?> // 이탈리아,독일,프랑스

위와 같은 단순표기 외에 1번과 2번과 3번을 각기 나열하고 싶다면...

 

[code]

<?php
$view_wr4 = explode(',', $view['wr_4']);
array_unshift($view_wr4, count($view_wr4));
$view_wr4[0] = $view_wr4[1] == '' ? 0 : $view_wr4[0];

?>

[/code]

 

위와 같이 여분필드를 배열에 담은 후 아래처럼 표현하면 되겠습니다.

 

<?php echo $view_wr4[1]; ?> // 이탈리아

<?php echo $view_wr4[2]; ?> // 독일

<?php echo $view_wr4[3]; ?> // 프랑스

 

<?php echo $view_wr4[0]; ?> 은 항목의 총숫자입니다. 예제에서는 3이 되겠지요.

|

댓글 9개

좋은 팁 감사합니다.
2022-04-02 (토) 12:15:18
@들레아빠 감사합니다.
고맙습니다. 잘 쓰겠습니다^^
공개해주신 라디오버튼, 셀렉트박스, 멀티체크박스팁을 이용하면 스킨을 만들 때 매우 도움이 될것 같습니다.
라디오버튼 등은 좀 어려워서 여러가지를 선택하는 기능사용은 잘 이용하지 못했는데 비타주리님의 팁을 이용하면 쉽게 스킨에 적용할 수 있어 참 좋습니다.
세가지 팁을 write.head.skin.php에 다 넣어두고 필요한곳에서 라디오버튼, 셀렉트박스, 멀티체크박스를 이용할 수있어서 최고의 팁이라고 생각합니다.
다음에는 어떤 팁을 공개해주실지 기다려집니다.
환절기에 건강조심하세요^^
2022-04-02 (토) 19:56:36
@김철용
늘 격려 말씀 주셔서 감사합니다.
감사합니다.
2022-04-02 (토) 20:04:58
@트리플 감사합니다
2022-04-04 (월) 13:56:09
감사합니다.
2022-04-04 (월) 14:43:11
@크리스휘 늘 감사합니다.
신기 합니다. 이해하기 쉽게 설명 해주셔서 감사합니다. ^^
댓글을 작성하시려면 로그인이 필요합니다.

그누보드5 팁자료실

2,788건
+
제목 글쓴이 날짜 조회
22-04-08 조회 7,003
22-04-06 조회 9,225
22-04-02 조회 1.4만
22-04-01 조회 6,943
22-03-31 조회 5,760
22-03-30 조회 7,143
22-03-29 조회 8,711
22-03-29 조회 5,288
22-03-28 조회 5,683
22-03-26 조회 6,312
22-03-25 조회 7,008
22-03-24 조회 5,881
22-03-23 조회 4,856
22-03-23 조회 5,538
22-03-22 조회 5,230
22-03-22 조회 5,054
22-03-19 조회 6,378
22-03-19 조회 7,680
22-03-15 조회 6,771
22-03-14 조회 5,927
22-03-13 조회 6,156
22-03-12 조회 6,319
22-03-10 조회 5,951
22-03-09 조회 5,364
22-03-07 조회 6,125
22-03-06 조회 6,662
22-03-04 조회 5,770
22-03-03 조회 7,248
22-03-03 조회 5,573
22-03-01 조회 9,109