Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Navigation mit Submenü1.1 + Submenü1.1.1 [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Navigation mit Submenü1.1 + Submenü1.1.1


 
Hoschi0815
02-09-2004, 22:32 
 
Hallo Zusammen!

Bisher hat alles mit der Suchfunktion gefunzt, aber jetzt habe ich mal eine Frage an euch..
Ich möchte gerne eine Navigation schreiben, in der das Menü als Baumstruktur angezeigt wird. Soweit sogut eigentlich, aber ich möchte nicht nur mit id->parent_id arbeiten, sondern es sollen viele Unterpunkte möglich sein.

Z.B.:
1.
1.1
1.1.1
2.
3.
3.1
3.1.1
3.1.1.1

Hört sich ja eigentlich nach Nested Sets an, aber sowie ich das bisher ergoogled habe, kann man bei dieser Struktur nicht submenüs ein- bzw. ausblenden.?. (meckert, wenn ichs falsch verstanden habe)
So soll es aber sein.. Wenn ich Menüpunkt 3.1 auswähle soll auch nur 3.1.1 angezeigt werden, und nur wenn dieser Menüpunkt ausgewählt wird soll 3.1.1.1 usw. angezeigt werden.
JS möchte ich nicht einsetzen.
Ich habe keine Ahnung, was ich machen soll, also bitte bitte helft mir mit ein paar Tipps auf die Sprünge, sonst sehe ich bald so aus.. :goth:

Danke schonmal

 
mrhappiness
02-09-2004, 22:39 
 
http://www.php-resource.de/forum/search.php?s=&action=showresults&searchid=358741&sortby=lastpost&sortorder=descending

da sollte was dabei sein

 
Hoschi0815
02-09-2004, 22:44 
 
Na das nenne ich mal schnelle Hilfe!!

Vielen Dank!! Ich leses mir gleich mal durch.

 
Hoschi0815
03-09-2004, 09:13 
 
Ich habs jetzt erstmal so gemacht:

1. -> id=1
2. -> id=2
2.1 -> id=21
2.1.1 -> id=211

Und es funzt (muss aber noch ne 0 vor die id's hängen, damit mehr Menüpunkte möglich sind). Es ist zwar bestimmt nicht die sauberste Lösung, aber für einen Anfänger wie mich schon mal ein erfolg ;)
Also nochmal danke, mein Problem ist durch Deine Hilfe gelöst worden.:D

 
asp2php
03-09-2004, 09:32 
 
Hm... warum sollte bei der Verwendung von id und parentid nicht mehr als eine Ebene möglich sein :confused:


id | pid
1 | 0
2 | 0
3 | 1
4 | 3
5 | 3
6 | 2
7 | 5
8 | 1
9 | 4
10 | 4
11 | 10

=>

1
-3
--4
---9
---10
----11
--5
---7
-8
2
-6

 
mrhappiness
03-09-2004, 09:34 
 
es geht - denke ich - um das auslesen in einem einzigen select

 
asp2php
03-09-2004, 09:38 
 
Öhm ... hier geht auch ;)

 
mrhappiness
03-09-2004, 09:40 
 
in einem?

auch für mysql 3?

 
asp2php
03-09-2004, 09:44 
 
was ist mySQL 3 :p ausserdem sprach er nicht von mySQL und ich auch nicht :p

 
mrhappiness
03-09-2004, 09:46 
 
:p

 
Hoschi0815
03-09-2004, 11:47 
 
Ich werde mir das mit den parent_ids wohl doch nochmal ausprobieren, aber hauptsache ich habe jetzt eine funktionierende Version erstmal.
Aber kann ich mit den parent_id's das auch so hinbekommen, dass nicht alle submenüs angezeigt werden, sondern nur die , die auf der selben ebene liegen??

bsp.

1.1
1.1.1
1.1.1.1

wenn 1.1 geöffnet wird, wird nur 1.1.1 angezeigt
wenn 1.1.1 geöfffnet wird wir 1.1 + 1.1.1 + 1.1.1.1 geöffnet

??

 
asp2php
03-09-2004, 11:48 
 
aber ja doch ;)

 
Hoschi0815
03-09-2004, 12:17 
 
Suppi, dann nochmal danke!!

Falls ich dann doch wieder aufm schlauch stehe, dann weiß ich ja wen ich nerven kann :D

 
Hoschi0815
03-09-2004, 15:32 
 
Ok, ich hätte nicht damit drohen sollen, jetzt mach ich sie auch noch wahr...

ich habs mal so versucht(+name , aber der iss hier ja unwichtig:



id | pid
1 | 0
2 | 0
3 | 2
4 | 3
5 | 2
6 | 5
7 | 2
8 | 7
9 | 7
10 | 0
11 | 10

bis zur 2ten ebene funzt es auch so und ich bekomme die ausgabe so:

1
2
-3
-5
-7
10

wenn ich das menu mit der id 2 auswähle. Jetzt möchte ich aber gerne, wenn ich -3 auswähle folgendes angezeigt bekommen:

1
2
-3
--4
-5
-7
10

Aber ich weiss nicht, wie ich an diese ebene komme...
Bis dorthin bin ich mit folgendem gekommen:




if(!isset($id)) //wurde die Seite das erste mal aufgerufen -> Es werden alle hauptmenüpunkte angezeigt
{
$query_menu_level1=mysql_query("SELECT * FROM nav WHERE pid=0"); //pid=0, soll heißen alle hauptmenüpunkte
while($menu_level1=mysql_fetch_array($query_menu_level1))
{
echo "<tr>";
echo "<td><a href=\"$PHP_SELF?id=$menu_level1[id]\">$menu_level1[name]</a></td>";
echo "</tr>";
}
}


if(isset($id)) //wurde ein menüpunkt aufgerufen -> Es wird das hauptmenü mit seinen submenüs der ersten ebene aufgerufen
{
$query_menu_level1=mysql_query("SELECT * FROM nav WHERE pid=0"); //Hauptmeüpunkte auslesen
while($menu_level1=mysql_fetch_array($query_menu_level1))
{
echo "<tr>";
echo "<td><a href=\"$PHP_SELF?id=$menu_level1[id]\">$menu_level1[name]</a></td>";
echo "</tr>";
$query_menu_level2=mysql_query("SELECT * FROM nav WHERE pid='$id'"); //Submenüeinträge auslesen
while($menu_level2=mysql_fetch_array($query_menu_level2))
{
if($id==$menu_level1[id]) //Gehört das Submenü zu dem Hauptmenü, dann ausgeben
{
echo "<tr>";
echo "<td><a href=\"$PHP_SELF?id=$menu_level2[id]\">-$menu_level2[name]</a></td>";
echo "</tr>";
}
}
}
}//Ende des durchlaufs, falls ein Menüpunkt ausgewählt wurde


Falls alles Schmu ist, bitte bescheid geben, dann sollte ich es vielleicht doch besser einfach lassen :rolleyes:

 
Abraxax
03-09-2004, 15:35 
 
ach du sch***** :D

queries in einer schleife sind böse .... :p

tipp. happy hatte in seinem ersten posting einen link gehabt. lies dir mal die dortigen threads noch einmal durch. da findest du die bessere lösung. ;-)

 
Hoschi0815
03-09-2004, 15:38 
 
okok, vielleicht sollte ich doch besser weiterhäkeln oder sowas, wobei, da mache ich wahrscheinlich knoten in knoten ;)
Na dann nochmal gaaaaaanz in ruhe durchlesen und weniger kaffee trinken...
Danke schonmal :)

 
Hoschi0815
03-09-2004, 17:23 
 
hmmm, 1000mal gesehen, aber nie richtig gelesen...tstststststs...
hier ist die lösung auf dem Silbertablett:
http://www.tutorials.de/tutorials27144.html

Ist zwar nicht genau so, wie ich es eigentlich meinte, aber irgendwann kann der Hoschi das vielleicht mal ummodeln..

Also nochmal danke für die Hilfe!

 
lx-club
03-09-2004, 18:43 
 
Original geschrieben von Hoschi0815
hmmm, 1000mal gesehen, aber nie richtig gelesen...tstststststs...
hier ist die lösung auf dem Silbertablett:
http://www.tutorials.de/tutorials27144.html

Ist zwar nicht genau so, wie ich es eigentlich meinte, aber irgendwann kann der Hoschi das vielleicht mal ummodeln..

Also nochmal danke für die Hilfe!

da finde ic hdas aber viel besser

http://www.php-resource.de/forum/showthread.php?s=&threadid=23912&highlight=menumenu

hat mir vor en paar tagen auch gut geholfen

 
Hoschi0815
03-09-2004, 18:49 
 
Besser wird das schon sein, aber man muss auch immer ehrlich zu sich selbst sein, und wenn ich das bin, muss ich eingestehen, dass das meinen Horizont zzt. auf jedenfall übersteigt... (so wie das setzen von Kommas ;) )

Ich habs mir schon ein paar mal durchgelesen und werds auch noch ein paar mal machen, aber wenn ich das so ausprobieren würde, spätestens dann würde ich mit meinen Fragen die Leute nerven... Und das hebe ich mir noch auf :p

 
Hoschi0815
04-09-2004, 15:02 
 
Ich nochmal, aber diesmal ohne fragen ;)
Hier http://www.php-resource.de/forum/showthread.php?s=&threadid=24044&perpage=10&highlight=&pagenumber=1
isses sogar nochmal erklärt, falls noch jemand mal suchen sollte... Also stimmts, wie immer: Wer suchet, der meistens nicht fragen muss...:teach:
In diesem Sinne, nochmal danke


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:57 Uhr.