2013-06-28 1 views
0

그래서 주어진 문제의 다중 선택 체크 박스를 들어, HTML 조사를 생성하는 제 3 자 조사 도구를 가지고, 그것은 모두 같은 그 이름을합니다

<input type="checkbox" value="1" id="V25_1" name="V25"> 
<input type="checkbox" value="2" id="V25_2" name="V25"> 

PHP에서 선택한 값을 모두 가져올 수있는 방법이 있습니까? $ _POST는 기본적으로 마지막으로 선택한 값만 저장하는 것 같습니다.

+0

PHP에서 배열을 얻을 수 있도록'[]'로 끝나는 체크 상자의 이름을 지정하는 것이 가장 이상적입니다. 확인란의 이름은 바꿀 수 없습니까? – j08691

답변

0

동일한 'name'매개 변수를 가진 여러 요소가있을 때 모든 변수를 검색하십시오. 많은 솔루션을 인터넷을 수색 후, 나는 원시 포스트 데이터를 잡고 다음 PHP 스크립트를 작성, 그것은 구문 분석 :

<?php 
    function RawPostToArray() { 
     $rawPostData = file_get_contents("php://input"); 
     if($rawPostData) { 
      $rawPostData = explode('&', $rawPostData); 

      if($rawPostData && is_array($rawPostData) && count($rawPostData)) { 
       $result = array(); 
       foreach($rawPostData as $entry) { 
        $thisArray = array(); 
        $split = explode('=', urldecode($entry), 2); 

        $value = (count($split) == 2) ? $split[1] : ''; 

        if(array_key_exists($split[0], $result)) { 
         if(is_array($result[$split[0]])) { 
          $result[$split[0]][] = $value; 
         } 
         else { 
          $thisArray[] = $result[$split[0]]; 
          $thisArray[] = $value; 
          $result[$split[0]] = $thisArray; 
         } 
        } 
        else { 
         $result[$split[0]] = $split[1]; 
        } 
       } 
       return $result; 
      } 
      else return array(); 
     } 
     else return array(); 
    } 
?> 

중복의 이름은 '결과 내에서 배열로 아래로 충돌되어 많은 HTML 코드가 올바르게 코딩 된 경우 $ _POST가 수행하는 방식. 여기에는 많은 개선의 여지가있을 것입니다. 모든 상황이 고려되지는 않았지만 제 적용에는 적합합니다.

개선점을 제안 할 수 있습니다.

1

코드는 다음과 같은 약해야한다 :

<select multiple="multiple"> 
    <input type="checkbox" value="1" id="V25_1" name="V25[]"> 
    <input type="checkbox" value="2" id="V25_2" name="V25[]"> 
</select> 

V25[] 당신이 배열에서 값을 얻을 수 있다는 것을 의미한다. 예 : $_GET['V25'][0]

필요한 경우는 인덱스를 지정할 수

:

V25[1] 또는 V25[a]

+0

위의 내용이 잘못된 마크 업이라는 것을 이해합니다.하지만 제가 말했던 것처럼 이것은 타사 도구입니다. 데이터가 제출되면 Firebug는 전송 된 게시물 데이터에 'V25'의 여러 인스턴스를 표시합니다. 그것을 검색 할 수있는 방법이 있습니까? – SuperJer

+0

글쎄, 자바 스크립트 및 하드 코딩 사용 - 예 : D – vikingmaster

+0

이 답변의 정보가 정확하지만 원본 질문을 정확하게 처리하지 못합니다. 무리를 연구 한 후에 설명 된 상황에서 작동하는 솔루션을 제시 할 수있었습니다. – SuperJer

0

당신은 제출 양식 전에이 같은 실행할 수 있습니다 :

$(":checkbox").each(function(){ 
    $(this).attr("name",$(this).attr("id")); 
}); 

또는

$(":checkbox").each(function(){ 
    $(this).attr("name",$(this).attr("name")+"[]"); 
});