Hallo alle zusammen!!!
Ich möchte eine Menüstruktur erstellen. Leider funktioniert meine rekursive Funktion nicht so wie ich will.
So sieht meine DB aus:
mid=ID; eintrag=der Begriff; vater=Bezugsnummer
So und jetzt der Code den ich zusammengeschrieben habe:
So sieht dann mein Ergebnis aus:
Auto
...Innenraum
......Sitze
.........Sport
............Stoff
......Lenkrad
...Felgen
Wohnung
...Küche
......Herd
.........Hitze
......Messer
...Balkon
Er lässt Motor und Gebel aus.
Und das hier sollte er eigentlich Anzeigen:
Auto
...Innenraum
......Sitze
.........Sport
............Stoff
......Lenkrad
...Felgen
...Motor
Wohnung
...Küche
......Herd
.........Hitze
......Messer
......Gabel
...Balkon
Aus einem mir unverständlichem Grund gibt er zu einem Punkt nur zwei Unterpunkte aus, den dritten / die weiteren lässt er aus. Leider komme ich nicht drauf was ich falsch gemacht habe.
Kann mir jemand erklären was da falsch ist?
Bitte Hilfe und schon mal Danke an alle!!! :wink:
Ich möchte eine Menüstruktur erstellen. Leider funktioniert meine rekursive Funktion nicht so wie ich will.
So sieht meine DB aus:
Code:
mid Eintrag vater 1 Auto 0 2 Innenraum 1 3 Sitze 2 4 Lenkrad 2 5 Wohnung 0 6 Küche 5 7 Herd 6 8 Messer 6 9 Hitze 7 10 Sport 3 11 Gabel 6 12 Felgen 1 13 Stoff 10 14 Balkon 5 15 Motor 1
So und jetzt der Code den ich zusammengeschrieben habe:
Code:
<?php $verbindung1 = mysql_connect ("localhost", "root", ""); $ergebnis = mysql_db_query ("struktur", "SELECT * from struktur", $verbindung1); for ($i=0; $i<mysql_num_rows($ergebnis); $i++){ $felder = mysql_fetch_array($ergebnis); list($mid,$eintrag,$vater) = $felder; if ($vater==0) { //entweder Hauptpunkte oder Unterpunkte $containHP[] = $felder; } else {$containUP[] = $felder;} } function struktur($zeichen, $IDii) { global $containUP; for ($u=0; $u<count($containUP); $u++) { $test2 = $containUP[$u]; if ($test2["vater"]==$IDii) { echo $zeichen.$test2["eintrag"]." "; //unterpunkt ausgeben $zeichen="...".$zeichen; //je witer in die rekursive desto mehr zeichen $IDii = $test2["mid"]; //id merken array_splice ($containUP[$u], 0); //das array leeren struktur($zeichen, $IDii); //in die rekursive } } } $zeichen="..."; for ($i=0; $i<count($containHP); $i++) { $test = $containHP[$i]; if ($test["vater"]==0) { echo "".$test["eintrag"]." ".""; //hauptpunkt ausgeben $IDii=$test["mid"]; //id merken struktur($zeichen, $IDii); //Funktion aufrufen } }
Auto
...Innenraum
......Sitze
.........Sport
............Stoff
......Lenkrad
...Felgen
Wohnung
...Küche
......Herd
.........Hitze
......Messer
...Balkon
Er lässt Motor und Gebel aus.
Und das hier sollte er eigentlich Anzeigen:
Auto
...Innenraum
......Sitze
.........Sport
............Stoff
......Lenkrad
...Felgen
...Motor
Wohnung
...Küche
......Herd
.........Hitze
......Messer
......Gabel
...Balkon
Aus einem mir unverständlichem Grund gibt er zu einem Punkt nur zwei Unterpunkte aus, den dritten / die weiteren lässt er aus. Leider komme ich nicht drauf was ich falsch gemacht habe.
Kann mir jemand erklären was da falsch ist?
Bitte Hilfe und schon mal Danke an alle!!! :wink:
Kommentar