체크박스 배열을 깔끔하게 정리하는 방법 문의드립니다. 채택완료
http://sir.kr/qa/161078">http://sir.kr/qa/161078 등의 질문에서 거의 다 온 것 같습니다.
정확히는 write.skin.php에서 값을 db로 정확히 넘길 수 있게 되었고
출력은 값을 넘길 수 있으니 어찌어찌 하다보면 될 것 같구요..
이제 한가지 글수정할때 db에 입력된 값을 체크값에도 그대로 반영하는 것만 남은 것 같습니다.
</p><p><?php $roomsize2 = explode("|", $write['room_size_2']); ?></p><p> <tr></p><p> <th scope="row"><label for="room_size_2">객실 타입 test</label></th></p><p> <td></p><p> <input type="checkbox" name="room_size_2[]" value="농구" <?=in_array("농구", $roomsize2) ? "checked" : ""?> />농구</p><p> <input type="checkbox" name="room_size_2[]" value="축구" <?=in_array("축구", $roomsize2) ? "checked" : ""?> />축구</p><p> <input type="checkbox" name="room_size_2[]" value="배구" <?=in_array("배구", $roomsize2) ? "checked" : ""?> />배구</p><p> <input type="checkbox" name="room_size_2[]" value="야구" <?=in_array("야구", $roomsize2) ? "checked" : ""?> />야구</p><p> </td> </p><p> </tr></p><p>
이렇게 하니까 db 값을 제대로 넘기고 글수정때 작성시 체크한 것을 출력하는 것 까지 성공을 했는데요.
체크박스가 많아지게 되면 너무 길어지더라구요.
요걸 깔끔하게 배열로 처리하려면 어떻게 해야 하나요?
단순하게 생각해본 것은
</p><p><?php </p><p>$room_size_2 = array();</p><p>$room_size_2[] = '농구';</p><p><span style="font-size: 14.6667px;">$room_size_2[] = '축구';</span> </p><p><span style="font-size: 14.6667px;">$room_size_2[] = '배구';</span><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;">$room_size_2[] = '야구';</span><span style="font-size: 14.6667px;"> </span></p><p><span style="font-size: 14.6667px;">?></span></p><p><span style="font-size: 14.6667px;">
요렇게 array 값을 이용해야하나 싶은데요..
요걸 글 수정시 체크되도록 하는 능력이 없습니다.
고수님들 도움이 필요합니다.
답변 2개
소스가 길어져서 바꾸고 싶다는거면 아래처럼 해보세요~
<?php
$room_size_2 = array('농구','축구','배구','야구');
$r_count = count($room_size_2);
for($i=0; $i<$r_count; $i++) {
?>
<input type="checkbox" name="room_size_2[]" value="<?php echo $room_size_2[$i]?>" <?=in_array($room_size_2[$i], $roomsize2) ? "checked" : ""?> /><?php echo $room_size_2[$i];?>
<?php } ?>
답변에 대한 댓글 3개
부분 값이 어떻게 들어가는지 비교해보세요~
댓글을 작성하려면 로그인이 필요합니다.
</p><p>$arr = array("농구", "축구", "배구", "야구");</p><p>$roomsize2 = explode("|", $write['room_size_2']); </p><p>foreach($arr as $k => $v) {</p><p> $chk = in_array($v, $roomsize2) ? " checked" : ""; </p><p> echo "<input type='checkbox' name='room_size_2[]' value='".$v."'".$chk.">".$v; </p><p>}</p><p>
이런 식으로 하셔도 됩니다.
참고하시라고 남깁니다.
답변에 대한 댓글 1개
처음에 생각이 짧아서 room_size_2 값하고 roomsize2 값하고 같은 걸로 하니 안되더라구요.
종종 또 도움 받아야겠습니다~
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
말씀대로 해보니 소스는 줄어드는데 db값을 불러올때 체크된 것을 체크하지 않고 항상 새로 불러오게 되네요..