크롬80버전 결제 이슈, 영카트5 주요패치 확인!

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

컨텐츠몰 10% 할인
그누보드5
영카트5
매뉴얼
Q & A
제작의뢰
컨텐츠몰
부가서비스
소모임
커뮤니티
덕분에 많이 배우고 있습니다.

QA

가정의 달 맞이 SIR 컨텐츠몰 10% 특별할인 - 코로나19 바이러스로 어려운 시기, SIR이 함께 하겠습니다.

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

본문

체크박스가 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"]);

}

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

주소복사
답변의 댓글
민쯩먼저깔게요님의 댓글
댓글을 보다가 저도 궁금해서 적습니다..
왜 체크박스를 배열로 넣지않고 일일이 추가를하시는지요? <- 이게 ㅋ 왜 배열을 알면 그렇게 넣었을지요?

그누나 구글링해도 잘 없그 그나마 어렵게 찾아서 좌르륵 액샐로 늘리그 붙이그... 제가 할 수 있는 최선이었습니다~
덕분에 좋은거 배웠습니다. 그리그 다중 배열 체크박스 이늠 꼭 해내겠습니다. 감사합니다.
답변을 작성하시기 전에 로그인 해주세요.
전체 87,548 | RSS
고마운 분의 도움으로 질문을 해결하셨다면, 채택을 눌러서 감사의 마음을 전하세요.
어떻게 질문해야 할지 모른다면 질문하는 방법을 읽어 보신후 질문해 보세요.
QA 내용 검색

회원로그인

진행중 포인트경매

  1. 참여0 회 시작20.05.27 19:24 종료20.06.01 19:24

(주)에스아이알소프트 (06253) 서울특별시 강남구 도곡로1길 14, 6층 624호 (역삼동, 삼일프라자) 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT