Chcę utworzyć memu wielopoziomowe. Mam tabelę
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{
if(!isset($family_tree[$row['page_parent']])){ $family_tree[$row['page_parent']] = [];
}
$family_tree[$row['page_parent']][] = array($row['page_subject'],$row['page_id']); }
}
}
function buildList($family_tree,$parent){
$list = "<ul>";
foreach($family_tree[$parent] as $each_child){
$list .= "<li>" . $each_child[0];
if(isset($family_tree[$each_child[1
]])){ $list .= buildList($family_tree,$each_child[1]);
}
$list .= "</li>";
}
$list .= "</ul>";
return $list;
}
makeTree($query,$family_tree,$root_parent,$root_parent_name);
echo "<li>$root_parent_name"; echo buildList
($family_tree,$root_parent);
Co jest nie tak z tym kodem?