mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 23.04.2024 18:28 Benutzername: Passwort: Auto-Login

Thema: Menü (PHP&MySQL) - Adjacency List Model vom 18.10.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Menü (PHP&MySQL) - Adjacency List Model
Seite: 1, 2  Weiter
Autor Nachricht
m
Moderator
Threadersteller

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 18.10.2007 11:20
Titel

Menü (PHP&MySQL) - Adjacency List Model

Antworten mit Zitat Zum Seitenanfang

He. Ich möchte gerne ein Menü darstellen, und zwar einen Teilbaum. Die Daten
liegen in der Form id|parent_id|link|... vor. Einen ganzen Baum darzustellen ist
nicht das Problem. Doch wie gehe ich vor wenn ich einen Teilbaum darstellen
möchte, eben den zur aktuellen Seite?

Kompletter Baum wäre

Code:
Item 1
Item 2
- Subitem 2.1
- Subitem 2.2
Item 3
- Subitem 3.1
- Subitem 3.2
-- Subitem 3.2.1
Item 4



Wie schaffe ich es einen Teilbaum zu generieren wenn ich ich ein gegebenes Kind habe
zum Beispiel Subitem 3.2.1

Code:
Item 1
Item 2
Item 3
- Subitem 3.1
- Subitem 3.2
-- Subitem 3.2.1
Item 4


Zuletzt bearbeitet von m am Do 18.10.2007 11:57, insgesamt 2-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Backware

Dabei seit: 09.12.2004
Ort: bei Köln
Alter: 38
Geschlecht: Männlich
Verfasst Do 18.10.2007 12:13
Titel

Antworten mit Zitat Zum Seitenanfang

- pfad auslesen des aktiven elements
- alle kinder von "root" auslesen
- beim durchlaufen und zeitgleichem anzeigen überprüfen: ist aktives element das mutter element des pfades des aktiven menüpunkts?
wenn ja: pfad auflisten
wenn nein: nächstes element

dabei musst du aber drauf achten, dass wenn die kinder im pfad auch weiter kinder haben, dass du diese auch anzeigen wirst..
nicht nur den pfad Lächel da ja sonst ein paar punkte fehlen.
  View user's profile Private Nachricht senden
Anzeige
Anzeige
Sarky

Dabei seit: 29.06.2002
Ort: Düsseldorf
Alter: 42
Geschlecht: Männlich
Verfasst Do 18.10.2007 12:27
Titel

Antworten mit Zitat Zum Seitenanfang

http://www.sitepoint.com/article/hierarchical-data-database
  View user's profile Private Nachricht senden
m
Moderator
Threadersteller

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 18.10.2007 12:27
Titel

Antworten mit Zitat Zum Seitenanfang

Ha, hört sich einfach an. Ich häng seit gestern dran und hab ein riesen Brett vorm Kopf * Ich bin müde... *
Hast du es schon mal umgesetzt? Kannst du eventuell ein paar Fetzen Code posten an denen ich
mich lang hangeln kann? Danke.

Zitat:
- pfad auslesen des aktiven elements


Du sprichst vom Pfad, der Verbindung von root zum Kind?

Sarky hat geschrieben:
http://www.sitepoint.com/article/hierarchical-data-database


Danke, den Artikel kenne ich. Das Ding ist, an den Pfad ran zu kommen ist nicht das Problem,
wie komme ich weiter, also ich habe den Pfad von parent_id zu parent_id nur was stelle ich mit dem an?


Zuletzt bearbeitet von m am Do 18.10.2007 12:49, insgesamt 3-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Backware

Dabei seit: 09.12.2004
Ort: bei Köln
Alter: 38
Geschlecht: Männlich
Verfasst Do 18.10.2007 12:50
Titel

Antworten mit Zitat Zum Seitenanfang

Naja ich hab sowas des öfteren schon umgesetzt, wenn ich dir aber einfach code geben würde, würdest du dich ja einfach daran bereichern, dass ich mir die mühe bereits gemacht habe ;-P

es ist für dich besser, wenn du es dir selbst löst und ich dir nur die ansätze gebe die du benötigst.
dann lernst du mehr und du darfst dann stolz auf dich sein ^^.

eigentlich ist es relativ einfach.

was hast du denn bisher?! arbeitest du mit einer klasse oder wilder programmierung für jeden sonderfall einfach den code fix in der datei stehen?

für die die wenig zeit haben:

- erstelle eine klasse - myNode - mit folgenden funktionen:

--> function myNode ( $id = false )

  • myNodes ist der konstruktor des baumes. hier wird nicht viel gemacht.
  • empfängt eine variable, wenn diese nicht gegeben ist, wird sie mit false befüllt.
  • ist $id = false, dann geh davon aus, dass ROOT angewählt sein soll, sprich: kein Menüpunkt ausgewählt wurde.
  • wenn $id nicht false entspricht muss es eine id eines knotenelements sein, wenn dem so ist dürfen wir den knoten mit dem baum laden. wenn nicht, dann sollen wir mit root arbeiten


--> function getChilds ( $id = false )

  • gibt alle Kinder des aktuellen Punktes oder von $id zurück
  • ist $id gesetzt muss es eine ID sein. Somit gibt es alle Kinder der jeweiligen id zurück
  • ist $id nicht gesetzt, wird der aktuelle Punkt (sprich: $this -> id) genutzt.


--> function addChild ( $data )

  • Fügt ein Kind unter den aktuellen Punkt ein.
  • $data steht für die Variablen, welche für den Punkt erforderlich sind.


--> function remove ( $data )

  • Löscht den aktuellen Punkt
  • Sollte folgende Funktion auf jedenfall ausführen.


--> function removeChilds ( $data )

  • Löscht die Kinder des aktuellen Punkts
  • $data steht für die Variablen, welche für den Punkt erforderlich sind.


--> function getPath ( $id = false )

  • Ermittelt den Pfad vom aktuellen PUnkt bis zum ROOT des Baumes
  • ist $id gesetzt, wird $id genutzt,
  • wenn $id nicht gesetzt ist, wird der aktuelle PUnkt genutzt.


m hat geschrieben:
[...]
Danke, den Artikel kenne ich. Das Ding ist, an den Pfad ran zu kommen ist nicht das Problem,
wie komme ich weiter, also ich habe den Pfad von parent_id zu parent_id nur was stelle ich mit dem an?


Dein PFAD sollte ein ARRAY sein mit den jeweiligen Elementen im index:

Code:

Array(
0 => "root",
1 => "fruits",
3 => "red",
4 => "apple",
)


dann musst du nur beim auflisten des baumes schauen, ob die aktuelle $id ein index des pfad arrays, des aktiven pfades ist.


Zuletzt bearbeitet von Backware am Do 18.10.2007 12:53, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Do 18.10.2007 13:30
Titel

Antworten mit Zitat Zum Seitenanfang

http://pear.php.net/package/DB_NestedSet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
m
Moderator
Threadersteller

Dabei seit: 18.11.2004
Ort: -
Alter: -
Geschlecht: Männlich
Verfasst Do 18.10.2007 13:34
Titel

Antworten mit Zitat Zum Seitenanfang

tacker hat geschrieben:
http://pear.php.net/package/DB_NestedSet


Danke, ich weiß PEAR bietet auch das HTML_MENU Packet was genau das macht
was ich möchte. Aus diversen Gründen kann/darf ich das leider nicht nutzen.

Backware, danke, gerade schon mal schnell überflogen und schaue ich mir jetzt
nochmal genauer an
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Do 18.10.2007 13:39
Titel

Antworten mit Zitat Zum Seitenanfang

Aber schau dir einfach mal den Code da an, da findest Du alles was Du brauchst.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen [PHP/MySQL] Menü aus DB mit Untermenü
[PHP/MySQL] Dynamisches Menü mit Nested Sets
CSS: list item mit border
CSS: List-image nur bei Hauptmenüpunkten
css list-style-position
PHP-List Newslettersystem Fehler
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.