2010-08-15 4 views
3

PHP는 체크 박스가 선택되었는지 여부를 결정하기를 원하지만 올바른 리턴을 얻는 문제가 있습니다. 도와주세요.

내 HTML 코드

<label> 
    <input name="Language" type="checkbox" id="aa" checked="checked" /> 
    One</label> 
    <label> 
    <input name="Language" type="checkbox" id="bb" />Two</label> 
    <label> 
    <input type="checkbox" name="Language" id="cc" />Three</label> 

은 내가 $ _GET 방법으로 PHP로 값을 전달

내 PHP 코드 :

$aa=$_GET["aa"]; 
$bb=$_GET["bb"]; 
$cc=$_GET["cc"]; 


echo $aa."<br>"; 
echo $bb."<br>"; 
echo $cc."<br>"; 

출력이 사실 거짓 거짓

I n ext는 각 상자가 선택되어 있는지 확인하고 만약 그렇다면 뭔가를하고 싶습니다.

if ($aa == true) { $abc="checked";} 
else { $abc="not checked"; } 

if ($bb == true) { $cde="checked";} 
else { $cde="not checked"; } 


if ($fgh == true) { $fgh="checked";} 
else { $fgh="not checked"; } 

하지만 if 문은 상자가 선택되지 않은 경우에도 항상 true를 반환합니다. "==="및 "! ="의 변형을 시도했지만 작동하지 않습니다.

답변

4
if (isset($_GET['checkbox_name'])) { ... } 

양식 컨트롤 (파일 입력을 제외하고, 이미지 입력에 대한 특별한 규칙) TIA는 항상 문자열를 제출합니다. 질의 문자열이나 폼으로 인코딩 된 POST 본문에는 부울 개념이 없습니다.

id는 중요하지 않습니다. 적어도 이름과 값만 (PHP에 관한 한) 중요합니다.

값을 지정하지 않았으므로 IIRC는 기본값이 on이되므로 비교를 수행해야합니다. 그래도 isset으로 보는 것이 더 간단합니다. 이것은 당신의 예제가 그들에게 모두 같은 이름과 값을 부여하기 때문에 다소 차이가 있습니다. 그래서 그것들을 구별 할 수는 없습니다.

또한 PHP 양식 데이터 분석기가 이상하므로 같은 이름의 요소가 여러 개 필요한 경우 []으로 끝내야합니다.

당신은 아마 이런 식으로 뭔가를하고 싶지 :

<label> 
<input name="Language[]" type="checkbox" id="aa" checked="checked" value="One" /> 
One</label> 
<label> 
<input name="Language[]" type="checkbox" id="bb" value="Two" />Two</label> 
<label> 
<input type="checkbox" name="Language[]" id="cc" value="Three" />Three</label> 

중요 : 값의 추가와 이름의 변화를합니다.

PHP에서 $_GET['Language']은 반복 할 수있는 확인란의 값 배열입니다.

+0

David David – jamex

1

isset() 내가 당신의 HTML 코드가

<label> 
    <input name="Language[]" type="checkbox" id="aa" checked="checked" value ="1" />One  
</label> 
<label> 
    <input name="Language[]" type="checkbox" id="bb" value ="2" />Two 
</label> 
<label> 
    <input name="Language[]" type="checkbox" id="cc" value ="3" />Three 
</label> 

처럼 한 다음 확인 체크 박스의 수를 셀 수

$count = count($_GET["Language"]); 같은 것을 사용한다고 생각하십시오.

또는 어떻게 그런

$arr = $_GET["Language"]; //$arr is an array that contains the values of the checked checkboxes 

할 수 있습니다 내 PHP에서 배열

foreach($arr as $item) 
    { 
     echo $item . "</br>"; /* Will print 1,2 and 3 (mind newlines)*/ 
    } 
+0

적어도 하나의 체크 박스가 선택되었는지 만 알려줍니다. – Quentin

+0

@ Davidid : Oopz, correct. 심지어 저는'언어'가 배열이어야한다고 생각합니다. –

+0

그렇지 않습니다. 이름이'[]'(또는''foo ''(다른 이야기입니다))로 끝나지 않으면 PHP는 마지막 값을 취하여 다른 값은 무시합니다. 네이밍 규약을 따르면 배열로 변환됩니다. – Quentin

0

이상 foreach I $_POST['checkbox_name']에서 그것을 가지고, 나는 상자 일 때 변수 값 on를 한 것으로 나타 확인 (즉, 확인란이 선택 취소 된 경우에도 존재 함).

+0

고마워요. 내가 가진 것과 같은 문제입니다. – jamex

관련 문제