[英]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
我認為這將對您有所幫助。
這篇文章對您也有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.