geloescht_JesterDay Geschrieben 31. Januar 2005 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
kills Geschrieben 31. Januar 2005 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
etreu Geschrieben 31. Januar 2005 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
geloescht_JesterDay Geschrieben 31. Januar 2005 Autor 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
geloescht_JesterDay Geschrieben 31. Januar 2005 Autor 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
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.