Plusieurs valeurs pour une variable

daporoty Messages postés 54 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 10 septembre 2012 - 23 oct. 2009 à 18:09
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 24 oct. 2009 à 10:49
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

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
23 oct. 2009 à 20:44
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à ;)
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
24 oct. 2009 à 10:49
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 -
0
Rejoignez-nous