php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.07.2006, 05:04  
Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 70
shocky
shocky eine Nachricht über ICQ schicken
Standard Menü punkte Rekursiv ausgeben???

hallo leute weis jetzt nich obs ins Anfänger forum gehört, da ich mich aber zu nem anfänger zähle pack ichs hier rein.

Also ich habe ein menü das in einem Admin bereich erweitert werden kann.
Ähnelt stark einem forum oder einem dateisystem zu jedem menüpunkt kann ein unterpunkt zugewiesen werden und diesem ein weiterer unterpunkt usw.

die Menüpunkte werden in einer tabelle gespeichert die so aussieht

Name | Parent
---------------------
... | ...

die obersten menüpunkte also die die man schon am anfang sieht haben als parent den wert "page" eingetragen. Den menü punkte den der benutzer wählt wird per url übergeben und zwar in der var section.
so nun gebe ich beim aufruf der seite meine menüpunkte aus z.b.:

Home
News
Downloads

jetzt klickt der Benutzer auf downloads und es öffnen sich die unterpunkte
das kriege ich ja noch hin:
wenn section = downloads dann zeige demos, video, screenshots.

aber was ist wenn ich unter demos noch mehr unterpunkte habe wei strategie und da drunter wieder was wie comand and conquer.

ich habe mir so gedacht das ich eine funktion habe die als parameter den menüpunkt bekommt der gerade ausgegebn weden soll also im ersten fall wäre das home dann als zweiten parameter die section die der benutzer gewählt hat. die funktion verfolgt dann die ausgesuchte section immer weiter nach oben bis sie weiss ob der gerade auszugebene wert die section beinhaltet die der benutzer will wenn ja dan werden die unerpunkte dargestellt


Ich hoffe ich habe euch nicht zu doll verwirrt leute hab das nähmlich un fünf uhr morgens geschrieben als ich nach dem frustsaufen nach hause kam weil ich das nicht hingekrigt habe
shocky ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 02.07.2006, 09:59  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Was ist denn überhaupt deine Frage? Wenn ich den Betreff so durchlese hängst du an der Rekursion, aber wo ist der Code dazu?

Vielleicht aber solltest du dich auch mit Nested Sets beschäftigen. Mehr dazu in Google.
Zergling-new ist offline  
Alt 02.07.2006, 15:20  
Erfahrener Benutzer
 
Registriert seit: 21.07.2005
Beiträge: 209
pepe24
Standard

Code:
function rekursionsfkt(menuefeld) {

$q="SELECT * FROM table WHERE name = 'menuefeld'";
$query = mysql_query($q, $connection);
//Das Ergebnis kann nur einen "übergeordneten" Punkt haben. Also gibts 
//hier höchstens ein Ergebnis!
$result = mysql_fetch_array($query);

$i=1;
return $result['parent'];

while ($result['parent'] != 'page') {
$parent = rekursionsfkt($result['parent']);
$i++;
}

echo "angewaehlter Menuepunkt liegt in Ebene $i";
}
Zuerst würde ich Dir davon abraten, Menuestrukturen aus einer DB zu lesen - man braucht ja auch keinen presslufthammer, um einen kleinen nagel in die wand zu schlagen! (toller vergleich! ;) ) Würde das also mit arrays machen in dem stil:
Code:
 
$array = array("Europa" => array("Land1" => "Deutschland",
                                 "Land2" => "Italien",
                                 "Land3" => "Holland"),
               "Suedamerika" => array("Land1" => "Peru",
                                      "Land2" => "Argentinien",
                                      "Land3" => "Brasilien"));
So, hoffentlich hilft Dir das weiter. Die Speicherung der bisher gefundenen Menuepunkte (die != page sind) in einem array und das Auslesen desselben zur Feststellung, was Du jetzt genau ausgeben musst, bekommst Du sicher selbst hin. Hoffe, dass sich kein Fehler eingeschlichen hat. Viel Erfolg!

*EDIT* Hallo Gerhard. Danke für Deine Korrektur. Selbstverständlich ist das ein Fehler. (Wollte nur wissen, ob Ihr auch aufpasst! ;) ) Aber ich denke, dass die Funktionsweise einer solchen Rekursiven funktion dadurch klar geworden ist. Und darüber hinaus ist die Anwendung einer solchen Funktion - wie ich denke - dem Problem angemessen (recht elegant). Klar gibt es dafür auch eine (rein) iterative Lsg., aber nur mit 3 mal so viel Programmierarbeit! (Aber ich lasse mich gern vom Gegenteil überzeugen! ;) )



Gruß,
Peter
pepe24 ist offline  
Alt 02.07.2006, 15:56  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Ist Dir eigentlich klar, was return macht?
Danach wird die Funktion nicht weiter ausgeführt. Die ganze While-Schleife in der Funkton wird nicht durchlaufen.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard 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
verschachtelte Rubriken ausgeben / alle anzeigen prinzli PHP Tipps 2008 3 25.02.2008 22:37
[Erledigt] Realsierungsproblem - Punkte über mehre Tage / Wochen PHP Tipps 2006 3 09.03.2006 18:11
Sortiert nach Differenz 2er Datensätze ausgeben Datenbanken 2 24.07.2005 12:36
Mysql: Daten nach Anfangsbuchstaben Sortiert Ausgeben PHP Tipps 2005-2 5 09.07.2005 15:56
zahl ausgeben wenn gerade Tschuu PHP Tipps 2005-2 6 07.07.2005 19:20
Ein Datensatz ausgeben PHP Tipps 2005 8 02.06.2005 21:52
Ausgeben der Tabelle GrU3nL!nG Datenbanken 2 30.05.2005 15:57
Wie DB-Ergebniss in html-Tabelle ausgeben ? PHP Tipps 2004-2 2 31.12.2004 18:04
[Erledigt] Array ausgeben PHP Tipps 2004-2 4 05.12.2004 00:53
[Erledigt] Ganze Tabelle ausgeben PHP Tipps 2004-2 1 21.11.2004 16:48
datenbank: gleiche zeileninhalte nur 1 mal ausgeben PHP Tipps 2004 1 16.10.2004 20:23
[Erledigt] Formel1-Tippspiel durch PHP / MySQL Datenbanken 4 02.09.2004 21:07
Daten aus der Datenbank adieren und ausgeben PHP Tipps 2004 4 25.08.2004 20:05
Session, nach Link Klick Punkte gutschreiben ... PHP Tipps 2004 6 17.07.2004 17:00
Witze Off-Topic Diskussionen 7 09.07.2004 20:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php menu rekursiv, php rekursives menu, php rekursion menü, php rekursiv menu, php menu rekursion, http://www.php.de/php-tipps-2006/40984-menue-punkte-rekursiv-ausgeben.html, rekursives menü php, php recursive menu, rekursion menü, menu rekursiv, menü rekursiv aus db lesen, rekursiv menu php, rekursives php menü, php rekursiv verzeichnis ebenen ausgeben, rekursives menü, menü php rekursiv, rekursives menü php join, php menu verzeichnis rekursiv, php beispiel rekursives menü, php li menu recursiv

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:07 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.