Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Baumstruktur in MySQL Speichern [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Baumstruktur in MySQL Speichern


 
KinNeko
28-05-2002, 17:26 
 
Hey..
ich müßte eine Baumstruktur (wie von Explorer) mit unendlicher Tiefe und in der Datenbank festgelegten Reihenfolge speichern (also NICHT alphabetisch sortiert)

Kennt jemand eine Lösung die nur auf Child/Parent beruht ?
Also ohne Integer-Prioritäten auskommt..

 
Troublegum
28-05-2002, 19:09 
 
Was meinst du mit Integer Prioritäten ?


Meine Idee (nicht hauen):
ID,PARENTID,EINTRAG,SORTIERUNG

Dann kannst du jede Ebene einfach anzeigen.
Willst du den kompletten Baum anzeigen, geht das wohl nur rekursiv.

SELECT id,eintrag FROM Tabelle WHERE parentid=X ORDER BY sortierung ASC;
Der Funktion übergibst du am Anfang X=0.
Wenn du die Ergebnisse durchgehst, rufe für jeden Eintrag die Funktion wieder rekursiv auf mit X=ID des Eintrags.
Werden Kinder gefunden, geht das so weiter.
Du kannst, um die Tiefe der Anzeige zu limitieren, auch die Ebene übergeben.

 
KinNeko
29-05-2002, 00:31 
 
Mit Integer Priorität meinte ich bei dir die Spalte 'Sortierung'

Das Problem ist das wir bei der Lösung doch per PhP die IDs durchgehen müssen oder gibt es da einen SQL Befehl ?

 
goth
29-05-2002, 00:57 
 
In 'ner Guten Datenbank (Oracle) gibt's ein CONNECT BY PRIOR ... steht bei MySQL aber erst noch auf der TODO-Liste ... ( Ich denke mal ab Version 4.23.xx )

Für MySQL gibt's nur 'ne Rekursions-Lösung ...

 
KinNeko
29-05-2002, 10:36 
 
Gibt es in Oracle auf eine automatisch generierte Prio ?
In MySQL mußte ich alles per Hand programmieren..
..und da keine verschachtelten Anfragen existieren ist das nicht gerade sicher.

 
pekka
29-05-2002, 11:27 
 
Hm, ein Ansatz wäre vielleicht die Speicherung einer Pfad-ID nach dem folgenden Muster:

0-15-90-89-99-77

0 = root
15 = 15. Ordner in Root
90 = 90. Ordner im 15. Ordner
89 = 89. Ordner im 90. Ordner

usw...

Dann könntest Du ganze Bäume mit einer SELECT-Anweisung abrufen:

SELECT * FROM baumstruktur WHERE pfad LIKE "0-15-90"

(für alle Items unterhalb des 90. Ordners im 15. Ordner...)

 
KinNeko
29-05-2002, 11:35 
 
Was dann aber noch nicht die Reihenfolge der Artikel in derselben Ebene klären würde.
Und du müßtest dich um das Codieren auch in PhP kümmern.

Die Idee aus dem PhP Magazin (Child/Parent-Relation) ist schon gut..aber für Bäume deren unterschiedliche Level nicht alphabetisch sortiert sind ungeeignet.

 
KinNeko
29-05-2002, 11:58 
 
Was dann aber noch nicht die Reihenfolge der Artikel in derselben Ebene klären würde.
Und du müßtest dich um das Codieren auch in PhP kümmern.

Die Idee aus dem PhP Magazin (Child/Parent-Relation) ist schon gut..aber für Bäume deren unterschiedliche Level nicht alphabetisch sortiert sind ungeeignet.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:55 Uhr.