[RESOLU] Test de la même variable plusieurs fois dans un if

Eléphanteau du PHP | 23 Messages

18 avr. 2016, 10:24

Bonjour à vous tous,

Je me doute fortement que ma question est... des plus basique. Je pense que si je ne trouve pas la réponse à cette dernière, c'est que cela vient d'un soucis de formulation. Mais comme je le dis, je trouve pas la réponse, alors voici ma question.

J'ai une variable de type texte qui peut prendre une dizaine de forme prédéterminée (issue de la value d'un radiobutton de formulaire). J'ai une structure conditionnelle de type if, elseif et else.

Je souhaite (tout simplement) rentrer dans mon premier if si cette variable de type texte correspond à quatre formes de texte prédéterminé. Je pense que je dois gérer cela avec un simple or ou ||, mais impossible de trouver la bonne manière d'écrire cette ligne.

$valeur_form est récupéré de cette manière :
$valeur_form = $_POST["init"];
J'ai tenté quelques formes comme :
if(($valeur_form == "recuperation_page_1") || ($valeur_form == "recuperation_page_2") || ($valeur_form == "recuperation_page_3") || ($valeur_form == "recuperation_page_4")){
ou encore
if($valeur_form == "recuperation_page_1" || "recuperation_page_2" || "recuperation_page_3" || "recuperation_page_4"){
Mais soit cela n'est pas pris en compte, soit cela déclenche une erreur.... :?

Merci par avance pour vos réponses.

Mammouth du PHP | 2703 Messages

18 avr. 2016, 14:08

la première est correcte. si cela ne fonctionne pas, il faut afficher $valeur_form pour vérifier que cela affiche bien ce qui est attendu.

Eléphanteau du PHP | 23 Messages

18 avr. 2016, 20:24

Salut or 1,

Ok, donc je n'étais pas si loin de la "vérité" que cela, c'est déjà une bonne nouvelle en soit.

J'ai fais le test d'affichage de la variable, cette dernière est bien celle attendue.

J'ai cette erreur à chaque fois que je tente d'appeler une autre variable que la première :
Fatal error: Call to undefined function  () in /home/bergerauza/www/Autoffiliate/init_form.php on line 25
Je continue à rechercher où se trouve mon erreur.

Merci à toi.

Eléphanteau du PHP | 23 Messages

18 avr. 2016, 20:34

Alors la... quelque chose m'échappe complètement.

Cela fonctionne.

Ce qui m'échappe, c'est comment j'ai "réussi" à faire fonctionner le tout. J'ai simplement fais des couper / coller de chaque test... J'ai repris chaque fois le dernier test. Un couper, et un coller en première position. Et maintenant, tout fonctionne...

J'admets que d'un côté je suis content, et d'un autre, pas du tout. Comment cela pourrait s'expliquer techniquement parlant ?

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

19 avr. 2016, 12:25

Bonjour,

Difficile de dire comment tu as fait, mais pour le principe, pour que ton if fonctionne tu dois effectivement avoir une structure sous cette forme
if ( condition1 || condition2 || condition3 ) {
  ...
}
elseif ( condition4 || condition5 ) {
  ...
}
else {
  ...
}
Chaque condition est indépendante des autres, tu peux ainsi avoir comme condition1 le test $valeur_form == "recuperation_page_1", puis comme condition2 le test $valeur_form == "recuperation_page_2" etc.

Les parenthèses autour de chaque conditions ne sont pas utiles ici et à mon sens alourdissent la lisibilité. Celles-ci seraient en revanche nécessaires dès le moment où tu auras besoin de gérer des priorités entre des && et des ||, mais si tu n'as que des && ou que des ||, elles ne servent pas

Quant à la fatal error, il faut voir le code de la ligne 25 (et éventuellement de la 24) pour trouver ce qui pèche...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...