ChrisB: Kontrolle über die URI für Ausklappmenu

Beitrag lesen

Hi,

ich hab mir wieder mal was schönes zusammen geschustert, eine Art einfaches "Ausklapp Menu".

Man bekommt auf einer Seite Links angezeigt, wenn man jetzt auf einen Link klickt, klappen unter Menus auf,
das ist mittels isset/GET realisiert, man kann auch mehrere Menus auswählen und alle bleiben aufgeklappt,

Allerdings sind deine URLs nicht wirklich "schoen" -
ausklapp-menu.php?&blastactionheroes&deluxesoundsystem

  • wenn du schon nur Parameter-Namen und keine zugehoerigen Werte verwendest (das normale Schema name=wert&name2=wert2), dann sollte aber doch zumindest das erste ?& kein ?&, sondern ein einfaches ? sein.

wenn man aber jetzt _einen_ zuklappen möchte, klappen alle zu,

Du musst natuerlich, wenn ich auf einen geoeffneten Menueeintrag klicke, um diesen wieder zu schliessen, im zugehoerigen Link die "Namen" der uebrigen Menuepunkte, die offen bleiben sollen, bereits drinstehen haben.

Wenn ich also ueber obigen Aufruf von
ausklapp-menu.php?blastactionheroes&deluxesoundsystem
bereits die ersten beiden Menuepunkte geoeffnet habe, dann muss der Link, der den ersten wieder zuklappen soll, natuerlich wie lauten?

ausklapp-menu.php?deluxesoundsystem

desahlb die frage, wie bekomme ich die absolute Macht über die URI?

Huh, wie meinen? :-)

<?
if (isset($_GET['blastactionheroes'])) {
echo '<li><a href="'.$_SERVER['PHP_SELF'].'?alben_a_bis_z&amp;buchstabe='.urlencode($_GET['buchstabe']).'">Blast Action Heroes</a>';

  
Wenn dieser Link lediglich zum Zuklappen dieses Menuepunktes sein soll - welche Bedeutung haben hier die zusaetzlichen Parameter alben\_a\_bis\_z und buchstabe?  
  
Jedenfalls musst du an dieser Stelle natuerlich die Parameter fuer alle Menuepunkte, die "offen" bleiben sollen, ebenfalls einfuegen.  
  

> # ist urlencode hier Richtig verwendet?  
  
Da du hier einen Wert in den Kontext "URL" bringst, ja.  
  
\*Eigentlich\* waere, da du anschliessend diesen Wert auch noch in den Kontext "HTML" bringst, noch ein htmlspecialchars angebracht - kann hier \*ausnahmesweise\* entfallen, da urlencode sowieso keine Zeichen mehr uebrig laesst, die in HTML eine Sonderbedeutung haetten.  
  

> Ist das überhaupt über die URI lösbar  
  
Theoretisch natuerlich schon.  
  

> oder muss hier eine Session ran  
  
Man koennte diskutieren, ob eine Session-Loesung eventuell "schoener" waere [1].  
Wenn dein Menue mal zwei Dutzend Untermenues umfassen sollte, und ich die alle aufklappe - dann wuerde jeder einzelne Zuklapp-Link 23 (2\*12-1) Parameter fuer die Punkte, die offen bleiben sollen, enthalten ...  
Das liesse sich sicherlich etwas schoener gestalten, wenn man sich in einer Session merkt, welche Punkte "offen" und welche "zu" sind, und dann nur \*einen\* Parameter uebergibt, um den aktuellen Zustand eines bestimmten Menuepunktes zu aendern.  
  
  
[1] Sessions sind natuerlich in so fern per se "unschoen", dass sie bei fehlender Cookie-Unterstuetzung immer die Session-ID im URL mitschleppen. Und da Suchmaschinen generell keine Cookies unterstuetzen, tauchen die Session-IDs dann auch meist in deren Listings mit auf.  
  
MfG ChrisB