88871
Goto Top

PHP Umfangreiches Menü erstellen, Tipps ?

Hallo Admins und Adminis face-smile

Ich frage mal in die PHP Entwickler Runde: Wie erstelle ich ein Umfangreiches Menü mit PHP. 2-3 Tiefen und dann noch dynamische "Aktive" Menülinks damit man auch sieht wo man im Menü ist.

Hab mal gegoogelt, da gibt es einiges. Von Extrem bis Raketenwissenschaftsmässig.......

Die Schwierigkeit liegt wohl darin, alles so intelligent zu verpacken damit es vollautomatisch alle Menüs auflistet

Habt ihr vielleicht ein paar Tutorial Tipps oder sogar eigene Menüstrukturen ?


HauptMenupunkt 1
- Untermenü 1.1 | Untermenü 1.2 | Untermenü 1.3
- Untermenü 1.11 | Untermenü 1.22 | Untermenü 1.33


ps: hab mit der if ( $_SERVER["REQUEST_URI"]=='link.php'......) Varaiante angefangen. Wenn ich aber in Unterseiten bin, wirds ziemlich muehsam das von Hand alles abzudecken....

Content-Key: 177240

Url: https://administrator.de/contentid/177240

Printed on: April 20, 2024 at 04:04 o'clock

Member: SlainteMhath
SlainteMhath Dec 05, 2011 at 10:19:00 (UTC)
Goto Top
Moin,

i.d.R. geneugt eine sich sich selbst referenzierende Tabele ala

ID  |  ParentID  |  Text  |  Link
1   |  NULL  |  blah  |  /blah.php
2   |  1  |  Blah.blubb  |  /blah/blubb.php
3  |  2  | Balh.blubb.muh | /blah/blubb/muh.php

Damit kannst Du das Menu mehrstüfig aufbauen und die aktuelle Position im Menu markieren.

lg,
Slainte
Member: nxclass
nxclass Dec 05, 2011 at 10:56:08 (UTC)
Goto Top
ein Umfangreiches Menü mit PHP. 2-3 Tiefen
... ist das ein Witz ? - wie nennst Du dann bitte eine Menüstruktur welche auch innerhalb eines Untermenüs, Menüpunkte eines anderen Hauptmenüs einbindet ? - und schon mal daran Gedacht das so ein Menü auch von den Benutzerrechten abhängig sein könnte ?

Eine einfache Menüstruktur bekommst du mit dem Beispiel von SlainteMhath schon hin, der Rest ist eine Sache von CSS, HTML und Javascript.
Member: SlainteMhath
SlainteMhath Dec 05, 2011 at 10:59:23 (UTC)
Goto Top
[...] Benutzerrechten [...] CSS, HTML und Javascript.
Darauf bin ich absichtlich nicht eingegangen face-smile
Mitglied: 88871
88871 Dec 05, 2011 at 12:47:58 (UTC)
Goto Top
Hoiz

Du meinst ich soll das Menü in die mySQL eintragen...... Hab schon solche Lösungen gesehen, obschon ich das vermeiden wollte......

Wie stelle ich das denn auf jeder Seite an ? Hab noch nie ein Menue aus mySQL gezogen


PS: Javascript kommt nicht in Frage. Dieses Menü ist auch nicht öffentlich. Benutzerrechte werden auch hinzukommen, genau. So genau wollte ich das noch gar nicht fixieren, einfach mal reinhören.
Member: SlainteMhath
SlainteMhath Dec 05, 2011 at 12:56:59 (UTC)
Goto Top
Du kannst das Menu natuerlich auch in einem Array speichern das genauso aufgebaut ist wie meine Tabelle, das macht das zusammenbauen des Menus aber um einiges unschöner.

$id=1;
menu[$id]["parentid"]=0;  
menu[$id]["text"]="blah";  
menu[$id]["Link"]="blah.php";  

$id=2;
menu[$id]["parentid"]=1;  
menu[$id]["text"]="/blah.blubb";  
menu[$id]["Link"]="/blah/blubb.php";  
usw...

Wirf einfach mal einen Blick auf die "mysql_*" Befehle in der PHP Doku. Für das Array empfielt sich "foreach" und konsorten.
Mitglied: 88871
88871 Dec 05, 2011 at 15:44:56 (UTC)
Goto Top
Hab nun die Variante von Olaf Lederer genommen. Die ist eigentlich die exakte Ausführung vom Vorschlag von Slainthe

http://www.finalwebsites.com/tutorials/dynamic-navigation-list.php

Funktioniert bestens.

Wo ich aber noch daran scheitere ist das Submenue an anderer Stelle (AndererDIV) auszugeben als in der Auflistung. Gar nicht mal so einfach face-smile

Danke fuer Eure Antworten....
Member: dog
dog Dec 05, 2011 at 23:34:20 (UTC)
Goto Top
Das ist die einfache Methode, die aber bei komplexeren Strukturen die Datenbank stark belastet.
Eine bessere Methode ist Modified Preorder Tree Traversal - dazu gibt es auch genug Beispiele.
Mitglied: 88871
88871 Dec 06, 2011 at 07:28:46 (UTC)
Goto Top
Zitat von @dog:
Das ist die einfache Methode, die aber bei komplexeren Strukturen die Datenbank stark belastet.
Eine bessere Methode ist Modified Preorder Tree Traversal - dazu gibt es auch genug Beispiele.

mysql_free_result() gibt den Speicher frei, der mit der Ergebnis-Kennung assoziert ist.

Die Funktion muss nur dann aufgerufen werden, wenn Sie sich bei Anfragen, die große Ergebnismengen liefern, Sorgen über den Speicherverbrauch zur Laufzeit des PHP-Skripts machen. Nach Ablauf des Skripts wird der Speicher ohnehin freigegeben.
Member: dog
dog Dec 06, 2011 at 15:21:21 (UTC)
Goto Top
Das hat damit gar nichts zu tun.
Das DB-Format wie von Slainte beschrieben erfordert rekursive Queries zum Auflösen.
Man kommt also nie um mehrere Datenbankabfragen herum.
Bei Modified Preorder Tree Traversal braucht man nur eine Abfrage um einen ganzen Baum aufzulösen.
Mitglied: 88871
88871 Dec 06, 2011 at 17:12:11 (UTC)
Goto Top
hei dog. alles klar. das ist fuer mich viel zu hoch face-smile

das menue umfasst auch keine 300 gruppen mit 9000 untergruppen face-smile der server schlaeft also weiter face-smile