Antho03 Posté 12 Avril 2010 Posté 12 Avril 2010 Bonjour à tous, Je demande votre aide car j'ai un petit soucis de codage : mon code : if (mail($cible, $objet, $contenu, $headers) && ($nl == "oui")) { mysql_query("insert into spip_nl (id, Nom, Prenom, email) values('', '".$nom."', '".$prenom."', '".$email."')"); echo '<p style="padding:8px 0 8px 5px;">'.$message_envoye1.'</p>'."\n"; } else { echo '<p style="padding:8px 0 8px 5px;">'.$message_envoye2.'</p>'."\n"; } else { echo '<p>'.$message_non_envoye.'</p>'."\n\n\n"; } } else { // une des 3 variables (ou plus) est vide ... echo '<p style="padding-left:5px;">'.$message_formulaire_invalide.'</p>'."\n"; $err_formulaire = true; }; }; Quand je mets ces lignes dans mon code, l'erreur suivante est retournée : Parse error: parse error, unexpected T_ELSE in D:... : eval()'d code on line 153 La ligne 153 correspond à la ligne où se situe mon second "else". Si j'enlève cet "else", le code est bon. Je suis sur que ce n'est pas grand chose mais n'étant pas spécialiste du PHP, je bloque. Merci pour vos lumières.
Portekoi Posté 12 Avril 2010 Posté 12 Avril 2010 Bonjour, il te manque un if quelque part... if (mail($cible, $objet, $contenu, $headers) && ($nl == "oui")) { mysql_query("insert into spip_nl (id, Nom, Prenom, email) values('', '".$nom."', '".$prenom."', '".$email."')"); echo '<p style="padding:8px 0 8px 5px;">'.$message_envoye1.'</p>'."\n"; } else { echo '<p style="padding:8px 0 8px 5px;">'.$message_envoye2.'</p>'."\n"; }//Fin du IF mais tu rajoutes ensuite du code sans conditions...else{echo '<p>'.$message_non_envoye.'</p>'."\n\n\n";}}else{// une des 3 variables (ou plus) est vide ...echo '<p style="padding-left:5px;">'.$message_formulaire_invalide.'</p>'."\n";$err_formulaire = true;};};
Antho03 Posté 12 Avril 2010 Auteur Posté 12 Avril 2010 (modifié) J'y pensais à ça, mais il est impossible d'imbriquer plusieurs "else" dans un seul "if" ? Modifié 12 Avril 2010 par Portekoi Pas besoin de citer le message précédent, on vient de le lire
Portekoi Posté 12 Avril 2010 Posté 12 Avril 2010 Biensur que oui mais tu dois mettre des clauses Exemples : <?if(condition){ if(condition11){ }else{ }}else if(condition2){ if(condition22){ }else{ }}else if(condition3){ if(condition33){ }else{ }}?> Compare avec ton code, tu verras qu'il te manque des conditions
jcaron Posté 12 Avril 2010 Posté 12 Avril 2010 Ton code revient à dire: si (condition) alors (faire ça) sinon (faire autre chose) sinon (faire autre chose encore) Forcément, le deuxième "sinon" ne veut pas dire grand chose. Jacques.
Antho03 Posté 12 Avril 2010 Auteur Posté 12 Avril 2010 J'ai modifié mon code suite à vos conseils : if ($nl == "oui") { mysql_query("insert into spip_nl (id, Nom, Prenom, email) values('', '".$nom."', '".$prenom."', '".$email."')");mail($cible, $objet, $contenu, $headers); echo '<p style="padding:5px 0 8px 5px;">'.$message_envoye1.'</p>'."\n"; } else if ($nl != "oui") { mail($cible, $objet, $contenu, $headers); echo '<p style="padding:5px 0 8px 5px;">'.$message_envoye2.'</p>'."\n"; } else { echo '<p style="padding:5px 0 8px 5px;">'.$message_non_envoye.'</p>'."\n\n\n"; } } else { // une des 3 variables (ou plus) est vide ... echo '<p style="padding-left:5px; color:#BF0D0D">'.$message_formulaire_invalide.'</p>'."\n"; $err_formulaire = true; }; }; et tout fonctionne comme je veux. Merci beaucoup pour votre aide !
jcaron Posté 12 Avril 2010 Posté 12 Avril 2010 Euh... Comme dans le premier extrait que tu avais donné, tu donnes la fin d'un truc dont on n'a pas le début. Ce serait aussi nettement plus lisible et compréhensible si c'était correctement "indenté" (ça permet de voir rapidement les {} et les if/else qui vont ensemble). Il y a plusieurs règles pour ça, mais ma favorite, la plus lisible, c'est que le if, le else, et les {} qui vont avec doivent être au même niveau, et que tu augmentes d'un niveau à l'intérieur. Ca donnerait donc: if ($nl == "oui") { mysql_query("insert into spip_nl (id, Nom, Prenom, email) values('', '".$nom."', '".$prenom."', '".$email."')"); mail($cible, $objet, $contenu, $headers); echo '<p style="padding:5px 0 8px 5px;">'.$message_envoye1.'</p>'."\n"; } else if ($nl != "oui") { mail($cible, $objet, $contenu, $headers); echo '<p style="padding:5px 0 8px 5px;">'.$message_envoye2.'</p>'."\n"; } else { echo '<p style="padding:5px 0 8px 5px;">'.$message_non_envoye.'</p>'."\n\n\n"; } } else { // une des 3 variables (ou plus) est vide ... echo '<p style="padding-left:5px; color:#BF0D0D">'.$message_formulaire_invalide.'</p>'."\n"; $err_formulaire = true; } } Et là, le début de ton code veut dire: si (condition) alors (faire quelque chose) sinon si (même condition est fausse) alors (faire autre chose) sinon (faire encore autre chose) Tu comprends bien que le dernier cas de figure ne peut jamais arriver. C'est un peu comme si tu disais si (pile) alors (A) sinon si (face) alors ( sinon ©... Et de surcroît, ça ne fait pas du tout ce que tu voudrais que ça fasse, puisque tu ne testes plus de retour de mail() pour dire si le message a été envoyé ou pas. Ce serait donc plutôt: if (mail($cible, $objet, $contenu, $headers)) { if ($nl == "oui") { mysql_query("insert into spip_nl (id, Nom, Prenom, email) values('', '".$nom."', '".$prenom."', '".$email."')"); echo '<p style="padding:5px 0 8px 5px;">'.$message_envoye1.'</p>'."\n"; } else { echo '<p style="padding:5px 0 8px 5px;">'.$message_envoye2.'</p>'."\n"; } } else { echo '<p style="padding:5px 0 8px 5px;">'.$message_non_envoye.'</p>'."\n\n\n"; } Je te passe le fait qu'il faudrait que tu penses à escaper les données avant de les mettre dans une requête SQL (mysql_real_escape_string doit devenir ton ami). Jacques.
Antho03 Posté 13 Avril 2010 Auteur Posté 13 Avril 2010 J'ai utilisé ton code et escapé les données. Tout est nikel. Merci beaucoup pour ta contribution.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant