Willkommen in der Webstatt Zum Webstatt Blog und Stories
Scraper Scraper 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?
Broken Sword Broken Sword 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