如何显示多级一对多关系树

时间:2017-12-25 07:00:34

标签: php html mysql parent-child multi-level

如何使用HTML <ul></ul>循环所有记录并显示所有相应的子项?我尝试使用PHP Do While但只停留在1级。

MySQL(从用户中选择*)

enter image description here

所需的输出

树状视图

enter image description here

列表视图

enter image description here

2 个答案:

答案 0 :(得分:1)

简单就是在数组的帮助下做到这一点。希望它有所帮助。

$data = array();
foreach ($result as $item) {
    $key = $item['name']; // or $item['info_id']
    if (!isset($data[$key])) {
        $data[$key] = array();
    }

    $data[$key][] = $item;
}

答案 1 :(得分:0)

您可以使用此代码:

$aResults; // it is your mysql result (array)

$resultSorted = array();
$resultSorted = recursiveList($aResults, '');

function recursiveList(&$aResults, $iKey)
{
    $aChilds = '<ul>';
    foreach ($aResults as $iLoopKey => $aResult) {
        if ($aResult['parent'] == $iKey) {
            unset($aResults[$iLoopKey]);
            $aChilds .= '<li>' . $aResult['name'] . '</li>';
            $aChilds .= recursiveList($aResults, $aResult['name']);
        }
    }
    return $aChilds . '</ul>';
}

// Output example
echo '<pre>';
print_r($resultSorted);

结果,我收了:

enter image description here

另外,你最好在你的表中使用'parent_id'而不是'parent'。