Condition sur plusieurs variables [résolu]

Petit nouveau ! | 9 Messages

05 avr. 2011, 10:30

Bonjour,
Je souhaite tester plusieurs variables en même temps avec une condition multiple :
Si $a = bleu
action 1
si $a = bleu et $b =bleu
action 2

J'ai essayé avec des elseif mais ça ne marche pas parce que si la 1ère condition est vérifiée, la vérification s'arrête. Voici la partie de mon code concernée :

// 1
if ($rep0=="oui")
{
echo '<div class="cadre1"><img src="img/perso/artistes_a.png"></div>';
}

// 1 & 2
elseif ($rep0=="oui" AND $rep1=="oui")
{
echo '<div class="cadre1"><img src="img/perso/artistes_a.png"></div>';
echo '<div class="cadre2"><img src="img/perso/artistes_b.png"></div>';
}

// 1 & 3
elseif ($rep0=="oui" AND $rep2=="oui")
{
echo '<div class="cadre1"><img src="img/perso/artistes_a.png"></div>';
echo '<div class="cadre3"><img src="img/perso/artistes_c.png"></div>';
}

// 1 & 4
elseif ($rep0=="oui" AND $rep3=="oui")
{
echo '<div class="cadre1"><img src="img/perso/artistes_a.png"></div>';
echo '<div class="cadre4"><img src="img/perso/artistes_d.png"></div>';
}

// 1 & 2 & 3
elseif ($rep0=="oui" AND $rep1=="oui" AND $rep2=="oui")
{
echo '<div class="cadre1"><img src="img/perso/artistes_a.png"></div>';
echo '<div class="cadre2"><img src="img/perso/artistes_b.png"></div>';
echo '<div class="cadre3"><img src="img/perso/artistes_c.png"></div>';
}

// 1 & 2 & 3 & 4
elseif ($rep0=="oui" AND $rep1=="oui" AND $rep2=="oui" AND $rep3=="oui")
{
echo '<div class="cadre1"><img src="img/perso/artistes_a.png"></div>';
echo '<div class="cadre2"><img src="img/perso/artistes_b.png"></div>';
echo '<div class="cadre3"><img src="img/perso/artistes_c.png"></div>';
echo '<div class="cadre4"><img src="img/perso/artistes_d.png"></div>';
}

// 2 & 3
elseif ($rep1=="oui" AND $rep2=="oui")
{
echo '<div class="cadre2"><img src="img/perso/artistes_b.png"></div>';
echo '<div class="cadre3"><img src="img/perso/artistes_c.png"></div>';
}

// 2 & 4
elseif ($rep1=="oui" AND $rep3=="oui")
{
echo '<div class="cadre2"><img src="img/perso/artistes_b.png"></div>';
echo '<div class="cadre4"><img src="img/perso/artistes_d.png"></div>';
}

// 2 & 3 & 4
elseif ($rep1=="oui" AND $rep2=="oui" AND $rep3=="oui")
{
echo '<div class="cadre2"><img src="img/perso/artistes_b.png"></div>';
echo '<div class="cadre3"><img src="img/perso/artistes_c.png"></div>';
echo '<div class="cadre4"><img src="img/perso/artistes_d.png"></div>';
}

// 3 & 4
elseif ($rep2=="oui" AND $rep3=="oui")
{
echo '<div class="cadre3"><img src="img/perso/artistes_c.png"></div>';
echo '<div class="cadre4"><img src="img/perso/artistes_d.png"></div>';
}

Où fais-je erreur ?
Un grand merci pour vos lumières ;-)
Modifié en dernier par abx66 le 08 avr. 2011, 14:06, modifié 1 fois.

Eléphant du PHP | 50 Messages

05 avr. 2011, 10:36

Bonjour,

Tu peux ajouter une condition
if $a == bleu et $b != bleu
action 1
else if $a == bleu et $b == bleu
action 2

Petit nouveau ! | 9 Messages

05 avr. 2011, 11:49

Super, merci, je suis vraiment trop stupide de ne pas y avoir pensé !
Merci encore !

ViPHP
ViPHP | 2577 Messages

05 avr. 2011, 13:21

Bonjour,

Pourquoi ne pas prendre les choses autrement :
if ($rep0=="oui")  echo '<div class="cadre1"><img src="img/perso/artistes_a.png"></div>'; 
if ($rep1=="oui")  echo '<div class="cadre2"><img src="img/perso/artistes_b.png"></div>'; 
if ($rep2=="oui")  echo '<div class="cadre3"><img src="img/perso/artistes_c.png"></div>'; 
if ($rep3=="oui")  echo '<div class="cadre4"><img src="img/perso/artistes_d.png"></div>'; 

Petit nouveau ! | 9 Messages

05 avr. 2011, 13:37

Bonjour,

Pourquoi ne pas prendre les choses autrement :
Bonjour,
Parce que j'ai besoin de vérifier jusqu'à 4 variables pour afficher de une à quatre de celles-ci, pas forcément dans l'ordre d'ailleurs.
Merci quand même de ton aide.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 avr. 2011, 22:23

Plutôt que d'ajouter des conditions inverses sur chaque test, il te suffit simplement d'organiser tes if() de la condition la plus stricte à celle qui l'est le moins :)
// d'abord les 4 critères
if ($rep0=="oui" AND $rep1=="oui" AND $rep2=="oui" AND $rep3=="oui") 
 ...
// puis les 3 critères
elseif ($rep0=="oui" AND $rep1=="oui" AND $rep2=="oui") 
 ...
elseif ($rep0=="oui" AND $rep1=="oui" AND $rep3=="oui") 
 ...
elseif ($rep0=="oui" AND $rep2=="oui" AND $rep3=="oui") 
...
elseif ($rep1=="oui" AND $rep2=="oui" AND $rep3=="oui") 
...
// puis les 2 critères
...
En effet, dès que l'un des if est vérifié, php l'exécute et ignore les suivants. En ordonnant ainsi tes conditions tu es sur qu'il ne rentre que dans la bonne condition :)

Ps : en php, plutôt que d'utiliser l'opérateur "AND", préfères l'opérateur "&&" ... ils sont légèrement différent (priorité) et à moins de savoir précisément pourquoi tu utilises le AND, il vaut mieux l'éviter car cela peut générer des erreurs difficile à identifier :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...