Организация вопросов и ответов из базы данных в php и mysql - PullRequest
1 голос
/ 02 сентября 2010

В моей базе данных есть вопросы и ответы. Каждое сообщение имеет «postID», и только ответы имеют «responseID», который ссылается на «postID» вопроса.

Я могу определить, какие ответы и на какой вопрос идут, поскольку responseID = postID

Я хотел бы написать php-код, который бы отображал данные в следующем формате:

Вопрос:
- ответ
- ответ
- ответ

Вопрос:
- ответ
- ответ
- ответ

... и т. Д.

Дополнительная информация:
Вопросы и ответы находятся в одной таблице tblQA. Столбцы: QAID, PosterID, ResponseID, TimeStamp, Category, Body.

Итак, у каждого сообщения есть QAID. Вопрос будет иметь категорию, а ответ будет иметь responseID, равный QAID вопросов.

Это позволит получить ВСЕ вопросы:
ВЫБРАТЬ * ИЗ ТАБЛИЦЫ, ГДЕ НЕ УКАЗАНА категория

Это позволит получить все ответы:
SELECT * FROM tblQA, ГДЕ ОТВЕТИТЕЛЬ НЕ НЕДЕЙСТВИТЕЛЕН

Ответы [ 2 ]

3 голосов
/ 02 сентября 2010

Циклы не нужны. Вы можете сделать запрос SQL, который использует JOIN.

Если ваши таблицы выглядят так:

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..."

Вы можете создать запрос JOIN, например,

SELECT * FROM Questions LEFT JOIN Answers ON QuestionID = AnswerID

Это не проверено, но это теория. То, что это даст вам для результатов, это что-то вроде

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

Есть несколько JOIN с, которые вы можете сделать в зависимости от вашей СУБД. Главным образом разновидности связаны с тем, какая «сторона» объединения имеет приоритет в случае конфликта или значения null.

Подробнее о MySQL здесь: http://www.tizag.com/mysqlTutorial/mysqljoins.php

0 голосов
/ 02 сентября 2010

Попробуйте это:

$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];
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...