2012-08-27 2 views
1

$ info에 전달되는 on/off 값을 사용하여 라디오 버튼과 같은 확인란 작업을하려고합니다. 이 코드는 잘, 변수 정보가 전송되고 통해이 추가확인란을 '선택'으로 설정하면 GET 변수가 전송되지 않습니다.

<?php if (empty($info)) { $info='on'; } ?> 
<input type="checkbox" name="info" value="<?php if ($info=='on'){ echo "off"; } else {  echo "on"; } ?>" onchange="this.form.submit()" /> 

GET 읽기 작동합니다

**<?php if (!empty($info)){ echo 'checked="checked"'; } ?>** 

<input type="checkbox" name="info" value="<?php if ($info=='on'){ echo "off"; } else { echo "on"; } ?>" <?php if (!empty($info)){ echo 'checked="checked"'; } ?> onchange="this.form.submit()" /> 

휴식 뭔가 - 변수를 보내거나 읽을 수 없습니다되는 GET, 값은 항상 OFF입니다. 왜 ? 그것은 의미가 없습니다. 을 체크 = 체크 ""으로 설정하면이 체크 박스에 대한 GET 변수가 전송되지 않습니다.

+1

'$ info = $ _GET [ 'info'];'? 당신은 var dumping을 시도 했습니까? 'var_dump ($ _ GET);' –

+0

'value'는 상자의 체크 여부에 의존하는 이유는 무엇입니까? 값은 상관없이 동일해야합니다. – Matt

+1

나는 당신이 실제로 얻고있는 결과에 대해 조금 잃어 버렸지 만, 체크 박스는 체크 된 경우에만 값을 제출할 것이므로 이전에 체크되었는지 여부에 따라 값을 동적으로 설정하는 것이 거의 불가능합니다. – Quentin

답변

1

체크 박스를 선택하지 않으면 값이 제출되지 않습니다. 그래서 선택을 취소하면 onchange가 실행되지만 상자가 선택되지 않기 때문에 아무것도 제출되지 않습니다. 해결책은 다음과 같습니다.

<?php 
$sub = $_POST['submitted']; 
$info = $_POST['info']; 
if ($sub) { 
    if ($info == 'on') { 
     echo 'turning it on!'; 
    } else { 
     echo 'turning it OFF!'; 
    } 
} 
?> 

<form method="post"> 
<input type="checkbox" name="info" value="on" onchange="this.form.submit()" <?php echo $info == 'on' ? 'checked="checked" ' : ''; ?> /> 
<input type="hidden" name="submitted" value="1" /> 
</form> 
+0

화려한! 고맙습니다 !! :) – Rorkkkk

관련 문제