Arrêter une structure conditionnelle lorsqu'une condition est réalisée

Résolu
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 - 17 juin 2010 à 13:50
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 - 4 juil. 2010 à 18:24
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

phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
19 juin 2010 à 04:06
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());

}



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


______________________________________________________________________
0
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 1
19 juin 2010 à 04:30
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 :-)
0
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
19 juin 2010 à 05:04
[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 !

______________________________________________________________________
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 1
19 juin 2010 à 13:24
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
0
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 1
28 juin 2010 à 19:46
Tiens mais j'y pense tu fais quoi de mes slot1, slot2 etc... dans ton code ?
0
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
3 juil. 2010 à 03:47
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


______________________________________________________________________
0
monoski Messages postés 132 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 13 mai 2013 1
4 juil. 2010 à 18:24
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
0
Rejoignez-nous