체크박스 체크 후 수정 시 체크값 유지가 안되요...ㅠ
본문
아래처럼 해당 게시판 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 로 배열 매칭 조건문으로 해도 될실꺼에요
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,...";
로 하세요.