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

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

KIMHA 2년 전 조회 1,499

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

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

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

 

</p>

<p><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></p>

<p>

 

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

</p>

<p>$wr_5 = explode(',', $row['ch_wr_5']);</p>

<p>

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

답변 6개

채택된 답변
+20 포인트
복스리
2년 전

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

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

 

</p>

<p><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></p>

<p><script>

<?php

for($j=0;$j<count($wr_5);$j++) {

?>

  $("input:checkbox[id='Ich_wr_5_<?=$i?>']").is(":checked") == true

<?php

}

?>

</script></p>

<p>

 

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

K
KIMHA
2년 전
알려주신대로 해봤는데도 안되네요 ㅠㅠ
K
KIMHA
2년 전
다른 방법으로 해결되었습니다~! 봐주셔서 감사합니다~!

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

name="ch_wr_5[]"

대신

 

name="ch_wr_5_a"

name="ch_wr_5_b"

name="ch_wr_5_c"

...

로 하시고

update에서는

$wr_5="$ch_wr_5_a,$ch_wr_5_b,$ch_wr_5_c,...";

로 하세요.

로그인 후 평가할 수 있습니다

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

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

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

 

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

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

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

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

 

로그인 후 평가할 수 있습니다

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

2년 전

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

</p>

<p>var_dump($row);</p>

<p>

 

혹시

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

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

는 아닐지 추측해봅니다.

로그인 후 평가할 수 있습니다

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

2년 전

</p>

<p>for($i=0;$row=sql_fetch_array($qry);$i++){</p>

<p> $wr_5 = explode(',', $row['ch_wr_5']);</p>

<p> print_r($wr_5);</p>

<p> echo $row["me_code"];</p>

<p>

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

 

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

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

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

K
KIMHA
2년 전
다른 방법으로 해결되었습니다~! 봐주셔서 감사합니다~!

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

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

불린 확인해보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

K
KIMHA
2년 전
다른 방법으로 해결되었습니다~! 봐주셔서 감사합니다~!

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

답변을 작성하려면 로그인이 필요합니다.

로그인