Hallo, also aufgepasst:
Ich habe Daten aus ner DB:
id pid oid title
1 -1 1 Punkt 1
2 -1 2 Punkt 2
3 -1 3 Punkt 3
4 -1 4 Punkt 4
5 -1 5 Punkt 5
6 -1 6 Punkt 6
7 -1 7 Punkt 7
8 2 1 Punkt 2.1
9 2 2 Punkt 2.2
Jetzt möchte ich die als hierarchischen Baum ausgeben. Kriegs aber irgendwie nicht hin. Hätte jemand mal nen Codeschnipsel?
Keine Lust extra dafür eine Tabelle zu erstellen, darum hab ich ein bisschen improvisiert:
<?php
$tree = array();
$row = array(1,-1,1,"p1",2,-1,2,"p2",3,-1,3,"p3",4,-1,4,"p4",5,2,1,"p2.1");
$c=0;
while($row[$c]) {
if(array_key_exists($row[$c+1],$tree)) $tree[$row[$c+1]-1][$row[$c+2]] = $row[$c+3];
else $tree[][0] = $row[$c+3];
$c+=4;
}
function tree($array,$index=0) {
foreach($array as $key => $value) {
if(is_array($value)) tree($value,1);
else echo (($key > 0)?"--":"-").$value."<br />";
}
}
tree($tree);
?>
Für dich müsst das denn so aussehen:
<?php
$tree = array();
$result = $db->query("SELECT pid,oid,title FROM table ORDER BY id ASC");
while($row = $db->fetch($result)) {
if(array_key_exists($row['pid'],$tree)) $tree[$row['pid']-1][$row['oid']] = $row['title'];
else $tree[][0] = $row['title'];
}
function tree($array,$index=0) {
foreach($array as $key => $value) {
if(is_array($value)) tree($value,1);
else echo (($key > 0)?"--":"-").$value."<br />";
}
}
tree($tree);
?>
edit: Hoffe das ist für dich ein hierarchischer Baum.