geloescht_JesterDay Geschrieben 31. Januar 2005 Teilen Geschrieben 31. Januar 2005 Hallo, ich habe folgendes Problem: In einer PHP Seite gibt es Links, die die Seite selbst wieder aufrufen, allerdings mit geänderten Parametern. Also: das erste mal: seite.php?page=user 2tes mal: seite.php?page=user&id=2 3tes mal: seite.php?page=user&id=4 Den link dynamisch zu erstellen ist nicht das Problem. gibt es aber eine Möglichkeit, den Querystring direkt zu ändern? Also so ungefähr: $_GET["id"] = 4 und dann mit self.location.href=\''.$_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"].'\'" / >'; den "richtigen" string dastehen zu haben? Oder kann ich das nur machen, indem ich den String jedesmal "von Hand" wieder aufbaue? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 31. Januar 2005 Teilen Geschrieben 31. Januar 2005 Den link dynamisch zu erstellen ist nicht das Problem. gibt es aber eine Möglichkeit, den Querystring direkt zu ändern? Also so ungefähr: Gibt es AFAIK leider nicht. Gruß, Markus Edit: function getQueryString( $aReplace = null) { $QryStr = $_SERVER['QUERY_STRING']; if ( $aReplace !== null && is_array( $aReplace) && !empty( $aReplace)) { $QryStr = ''; $aQryStr = explode( "&", $_SERVER['QUERY_STRING']); $iQryCnt = count( $aQryStr); $i = 0; foreach( $aQryStr as $param) { $aQryParams = explode( "=", $aQryStr); $name = $aQryParams[0]; $value = $aQryParams[1]; if ( in_array( $name, $aReplace)) { $value = $aReplace[$name]; } $QryStr .= $name .'='. $value; $i++; if ( iQryCnt != $i ) { $QryStr .= '&'; } } } return $QryStr; } [/PHP] und dann mit [PHP] self.location.href=".$_SERVER['PHP_SELF']."?".getQueryString( array( 'id' => 5)) ungetestet Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 31. Januar 2005 Teilen Geschrieben 31. Januar 2005 Mit nem RegEx oder StringReplace kannst das fast so machen wie du willst. Du könntest auch deine Idee weiterverfolgen: erste alle $_GET['foo'] = $bar setzen und dann mittels implode("&", $_GET) dein QUERY_STRING wieder aufbauen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 31. Januar 2005 Autor Teilen Geschrieben 31. Januar 2005 hab es jetzt so gelöst: $QString = ""; foreach($_GET as $key => $val) { if ($key != "ac" && $key != "id") $QString .= $key."=".$val."&"; } // Action und ID setzen $QString .= "ac=edit&id=". $user_t["id"]; [/php] bin noch am überlegen ob und wie ich das vielleicht in eine function umwandel... EDIT: Die 2te Idee von Enrico hört sich auch interessant an, werd das mal probieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 31. Januar 2005 Autor Teilen Geschrieben 31. Januar 2005 EDIT: Die 2te Idee von Enrico hört sich auch interessant an, werd das mal probieren. funktioniert so leider nich Man gekommt damit nur den Inhalt der Parameter. Aber anlehnend an diese Idee hab ich jetzt ne Function gemacht: function SetQueryString($arReplace) { foreach($arReplace as $key => $val) $_GET[$key] = $val; $result = ""; foreach($_GET as $key => $val) $result .= $key."=".$val."&"; return $result; } ... $QString = SetQueryString(array("ac" => "edit", "id" => $user_t["id"])); [/php] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.