여분필드 이용해서 체크박스 다중 선택 질문요.
본문
write.skin.php
<td>
<!--input name=wr_7 autofocus class="frm_input required" id="wr_7" title="근무형태" value="<?=$write[wr_7]?>" itemname="근무형태"-->
<?php
$wr = explode("|", $write['wr_7']);
?>
<input type="checkbox" name="wr_7_1" value="주간" <?php echo ($wr[0] == "주간") ? "checked" : "";?>>주간
<input type="checkbox" name="wr_7_2" value="2교대" <?php echo ($wr[1] == "2교대") ? "checked" : "";?>>2교대
<input type="checkbox" name="wr_7_3" value="3교대" <?php echo ($wr[2] == "3교대") ? "checked" : "";?>>3교대
</td>
write_update.skin.php
$wr_7 = "$wr_7_1|$wr_7_2|$wr_7_3";
$str = $wr_7;
$str = rtrim($str,"|");//문자열 맨 앞 | 제거
$str = ltrim($str,"|");//문자열 맨 뒤 | 제거
$str = str_replace('||','',str_replace('|||','',str_replace('||||','',str_replace('|||||','',$str)))); // 중복되는 | 제거
$str2 = explode("|" , $str);
$cnt = count($str2);
for ($i=0; $i<$cnt; $i++) {
if($i < $cnt - 1) { //마지막이 아닌것은 콤마를 찍어줌
echo trim($cm[$i]). ", ";
} else {
echo trim($cm[$i]); //마지막 값은 콤마를 찍지 않음
}
}
$sql8 = " update {$write_table} set wr_7 = '{$wr_7}' where wr_id = '{$wr_id}' ";
sql_query($sql8);
이 소스 참고 사이트는
https://ndesign.tistory.com/23 으로 참고했습니다.
출력할때 경우의 수로 해보니
1번 선택시 - 주간||
1,2번 선택시 - 주간|2교대|
2,3번 선택시 - |2교대|3교대
1,3번 선택시 - 주간||3교대
3번 선택시 - ||3교대
선택 없을때 - ||
이렇게 나옵니다 ㅜㅜ
그리고 | -> , 쉼표 바꿔야하는데 안바꿔지네요
고수님 부탁드립니다!
!-->!-->답변 3
저런 복잡한 코드는 필요 없습니다
첫번째 방법 -- 체크박스 name을 배열로
name='wr7[]' value="주간"
name='wr7[]' value="2교대"
name='wr7[]' value="3교대"
write_update.skin.php
$wr_7 ='';
if($wr7[0]) $wr_7 = implode(',', $wr7);
두번째 방법 - write_update.skin.php만 수정
$wr7 = array(); $wr_7 ='';
if($wr_7_1) $wr7[] = $wr_7_1;
if($wr_7_2) $wr7[] = $wr_7_2;
if($wr_7_3) $wr7[] = $wr_7_3;
if($wr7[0]) $wr_7 = implode(',', $wr7);
그리고 체크박스 echo ($wr[1] == "2교대") ? "checked" : ""; <--이렇게 하면 맞지않습니다
주간, 3교대 2개를 체크한 경우 $wr[1] = 3교대가 되므로 3교대 체크박스에 체크가 되지않으니까요
다음처럼
if( in_array('주간', $wr) ) echo 'checked';
if( in_array('2교대', $wr) ) echo 'checked';
if( in_array('3교대', $wr) ) echo 'checked';
$wr_7 = "$wr_7_1|$wr_7_2|$wr_7_3";
이부분 다 삭제
$sql8 = " update {$write_table} set wr_7 = '{$wr_7}' where wr_id = '{$wr_id}' ";
sql_query($sql8);