[英]Recursive tree traversal with PHP - layout issue
我正在为客户创建一个调查表,该调查表要求将问题按3个层次进行组织,且问题和类别的数量未知。 我已经成功创建了UI和代码以从数据库中提取信息,但是我一直在尝试找出如何在正确的位置加载所有内容。 该数据库是由客户端组织的,因此我无法控制它:
id description parentId
1 Level 1 0
2 Level 2 0
3 Level 1a 1
4 Level 1b 1
5 Level 1a1 3
我现在正在使用的代码是这样的:
function printChildQuestions($parentid) {
$sql="SELECT * FROM pB_test WHERE parentID=$parentid";
$result=mysql_query($sql);
$i=0;
while (true) {
$row=mysql_fetch_array($result);
if (!$row) break;
if ($row['parentId'] == 0) {
echo '<div class="tabs">';
echo '<span class="level1">'.$row['description'].'</span>';
echo '<ul id="main-nav"><h2 align="center">Categories</h2></ul>';
echo '<div>'.$row['id'].' '.$row['description'].' '.$row['parentId'].'</div>';
if ($row['parentId'] == 1) {
}
echo '</div>';
} else {
echo '<div>'.$row['id'].' '.$row['description'].' '.$row['parentId'].'</div>';
}
printChildQuestions($row['id']);
}
}
printChildQuestions(0);
和需要为其生成的html在这里: http : //jsfiddle.net/Cyb2N/
问题是我提出的每个想法都需要我对级别进行硬编码,并在引入级别2时中断。 有人可以将我推向正确的方向吗? 谢谢!
如果我正确理解了您的问题,您是否正在寻找一种解决客户端数据中parentId引用所隐含级别的方法? 像这样:
Level 1
Level 1a
Level 1a1
Level 1b
Level 2
如何创建一个Level
与类parent
它引用父级别属性? 然后,您可以遍历客户端的数据,将Level实例解析为一棵漂亮的树,然后从那里进行任何所需的操作。
或者,您可以给Level
类一个children
级属性,该属性将是引用该实例作为父级的各个级别的集合...无论如何,关键是您可以将客户的平面数据转换为一个有用的树模型,并且简单的课。 通过计算父母(或孩子)的数量,您可以知道给定级别的树的上/下距离。
printChildQuestions是一个递归函数。 听起来您不知道如何确定您所处的递归级别。 这是如何做:
printChildQuestions($parent_id);
function printChildQuestions($parent_id, $level = 1){
if( $need_to_recurse ){
printChildQuestions($new_parent, $level + 1);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.