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

여러 체크박스 체크하고, 또 수정할 경우에 체크된 상황을 그대로 보여주는,,,

· 7년 전 · 2378

너무 부족한 코드가 누군가에게 필요할까요? 

 

리크루트 등에서 워낙 체크박스가 많아서...w write m modify

여러 체크박스 체크하고 저장했을 때, 체크박스의 값이 쉼표로 디비에 저장되는 경우,

그 페이지를 수정할 경우에 체크된 상황을 그대로 보여주는 함수입니다. 

 

디비에는 순서대로 쉼표로 체크박스의 값들이 섞여저장되어는 경우에.. .

수정페이지에 들어갔을 때 제대로 골라서 체크된 값들만을 체크해주는 함수입니다. 

 

 

function showCheckbox4wm($mainStrArr, $mainValArr, $colname, $subArr)
{
    $idxArr = array();
    if (!empty($subArr)) {
        for ($i = 0; $i < sizeof($subArr); $i++) {
            // 인덱스를 가져온다.

            $temp = array_keys($mainValArr, $subArr[$i]);
//                                    print_r2($temp[0]);
            if(sizeof($temp) > 0){
                $idxArr[] = $temp[0]; // 발견한 처음 인덱스만 모으면 된다.
            }
        }
        sort($idxArr);
    }

    // 배열을 값의 크기대로 소팅을 한번 해준다. 아래 for문에서 순차적 검색을 해야하므로...
//                            print_r2($idxArr);
//                            print_r2($subArr);
    echo "<ul>";
    for ($i = 0; $i < sizeof($mainStrArr); $i++) {

        //
        if (!empty($subArr)) {
            $checked = (in_array($i, $idxArr)) ? "checked" : "";
        } else {
            $checked = '';
        }

        echo "
                                    <li>
                                    <input type=\"checkbox\" name=\"{$colname}[{$i}]\" id=\"{$colname}_{$i}\" value=\"{$mainValArr[$i]}\" {$checked}> 
                                    <label for=\"{$colname}_{$i}\">{$mainStrArr[$i]}</label>
                                    </li>
                                    ";
    }
    echo "</ul>";
}

 

 

예제, 

$recruit_11ArrMain = array("국민연금", "건강보험", "고용보험", "산재보험", "건강검진", "차량유료보조금", "각종경조금");

$recruit_11ArrSub = "산재보험,건강검진,고용보험";

showCheckbox4wm($recruit_11ArrMain, $recruit_11ArrMain, "recruit_11", $recruit_11ArrSub);

일 때 나열되고, sub문자열에 있는 항목들이 체크되어 보여지도록 됩니다. 

 

 

정성스럽게 만들어진 예제나 설명이 아니고 거칠어서 죄송합니다. Orz

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시글 목록

번호 제목
18200
18195
18193
18181
18179
18173
18170
18164
18158
18155
18152
18151
18150
18140
18139
18138
18131
18130
18120
18119
18118
18117
18116
18111
18110
18108
18107
18106
18100
18090