2017-04-26 64 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

我對代碼的邏輯做了兩處更改。首先,我在查詢中添加了一個ORDER BY子句,以便將問題分組在一起。這意味着當你迭代結果集時,給定問題的答案應該以連續的順序出現。接下來,我添加了一個變量來跟蹤當前問題是什麼。該問題僅在一個新問題的答案塊的開始處打印一次。

<?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我從你的問題中複製而來。是的,隨意編輯,但希望你能瞭解我在這裏要做的事情。 –