Page 1 sur 1

pas de msg "Merci, ..." apres envoi form php : l'user click et re-click sur submit = mail envoyé à chaque click !

Posté : 01 juil. 2016, 08:57
par Nabb2
bonjour,

j'ai un petit soucis, le message "merci !..." après l'envoi du formulaire ne s'affiche pas.
Pourtant, les mails sont bien envoyés au destinataire et la confirmation d'envoi à l'user. du coup, l'user click plusieurs fois sur le bouton "envoyer" en croyant que ça ne fonctionne pas mais si ! alors l'user et le destinataire reçoivent autant de mail que de click!
pouvez-vous m'aider à trouver mon erreur ?

le formulaire sur la page contact.html :
<form id="contactform" action="ContactReponse.php#reponseform" method="post" class="validateform" name="send-contact" enctype="multipart/form-data">
                   
<input type="text" name="societe" id="societe" placeholder="Société">
            
<input type="text" name="nom" placeholder="Nom*" required />
                   
<input type="text" name="tel" id="tel" placeholder="00 00 00 00 00*" required>
               
<input type="email" name="email" id="email" placeholder="Email*"required>
                     
<select name="objet" id="objet" placeholder="Objet*" required>
                       
<option value="">Objet*...</option>
<option value="Demande de devis">J'ai un projet et je veux un devis</option>
<option value="Demande de RDV">Je souhaite vous rencontrer</option>
<option value="Demande de documentation Sovilec">Je souhaite en savoir plus sur Sovilec</option>
<option value="Proposition d'un partenariat">Je veux vous proposer un partenariat</option>
<option value="Service comptabilité">Ma demande concerne le service comptabilité</option>
</select>
                   
<textarea name="message" id="message" class="input-block-level" rows="8" placeholder="Message*" required></textarea>

<span class="pull-right etoile">* Champs obligatoires</span>
                         
<button type="submit" class="btn btn-theme margintop10 pull-right">Envoyer</button>
                       
<button type="reset" class="btn btn-theme margintop10 pull-right">Effacer</button>
             
</form>
la réponse sur la page ContactReponse.php :
<fieldset>
<legend><a name="reponseform">Votre demande de contact</a></legend>
         
<?php
$nom                 = $_POST['nom'];
$tel                     = $_POST['tel'];
$email                = $_POST['email'];
$societe             = $_POST['societe'];
$objet                = $_POST['objet'];
$complement  = $_POST['message'];
         
if(
    empty($nom)                == true or
    empty($email)               == true or
    empty($complement)  == true
        ){
    echo "Erreur :  veuillez remplir les champs obligatoires !";   
}else{
    $destinataire   = "[email protected]";
    $sujet      = "Contact : ".$objet;         
    $message    = "
Vous avez reçu une demande sur site.com : $objet
Société :         $societe
Nom     :         $nom
 
Téléphone   : $tel
Email       :      $email
 
Message     :  $complement
            ";
            if(mail($destinataire,$sujet,$message)){
               echo "Merci !";
                        $destinataire   = $email;
                        $sujet      = "Confirmation d'envoi";
                        $message    = "
Madame, Monsieur,
Nous accusons réception de votre demande et vous en remercions.
Votre demande sera traitée dans les meilleurs délais.
Restant à votre disposition.
L'équipe x
------------------------------
détails de la demande :
------------------------------ 
Société     :     $societe
Nom             : $nom
 
Téléphone   : $tel
Email       :      $email
 
Message     : $complement
        ";
                if(mail($destinataire,$sujet,$message)){
                   echo "Votre message a bien envoyé. \n\n
                              Vous recevrez prochainement une confirmation d'envoi par email. \n\n
                              <a href=\"Contact.html\">retour</a>";  
                }else{
                         echo "Veuillez réessayer plus tard.";  
                         }  
    }else{
              echo "Veuillez réessayer plus tard.";
             }            
}         
?>
</fieldset>
et le code javascript de la page validate.js :
jQuery(document).ready(function($) {
"use strict";
 
//Contact
$('form.validateform').submit(function(){
    var f = $(this).find('.field'),
    ferror = false,
    emailExp = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i;
 
    f.children('input').each(function(){
 
    var i = $(this); // current input
    var rule = i.attr('data-rule');
 
    if( rule != undefined ){
        var ierror=false;
        var pos = rule.indexOf( ':', 0 );
    if( pos >= 0 ){
        var exp = rule.substr( pos+1, rule.length );
        rule = rule.substr(0, pos);
    }else{
    rule = rule.substr( pos+1, rule.length );
    }
             
switch( rule ){
    case 'required':
    if( i.val()=='' ){ ferror=ierror=true; }
    break;
 
    case 'maxlen':
    if( i.val().length<parseInt(exp) ){ ferror=ierror=true; }
    break;
 
    case 'email':
    if( !emailExp.test(i.val()) ){ ferror=ierror=true; }
    break;
 
    case 'checked':
    if( !i.attr('checked') ){ ferror=ierror=true; }
    break;
                 
    case 'regexp':
    exp = new RegExp(exp);
    if( !exp.test(i.val()) ){ ferror=ierror=true; }
    break;
    }
i.next('.validation').html( ( ierror ? (i.attr('data-msg') != undefined ? i.attr('data-msg') : 'wrong Input') : '' ) ).show('blind');
    }
    });
f.children('textarea').each(function(){
 
    var i = $(this); 
    var rule = i.attr('data-rule');
 
    if( rule != undefined ){
    var ierror=false; 
    var pos = rule.indexOf( ':', 0 );
    if( pos >= 0 ){
    var exp = rule.substr( pos+1, rule.length );
    rule = rule.substr(0, pos);
    }else{
    rule = rule.substr( pos+1, rule.length );
    }
             
switch( rule ){
    case 'required':
    if( i.val()=='' ){ ferror=ierror=true; }
    break;
 
    case 'maxlen':
    if( i.val().length<parseInt(exp) ){ ferror=ierror=true; }
    break;
    }
    i.next('.validation').html( ( ierror ? (i.attr('data-msg') != undefined ? i.attr('data-msg') : 'wrong Input') : '' ) ).show('blind');
    }
    });
    if( ferror ) return false;
    else var str = $(this).serialize();
         
    $.ajax({
    type: "POST",
    url: "ContactReponse.php#reponseform",
    data: str,
    success: function(msg){
            $("#sendmessage").addClass("show");
            $("#errormessage").ajaxComplete(function(event, request, settings){
         
    if(msg == 'OK')
    {
                $("#sendmessage").addClass("show");
                 
    }
    else
    {
                $("#sendmessage").removeClass("show");
    result = msg;
    }
         
    $(this).html(result);});}});
    return false;
    });
 
});
si vous pouviez m'aider, svp ?!!
merci
Nabb2

Re: pas de msg "Merci, ..." apres envoi form php : l'user click et re-click sur submit = mail envoyé à chaque click !

Posté : 01 juil. 2016, 10:15
par moogli
salut,

$(this).html(result) ça représente quoi exactement ? tu devrais plutôt utiliser une div ou autre pour mettre le message. Par exemple #sendmessage ?

ceci ne peux pas fonctionner non plus :
if(msg == 'OK')
{
$("#sendmessage").addClass("show");

}
else
{
$("#sendmessage").removeClass("show");
result = msg;
}

le message c'est pas OK, c'est c'est "Merci !" ++ le message de confirmation d'envoie de l'email.
du coup tu enlève systématiquement la class css show

@+

Re: pas de msg "Merci, ..." apres envoi form php : l'user click et re-click sur submit = mail envoyé à chaque click !

Posté : 01 juil. 2016, 10:29
par Nabb2
merci pour ta réponse,
en fait c'est un code que j'ai récupéré (je ne sais plus où) et je ne maîtrise pas du tout le javascript et à peine le php !!
pourrais-tu m'aider un peu plus, stp ?
#-o
Nabb2