Veröffentlicht 31. Januar 200520 j 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?
31. Januar 200520 j 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
31. Januar 200520 j 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.
31. Januar 200520 j 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.
31. Januar 200520 j 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]
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.