我有三张桌子:
部门 :
指定 :
部门名称:
DesignationID和ReportTo是表指定的外键,表示一个指定的指定报告给一个指定的指定。即经理(这是指定)向首席执行官报告(这也是指定)
现在我想生成一棵树,比如......
我手动输入条目以显示上面的树。IE
现在我的问题是,我无法以自动生成这棵树的方式编写函数。
简而言之,从数据库中获取记录后,我想生成如上图所示的树。
任何解决方案?
注意:树的级别不是固定的,树的级别可能是无限的
它是 Java,因此您可以使该树尽可能深。
将查询与树的总体与 UI 渲染分开,您将没有问题。查询数据库,填充树并将其提供给 UI 进行渲染。
如果您尝试将一个部分与另一个部分混合,您将遇到问题。
我认为你可以使用 php 来绘制这棵树。例子。
编写用于选择数据到行的连接查询
这不是你的答案,而是可以告诉逻辑的提示。<li>
while(!empty($row))
{
echo'<li><ul>$row[designation name]';
while(!empty($next))
{echo'<li><ul>$next[designation name]';
//next sentence must be a select query
}
echo'</ul></li>'
}
echo'</ul><li>'
}
这是一个提示。
这是一棵树,您需要在树项目上递归迭代,直到达到叶级别才能填充它,正如@duffymo 给出的答案中提到的那样,您应该将树填充的逻辑与查询分开。
如果您仍然无法解决,请链接
好运 :-)
您可以使用这样的树结构,然后从查询中填充它。
然后,您将有不同的选择,例如:
1)您将树转换为 JSON 并使用 jQuery 递归迭代它;
2)您直接在Java中迭代它(递归),构建输出服务器端(假设一个包含您的HTML的大字符串)。然后您只需将结果注入页面(由于服务器和客户端之间的耦合,效果不佳)
ETC...