Page 1 sur 1

Mémoire de GET url de retour

Posté : 01 sept. 2014, 14:11
par foetus69
Hello !

Je reviens avec mes histoires de valeurs en GET. P'tit bug repéré (je vois pas encore l'incidence si incidence il y a)

Quand j'écris mon url en récupérant tous les GET ca me donne quelque chose de la sorte :

url.php?pseudo=foetus69&var1=1&var2=2

et comme je veux récupérer les valeurs de get je reconstruis mon lien sauf que ça m'injecte 2 fois la valeur pseudo (la valeur en mémoire et la valeur de la ligne correspondante)

url.php?pseudo=foetus69&var1=1&var2=2&pseudo=pseudodelalignesurvolée

Comment résoudre le souci ? Vous savez ?

Fée

Re: Mémoire de GET url de retour

Posté : 01 sept. 2014, 14:30
par toytoy
En fait si tu veux récupéré tous les GET tu peux utiliser $_SERVER['REQUEST_URI'] et à l'aide de explode tu délimité ta chaîne avec "?" et tu récupère la partie de droite

Re: Mémoire de GET url de retour

Posté : 01 sept. 2014, 15:42
par foetus69
Salut toytoy,

Bah ta soluce du foreach ($_GET as $key => $value) marche bien sauf que je vois pas comment gérer l'histoire du pseudo repassé dans les url :?

Comment changer une valeur dans une url ? si mon url est : url.php?var1=5&var2=8&var3=15

Comment demander le changement de var2 à partir du foreach $_GET ou même $_SERVER['REQUEST_URI'] ?

Chez moi ça me fait : var1=5&var2=8&var3=15&var2=nouvellevaleur

Merci de ton aide.

Re: Mémoire de GET url de retour

Posté : 01 sept. 2014, 16:43
par sirakawa
Il existe un simplissime
extract ($_GET);
qui fait un très bon travail.

Re: Mémoire de GET url de retour

Posté : 01 sept. 2014, 19:39
par toytoy
$url = "http://maPage.php?";

foreach ($_GET as $key => $value) {
   $value; //Tu changes ta valeur ici, ou ton test sur key par exemple si tu recherche la var pseudo ex:
   //if ($key == "pseudo") {
   //   $value = "toto";
   //}
   $url .= "&".$key."=".$value;
}

Re: Mémoire de GET url de retour

Posté : 01 sept. 2014, 20:51
par sirakawa
Comlmen procèdes-tu pour "récupérer tous les GET" ?

Re: Mémoire de GET url de retour

Posté : 02 sept. 2014, 09:38
par foetus69
Bonjour,

Je récupère comme toytoy a montré :

foreach ($_GET as $key => $value) {
...
}

Vu pour le extract ($_GET); merci sirakawa :)

Ok donc comme mes liens se trouve en bas de page je suis obligé de repasser chaque variable dans une moulinette de réécriture.

C'est bien ça qu'il faut comprendre ?

Fée

Re: Mémoire de GET url de retour

Posté : 02 sept. 2014, 11:03
par Aureusms
Il faut en effet ré-écrire les url à la volée. Créé pour cela une petite fonction :
<?php
function creeUrl ($lien = false,$tabLien=false) {
	//lien vide => return false
	if (empty($lien))
		return false;
	
	//pas de $_GET => return $lien
	if (empty($_GET))
		return $lien;
		
	$lien .= "?";
	foreach ($_GET as $id => $value) :
		//ici tu peux mettres des conditions
		//par exemple, tu veux que pseudo ne soit pas "mémorisé" mais réinjecté depuis une valeur à toi
		
		$lien .= $id."=";
		//est ce que le tableau tabLien existe, non vide, que la clef demandée existe et non vide
		//sinon on reprend la "value" mémorisée
		$lien .= (!empty($tabLien) && array_key_exists($id,$tabLien) && !empty($tabLien[$id]) ? $tabLien[$id] : $value;
		$lien .= "&";
	endforeach;
	
	//on retire le dernier "&"
	$lien = substr($lien,0,-1);
	return $lien;
}

//utilisation
$tabAToi = array ("pseudo" => "maman39");


//si ta page appellée est 
//url.php?pseudo=foetus69&var1=1&var2=2
?>
<a href="<?php echo creeUrl("url.php",$tabAToi); ?>" Title="Lien" >Lien</a>
Tu peux aussi testé si la value est vide ou pas,...
Je suis passé par un tableau $tabLien car c'est plus pratique si tu veux utiliser plusieurs variables personnelles. (en clair : $tabAToi = array("pseudo" => "maman25", "var1" => "38") sans oublier que les clefs des deux tableaux $_GET et $tabAToi doivent être identiques.

Ensuite, je ferai un "url rewriting" avec apache pour que cela soit plus "propre" mais essayes déjà cela pour t'entrainer