ChrisB: Danke gelöst

Beitrag lesen

Hi,

Du hast doch alle GET-Parameter in $_GET vorliegen - also warum nicht einfach das in einer Schleife durchlaufen, und daraus den neuen Querystring zusammensetzen?

Ok, ich hab grade eine Denk Blockade, kannst du mir das ein wenig erläutern?

$_GET - bekannt?
Schleife - bekannt?

Gut, loslegen:

Nehmen wir an, du wuerdest folgenden Query-String uebergeben:
?menuepunkt1&menuepunkt2&menuepunkt3
fuer den Aufruf einer Seite, auf der die Menuepunkte 1, 2 und 3 aufgeklappt sind.

PHP macht daraus fuer dich Eintrage in $_GET mit den Indexnamen menuepunkt1, menuepunkt2 und menuepunkt3, sieht per print_r($_GET) so aus:

Array
(
    [menuepunkt1] =>
    [menuepunkt2] =>
    [menuepunkt3] =>
)

(Werte haben diese Eintrage alle nicht, da du ja keine uebergibst.)

Jetzt willst du den Link erstellen, der Menuepunkt 2 zuklappt - also muessen die Parameter fuer Punkt 1 und 3 im Resultat erhalten bleiben, und Nummer 2 fliegt raus.

$newQueryString = '?';  
$auszulassenderMenuePunkt = 'menuepunkt2'; // Bezeichner des Menuepunktes, der ausgelassen werden soll  
  
foreach($_GET as $name => $value) { // $_GET durchlaufen  
  if($name != $auszulassenderMenuePunkt) { // pruefen, ob aktueller Eintrag auszulassen ist  
    $newQueryString .= urlencode($name).'&'; // wenn nicht, zusammen mit nachfolgendem & anhaengen  
  }  
}  
$newQueryString = rtrim($newQueryString, '&'); // letztes, ueberfluessiges & wieder entfernen  
$newQueryString = htmlspecialchars($newQueryString); // htmlspecialchars drauf anwenden, um aus den & fuer Verwendung im HTML-code & zu machen

ergibt: ?menuepunkt1&menuepunkt3

Funktion draus machen, der der auszulassende Menuepunkt als Parameter uebergeben wird - dann ganz einfach fuer jeden Link nach diesem Schema anwendbar.

MfG ChrisB