2012-05-08 8 views
0

私は、各質問と関連する回答を複数のテーブルから取り出す実態調査を行っています。それぞれの質問には、次の表に格納されます。フィールドを持つデータベースから複数の回答を含む調査を引き出す

  • tblQuestions、:
  • QID
  • qText。

関連する回答がテーブルに格納されている:

  • tblPossAnswersを、フィールドで:
  • 援助
  • QID
  • answerText。

だから、それぞれの質問に対して3つの回答があります。すべてを引っ張って私のSQLは次のとおりです。

select * from tblQuestions, tblPossAnswers where 
tblPossAnswers.qID = tblQuestions.qID 
order by tblQuestions.qID ASC 

そして、私のPHPはそれを表示するには:

while ($row = mysql_fetch_array($result)) { 

echo "<p>" . $row['qText'] . "</p><br />"; 
echo "<input type='radio' name='".$row['qID']."' value='".$row['aID']."' />"; 
echo $row['answerText']; 
} 

問題は、これがqTextことが可能に答えを表示するたびに表示されています。だから、次のようになります。

  • 質問1
  • 可能な答え1
  • 質問1
  • 可能な解答2
  • 質問1
  • 可能な解答3

  • 質問2
  • 可能な回答1
  • 質問2
  • 可能な解答2
  • 質問2
  • 可能な解答3

は、私は何をしたいのは、最初の可能な答えを引くとqTextにのみ表示されています。私はMySQLにまだまだ新しかったので、解決策は私が見ていない非常に単純なものかもしれません。

+0

を次のように多少のPHPを変更SQLで何も変更する必要はありませんあなたは Q1をしたい PA1 PA2 PA3 –

+0

はい、あなたの答えは完全に働いた、 – Geoff

答えて

0

あなたはどちらかのできる質問はあなたのPHPのループ内で変更されたかどうかについての試験:

while ($row = mysql_fetch_array($result)) { 
    if ($row['qID'] != $lastQuestionID) { 
    echo "<p>" . $row['qText'] . "</p><br />"; 
    $lastQuestionID = $row['qID']; 
    } 
    echo "<input type='radio' name='".$row['qID']."' value='".$row['aID']."' />"; 
    echo $row['answerText']; 
} 

さもないと、あなたが、その後に答えを分割した上で、セパレータを指定GROUP_CONCATを使用して、質問して、グループMySQLの結果は、することができますPHP:次に

select *, group_concat(answerText separator char(30)) as answers 
from tblQuestions join tblPossAnswers using (qID) 
group by tblQuestions.qID 
order by tblQuestions.qID ASC 

while ($row = mysql_fetch_array($result)) { 
    echo "<p>" . $row['qText'] . "</p><br />"; 
    foreach (explode(chr(30), $row['answers']) as $answer) { 
    echo "<input type='radio' name='".$row['qID']."' value='".$answer."' />"; 
    echo $answer; 
    } 
} 
+0

は旧ソリューションと一緒に行ったおかげで、ありがとうございました。 – Geoff

0

とちょうど

while ($row = mysql_fetch_array($result)) { 
    if ($row['qText'] != $lastQuestion) { 
    echo "<p>" . $row['qText'] . "</p><br />"; 
    $lastQuestion = $row['qText']; 
    } 
    echo "<input type='radio' name='".$row['qID']."' value='".$row['aID']."' />".$row['answerText']; 

} 
関連する問題