Aller au contenu

problème "if - else"


Antho03

Sujets conseillés

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.

Lien vers le commentaire
Partager sur d’autres sites

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;
};
};

Lien vers le commentaire
Partager sur d’autres sites

J'y pensais à ça, mais il est impossible d'imbriquer plusieurs "else" dans un seul "if" ?

Modifié par Portekoi
Pas besoin de citer le message précédent, on vient de le lire
Lien vers le commentaire
Partager sur d’autres sites

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 :)

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 ! :thumbsup:

Lien vers le commentaire
Partager sur d’autres sites

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 (B) 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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...