page_id | page_parent | page_subject 9 | NULL | Kategoria 1 10 | 9 | Podkategoria 1.1 11| 9 | Podkategoria 1.2 12| 10 | Podkategoria 1.1.1 13| 10 | Podkategoria 1.1.2 14| 12 | Podkategoria 1.1.1.1 16| NULL | Kategoria 2 18 | NULL | Kategoria 3
Chciałbym uzyskać takie coś:
Kategoria 1 Podkategoria 1.1 Podkategoria 1.1.1 Podkategoria 1.1.1.1 Podkategoria 1.1.2 Podkategoria 1.2 Kategoria 2 Kategoria 3
Natomiast otrzymuję takie coś:
Kategoria 1 Podkategoria 1.1 Podkategoria 1.1.1 Podkategoria 1.1.1.1 Podkategoria 1.1.2 Podkategoria 1.2
Mój kod:
$pdo = new PDO("mysql:dbname=07117910_sp5;host=localhost","root",""); $query = $pdo->query("SELECT * FROM page_v ORDER BY page_order, page_matrix"); $family_tree = []; $root_parent = -1; $root_parent_name = ""; function makeTree($query,&$family_tree,&$root_parent,&$root_parent_name){ while($row = $query->fetch(PDO::FETCH_ASSOC)){ $root_parent = $row['page_id']; $root_parent_name = $row['page_subject']; }else{ $family_tree[$row['page_parent']] = []; } } } } function buildList($family_tree,$parent){ $list = "<ul>"; foreach($family_tree[$parent] as $each_child){ $list .= "<li>" . $each_child[0]; $list .= buildList($family_tree,$each_child[1]); } $list .= "</li>"; } $list .= "</ul>"; return $list; } makeTree($query,$family_tree,$root_parent,$root_parent_name);
Co jest nie tak z tym kodem?