Mailinglisten-Archive |
Hallo zusammen! Ich habe aktuell auch das Problem, eine solche Struktur programmieren zu müssen. Die Hauptprobleme sind: 1. Ich muß alles aus einer Datenbank heraus generieren, kann also keine Vorgaben in einer inc-Datei machen oder so 2. Menüeinträge sind theoretisch unendlich tief. Mein Lösungsansatz ist, jedem Menüpunkt eine Numerierung in der Form $menu[1] = "1"; $menu[2] = "1.1"; $menu[3] = "1.2"; $menu[4] = "1.2.1"; $menu[5] = "1.2.2"; $menu[6] = "1.3"; $menu[7] = "1.3.1"; u.s.w zuzuordnen. Dann müßte man (da probiere ich gerade rum) diese Strings splitten mit explode (".", $menu[$x]) und anschließend sozusagen vertikal sortieren. Wieviele Ebenen (in der Tiefe) es gibt, ist ja klar, wenn man mit count() prüft, welches Array die größte Länge hat. Dadurch kann man auch feststellen, wie tief ein solches Menüelement "eingerückt" sein muß. Wenn ein neuer Unterpunkt dazukommt, weiß man, welches der Überpunkt ist, kann prüfen, wieviele Unterpunkte es gibt, eins addieren und hat dann den Wert für die Variable $menu[n+1]. Problematisch wird es, weil es auch einen Menüeintrag wie z. B. "1.1.10" geben kann, der natürlich nach "1.1.9" kommt, sonst könnte man ja gleich mit sort() arbeiten. Ich habe allerdings noch keine konkrete Idee, wie dieser Sortieralgorithmus aussehen muß. Wenn jemand eine Idee hat, würde ich mich über Anregungen freuen. Das ganze ist für ein Dokumentmanagementsystem, das - wenn es mal fertig ist - auch als open source zur Verfügung stehen soll. Über Antworten würde ich mich freuen. BTW: Wenn ich beim Posten irgend etwas falsch mache, dann sagt es mir bitte. Auf meine letzten Postings kam leider keine Reaktion. Bis dann, Axel. -- a.tietje_(at)_flynet.de
php::bar PHP Wiki - Listenarchive