Plusieurs valeurs pour une variable

Signaler
Messages postés
54
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
10 septembre 2012
-
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
-
Bonjour.

J'ai une page php qui exploite les données d'une base mysql.
Quand je veux afficher les entrées de la base pour laquelle la variable 'pays' est renseignée par la valeur "Grecque", l'adresse de la page est : page.php?pays=Grecque
Si j'utilise cette adresse dans un lien depuis une autre page (Grecque), ca fonctionne, évidemment.
En revanche si je souhaite afficher par le lien html précédent les entrées de la base qui correspondent à la valeur "Grecque" ET "Romaine" pour la variable 'pays', comment faut il écrire le lien ?

C'est simple mais je ne sais pas si j'ai été clair.
Merci par avance.

DapORoty

2 réponses

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
17
Salut,

Il n'est pas possible de passer plusieurs valeurs à une même variable dans l'url.
Tu es obligé de bidouiller, et de faire un peu la sauce qui t'arrange. Il est possible de faire "comme si" on passait plusieurs valeurs à une variable, par exemple en séparant les valeurs par des virgules :
page.php?pays=Grecque,Romaine


Il faut alors récupérer la variable $_GET['pays'], l'exploser avec le délimiteur , (virgule) et traiter le tableau ainsi obtenu :
$liste_pays = explode(',', $_GET['pays']);


Tu peux aussi numéroter plusieurs variables :
page.php?pays1=Grecque&pays2=Romaine


Il faut ensuite récupérer les variables qui commencent par pays* :
$liste_pays = array();
foreach ($_GET as $k => $v) {
  if (substr($k, 0, 4) == 'pays' {
    $liste_pays[] = $v;
  }
}


En fait, il n'y a pas de solution déterminée, c'est à toi de faire comme il te plait, comme tu le sens, suivant ce qui est le plus simple, le plus compréhensible, etc...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,

... ou utiliser un tableau :

echo '[page.php?pays='.urlencode(serialize(array('Grecque', 'Romaine'))).' Grecque, Romaine]';


Que tu récupères ensuite comme cela :
$pays = unserialize(urldecode($_GET['pays']));


Attention cependant : si tu as de nombreux pays à passer l'url risque d'être très longue.

Comme le dit Neige il n'y a pas de solution déterminée; tableau, explode, multiplication des variables, etc... chacun aura ses avantages et ses inconvénients et le choix dépendra également du reste de ton code.

Cordialement,


Kohntark -