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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
덕분에 많이 배우고 있습니다.

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"]);

}

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

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

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

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

회원로그인

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