Fin de script en cas d'erreur de saisir
Résolu
thibault_developper
Messages postés
35
Date d'inscription
Statut
Membre
Dernière intervention
-
thibault_developper Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
thibault_developper Messages postés 35 Date d'inscription Statut Membre Dernière intervention -
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
}
?>
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:
- Fin de script en cas d'erreur de saisir
- Rech. ou saisir l'url - Guide
- Script vidéo youtube - Guide
- Cas ram - Guide
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Mas script - Accueil - Windows
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
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
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);
}
}
<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);
}
}
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.
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);
}
}
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);
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question