php pow() 함수이용해서 다중체크 저장 후 불러오기

조회수 828회

안녕하세요. DB에 넘길때 pow()를 이용해서 넘기긴 했지만 받아오는 방법을 찾아도 모르겠어서 질문 등록합니다 ㅠㅠ

<label><input name="attention[]" value="1" type="checkbox"><span>가</span></label>
<label><input name="attention[]" value="2" type="checkbox"><span>나</span></label>
<label><input name="attention[]" value="3" type="checkbox"><span>다</span></label>
<label><input name="attention[]" value="4" type="checkbox"><span>라</span></label>

<input name="att" value="" type="hidden">

이렇게 코드가 있으면


 var att= '';
 $joinForm.find('[name="attention[]"]:checked').each(function(){
       att+= +Math.pow(2, $(this).val());
  });

여기서 나온 usePlace 값을 DB에 전송해서 체크하는데 받아오는건 어떻게 해야될지 감이 안잡힙니다; 받아올때도

--table--
user    |attention    
==================
test1   |24816

$check = $result->attention;
for($i=0;$i<4;$i++){
    $check -= pow($i,2)
}

했더니 예상했던데로 쥐뿔도 안되네요... 어떻게 해야할까요 ㅠㅠ

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 여기서 비트연산 검증을 왜 해야 하는지가 궁금하네요.

    1. 지금 상태에서 별도 js 처리 없이 mysql에 저장하면 attention 필드에는 예컨대 "1,3,4"와 같이 콤마로 구분된 값이 찍힐 겁니다. 그냥 그걸 가지고 원하시는 작업을 하면 어떨까요.

      $attentions = implode(',', $result->attention);
      foreach ([1, 2, 3, 4] as $attentionOptions) {
          if (!in_array($attentionOptions, $attentions) echo '헉 '.$attentionOptions.'을(를) 체크하지는 않았네요';
      }
      
    2. 비트연산 검증을 굳이 하셔야 한다면... 올려주신 js단 코드에서 var attr = '';var attr = 0;으로 바꿔보세요.

    • 질문을 제가 부족하게 올렸네요. 기타로 인풋으로도 값을받아서 그렇게 했습니다. 해당문제는 해결했습니다. 답변 감사합니다 알 수 없는 사용자 2018.8.24 16:40

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

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)