我正在为客户创建一份问卷,要求通过3层级别组织问题。我成功创造了U.I.然而,我一直在尝试在过去的3个小时内从数据库中提取数据,以便所有内容都加载到正确的位置。数据库由客户端组织,所以我无法控制它:
id description parentId
1 Level 1 0
2 Level 2 0
3 Level 1a 1
4 Level 1b 1
5 Level 1a1 3
我在网站上发现了一个类似的问题,但是当我尝试它的解决方案时,我在infinetly上得到了以下内容:
代码:
function makeList($par_id = 0) {
//your sql code here
$result = mysql_query("SELECT * FROM pB_test WHERE parentId = $par_id");
$pages = mysql_fetch_array( $result );
if (count($pages)) {
echo '<ul>';
foreach ($pages as $page) {
echo '<li>', $page['description'];
makeList($page['parentId']);
echo '</li>';
}
echo '</ul>';
}
}
makeList();
输出:
1
3
5
5
l
l
3
5
5
l
l
3
5
5
l
l
3
5
5
l
l
有谁知道如何解决这个问题以及问题究竟是什么?干杯
答案 0 :(得分:8)
每次调用mysql服务器并获取结果都不好
如果您有超过100行怎么办?或200 +
使用它只查询一次:
$result = mysql_query("SELECT * FROM test");
$arrs = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$arrs[] = $row;
}
function build_tree($arrs, $parent_id=0, $level=0) {
foreach ($arrs as $arr) {
if ($arr['parent_id'] == $parent_id) {
echo str_repeat("-", $level)." ".$arr['name']."<br />";
build_tree($arrs, $arr['id'], $level+1);
}
}
}
build_tree($arrs);
表
的常见示例 id name parent_id
答案 1 :(得分:6)
递归地执行此操作:
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 ($i==0) echo "<ul>";
$i=1;
echo '<li>'.$row['id'].' '.$row['description'].' '.$row['parentId'].'</li>';
printChildQuestions($row['id']);
}
if ($i>0) echo '</ul>';
}
printChildQuestions(0);