2010-09-02 4 views
1

Dans ma base de données, j'ai des questions et réponses. Chaque post a un 'postID' et seules les réponses ont un 'responseID', qui référence le 'postID' de la question.Organiser des questions et réponses à partir de la base de données dans php et mysql

Je peux identifier les réponses aller à quelle question depuis responseID = postID

Je voudrais écrire un code php qui afficherait les données dans le format suivant:

Question:
- réponse
- réponse
- réponse

question:
- réponse
- réponse
- réponse

... et ainsi de suite

Informations additionnelles:
Les questions et réponses sont dans la même table tblQA. Les colonnes sont QAID, PosterID, ResponseID, TimeStamp, Category, Body.

Ainsi, chaque publication a un QAID. Une question aurait une catégorie, et une réponse aurait un ID de réponse qui égalait les questions QAID.

Ce saisirait TOUTES les questions:
SELECT * FROM tblQA OU catégorie IS NOT NULL

Ce saisirait toutes les réponses:
SELECT * FROM OÙ tblQA ResponseID IS NOT NULL

Répondre

0

Essayez ceci:

$sql="SELECT * FROM tblQA WHERE category IS NOT NULL"; 
$result = mysql_query($sql); 
while($row = mysql_fetch_assoc($result)) 
{ 
    echo $row[Body]; 
    $sql1="SELECT * FROM tblQA WHERE ResponseID IS NOT NULL and qaid = $row[responseid]"; 
    $result = mysql_query($sql1); 
    while($row = mysql_fetch_assoc($result)) 
    { 
     echo $row[Body]; 
    } 
} 
+0

Je ne peux pas changé la base de données en raison d'une application qui est codée en dur pour utiliser la base de données comme il est maintenant. – BigMike

+0

espérons que le code ci-dessus aide :) – Wolfy

+0

le code ci-dessus n'est pas le même qu'hier;) – Wolfy

3

Looping est pas nécessaire. Vous pouvez faire une requête SQL qui utilise un JOIN.

Si vos tables ressemble à ceci:

QuestionID  Question 
123    "What do you think about..." 
124    "Who is your favorite..." 

AnswerID   Answer 
123    "I think that..." 
123    "I tend to think..." 
124    "My favorite..." 

Vous pouvez concevoir une chose requête JOIN comme

SELECT * FROM Questions LEFT JOIN Answers ON QuestionID = AnswerID

Ce n'est pas testé, mais c'est la théorie. Qu'est-ce qui vous donnera des résultats est quelque chose comme

QuestionID  Question      Answer 
123    "What do you think about..." "I think that..." 
123    "What do you think about..." "I tend to think..." 

Il y a un certain nombre de JOIN s que vous pouvez faire en fonction de votre SGBDR. Généralement, les saveurs ont à voir avec quel "côté" de la jointure est prioritaire en cas de conflit ou de valeur null.

En savoir plus sur MySQL ici: http://www.tizag.com/mysqlTutorial/mysqljoins.php

+0

Alex, merci. Je suis un peu une recrue à cela. Pourrais-je voir un petit exemple? – BigMike

+0

Les questions et les réponses sont dans la même table, 'tblQA', donc cela ne fonctionnerait pas. Sœur, j'aurais dû préciser ça. – BigMike

+0

Je ne recommanderais pas les documents MySQL; ils sont vraiment difficiles à comprendre en tant que débutant. J'espère que cela t'aides! –

Questions connexes