Ich habe eine Seite, die Elemente nach zahlreichen Parametern auflistet, dh Variablen mit Werten.php; entferne ein einzelnes Variablenwertpaar von querystring
listitems.php?color=green&size=small&cat=pants&pagenum=1 etc.
Zur Bearbeitung der Liste zu aktivieren, habe ich einen Parameter bearbeitet = 1, die auf den oben Abfragezeichenfolgeflag angefügt zu geben:
listitems.php?color=green&size=small&cat=pants&pagenum=1&edit=1
So gut, so weit.
Wenn der Benutzer die Bearbeitung beendet hat, habe ich einen Link, der den Bearbeitungsmodus verlässt. Ich möchte, dass dieser Link den gesamten Querystring angibt - was auch immer er sein mag, da dies den Benutzereinstellungen unterliegt - außer entferne den Edit = 1.
Wenn ich nur ein paar Variablen hatte, habe ich sie nur manuell in den Link aufgelistet, aber jetzt, da es mehr gibt, möchte ich in der Lage sein, programmatisch nur die Bearbeitung zu entfernen = 1.
Sollte ich eine Suche nach edit = 1 durchführen und dann einfach durch nichts ersetzen?
$qs = str_replace("&edit=1, "", $_SERVER['QUERY_STRING']);
<a href='{$_SERVER['PHP_SELF']}?{$qs}'>return</a>;
Oder was wäre die sauberste meisten fehlerfreie Art und Weise, dies zu tun.
Hinweis: Ich habe eine ähnliche Situation, wenn ich von Seite zu Seite gehe, wo ich das Pagenum herausnehmen und durch ein anderes ersetzen möchte. Da die Seitennummer variiert, kann ich nicht einfach nach pagenum = 1 suchen, sondern müsste nach pagenum =$pagenum
suchen, wenn das einen Unterschied macht.
Danke.
Wie würde ich das tun von $ _SERVER [ 'QUERY_STRING']? – user1904273
Es gibt 'parse_url()' und 'parse_str()', aber $ _GET ist immer verfügbar und gefüllt, also ist dies nicht notwendig. – Sven
Ich würde nicht die $ _GET-Variable (oder irgendwelche Superglobals für diese Angelegenheit) ändern, weil sie an anderer Stelle in der Anwendung benötigt werden könnten. Erstellen Sie stattdessen eine temporäre Variable wie '$ edit_query = $ _GET;'. Dann kannst du '$ edset ($ edit_query ['edit']))' 'setzen, ohne deine Superglobals zu beeinflussen. – Number1SuperGuy