php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.08.2006, 21:35  
Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 94
TheTommynator
Standard Menü aus 3 Ebenen aus Datenbank

Hallo,

Ich versuche nun schon ein Weilchen ein Menü zu programmieren, dass aus bis zu 3 Ebenen bestehen kann und dessen Daten aus einer Datenbank kommen.

Allerdings komme ich nicht besonders weit.

Erstmal, wie ich mir das Vorstelle:
MAIN-LINK MAIN-LINK MAIN-LINK MAIN-LINK
Sub-Link Sub-Link Sub-Link
sub-sub-link sub-sub-link

Also werden 3 Ebenen ausgeben, wobei die Sub-Links mit den Main-Links zusammenhängen. Also werden zum ersten Main-Link auch nur die mit diesem zusammenhängenden Sub-Links angezeigt. Genauso hängen die Sub-Sub-Links mit den Sub-Links zusammen.

Könnt ihr mir vielleicht helfen, wie eine Datenbankstruktur für ein solches Menü aussehen könnte / sollte und wie ich die Daten dann letztendlich ausgebe?

Dankeschön
TheTommynator ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.08.2006, 22:24  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi.

Ich würd mich bei der Datenstruktur nicht auf drei Ebenen festlegen, sondern einfach einen Baum anlegen, der beliebig verzweigt werden kann.

Dazu benutzt du entweder ein einfaches Parent-Feld pro Eintrag, der ebn den nächst-höheren Eintrag definiert und einen Eintrag, der die Reihenfolge der jeweiligen Geschwisterknoten untereinander definiert. Die Alternative ist das Nested-Sets-Modell. Hierzu findest du z.B. unter develnet.org ein Tutorial.

Dazu braucht es dann eine Klasse, die den Baum abbilden kann und dir Methoden, wie getChildNodes(), getParent() und was weiß ich bietet und ggf. den Baum auch erweitern/manipulieren kann. Da gibts bestimmt auch schon fertige Lösungen, z.B. in PEAR.

Für die Ausgabe kommts auf die gewünschte Darstellung drauf an. Normalerweise wird eine solche Struktur ja so abgebildet:
Code:
<ul>[*]Main 1[*]Mail 2
    <ul>[*]Sub 1
        <ul>[*]subsub a[/list]      [*]Sub 2[/list]  [*]Main 3[/list]
Aber so bekommst du dein gewünschtes Ergebnis sicher nicht hin (wenn ichs richtig interpretiere, dass die drei Ebenen einfach unterneinander in drei rechtsbündigen Zeilen stehen sollen). In dem Fall würde ich einfach drei <ul>s hintereinandersetzen, auch wenns natürlich nicht ganz sauber ist.

Basti
Basti ist offline  
Alt 28.08.2006, 19:14  
Benutzer
 
Registriert seit: 20.01.2005
Beiträge: 94
TheTommynator
Standard

Ganz ehrlich?

So richtig viel hab ich davon jetzt nicht verstanden

Könntest du mir vielleicht ein wenig genauer erklären, wie du das meinst?

Denn leider komme ich mit meinen Ansätzen nicht weiter, da mir leider immer irgendwie die Bezüge zwischen den einzelnen Menü-Punkten fehlen.

D.h. es werden nie die Menüpunkte mit den entsprechenden Unter-Punkten ausgegeben.

Außerdem wollte ich, dass der aktuelle Menü-Punkt Fett dargestellt wird.
Zudem sollte das Menü immer vollständig ausgeklappt sein. D.h. Wenn ich einen Haupt-Menü-Punkt auswähle werden sofort auch der erste Sub-Menü-Punkt und der erste Sub-Sub-Menü Punkt geöffnet.
Allerdings hab ich keine Ahnung, ob das so umsetzbar ist.

Leider kenne ich mich mit solchen Ebenen und Parent und Child-Elementen nicht besonders gut aus.

Wäre also toll, wenn mir jemand das für einen Anfänger in diesem Bereich der Programmierung leicht verständlich erklären könnte.

Ich hoffe, dass ist nicht zuviel verlangt.

Danke für Eure Hilfe
*verzweifeltbin*
TheTommynator ist offline  
Alt 28.08.2006, 19:35  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Zitat:
Zitat von TheTommynator
Könntest du mir vielleicht ein wenig genauer erklären, wie du das meinst?
Was verstehst du denn nicht?

Zitat:
Denn leider komme ich mit meinen Ansätzen nicht weiter, da mir leider immer irgendwie die Bezüge zwischen den einzelnen Menü-Punkten fehlen.
Ich benutze ein Sitemap-Objekt mir dem Baum und sowas, wie eine Decorator-Methode, die mir je nach aktuell angezeigter Seite alle Seiten mit einem der drei Stati "passive", "active" oder "current" belegt, wobei current eben die aktuelle Seite ist und active alle darüberlegenden Seiten (also quasi der Pfad bis zum Wurzelknoten). Nur der Wurzelknoten (Startseite) ist passive, falls die Seite nicht direkt angezeigt wird.

Ich hab grad keinen Plan, was ich dir erzählen soll, weiß einfach nicht, wo du hängst, ob du dich mal in PEAR umgesehen hast, das develnet-Tutorial gelesen hast, ein Baum-Obekt zustande gebracht hast, Klarheit hast, wie der auszugebende Quellcode aussehen soll und was dazwischen eben noch fehlt...

Zitat:
Leider kenne ich mich mit solchen Ebenen und Parent und Child-Elementen nicht besonders gut aus.

Wäre also toll, wenn mir jemand das für einen Anfänger in diesem Bereich der Programmierung leicht verständlich erklären könnte.
Vergiss die Ebenen. Es gibt im Wesentlichen eben zwei Möglichkeiten:

Die Parent/Order-Geschichte:

Code:
 id | p_id | order | menutitle
----+------+-------+------------
  1 |    0 |     0 | Startseite
  2 |    1 |     0 | Über uns
  3 |    1 |     1 | Produkte
  4 |    3 |     0 | Software
  5 |    3 |     1 | Support
  6 |    1 |     2 | Kontakt
Nested Sets:

Code:
 id | left | right | menutitle
----+------+-------+------------
  1 |    1 |    12 | Startseite
  2 |    2 |     3 | Über uns
  3 |    4 |     9 | Produkte
  4 |    5 |     6 | Software
  5 |    7 |     8 | Support
  6 |   10 |    11 | Kontakt
Bei dem Beispiel hier (Nested Sets) verfolge einfach man die Zahlen in left und right von 1 bis 12, dann wird klar, wie der Baum aufgebaut ist (bzw. besagtes Tutorial anschauen).

Und je nach Modell ergeben sich eben jetzt unterschiedliche Methoden, die benötigten Daten auszulesen.

Basti
Basti ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Array Inhalte in eine Datenbank über tragen Munsi1 PHP Tipps 2008 5 11.04.2008 13:28
Mit php dynamisch Namen von Bildnamen sowie Pfad in mysql Datenbank speichern mallmis PHP Tipps 2008 1 19.11.2007 23:04
Sql Datenbank durchsuchen und vergleichen Teambyte PHP Tipps 2006 5 14.09.2006 11:11
Mehrere Anwendungen eine Datenbank... Datenbanken 5 15.08.2005 11:22
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:33
[Erledigt] mysql datenbank anlegen...aber WIE??? PHP Tipps 2005-2 0 05.08.2005 19:33
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
[Erledigt] Seiten in PHP mit Datenbank PHP Tipps 2005-2 3 24.07.2005 09:07
Bilder aus der Datenbank Skazi Datenbanken 2 09.02.2005 13:42
Eintrag in Datenbank mittels Formular? Datenbanken 5 16.12.2004 17:36
INSERT in die Datenbank PHP Tipps 2004-2 4 13.12.2004 19:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php menue mit 3 ebenen, html menü 3 ebenen, 3 ebenen datenbanken, 3 ebenen menue php, menue mit 2 ebenen aus datenbank, drei ebenen datenbank, php mennü 3 ebenen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:37 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.