Fin de script en cas d'erreur de saisir

Résolu/Fermé
thibault_developper Messages postés 35 Date d'inscription lundi 6 octobre 2008 Statut Membre Dernière intervention 25 juin 2010 - 4 nov. 2008 à 10:55
thibault_developper Messages postés 35 Date d'inscription lundi 6 octobre 2008 Statut Membre Dernière intervention 25 juin 2010 - 4 nov. 2008 à 16:35
Bonjour,
J'envoie un mail à partir d'un formulaire, au submit du formulaire, j'execute une fonction de controle des champs saisie,et si tout est correct après la fonction l'action du formulaire se déroule, mais par exemple si le champ nom est vide, il ne faudrait pas que l'action du formulaire se fasse, et que je reste sur ma page contact. Si vous avez une solution merci...

script :
<form action="sendmail.php" method="post" id="formulaire" name="contact">
.........
<input type="submit" name="envoyer" value="Envoyer" class="submit" onClick="controle()">
</form>

ma fonction de controle :
function controle()
{
if(contact.nom.value=='<?php echo $defaultnom; ?>' || contact.nom.value=='')
{
alert("La saisie des champs marqués d'une étoile sont obligatoire :");
contact.nom.style.backgroundColor = "FFCC00";
}
}


ma page d'envoi du mail si la fonction ne retourne pas d'erreur :

<?php
$destinataire = 'revel.thibault@hotmail.fr';
$expediteur = $_POST['email'];
$message = $_POST['message'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$message = wordwrap($message, 70);
$subject = 'Formulaire site LCC';
$headers = 'From: '.$expediteur." - ".$nom." ".$prenom;
$mail_sent = mail($destinataire, $subject, $message, $headers);
if($mail_sent)
{
?>
<script language="javascript" type="text/javascript">
document.location.replace("merci.html");
</script>
<?php

} else {
?>
<script language="javascript">
alert("Attention votre mail n'a pas été transmis correctement !");
document.location.replace("contact.php");
</script>
<?php
}
?>
A voir également:

5 réponses

Bonjour

Il faut mettre le contrôle dans la balise FORM et non pas dans le bouton :
<form action="sendmail.php" method="post" id="formulaire" name="contact" onSubmit="return controle();">

Dans ta fonction javascript controle, tu fais return true ou return false selon que tu décides d'envoyer le formulaire ou non
0
thibault_developper Messages postés 35 Date d'inscription lundi 6 octobre 2008 Statut Membre Dernière intervention 25 juin 2010 5
4 nov. 2008 à 11:48
Merci pour ta reponse mais le script m'envoie quand meme le mail alors que je retourne false, est ce que c'est normal ?

<form action="sendmail.php" method="post" id="formulaire" name="contact" onSubmit="controle();">



function controle()
{
if(contact.nom.value=='<?php echo $defaultnom; ?>' || contact.nom.value=='')
{
alert("La saisie des champs marqués d'une étoile sont obligatoire :");
contact.nom.style.backgroundColor = "FFCC00";
return(false);
} else if(contact.email.value=='<?php echo $defaultemail; ?>' || contact.email.value=='')

{
alert("La saisie des champs marqués d'une étoile sont obligatoire :");
contact.email.style.backgroundColor = "FFCC00";
return(false);
} else
{
return(true);
}
}
0
Non, ça n'est pas normal. Fais un alert ("1"), alert("2") etc.. avant chaque sortie de ta fonction pour voir par où tu en sors.
0
thibault_developper Messages postés 35 Date d'inscription lundi 6 octobre 2008 Statut Membre Dernière intervention 25 juin 2010 5
4 nov. 2008 à 14:43
L'alert 1 s'affiche bien, mais l'action du formulaire se fait tout de meme, je vois pas d'ou vient l'erreur ..

function controle()
{
if(contact.nom.value=='<?php echo $defaultnom; ?>' || contact.nom.value=='')
{
alert("La saisie des champs marqués d'une étoile sont obligatoire :");
alert("1");
contact.nom.style.backgroundColor = "FFCC00";
return(false);
} else if(contact.email.value=='<?php echo $defaultemail; ?>' || contact.email.value=='')

{
alert("La saisie des champs marqués d'une étoile sont obligatoire :");
contact.email.style.backgroundColor = "FFCC00";
alert("2");
return(false);
} else
{
alert("3");
return(true);
}
}
0

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

Posez votre question
thibault_developper Messages postés 35 Date d'inscription lundi 6 octobre 2008 Statut Membre Dernière intervention 25 juin 2010 5
4 nov. 2008 à 16:35
c'est ok javais mal lu ta solution, cétait onSubmit = "return controle();" et mois javais mis onSubmit="controle();"

merci
0