2013-09-05 6 views
0

나는 데이터베이스에서 일련의 질문을 가져 왔으며 각 질문마다 라디오 버튼을 루프해야합니다. 나는 모든 응답이 내 코드는 다음과 같습니다이foreach 루프의 라디오 버튼

$answer_grp1 = array("T", "T", "T"); 

같이 보입니다 배열로 반환해야합니다. 무엇이 올바른 (이름 = ??) 구문을 것은 [ 'answer_grp1']

<?php foreach ($questions as $question): 
      if ($question['q_type']==1): ?> 
       <tr> 
        <td style="width:5%;"><?= $question['q_number'] ?></td> 
        <td style="width:15%;"> 
         T<input type="radio" name=answer_grp1[] value="T" /> 
         F<input type="radio" name=answer_grp1[] value="F" /> 
        </td> 
        <td><?= $question['q_text'] ?></td> 
       </tr> 
      <?php endif; 
      endforeach; ?> 
+0

은'answer_grp1 [0], answer_grp1 [1]'.. 등을 사용합니다. – Orangepill

+0

주위에 따옴표를 감싸고 :'name = "answer_grp1 []"'. 폼이 제출 될 때'$ _POST'를 사용한다고 가정하면'$ _POST [ 'answer_grp1']'에서 사용할 수있는 값을 갖게됩니다. 또한 제목에 "라디오"라고 표시되어 있는데 라디오 입력 요소가 표시되지 않습니다. –

+0

@ChrisRockwell 그건 오타되었습니다. 문제는 그 형식을 시도 할 때 각 질문에 대한 모든 라디오 버튼을 단일 라디오 버튼 그룹으로 사용한다는 것입니다. 예를 들어 질문 # 1을 "T"로 대답 할 때, 질문 # 2에 응답하자마자 대답 # 1에서 벗어나게됩니다. –

답변

1

내가 대신 루프를 사용하는 경향 될 것이다 :

<?php 
    for ($i = 0; $i < count($questions); $i++) { 
    $question = $questions[$i]; 
    if ($question['q_type']==1): ?> 
     <tr> 
       <td style="width:5%;"><?= $question['q_number']; ?></td> 
       <td style="width:15%;"> 
       T<input type="radio" name=answer_grp1[<?php print $i; ?>] value="T" /> 
       F<input type="radio" name=answer_grp1[<?php print $i; ?>] value="F" /> 
       </td> 
       <td><?= $question['q_text']; ?></td> 
      </tr> 
<?php endif; 
     endfor; ?> 

이것은 당신의 코드입니다 :

<?php 
$i = 0; 
foreach ($questions as $question): 
     if ($question['q_type']==1): ?> 
      <tr> 
       <td style="width:5%;"><?= $question['q_number']; ?></td> 
       <td style="width:15%;"> 
        T<input type="radio" name=answer_grp1[<?php print $i; ?>] value="T" /> 
        F<input type="radio" name=answer_grp1[<?php print $i; ?>] value="F" /> 
       </td> 
       <td><?= $question['q_text']; ?></td> 
      </tr> 
     <?php endif; ?> 
<?php 
$i++ 
endforeach; ?> 
+0

나는 그것이 왜 나를 위해 클릭하지 않았는지 모르지만, 그것은 내가해야 할 필요가 정확히있다. –

0

$ _POST로 배열을 얻기 위해 당신은 너무에

$_POST['answer_grp1'][0] 
$_POST['answer_grp1'][1] 

... 등을 사용합니다. 모든 해답이 하나 개의 배열에있을 거라고 경우

, 그럴 수있어이 같은 그것을 통해 또한 루프 :

for ($x=0; $x<count($_POST['answer_grp1']); $x++) 
{ 
    $value = $_POST['answer_grp1'][$x]; 
} 

만큼 모든 필드가 하나 개 <form> 태그 내에 당신이 양식을 제출로, 배열은 $_POST 전역에서 사용할 수 있어야합니다.

각 입력에 대한 사용자의 이름은 answer_grp1[]입니다. 그러나 이름을 따옴표로 묶어야합니다.

당신은 또한 귀하의 질문에 출력 한 후 세미콜론을 추가해야합니다 -이 설정을 변경 : 이것에

<?= $question['q_text'] ?> 

을 :

<?= $question['q_text']; ?> 
+0

질문은 양식 제출 후 값을 가져 오는 방법이 아니므로 라디오 요소를 마크 업하여 값 그룹으로 전달하십시오. 대답은 할 수 없다는 것입니다. 'checkbox'es가 사용되어야합니다. –

+0

올바르지 않습니다. 라디오 이름의 끝 부분에'[]'를 붙이면 각 라디오 버튼에 숫자가있는 한 그 이름이 사용됩니다. 첫 번째 라디오 이름이'answer_grp1 [0]'이고 두 번째 라디오 이름이'answer_grp1 [1]'이면 - 모든 배열이 다른 색인에 포함됩니다. – Drew

+0

나는 그 질문을 오해했다. 나는 OP가 같은 라디오 그룹의 여러 값을 원한다고 생각했다. 마침내 질문을 이해한다면 답을 수정해야하며 OP는 마크 업을 형식화하는 방법을 알아야합니다. –