PHP : Paramètres URL dans un ordre quelconque

Leyry Hynemonth

a découvert une nouvelle définition de l'ennui.
Club iGen
18 Décembre 2004
4 143
261
Nîmes
www.lyhn.fr
Bonjour !

Voilà, j'ai encore besoin de vous...

J'ai une page.php qui au départ n'a aucun paramètre.

Au cours de la navigation, le visiteur peut avoir besoin d'un supplément, il clique sur un lien, qui rajoute le paramètre critère1=25; par exemple.

MAIS : il y à plusieurs critères possibles, et ils ne sont pas utilisés dans un ordre définit. Et bien sûr, la valeur pour chaque critère est loin d'être fixe.

Donc, une url de la forme ~page.php?critère1=25&critère2=67 est très problématique, car coté script PHP, je ne sais pas si je dois mettre un ? ou un & dans ce que je rajoute à l'URL. (Car je ne sais pas s'il existe déjà un premier paramètre, ou si celui que je suis en train de rajouter est second ou autre).

J'avais déjà rencontré ce cas, mais avec moins de paramètres possibles.
Donc j'avais traité tous les cas possibles.
Mais là... non quoi !:mad:

Alors, comment faire pour se débarrasser de la contrainte du [?|&] ?

Merci pour vos avis avisés. :zen:

---------- Nouveau message ajouté à 17h43 ---------- Le message précédent a été envoyé à 16h30 ----------

Réponse à moi-même en cours :rateau:

---------- Nouveau message ajouté à 17h52 ---------- Le message précédent a été envoyé à 17h43 ----------

Bon, situation de départ du genre


<a href="<? echo $_SERVER['REQUEST_URI'];>&user=Tratampignon">Tratampignon</a>


Méthode HouseMade :

Cela consiste à récupérer l'URL du navigateur à un moment T, et à faire passer cet url dans un fonction qui détermine s'il y à déjà des paramètres dans cette URL ou pas. Dans un cas comme dans l'autre, la fonction renvoi le caractère correct qu'il faut intercaler entre l'URL actuelle du navigateur et le prochain argument qui sera ajouté lorsque l'on clique sur un lien.


Naissance d'une nouvelle fonction :
Bloc de code:
function nextArgumentIs($url)
	{
	$verif = strstr($url, '?'); 
	if ($verif)
		{ return "&";}
		else { return "?";}
	}


Et dans la même situation :

Bloc de code:
<?php-quelque-part-dans-l'entête...
    $url = $_SERVER['REQUEST_URI'].nextArgumentIs($_SERVER['REQUEST_URI']);
?>

Bloc de code:
<html-plus-bas-dans-mes-listes...>
   <a href="<? echo $url;>user=Tratampignon">Tratampignon</a>
</html>

Du coup, j'ai ce que je voulais sans cassage de tête programmique : page.php?order=action&user=test&ipUser=xx0.37.11.7
 
Ha... évidement... quand on peut faire quelque chose du genre $_get["user"], c'est qu'il y à un tableau superglobal derrière..... :rateau:
Et donc pour savoir s'il y à des paramètres dans ce tableau, tester son existence ou bien son nombre de lignes.

Sauf que là, haut, dans ma citrouille, le lien array<-->$_get[...] n'existait pas avant ton intervention.

Laisse moi deviner, ça fait pareil avec $_POST, $_COOKIE et $_SESSION ? :D