2017-04-26 16 views
0

回答を選択できるように、質問ごとにすべての回答の選択肢をユーザーに表示する必要があります。列データを一度しか表示しないようにこのmysqlクエリを制限するにはどうすればよいですか?

表示/マークアップ

<?php 
$i=1; 
$surveyQ="SELECT * FROM ve_survey_answers a 
JOIN ve_survey_questions q 
ON a.QuestionId=q.id"; 
$surveyResult=mysqli_query($db, $surveyQ); 
while($survey=mysqli_fetch_array($surveyResult)){$i++;?> 
<div class="div"> 
<input type="radio" name="useranswer" id="radio<?=$i;?>" class="radio" value='<?=$survey['AnswerId'];?>'/> 
<label class="surveylabel" for="radio<?=$i;?>"><?=$survey['Answer'];?></label> 
</div> 
<?php } ;?> 

作品上記のクエリが、それは次のように示しています

What kind of pet do you prefer? 
Cat 
What kind of pet do you prefer? 
Dog 
What kind of pet do you prefer? 
Bird 
What kind of pet do you prefer? 
Reptile 

どのように私はそれがこのように表示することができますか?

What kind of pet do you prefer? 
Cat 
Dog 
Bird 
Reptile 
+0

私はHTMLコードを見て、そのコードから何が起こるのかがはっきりしていないと思うと思います。あなたがそれを混乱させるために何かできるのであれば、それは助けになるでしょう。 – tadman

+0

@tadman:ちょうど編集をしました –

答えて

1

コードのロジックに2つの変更を加えました。まず、ORDER BY句をクエリに追加して、質問をグループ化します。これは、結果セットを反復するときに、与えられた質問の回答が連続した順序で来ることを意味します。次に、現在の質問の内容を把握する変数を追加しました。質問は、新しい質問の回答ブロックの開始時に1回だけ印刷されます。

<?php 
    $i=1; 
    $surveyQ = "SELECT * FROM ve_survey_answers a 
       INNER JOIN ve_survey_questions q 
        ON a.QuestionId = q.id 
       ORDER BY a.QuestionId"; 
    $surveyResult = mysqli_query($db, $surveyQ); 
    $question = ""; 
    while ($survey=mysqli_fetch_array($surveyResult)) { 
     $i++; 
     $curr_question = $survey['Question']; 
     if ($question != $curr_question) { 
      $question = $curr_question; 
      echo "<h5 style='font-weight: bold;'>$question</h5>"; 
     }; 
     echo "<div class=\"div\"> 
       <input type=\"radio\" name=\"useranswer\" id=\"radio<?=$i;?>\" class=\"radio\" value=\"<?=$survey['AnswerId'];?>\"/> 
       <label class=\"surveylabel\" for=\"radio<?=$i;?>\"><?=$survey['Answer'];?></label> 
      </div>"; 
    } 
?> 
+0

これは正しく実行されませんコードの一部がPHPタグの外にあります –

+0

気にしない場合は、コードを編集します。あなたは走りません。 –

+0

@SebastianFarhamあなたの質問からコピーしました。はい、自由に編集できますが、うまくいけば私がここで何をしようとしているのかを知ることができます。 –

関連する問題