URL-Generierung mit while(list() = each($_GET))

dsturm

Erfahrenes Mitglied
Hallo,

habe mir zur Vereinfachung beim Link-generieren mit einer Funktion weiterhelfen wollen, die einen String erstellt, in der alle bereits gesetzten $_GET-vars aufgelistet werden.

Das ganze sieht so aus:

PHP:
function getvar_string() {
				
	$string = "?"; $i = 0;

	while (list($name, $value) = each($_GET)) {
		
		$string .= $name."=".$value; $i++;
		if ($i < count($_GET)) { $string .= '&'; };

	}
	return $string;
				
}

Das ganze funktioniert, aber halt auch nur beim ersten Aufruf... Kann mir einer erklären, wieso er beim 2. Aufruf aufwärts mir keine $_GET Variablen mitlistet?
 
Wozu soll das gut sein? Du erzeugst zusätzlich "manuell" eine schon vorhandene Variable, erachte ich für wenig sinnvoll.

PHP:
$_SERVER['QUERY_STRING']
 
Ok, diese Variable war mir nicht bekannt. Man lernt halt immer wieder hinzu...

Danke Dir!

Allerdings: Ich hatte durch die Funktion mit vor Get-Variablen durch Übergabe des Namens und unset() zu löschen... Das klappt leider gar nicht. Jemand ne Idee?
 
Zuletzt bearbeitet:
^^ Ok, was ich mit meiner Funktion vorhatte war:

Wenn ich ein Link generieren möchte, dem ich zu den schon vorhandenen $_GET-Variablen eine Sortierungs-Variable hinzufüge, will ich das zB so machen können:

PHP:
echo '<a href="'.getvar_string('sort').'&sort=Name">'; ...

Der übergebene Wert soll verhindern, dass, falls isset($_GET['sort']), diese nochmal zur URL hinzugfügt wird... Daher wollte ich in der Funktion zuerst diese Variable, hier $_GET['sort'], löschen und dann die $_SERVER['QUERY_STRING'] zurückgeben.

Habe das jetzt so gemacht, das ich mir in der Funktion $_SERVER['QUERY_STRING'] als string setze, und dort die übergeben Variable rauskürze - unelegant, aber ich habe keine andere Lösung entdeckt.

Ich hoffe ich konnte mein Problem erörtern. ^^
 
Zurück