여분필드 체크박스 보기페이지에서의 질문
본문
여분필드 체크박스 소스 찾아본 방법중 하나인데요.
잘 작동하는 소스입니다.
여분필드 4개중 wr_2에 저장하고 있구요.
궁금한것은 view 페이지와 list페이지에서
어떻게 꺼내야 하는지 해서 입니다.
아직 list페이지는 안해봤는데 view페이지에서는
저장할때 값들 사이에 넣은 쉼표(,)가 그대로 같이 나오드라구요.
안나와야 될듯 한데. 방법이 있을지 있다면, 조언 부탁드립니다.
<?php
$ex_1 = explode(",", $write['wr_2']);
?>
<span><input type="checkbox" name="ex1_00" value="1" <?php echo ($ex_1[0] == "1") ? "checked" : "";?>> 1</span>
<span><input type="checkbox" name="ex1_01" value="2" <?php echo ($ex_1[1] == "2") ? "checked" : "";?>> 2</span>
<span><input type="checkbox" name="ex1_02" value="3" <?php echo ($ex_1[2] == "3") ? "checked" : "";?>> 3</span>
<span><input type="checkbox" name="ex1_03" value="4" <?php echo ($ex_1[3] == "4") ? "checked" : "";?>> 4</span>
<span><input type="checkbox" name="ex1_04" value="5" <?php echo ($ex_1[4] == "5") ? "checked" : "";?>> 5</span>
<span><input type="checkbox" name="ex1_05" value="6" <?php echo ($ex_1[5] == "6") ? "checked" : "";?>> 6</span>
write_update.skin.php
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
$wr_2 = "$ex1_00,$ex1_01,$ex1_02,$ex1_03,$ex1_04,$ex1_05";
$sql = "
update $write_table
set wr_1 = '{$wr_1}',
wr_2 = '{$wr_2}',
wr_3 = '{$wr_3}',
wr_4 = '{$wr_4}'
where wr_id = '{$wr_id}' ";
sql_query($sql);
?>
!-->!-->
답변 2
지금의 방식에서
$view, $list 페이지에서($view['wr_2'], $list[$i]['wr_2']) 컴마(,) 중복을 빼고 출력하는 방법은
$wr_2 = implode(',' ,array_unique(explode(',', $view['wr_2'])));
echo $wr_2; 입니다.
checkbox 값 저장/출력시 다른방법을 사용할 수는 있습니다. (추천)
<input type="wr_2[]" value="php" />
<input type="wr_2[]" value="asp" />
<input type="wr_2[]" value="jsp" />
implode (",", $wr_2) 로 저장하면
체크된 것만 저장이 되고, (<php,asp>, <asp,jsp>, <php,asp,jsp>, <jsp> 등)
write 페이지에서 출력하는 경우에는
$arr = explode(",", $wr_2); 후
<?php in_array("php", $arr) ? 'checked="checked"' : '' ?>
<?php in_array("asp", $arr) ? 'checked="checked"' : '' ?>
<?php in_array("jsp", $arr) ? 'checked="checked"' : '' ?>
식으로 해주면 됩니다. http://php.net/manual/kr/function.in-array.php
view 페이지와 list 페이지에서는 바로 <?php echo $view['wr_2'] ?>, <php echo $list[$i]['wr_2'] ?>
로 출력해주어도 됩니다.
전 질문에서, wr_2 의 체크된 값들이 db 에 저장되지 않는 것은 (저에게는 조금) 미스테리였습니다.
뷰 페이지에서는 $ex_1 = explode(",", $view['wr_2']); 으로 꺼내세요~