Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PHP: Parameter - Query String

Empfohlene Antworten

Veröffentlicht

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?

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

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.

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.