Willkommen in der Webstatt
User-1 am 26.10.06 00: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?

netcup.de Warum gibt es hier Werbung?
User-2 am 26.10.06 08: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");
$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.

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt