2014-09-18 3 views
0

나는 체크 박스를 가지고 있으며 각 체크 박스 옆에는 선택 옵션이 있습니다. 나는 이것들을 여러 개 가지고 있고 체크 박스가 체크되어있을 때만 select 값을 얻고 싶다. 첫 번째 체크 박스는 다음에 선택하지 않은 경우가 작동하지 않습니다PHP : 같은 이름의 여러 양식 입력 값을 가져 오는 방법?

if(isset($_POST['update'])){ 
    for($i = 0; $i < sizeof($_POST['check1']); $i++){ 
     if(isset($_POST['check1'][$i])){ 
      echo $_POST['select1'][$i]; 
     } 
    } 
} 

:

<form method="POST"> 
<fieldset> 
    <input type="checkbox" name="check1[]"> 
    <select name="select1[]"> 
     <option value="1">One</option> 
     <option value="2">Two</option> 
     <option value="3">Three</option> 
    </select 

다음
<fieldset> 
    <input type="checkbox" name="check1[]"> 
    <select name="select1[]"> 
     <option value="1">One</option> 
     <option value="2">Two</option> 
     <option value="3">Three</option> 
    </select> 
</fieldset> 
<input type="submit" name="update" value="go"> 
</form> 

내 PHP 코드입니다 : 여기

코드입니다 loop는 두 번째 선택 옵션의 값을 반환합니다. 그렇지 않으면 잘 작동합니다. 이 문제를 어떻게 해결할 수 있습니까?

[check1] => Array 
    (
     [0] => on 
     [1] => on 
    ) 

[select1] => Array 
    (
     [0] => 1 
     [1] => 3 
    ) 
+0

고유 한 이름을 사용하지 않는 이유가 있습니까? – enhzflep

+1

@enhzflep이 번호는 알 수 없습니다. – user3898380

+0

귀하의 PHP 코드에서 다음이 라인을 넣어하려고하면 당신은 당신의 PHP 페이지에 무엇을지고 있습니다 ... 에코 '

';print_r($_REQUEST);echo '
'; – Zeeshan

답변

0

우리는 루프에 대한 것은 거기에 거짓이었다 서버에 체크 박스를 선택하세요 : 여기

은 배열입니다.

이 코드에서는 각 확인란에 값을 추가하여 선택 상자를 식별했습니다.

EQ : CHECK1 [0] == 0 우리는 내 영어 죄송 선택 1 [0]

if check1[1] == 1 then we get select1[1] 

을 얻을합니다.

HTML 코드

<form action='' method="post"> 
    <fieldset> 
     <input type="checkbox" name="check1[]" value='0'> 
     <select name="select1[]"> 
      <option value="1">One</option> 
      <option value="2">Two</option> 
      <option value="3">Three</option> 
     </select> 
    </fieldset> 
    <fieldset> 
     <input type="checkbox" name="check1[]" value='1'> 
     <select name="select1[]"> 
      <option value="4">One</option> 
      <option value="5">Two</option> 
      <option value="6">Three</option> 
     </select> 
    </fieldset> 
    <input type="submit" name="update" value="go"> 
</form> 

PHP 코드 :

if(isset($_POST['check1'])){ 
    for($i=0;$i<count($_POST['check1']);$i++){ 
     if($_POST['check1'][$i] >= 0){ 
      echo $_POST['select1'][$_POST['check1'][$i]]; 
     } 
    } 
} 
0

나는 달리 할 것이다. 확인란을 선택하면 javascript에서 선택 입력을 활성화하고 결과를 숨겨진 필드에서 검색합니다. 또한 체크 된 입력 값이 활성화 된 경우에만 값을 1로 변경하고 을 숨겨진 입력 필드에 연결할 수 있습니다.

<input type="checkbox" name="check1[]"> 
<input type="hidden" name="hiddenValue[]" value="0"> 
    <select name="select1[]"> 
     <option value="1">One</option> 
     <option value="2">Two</option> 
     <option value="3">Three</option> 
    </select 

는 당신은 CHECK1에 대한 배열 []가 예상 한 것과 다를 수 있도록 서버에 전송되는 입력을 확인 이해한다. 확신하고 싶다면. 배열에 색인을 붙이십시오. 이것은 PHP 루프를 도울 수 있습니다 :

그런데 내 선택 입력은 빈 옵션과 체크 박스로 시작됩니다. 옵션에 대한 빈 값을 확인하는 것이 더 쉽습니다. 하지만 정보 일 뿐이므로이 체크 박스가 필요할 수도 있습니다.

<select name="select1[]"> 
     <option value="0">Choose an option</option> 
     <option value="4">One</option> 
     <option value="5">Two</option> 
     <option value="6">Three</option> 
</select> 
+0

감사합니다. 처음부터 끝까지 check1 배열을 반복하는 것이이 문제를 해결할 것이라고 생각합니까? – user3898380

+0

확실하지 않지만 첫 번째 check1 []이 선택되어 있지 않으면 배열이 생각한 것처럼 배열되지 않을지 이해해야합니다. 그래서 당신의 접근 방식을 기반으로 숨겨진 필드를 추가하고 내 루프는 숨겨진 필드를 사용합니다. 그래서 나는 약간의 자바 스크립트를 추가 할 것이다. 또는 라디오 버튼으로 전환하십시오. – AMS

관련 문제