8791 sujets

Développement web côté serveur, CMS

Bonjour,

Petite question toute bête mais qui me taraude...

On a une adresse du type suivant :

http://www.monsite.com/page.php?vartruc=value1&varpouet=value2 ... &varmachin=valueX

Je cherche à faire un script de ce genre :

si (la variable vartagada existe)
{alors je la mets à jour}
sinon
{je l'ajoute}

ce qui nous donne :
if (isset($_GET['vartagada'])) {
$vartagada="value";
$newurl=je mets à jour l'url je sais pas comment ;
}
else
{ $newurl=$REQUEST_URI."&vartagada=value";}

J'imagine que c'est tout bête, mais ça me pose quelques soucis...

Merci du coup de pouce !
Salut yakou32 Smiley cligne ,

il y a plusieurs façons de faire. Tu pourrais par exemple utiliser les regexp ou bien faire quelque chose comme :
<?php
$new_value = 33;
$new_url = $_SERVER['PHP_SELF'].'?';
if (!empty($_GET)) {  // Si l'url comporte des variables GET...
  	$nb_var = 0;
	if (!isset($_GET['vartagada'])) { // Si la variable vartagada n'existe pas...
		$new_url .= $_SERVER['QUERY_STRING'].'&amp;vartagada='.$new_value;
	} else {
		foreach ($_GET as $variable => $valeur) {
			if ($variable == 'vartagada') {
				$new_url .= 'vartagada='.$new_value;
			} else {
				$new_url .= $variable.'='.$valeur;
			}
			$nb_var += 1;
			if ($nb_var < count($_GET)) { // Tant qu'il reste des variables on rajoute &
				$new_url .= '&amp;';
			}
		}
	}
} else {
	$new_url .= 'vartagada='.$new_value;
}
?>

A+


Edit: et si tu as accès à php5 tu peux faire :
<?php
$new_value = 33;
$var_get = array();
$new_qrystr = array();
$new_var['vartagada'] = $new_value;
$new_url = $_SERVER['PHP_SELF'].'?';
if (!empty($_GET)) {
	$qrystr = $_SERVER['QUERY_STRING'];
	parse_str($qrystr, $var_get);
	$new_qrystr = array_merge($var_get, $new_var);
	$new_url .= http_build_query($new_qrystr, '', '&amp;');
} else {
	$new_url .= 'vartagada='.$new_value;
}
?>

Modifié par Heyoan (18 Apr 2008 - 12:01)
Super !

Merci beaucoup !
J'ai choisi la version en php4, que je pourrai sans doute réutiliser plus facilement.

En fait, je ne suis pas du tout familier avec la structure
foreach ($_GET as $variable => $valeur)


J'imagine que ça signifie quelque chose du genre : "Pour chaque variable d'URL (que nous nommerons $variable et dont la valeur sera $valeur : "
Donc je vais me renseigner sur cette structure ; on doit pouvoir faire plein de chose avec ça Smiley biggrin

Donc merci beaucoup : une fonction qui marche, et j'ai appris une nouvelle structure !!!
Modifié par yakou32 (19 Apr 2008 - 07:40)
yakou32 a écrit :

Donc merci beaucoup : une fonction qui marche, et j'ai appris une nouvelle structure !!!
Cool Smiley langue !

Pour préciser un peu le foreach permet de défiler toutes les occurrences d'un tableau (array) et de récupérer chacune des clés avec sa valeur.

Pour ce qui est de la version php5, la seule contrainte vient de la fonction http_build_query qui génère très facilement la query string de l'url (var1=1&var2=2&var3=3) à partir d'un tableau.

Bonne continuation Smiley smile !