Arrêter une structure conditionnelle lorsqu'une condition est réalisée [Résolu]

Signaler
Messages postés
132
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
13 mai 2013
-
monoski
Messages postés
132
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
13 mai 2013
-
Voici mon code :
if ($fetch3['type'] == main or $main == no) 
{
if ($affi3['main'] != no)
{
if ($affi3['slot1']== no)
{
mysql_query("UPDATE elfik_user SET slot1='$mainremp' WHERE username='$pseudo'") or die(mysql_error());
}

elseif($affi3['slot2']== no)
{
mysql_query("UPDATE elfik_user SET slot2='$mainremp' WHERE username='$pseudo'") or die(mysql_error());
}

elseif($affi3['slot3']== no)
{
mysql_query("UPDATE elfik_user SET slot3='$mainremp' WHERE username='$pseudo'") or die(mysql_error());
}
elseif($affi3['slot4']== no)
{
mysql_query("UPDATE elfik_user SET slot4='$mainremp' WHERE username='$pseudo'") or die(mysql_error());
}
elseif($affi3['slot5']== no)
{
mysql_query("UPDATE elfik_user SET slot5='$mainremp' WHERE username='$pseudo'") or die(mysql_error());
}
elseif($affi3['slot6']== no)
{
mysql_query("UPDATE elfik_user SET slot6='$mainremp' WHERE username='$pseudo'") or die(mysql_error());
}
elseif($affi3['slot7']== no)
{
mysql_query("UPDATE elfik_user SET slot7='$mainremp' WHERE username='$pseudo'") or die(mysql_error());
}
elseif($affi3['slot8']== no)
{
mysql_query("UPDATE elfik_user SET slot8='$mainremp' WHERE username='$pseudo'") or die(mysql_error());
}
elseif($affi3['slot9']== no)
{
mysql_query("UPDATE elfik_user SET slot9='$mainremp' WHERE username='$pseudo'") or die(mysql_error());
}
elseif($affi3['slot10']== no)
{
mysql_query("UPDATE elfik_user SET slot10='$mainremp' WHERE username='$pseudo'") or die(mysql_error());
}
}
mysql_query("UPDATE elfik_user SET main='$main' WHERE username='$pseudo'") or die(mysql_error());
}



Je pensais qu'en utilisant elseif comme ça, lorsque la condition serait remplie, les autres boucles cesseraient d'être testée. Mais ce n'est pas le cas, or je recherche à arrêter ma structure conditionnelle dès lors qu'une des conditions est remplie.

Quelque chose m'échappe, qu'est-ce que c'est ?

Merci pour votre lecture !

8 réponses

Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
23
Salut,

le mieux c'est d'utiliser break, mais dans ce cas faut repenser le code :

if ($fetch3['type'] == main or $main == no)
{
if ($affi3['main'] != no)
{

foreach($affi3 as $items => $val)
{
if($items!='main' && $val=='no')
{
mysql_query("UPDATE elfik_user SET ".$items."='$mainremp' WHERE username='$pseudo'") or die(mysql_error());
break;
}
}
}
mysql_query("UPDATE elfik_user SET main='$main' WHERE username='$pseudo'") or die(mysql_error());

}



______________________________________________________________________
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
23
PS: il y a d guillemets simples dans ton code dans la requête sql : '$mainremp', cela risque de poser pb !


______________________________________________________________________
Messages postés
132
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
13 mai 2013
1
Mais en théorie ce que j'ai fais avec les elseif ça devrait pas arrêter l'enchainement dès lors qu'une des conditions est remplie ?

Parce que si oui mon bug vient d'ailleurs...

Hum je suis pas un habitué de la programmation, j'avais jamais vu l'utilisation de foreach et de break, je sais que je demande beaucoup, mais pourrais tu me détailler ton code ?

C'est très gentil à toi en tout cas :-)
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
23
[quote=Tu]Mais en théorie ce que j'ai fais avec les elseif ça devrait pas arrêter l'enchainement dès lors qu'une des conditions est remplie ? /quoteNon monsieur ! En gros, chaque condition sera testée : si la condition est remplie alors on entre dans celle-ci, sinon le script passe au suivant et teste à nouveau la nouvelle condition. Ceci s'applique également pour : if-else, switch...
Pour interrompre une condition, on peut utiliser : break(dans les structures for, foreach, while, do-while ou switch), exit ou die(MAIS arrête carrément le script en cours), return(dans le cadre des fonctions).


Foreach parcours un tableau, on peut dire que c'est la boucle faite pour les tableaux(Lien : utilisation de foreach), ton code utilise les tableaux dont $affi3, et ce qu'on observe c'est qu'il y a des éléments récurrents(dans les if-elseif et dans mysql_query() qui utilise les champs de même clé que celle utilisé par le tableau $affi3).

En gros c'est la même chose écrite avec les elseif MAIS EN BEAUCOUP plus simple !

Le script parcours ton tableau tout seul comme un grand, mais agira uniquement si la condition if dans celle-ci est remplie, c-a-d, quand une valeur du tableau sera égale à 'no'. Si la condition est remplie, le script exécute la requête et sortira du foreach par l'intermédiare de break et continue son chemin...

Désolé, je peux pas expliqué plus simplement !

______________________________________________________________________
Messages postés
132
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
13 mai 2013
1
Merci c'est très complet. Je finis de coder la partie Ajax de mon site et je me remet à ce pan de mon interface.

En tout cas 1000 merci pour tes précisions.

Je te souhaite une excellente journée ! J'ai presque pas dormi perso, toi tu dois être entrain de le faire :p
Messages postés
132
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
13 mai 2013
1
Tiens mais j'y pense tu fais quoi de mes slot1, slot2 etc... dans ton code ?
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
23
Si tu as définit le tableau $affi3 en amont, ce qui semble avoir été fait vu ton code d'origine, et si tu as cliqué le lien qui t'explique foreach, et si tu as compris le fonctionnement de foreach, et si tu as testé le code...tu ne devrais même pas me poser cette question


______________________________________________________________________
Messages postés
132
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
13 mai 2013
1
Ouaip je vais revoir tout ça, désolé, juste que j'avais cru comprendre mais qu'au final ça n'a pas fonctionné.

Merci de ton aide je valide ! :p