簡體   English   中英

在php中檢索樹狀結構中的數據

[英]Retrieve the Data in Tree structure in php

目前,我正在在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文件。

好。 首先,您從數據庫中獲取a1的密鑰,並從a2中存儲密鑰,現在根據您的選擇從不同的表中檢索數據,只需匹配ID(從A1和A2中選擇),然后檢索與選擇ID匹配的數據即可等等。

<?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; ?>

我已經為文檔的主/副標題完成了這種樹形結構。

您可以使用遞歸函數來檢索下一個問題。您可以在遞歸函數中管理要檢索的問題數。

建議:

作為表結構,您正在使用兩個表。 您可以使用一個表來回答問題,也可以使用選項表來回答問題。 因為下一個問題也是另一個問題。 這意味着與問題之間存在一元一對一的關系。

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

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

我認為這將對您有所幫助。

這篇文章對您也有幫助。

了解PHP / mysql中的遞歸

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM