체크박스 체크 후 수정 시 체크값 유지가 안되요...ㅠ

체크박스 체크 후 수정 시 체크값 유지가 안되요...ㅠ

QA

체크박스 체크 후 수정 시 체크값 유지가 안되요...ㅠ

본문

아래처럼 해당 게시판 write.php 에 체크박스 만든 후 체크 시 해당 하는 값이 저장은 되는데 

수정 시 체크했던 체크박스가 유지가 안되고 체크했던게 초기화되서 수정할때마다 다시 체크를 해줘야 하는 문제가 생기네요. 복수선택을 하든 하나만 선택을 하든 수정 시엔 다시 체크를 해줘야하는데 

검색해서 여러 방법을 다 시도해봤는데 체크 유지가 안되네요 ... 어떻게 해야 체크 박스 체크가 유지 될까요? ㅠㅠ 고수님들 제발 도와주세요 ㅠㅠ 

 


<tr>
    <th><label for="wr_content">노출페이지<strong class="sound_only">필수</strong></label></th>
    <td class="w_bo_w">
        <div style="display:flex; flex-wrap:wrap; align-items: flex-start; justify-content: flex-start;">
            <?php 
            for($i=0;$row=sql_fetch_array($qry);$i++){
                $checked = '';
                for($j=0;$j<count($wr_5);$j++) {
                    if($wr_5[$j]==$row['me_code']) $checked = 1;
                }
            ?>
            <label><input type="checkbox" name="ch_wr_5[]" value="<?=$row['me_code']?>" <? echo $checked==1?'checked="checked"':'';?> ><?=$row['me_name']?></label>
            <? } ?>
        </div>
    </td>
</tr>

 

뷴류는 , 로 분류하도록 했습니다.

$wr_5 = explode(',', $row['ch_wr_5']);

이 질문에 댓글 쓰기 :

답변 6

jquery 방식으로 하는부분으 더 효율적일듯하여 제가 다시한번 코딩해보았습니다.

참고하여 적용해보시기 바랍니다.

 


<tr>
    <th><label for="wr_content">노출페이지<strong class="sound_only">필수</strong></label></th>
    <td class="w_bo_w">
        <div style="display:flex; flex-wrap:wrap; align-items: flex-start; justify-content: flex-start;">
            <?php 
            for($i=0;$row=sql_fetch_array($qry);$i++){
            ?>
            <label><input type="checkbox" name="ch_wr_5[]" id="ch_wr_5_<?=$i?>" value="<?=$row['me_code']?>" <? echo $checked==1?'checked="checked"':'';?> ><?=$row['me_name']?></label>
            <? } ?>
        </div>
    </td>
</tr>
<script>
<?php
for($j=0;$j<count($wr_5);$j++) {
?>
  $("input:checkbox[id='Ich_wr_5_<?=$i?>']").is(":checked") == true
<?php
}
?>
</script>

 

해보시다 안되시면 쪽지주시면 도움드리겠습니다.

var_dump($wr_5[$j]==$row['me_code']); 

불린 확인해보세요.


for($i=0;$row=sql_fetch_array($qry);$i++){
 $wr_5 = explode(',', $row['ch_wr_5']);
 print_r($wr_5);
 echo $row["me_code"];

이걸로 해당 값들이 잘 나오는지 우선 확인해보셔야 할 듯 해요

 

아니면 지금 내용이 저 위 코드 상단으로 또 다른 for 혹은 while문이 존재할 경우

$row["me_code"] 값이 상단 루프적용된 값인데 중간에 한번 더 $row를 정의해서 값이 사라졌을 지도 모르겠네요

 

값들이 어떻게 구성되어 있는지 확인해보세요.


var_dump($row);

 

혹시

$wr_5 = explode(',', $row['ch_wr_5']);
가 아니라

$wr_5 = explode(',', $row['wr_5']);

는 아닐지 추측해봅니다.

$row에 메뉴를 담아두셨다면

wr_5에 ,로 나눌때 담겨진 갯수도 같아야되요

 

실제 메뉴는 1010 1020 1030 2010 2020 이라고 하실때

체크박스로 1010 2010 2020 만 체크하셨다면

wr_5에는 1010,,,2010,2020 이 저장됬을때는 순서대로 매칭하시면 될테구요

아닐 경우에는 in_array 로 배열 매칭 조건문으로 해도 될실꺼에요

 

답변을 작성하시기 전에 로그인 해주세요.
전체 12
QA 내용 검색

회원로그인

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