Webstatt.org - Community seit 2006 - 2012 (2024?)

hierarchischen Baum erstellen

Avatar user-294
25.10.2006 22:20

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?

Avatar user-142
26.10.2006 06:56

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"zwinkern;
$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)?"--":"-"zwinkern.$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"zwinkern;
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)?"--":"-"zwinkern.$value."<br />";
}
}
tree($tree);
?>


edit: Hoffe das ist für dich ein hierarchischer Baum.