여분필드 이용해서 체크박스 다중 선택 질문요.

여분필드 이용해서 체크박스 다중 선택 질문요.

QA

여분필드 이용해서 체크박스 다중 선택 질문요.

답변 3

본문

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';

 

 

 

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 9
© SIRSOFT
현재 페이지 제일 처음으로