덕분에 많이 배우고 있습니다.

덕분에 많이 배우고 있습니다.

QA

덕분에 많이 배우고 있습니다.

본문

체크박스가 20개쯤 되는데... 소스가 너무 길어 줄이는 방법이 없을지 하구요,,,머리가 빠게질거 같습니다능

 

<input type="checkbox"   class='ext1' name="ext1_00" value="1번" <? if($ext1_00 == "1번")  echo 'checked="checked"'; ?>>

   <label for="ext1_00">01번</label>  

            

<input type="checkbox"  class='ext1' name="ext1_01" value="2번" <? if($ext1_01 == "2번")  echo 'checked="checked"'; ?>>

   <label for="ext1_01">02번</label>  

이 질문에 댓글 쓰기 :

답변 5


<?php
for($j=0; $j<20; $j++) {
  $jNum = $j<10?sprintf("%02d",$j):$j;
  $jNum2 = $j+1;
?>
<input type="checkbox" class="ext1" name="ext1_<?php echo $jNum;?>" id="ext1_<?php echo $jNum;?>" value="<?php echo $jNum2;?>" <?php echo ${"ext1_".$jNum} == $jNum2?" checked='checked' ":"";?> /><label for="ext1_<?php echo $jNum;?>"><?php echo $jNum2?></label><br/>
<?php } ?>

<?
$ext1_00 = "1번";
$ext1_01 = "2번";
$ext1_02 = "3번";
$ext1_03 = "4번";
for($i=0; $i<20; $i++) {
    $j = $i + 1;
    $checked = ${"ext1_".sprintf("%02d", $i)} == $j."번" ? " checked" : "";
    echo "<input type='checkbox' class='ext1' name='ext1_".sprintf("%02d", $i)."' id='ext1_".sprintf("%02d", $i)."' value='".$j."번'".$checked."><label for='ext1_".sprintf("%02d", $i)."'>".$j."번</label>";
}
 

<?

for ($i=1;$i <= 20;$i++) {

?>

<input type="checkbox"   class='ext1' name="ext1_<?=$i;?>" value="<?=$i;?>번" <? if($ext1_00 == ($i."번") )  echo 'checked="checked"'; ?>>

   <label for="ext1_<?=$i;?>">01번</label>  

<?

}

?> 

업데이트에서 이렇게 했습니다.
$wr_1 = "$ext_00|$ext_01|$ext_02|$ext_03|$ext_04|$ext_05|$ext_06|$ext_07|$ext_08|$ext_09|$ext_10|$ext_11|$ext_12|$ext_13|$ext_14|$ext_15|";

알려주신소스는 1~증가하고
제가 업데이트에는 01~ 증가하는거라,,업데이트를 1~증가하도록 바꿨습니다.


그리고 디비 확인해보니 1,3,15번 체크하고 저장하니
1번||3번||||||||||||15번| 정상으로 들어와 있습니다. ㅎ

그런데 수정에서 체크가 풀려있는데 <? if($ext1_00

이부분 때문인거 같습니다.
1~15까지 증가하도록 했는데...ext1_00 이라 그런거 같습니다. 혹시 이거를 어떻게 바꿔주면될가요?

<?

for ($i=1;$i <= 20;$i++) {

//추가부분
if ($i < 10) {
$tmp = "0" . $i;
}
?>

<input type="checkbox"  class='ext1' name="ext1_<?=$tmp;?>" value="<?=$i;?>번" <? if($ext1_00 == ($i."번") )  echo 'checked="checked"'; ?>>

    <label for="ext1_<?=$tmp;?>">01번</label>&nbsp;&nbsp;

<?

}

?>

시간뺏어 죄송합니다. 역시 저장은 잘되는데
<? if($ext1_00 == ($i."번") )  echo 'checked="checked"'; ?>

이부분에서 ext1_00이게 증가하지않아 체크를 불러오지 못하는거 같군요,,
이제 다중체크가 안되고,,,이유를 모르겟으니,,ㅋ
여러가지로 해보겠습니다.

그런데 댓글을 보다가 궁금한게

글쓰기 페이지에서 왜 체크박스를 배열로 넣지않고 일일이 추가를하시는지요?

예를들어 write.skin.php에서 상단에

<?

$chk_val = array(

'사과' => '1번', 

'수박' => '2번', 

'참외' => '3번',

'오렌지' => '4번');

?>

이렇게 추가를하고

원하시는 부분에

<tr>

<th scope="row"><label for="wr_10">테스트중<strong class="sound_only">필수</strong></label></th>

<td>

<?php foreach($chk_val as $key => $val) { ?> 

<input type="checkbox" name="wr_10[]" value="<?echo $val?>"><?echo $key?> <?}?>

</td>

</tr>

이런식으로 배열로 넣으시면 될것이고

 

write_update.skin.php파일에서

$wr_1 = "$ext_00|$ext_01|$ext_02|$ext_03|$ext_04|$ext_05|$ext_06|$ext_07|$ext_08|$ext_09|$ext_10|$ext_11|$ext_12|$ext_13|$ext_14|$ext_15|";  

이런식으로 일일이 넣으신부분을 다 지우시고

 

bbs/write_update.php 파일에

if($bo_table=='test'){

$_POST["wr_10"] = implode("|",$_POST["wr_10"]);

}

이런식으로 넣으시면 배열로 쫙 들어갈텐데..

댓글을 보다가 저도 궁금해서 적습니다..
왜 체크박스를 배열로 넣지않고 일일이 추가를하시는지요? <- 이게 ㅋ 왜 배열을 알면 그렇게 넣었을지요?

그누나 구글링해도 잘 없그 그나마 어렵게 찾아서 좌르륵 액샐로 늘리그 붙이그... 제가 할 수 있는 최선이었습니다~
덕분에 좋은거 배웠습니다. 그리그 다중 배열 체크박스 이늠 꼭 해내겠습니다. 감사합니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,145 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT