Menu in Baumstruktur

Hallo alle miteinander,

ich möchte gern mit Hilfe von PHP ein Menu in Baumstruktur anlegen, etwa
so, wie es auch der "Windows Explorer" liefert.

Ganz grob skizziert:

Menu
Krause
Karl
Emma
Ludwig
Lehmann
Peter
Paul
Maria
Schmitz
Josef
Thomas
Agnes

Wo finde ich weitere Informationen und vielleicht sogar Vorlagen?

Viele Gruesse!
Helmut
helmut [ So, 28 Oktober 2007 17:07 ] [ ID #1856402 ]

Re: Menu in Baumstruktur

Helmut Hullen schrieb:
> Hallo alle miteinander,
>
> ich möchte gern mit Hilfe von PHP ein Menu in Baumstruktur anlegen, etwa
> so, wie es auch der "Windows Explorer" liefert.

Wo soll der Baum gespeichert werden? Datenbank? Flat File?


--
Mein Zeugs:
http://www.hadanite-marasek.de/classes.php
http://www.objektivsuche.de/
Ansonsten:
http://www.php-faq.de/q/q-newsgroup-wie-helfen.html
Hadanite Marasek [ So, 28 Oktober 2007 17:14 ] [ ID #1856403 ]

Re: Menu in Baumstruktur

> ich möchte gern mit Hilfe von PHP ein Menu in Baumstruktur anlegen, etwa
> so, wie es auch der "Windows Explorer" liefert.

Ist Dir denn klar, wie die HTML-CSS-Realisierung sein sollte? Wenn nicht,
bist Du hier falsch und möchtest in der passenden Gruppe fragen, würde ich
sagen.
Jonas Werres [ So, 28 Oktober 2007 18:10 ] [ ID #1856404 ]

Re: Menu in Baumstruktur

Hallo, Jonas,

Du (jonas) meintest am 28.10.07:

>> ich möchte gern mit Hilfe von PHP ein Menu in Baumstruktur anlegen,
>> etwa so, wie es auch der "Windows Explorer" liefert.

> Ist Dir denn klar, wie die HTML-CSS-Realisierung sein sollte?

Ja: "gaaanz einfach". Simple Seiten, ohne Schnickschnack.

Viele Gruesse!
Helmut
helmut [ So, 28 Oktober 2007 18:43 ] [ ID #1856405 ]

Re: Menu in Baumstruktur

Hallo, Hadanite,

Du (marasek) meintest am 28.10.07:

>> ich möchte gern mit Hilfe von PHP ein Menu in Baumstruktur anlegen,
>> etwa so, wie es auch der "Windows Explorer" liefert.

> Wo soll der Baum gespeichert werden? Datenbank? Flat File?

1 Startdatei, die nur sehr selten und dann minimal geändert wird, die
von Hand geändert wird.

Viele Gruesse!
Helmut
helmut [ So, 28 Oktober 2007 18:48 ] [ ID #1856406 ]

Re: Menu in Baumstruktur

>> Ist Dir denn klar, wie die HTML-CSS-Realisierung sein sollte?
>
> Ja: "gaaanz einfach". Simple Seiten, ohne Schnickschnack.
Hä? Ich verstehe Deinen Punkt nicht. Wenn Dein Name hier nicht schon öfter
aufgetaucht wäre, dann würde ich jetzt den "PHP ist eine serverseitige
Sprache, was Du suchst ist Darstellung und damit hat PHP nur insofern zu
tun, dass es passendes HTML/CSS/JS ausgibt"-Text abspulen.

Sinnigerweise Gibst Du Dein Menü als verschachtelte Liste aus:
<hX>Menu</hX>
<ul>
<li>Krause
<ul>
<li>Karl</li>
   <li>Emma</li>
   <li>Ludwig</li>
</ul>
<ul>
   <li>Lehmann</li>
....
Damit es auch ohne Styles (barrierefrei) lesbar ist.
Wie Du diese Liste dann formatierst wie eine "Windows
Explorer"-Baumstruktur, ist eine Frage für
de.comm.infosystems.www.authoring.misc oder ähnliches, weil reine
CSS-Frage.

Die Liste generierst Du z.B. aus einer Tabelle (id,name,link,father_id), die
einen Menüpunkt mit dem übergeordneten Menüpunkt verknüpft speichert. Das
sollte eigentlich kein Problem sein.
Jonas Werres [ So, 28 Oktober 2007 23:48 ] [ ID #1856412 ]

Re: Menu in Baumstruktur

Jonas Werres schrieb:

> Die Liste generierst Du z.B. aus einer Tabelle (id,name,link,father_id), die
> einen Menüpunkt mit dem übergeordneten Menüpunkt verknüpft speichert. Das
> sollte eigentlich kein Problem sein.

Rekursive verfahren sind zeitkritisch! Für überwiegend /lesende/
Prozesse eigent sich ein Nested-Set besser.

Guckst du:
http://www.klempert.de/nested_sets/
Harald Stowasser [ Mo, 29 Oktober 2007 09:00 ] [ ID #1857077 ]

Re: Menu in Baumstruktur

Hallo, Jonas,

Du (jonas) meintest am 28.10.07:

>>> Ist Dir denn klar, wie die HTML-CSS-Realisierung sein sollte?

>> Ja: "gaaanz einfach". Simple Seiten, ohne Schnickschnack.

> Hä? Ich verstehe Deinen Punkt nicht. Wenn Dein Name hier nicht schon
> öfter aufgetaucht wäre, dann würde ich jetzt den "PHP ist eine
> serverseitige Sprache, was Du suchst ist Darstellung und damit hat
> PHP nur insofern zu tun, dass es passendes HTML/CSS/JS ausgibt"-Text
> abspulen.

> Sinnigerweise Gibst Du Dein Menü als verschachtelte Liste aus:
<hX>> Menu</hX>
<ul>>
<li>> Krause
> <ul>
> <li>Karl</li>
>    <li>Emma</li>

(usw.) ach ja - irgendwie hatte ich mir selbst den Blick auf den Wald
verstellt. Mit Listen kann ich schon umgehen ...

Danke für den Wink mit dem Zaunpfahl!

Ach ja: PHP brauche ich, weil nicht jeder (authentifizierte) User
Zugriff zu jedem Ast haben soll.
So langsam erahne ich die Lösung.

Viele Gruesse!
Helmut
helmut [ Mo, 29 Oktober 2007 09:20 ] [ ID #1857079 ]

Re: Menu in Baumstruktur

Helmut Hullen schrieb:
> 1 Startdatei, die nur sehr selten und dann minimal geändert wird, die
> von Hand geändert wird.

Festes PHP Array ist sehr leicht zu realisieren und auch sehr viel
schneller als Datenbank oder eventuelle Datenformate wie XML. Und das
wichtigste, es erfüllt deine Anforderungen am einfachsten. Auf dieses
dann über eine Klasse einen zentralen Zugriff bieten und somit die Array
Struktur transparent halten. Auf diese Weise kannst nachträglich auch
auf andere Speicherformen umsteigen, falls sich deine Anforderungen ändern.

--
Mit freundlichen Grüßen,
Christoph Herrmann

http://dragonprojects.de/
Christoph Herrmann [ Mo, 29 Oktober 2007 11:14 ] [ ID #1857087 ]

Re: Menu in Baumstruktur

> Ach ja: PHP brauche ich, weil nicht jeder (authentifizierte) User
> Zugriff zu jedem Ast haben soll.
Natürlich. Aber wenn es dabei Probleme gibt, sollte die Frage schon
lauten "wie gebe ich HTML mit PHP aus". Wie man etwas formatiert, ist
hier nciht Thema, der PHP-Teil ist spätestens mit der Ausgabe der Liste
erledigt.
Jonas Werres [ Mo, 29 Oktober 2007 14:06 ] [ ID #1857098 ]

Re: Menu in Baumstruktur

Hallo, Jonas,

Du (jonas) meintest am 29.10.07:

>> Ach ja: PHP brauche ich, weil nicht jeder (authentifizierte) User
>> Zugriff zu jedem Ast haben soll.

> Natürlich. Aber wenn es dabei Probleme gibt, sollte die Frage schon
> lauten "wie gebe ich HTML mit PHP aus".

Nein - die Probleme erahne ich in der Steuerung der Teile, die je nach
Berechtigung auszugeben sind. Das ist PHP, nicht HTML. Sollte aber
lösbar sein - ich hatte mich an einer inzwischen erkannten Stelle
verrannt.

> Wie man etwas formatiert, ist hier nciht Thema, der PHP-Teil ist
> spätestens mit der Ausgabe der Liste erledigt.

Klar - ich hatte ja auch nicht nach dem Layout gefragt. Der Hinweis auf
die HTML-Listen hat gereicht, um den Irrweg zu beenden.

Viele Gruesse!
Helmut
helmut [ Mo, 29 Oktober 2007 14:19 ] [ ID #1857099 ]

Re: Menu in Baumstruktur

..oO(Harald Stowasser)

>Jonas Werres schrieb:
>
>> Die Liste generierst Du z.B. aus einer Tabelle (id,name,link,father_id), die
>> einen Menüpunkt mit dem übergeordneten Menüpunkt verknüpft speichert. Das
>> sollte eigentlich kein Problem sein.
>
>Rekursive verfahren sind zeitkritisch!

Kommt drauf an.

Einerseits sind mehrere gleichartige Abfragen mit Prepared Statements kein
wirkliches Problem für die DB. Andererseits kann man auch erstmal alles in
einem Rutsch einlesen und die Baumstruktur mit PHP aufdröseln. Da brauchts
dann nicht mal mehr Rekursion, sondern nur einen einzigen Durchlauf durch
die (geordnete) Menge, bei welchem dann entsprechende Verknüpfungen von den
Eltern- zu den Kindelementen in Form von Referenzen angelegt werden. Eine
DB-Abfrage, eine Schleife - und fertig ist das Baumarray (bzw. etwas in der
Art).

Micha
Michael Fesser [ Mo, 29 Oktober 2007 17:51 ] [ ID #1857106 ]

Re: Menu in Baumstruktur

> Einerseits sind mehrere gleichartige Abfragen mit Prepared Statements kein
> wirkliches Problem für die DB. Andererseits kann man auch erstmal alles in
> einem Rutsch einlesen und die Baumstruktur mit PHP aufdröseln. Da brauchts
> dann nicht mal mehr Rekursion, sondern nur einen einzigen Durchlauf durch
> die (geordnete) Menge, bei welchem dann entsprechende Verknüpfungen von den
> Eltern- zu den Kindelementen in Form von Referenzen angelegt werden. Eine
> DB-Abfrage, eine Schleife - und fertig ist das Baumarray (bzw. etwas in der
> Art).

Also ich habe beides schon gemacht - tatsächlich ist ist es locker
schnell genug, alles auszulesen und die Struktur PHP-seitig aufzubauen.

Allerdings hat Nested Set noch einige weitere Vorteile, die ganze
Struktur bietet mehr direkte Abfragemöglichkeiten. Und die Sortierung
der Geschwister auf einer Ebene gibt es quasi gratis dazu.

--
Mein Zeugs:
http://www.hadanite-marasek.de/classes.php
http://www.objektivsuche.de/
Ansonsten:
http://www.php-faq.de/q/q-newsgroup-wie-helfen.html
Hadanite Marasek [ Mo, 29 Oktober 2007 20:32 ] [ ID #1857110 ]
PHP » de.comp.lang.php.misc » Menu in Baumstruktur

Vorheriges Thema: Bild drehen
Nächstes Thema: Server-IP in Script via Cron-Job