1

クイズシステムを作成しようとしていますが、次のように出力されます。

Question1
Answer1
Question1
Answer2

など..の代わりに

Question1
Answer1
Answer2
... and so on

どうすれば修正できますか?

コード:

$question = mysql_query("SELECT questions.*, answers.* FROM questions inner join answers on questions.id=answers.question_id");

while($row = mysql_fetch_assoc($question))
{
    echo $row['question'].'<br />' .$row['answer'].'<br />';            
}
4

2 に答える 2

3

WILE LOOP を修正します。常に質問と回答が出力されます。クイックフィックスは次のようになります。

$previousQuestion = null;
while($row = mysql_fetch_assoc($question))
{
    if($row['question'] !== $previousQuestion) {
        echo $row['question'].'<br />';
    }

    echo $row['answer'].'<br />';

    $previousQuestion = $row['question'];
}

構文は他の方法で単純化できますが、これでうまくいきます。基本的に、質問とその回答には 1 対多の関係があるため、前の行の質問と同じでない場合にのみ質問を出力します。

于 2013-01-22T13:43:36.390 に答える
0

MySQL のみでこれを行いたい場合は、次のようにします。

SELECT question AS 'Question And Its Answers'
FROM
(
  SELECT 0 AS Type, id, question FROM questions 
  UNION ALL
  SELECT 1, question_id, answer FROM answers 
) t
ORDER BY id, Type;

SQL フィドルのデモ

これにより、次のことが得られます。

| QUESTION AND ITS ANSWERS |
----------------------------
|                question1 |
|                      eee |
|                       dd |
|                      dsd |
|                question2 |
|                       df |
|                       fd |
|                question3 |
|                      ans |
|                       dd |
|                       ad |
于 2013-01-22T13:50:13.047 に答える