2011-11-17 2 views
2

나는 아래와 같이 체크 박스의 그룹을 추가 한 형태를 가지고 :PHP를 사용하여 그룹의 확인란 값을 얻는 방법은 무엇입니까?

<form action="next.php" method="get"> 
<input name="c1" value="1" type="checkbox"> 
<input name="c1" value="2" type="checkbox"> 
<input name="c1" value="3" type="checkbox"> 
<input name="c1" value="4" type="checkbox"> 
... 
</form> 

난 제출 버튼을 누르면, 제 1 및 제 3 확인란, URL이

처럼 좋아 보인다 선택한 경우
?c1=1&c1=3 [...] 

하지만 $ _GET 배열에는 마지막 값인 c1 만 포함됩니다. 내가 배열을 얻을 수있는 [] 표기법을 사용할 수 있습니다 알고 있지만, 나는 []없이 URL을 생성하고 여전히 계정으로 모든 값을 관리 할 사이트를보고

?c1[]=1&c1[]=3 [...] 

처럼 다음 링크를 보인다. 그들은 어떻게합니까?

감사합니다. []가 배열로 c1 치료, 그리고 모든을 유지하기 위해 PHP를 알려줍니다

<input type="checkbox" name="c1[]" ... /> 
<input type="checkbox" name="c1[]" ... /> 
<input type="checkbox" name="c1[]" ... /> 
etc... 

:

+0

하지 않음 당신이 그것을 할 수 없다는 말,하지만 PHP는 배열 표기법을 사용합니다. 그것이 어땠는지. –

답변

2

PHP는 여러 다른 폼 요소에 대해 동일한 필드 이름을 사용하려는 경우 의사 배열 표기법을 사용해야합니다 제출 된 값 []이 없으면 PHP는 폼의 처리가 완료 될 때까지 이전의 각 c1 값을 새 값으로 간단히 덮어 씁니다.

[] 표기법을 사용하지 않는 사이트는 양식 처리 자체를 수행하여 $_SERVER['QUERY_STRING']에서 쿼리 문자열을 검색 한 다음 자체적으로 구문 분석합니다.

0

사용이를 사용해야합니다 : 당신은 여전히 ​​전체 쿼리 문자열에 액세스 할 수 있습니다

<input name="c1[]" value="1" type="checkbox"> 
<input name="c1[]" value="2" type="checkbox"> 
<input name="c1[]" value="3" type="checkbox"> 
<input name="c1[]" value="4" type="checkbox"> 
0

. 당신은 너무 같은 부분으로 쿼리 문자열을 구문 분석 할 수 있습니다

$qs = explode("&",$_SERVER['QUERY_STRING']); 

foreach ($qs as $part) { 
    if (strpos($part,"c1") !== false) { 
     $split = strpos($part,"="); 
     $values[] = substr($part, $split + 1); 
    } 
} 

var_dump($values); 

당신의 쿼리 문자열이 보이는 경우 : C1 = 1 & 위의 코드는이 같은 결과를 잎 C1 = 3 :

array(2) { 
    [0]=> string(1) "1" 
    [1]=> string(1) "3" 
} 
관련 문제