0

目前我正致力于在 symfony2.2 框架中创建 api。

我必须从数据库中检索一堆问题和答案。

                               Q1
                              /  \
                             A1   A2
                            /       \
                           Q2        Q3
                          / | \     / | | \
                         A3 A4 A5  A6 A7 A8 A9 
                        /   |
                       Q4   Q2  ...

我的数据库结构如下:

Question: (questionId,questionText)
AnswerOption: (id,questionId,option,nextQuestionId)

在上图中,有一个根本问题,有 2 个选项 A1 和 A2。

在选择 A1 时,必须将用户重定向到 Q2,依此类推。

注意:用户可能无法回答所有问题。

现在我需要找到最好的方法:

1:从数据库中检索数据。

2:格式化Json文件中的问题。

4

3 回答 3

0

好的。首先,您从数据库中获取 a1 的密钥,并从存储位置获取 a2,现在您根据您的选择从不同的表中检索数据,只需匹配 id(从 A1 和 A2 中选择)并检索与您的选择 ID 匹配的数据并这样做以此类推。

于 2013-05-09T12:27:48.097 回答
0

我已经为文档中的主/子标题完成了这种树结构。

您可以使用递归函数来检索下一个问题。您可以管理要在递归函数内部检索多少个问题。

建议:

作为您的表结构,您正在使用两个表。您可以使用一张表来回答问题,也可以使用选项表来回答问题。因为下一个问题也是另一个问题。这意味着与问题存在一元的一对一关系。

Tables:
question : (id,optionId,questionText, nextQuestionId)
 pk - id
 foreign key - optionId

option: (id, optionText, questionId)
 foreign key - questionId
 PK - id

我认为这对你会有帮助。

这篇文章对你也有帮助。

了解 PHP/mysql 中的递归

于 2013-05-10T04:37:53.270 回答
0
<?php
    if(!empty($_POST) {
        $nextQues = "SELECT * from Question WHERE id = '" . $_POST['next_ques_id'] . "'";
        $nxtAnswers = "SELECT * from AnswerOption WHERE questionId = '" . $_POST['next_ques_id'] . "'";
    }
?>

// in view, loop through $nxtAnswers and assign $nxtAnswers['nextQuestionId'] to input
<?php foreach ($nxtAnswers as $ans): ?>
    <input type="radio" name="next_ques_id" value="<?=$nxtAnswers['nextQuestionId']?>"><?=$ans['option']?></input>
<?php endforeach; ?>
于 2013-05-09T15:33:29.467 回答