Вот в чем дело, я пытаюсь сгенерировать html неупорядоченный список, используя данные из базы данных в том порядке, в котором они связаны. Допустим, A является родителем B , а C и B является родителем D i. хотите, чтобы B и C были двумя элементами списка внутри неупорядоченного списка внутри A и D как элемента списка внутри неупорядоченного списка внутри B и так далее ...
структура моего стола выглядит следующим образом:
+-----+------+--------+
| uid | name | parent |
+-----+------+--------+
| 1 | A | 0 |
| 2 | B | 1 |
| 3 | C | 1 |
| 4 | D | 2 |
| 5 | E | 3 |
| 7 | G | 3 |
| 9 | H | 4 |
| 10 | I | 4 |
| 11 | J | 7 |
+-----+------+--------+
PHP код
function recurse($id){
global $conn;
$sql = "SELECT * FROM binary_tbl WHERE `uid`='{$id}' ";
// echo $sql;
$res = $conn->query($sql);
// var_dump($conn);
$output = '';
while($r = $res->fetch_assoc()){
$output .= "<li> <a href=\"#\">".$r['name']."</a>";
$query_member = "SELECT * FROM binary_tbl WHERE parent= $id";
$res_member = $conn->query($query_member);
while($rm = $res_member->fetch_assoc())
{
$output .= recurse($rm['uid']).'</li>';
}
return '<ul>'.$output.'</ul>';
}
}
Ожидаемый результат
<ul>
<li>
<a href="#">A</a>
<ul>
<li>
<a href="#">B</a>
<ul>
<li>
<a href="#">D</a>
<ul>
<li><a href="#">H</a></li>
<li><a href="#">I</a></li>
</ul>
</li>
</ul>
</li>
<li>
<a href="#">C</a>
<ul>
<li><a href="#">E</a></li>
<li>
<a href="#">G</a>
<ul>
<li><a href="#">J</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
Вывод: вывод содержит слишком много неупорядоченных тегов списка и не соответствует порядку, в котором я хочу быть
<ul>
<li> <a href="#">A</a>
<ul>
<li> <a href="#">B</a>
<ul>
<li> <a href="#">D</a>
<ul>
<li> <a href="#">H</a></li>
</ul>
</li>
<ul>
<li> <a href="#">I</a></li>
</ul>
</ul>
</li>
</ul>
</li>
<ul>
<li> <a href="#">C</a>
<ul>
<li> <a href="#">E</a></li>
</ul>
</li>
<ul>
<li> <a href="#">G</a>
<ul>
<li> <a href="#">J</a></li>
</ul>
</li>
</ul>
</ul>
</ul>