Version complète: sur le forum Webmaster Hub : if else : je m'emmele
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
Lentreprenaute
Bonjour,



je veux verifier l'existence de mes variables passé par l'url
exemple : index.php?cat=xxx

et faire les includes en fonction :

si cat = (include _index.php)

si site = (include _site.php)

si voir = (include _voir.php)

si aucune variable ou autre variable que celle ci-dessus et si les var site & voir sont mise "à la main : site=xxx& voir=xxx" toujours inclure _index.php

Florent
Anonymus
Bonjour,

Pour vérifier l'existence d'une variable passée par url : $_POST.

donc :

CITATION
if ($_POST['cat']==){
//code pour cat
}
if ($_POST['site']==){
//code pour site
}
if ($_POST['voir']==){
//code pour voir
}

Attention, ce n'est pas pareil que :

CITATION
if ($_POST['cat']==){
//code pour cat
}
elseif ($_POST['site']==){
//code pour site
}
elseif ($_POST['voir']==){
//code pour voir
}
else{
// code autrement.
}


Dans le premier cas, on teste toutes les variables. Dans le deuxieme, on teste la premiere, et si c'est pas bon, on teste la seconde, et si c'est pas bon on teste la troisieme,et si c'est pas bon, on fait le code par défaut.

Pour toi, si j'ai bien compris, ca devrait donner :

CITATION
if ($_POST["site"]==...){
// code pour site
include("include_site.php");
}
elseif ($_POST["voir"]){
//code pour voir
include("include_voir.php");

}
else{
// code dans le cas où site n'est pas bon, ET voir n'est pas bon.
include("include_cat.php");
}


Mais je ne suis pas sûr d'avoir compris sad.gif

Anonymus.
Lentreprenaute
Salut anonymus,

a partir deuxieme exemple
$_POST['cat']==?? ,

je m'interroge, je n'ai pas besoin du "==" ?

si je veux verifier l'existence de mes variables (est ce que je dois lui coller "==true") , j'ai corrigé l'exemple deux en les supprimant, dis moi si c'est bon comme ca! merci

CODE
if ($_POST['cat']){
//code pour cat
}
elseif ($_POST['site']){
//code pour site
}
elseif ($_POST['voir']){
//code pour voir
}

/*je verifie en cas de manip à la main pour eviter un plantage
que si les variables sont associés je mets cat */

elseif ($_POST['voir'] && $_POST['site'] ){
//code pour cat
}
elseif ($_POST['cat'] && $_POST['site'] ){
//code pour cat
}
elseif ($_POST['cat'] && $_POST['voir'] ){
//code pour cat
}

else{
// code pour cat
}


en gros le code pour cat est celui par defaut sauf si "voir & site" sont renseignés.
Tu me comprends toujours biggrin.gif

Florent
Anonymus
Prenons ceci :
CITATION
if ($_POST['cat']){
//code pour cat
}
elseif ($_POST['site']){
//code pour site
}
elseif ($_POST['voir']){
//code pour voir
}

cela verifie d'abord cat. Donc, c'est pas bon.
Il te faut d'abord vérifier site, puis voir (ou l'inverse), et SEULEMENT ENSUITE, tu verifies cat.
Pour ton code, il est bon, sauf si la valeur de voir (par exemple, est FALSE. Autrement dit, quelqu'un qui rentre voir=false. Ca va interpreter la valeur comme fausse, et donc voir n'existera pas, alors qu'elle existe.
Autre exemple (pour changer), si site=0, alors site egal quelque chose. On est d'accord. Pourtant, ca sera interprété comme faux, puisque php interprete le 0 comme le booleen. Donc, pour résumer, il te faudrait écrire :
CITATION
if ($_POST['voir']){
//code pour voir
}
elseif ($_POST['site']){
//code pour site
}
else{

//code tous les AUTRES cas. Aussi bien cat qu'un autre.

}


Pour mieux faire, et pour prendre en compte les 2 remarques que j'ai faites plus haut, tu peux mettre :

CITATION
if (isset($_POST['voir'])){
//code pour voir
}
elseif (isset($_POST['site'])){
//code pour site
}
else{

//code tous les AUTRES cas. Aussi bien cat qu'un autre.

}


Qu'on soit bien d'accord :
- si voir existe, on execute le code de voir, et c'est tout.
sinon :
- si site existe, on execute le code de site, et c'est tout.
sinon :
- on execute le code standard.

C'est ca ! ?
on s'est compris ? smile.gif
Lentreprenaute
C'est ca smile.gif
et on s'est bien compris biggrin.gif

merci Anonymus
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.