monoski
Messages postés132Date d'inscriptionmercredi 15 avril 2009StatutMembreDernière intervention13 mai 2013
-
17 juin 2010 à 13:50
monoski
Messages postés132Date d'inscriptionmercredi 15 avril 2009StatutMembreDernière intervention13 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 !
A voir également:
Arrêter une structure conditionnelle lorsqu'une condition est réalisée
phpAnonyme
Messages postés392Date d'inscriptionmercredi 28 octobre 2009StatutMembreDernière intervention23 mars 201255 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());
monoski
Messages postés132Date d'inscriptionmercredi 15 avril 2009StatutMembreDernière intervention13 mai 20131 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 ?
phpAnonyme
Messages postés392Date d'inscriptionmercredi 28 octobre 2009StatutMembreDernière intervention23 mars 201255 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...
phpAnonyme
Messages postés392Date d'inscriptionmercredi 28 octobre 2009StatutMembreDernière intervention23 mars 201255 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