테스트 사이트 - 개발 중인 베타 버전입니다

1~12까지 루프돌면서 저장된 값을 비교하여 체크하기 채택완료

가가양 7년 전 조회 1,765

안녕하세요

 

도움 좀 얻고자 합니다.

 

 

이미지처럼 저장된 값만 체크되로록 하려며 어떻게 해야 할까요?

 

</p>

<p>$month_arr = array("january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december");   </p>

<p>$wr_1 = explode("|", $write["wr_1"]);     </p>

<p>for($i=0; $i<=11; $i++) {       </p>

<p>$num++;      </p>

<p>  foreach($month_arr as  $v) {</p>

<p>      in_array($v, $wr_1) ? $chk = "checked" : $chk = "";</p>

<p>    }</p>

<p>    echo "<input type='checkbox' name='wr_1_".$num."' value='".$v."' ".$chk."/> ".$num."월";</p>

<p>}</p>

<p>

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
e
7년 전

foreach($month_arr as  $v) {       

   in_array($v, $wr_1) ? $chk = "checked" : $chk = "";     

}

이 부분 굳이 배열에서 비교하지 않아도 됩니다.

if( strpos($wr_1, $month_arr['$i']) !== false ) $chk = "checked"

else $chk = "";

 

그런데 왜 월을 영문으로 저장하시는지??

DB는 용량 최소화를 위해서 숫자로 저장하시고 

불러올때 영문으로 변경하는게 좋습니다.

 

그리고 $num = $i+1;  하면 되겠네요..^^

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

가가양
7년 전
답변 주셔서 정말 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

7년 전

echo  문을 foreach 문 안에서 쓰면 됩니다.

</p>

<p>foreach($month_arr as  $v) {

   in_array($v, $wr_1) ? $chk = "checked" : $chk = "";  

  echo "<input type='checkbox' name='wr_1_".$num."' value='".$v."' ".$chk."/> ".$num."월";

}</p>

<p>

 

어떤 처리를 하는 방법은 여러가지가 있습니다.

in_array() 로 처리를 할 수도, strpos 을 쓰는 것도, 그 외의 방법도 있을 수 있습니다.

지금의 상황에서는 in_array() 사용방식이 코드의 가독성 측면에서는 더 낫다고 볼 수도 있습니다.

물론, 다른 시각도 가능합니다.

 

하드웨어적인 발전이 많이 이루어져,

DB 데이터 타입/저장방식을 고민할 때 varchar 형을 int 형으로 바꾸는게

체감할 수 있는 정도의 향상이 있지는 않습니다.

최근에는 용량의 측면이 크게 중요한 고려대상은 아닙니다.

이 또한 가독성 또는 개발자의 취향에 따라 선택하여도 크게 무리가 되지는 않는다고 생각됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

가가양
7년 전
조언주셔서 대단히 감사합니다 많은 도움이 되었습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인