IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Submit formulaire : code js empêche script php de s'éxécuter


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Points : 43
    Points
    43
    Par défaut Submit formulaire : code js empêche script php de s'éxécuter
    Bonjour,

    Pour s'abonner aux newsletters, l'internaute a 2 possibilités:

    1- cliquer sur le lien "newsletter" présent dans le menu de navigation et il est renvoyé vers newsletter.php,
    2- ou saisir son email dans un mini formulaire dans la page d'acceuil, qui le renvoie vers
    newsletter.php avec le champ email pré-rempli.

    Une fois qu'il a renseigné son nom et son email(s'il arrive depuis le lien du menu), les validations en php et
    en javascript sont faites.
    Puis il est enregistré dans la bdd, et un mail lui est envoyé pour activation.
    Bref, les validations php et js marchent, mais au sublit du formulaire, la popin se lance mais empêche
    l'enregistrement dans la bdd et l'envoi du mail d'activation.
    Par contre si je commente le code js du popin, il est enregistré et l'email lui est envoyé.

    Je ne sais où placer le code js du popin.
    Merci pour vos éclairages.

    Ma page newsletter.php:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
     
    <?php 
            session_start();
    ?><!DOCTYPE html>
    <html > 
    <head>
    	<meta charset="utf-8"/>
    	<!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
    	<title>INSCRIPTION À LA NEWSLETTER </title>
    	<link href="styles/newsletter/newslettersignup.css" rel="stylesheet" type="text/css"  />
    	<link rel="stylesheet" href="Font-Awesome-master/css/font-awesome.min.css">
    	<script src="js/jquery-1.10.1.min.js" type="text/javascript" ></script>
     
     
    </head>
    <body>
    	<?php
                    require("config-db.php");
                    mysql_connect($adresse,$nom,$motdepasse);
                    mysql_select_db($database); 
                    
                    require_once "PHPMailer_5.2.4/class.phpmailer.php";
                    if(isset($_POST['email'])){
                            $_SESSION['email']=$_POST['email'];
                    }
                    if(isset($_POST['action-submit'])){
                            
                            $valid=true;
                            
                            $nom=$_POST['nom'];
                            $match_nom = preg_match('#^[a-zéèàùûêâôëA-Z0-9._\'\s-]{5,26}$#', $nom);
                            $email=$_POST['email'];
                            $sort=$_POST['sort'];
                            
                            if(!$match_nom ){
                                    echo "Le nom saisi n'est pas correct";
                                    $valid=false;
                            }
                            
                            $query=mysql_query("SELECT email from newsletterusers1 where email='$email'") or die(mysql_error());
                            $row=mysql_num_rows($query);
                            if(empty($email)){
                                    echo "Veuillez renseigner votre adresse e-mail";
                                    $valid=false;
                            }else if(! filter_var($email,FILTER_VALIDATE_EMAIL))  {
                                    echo "E-mail non valide. Veuillez recommencer";
                                    $valid=false;
                            }else if($row>0){
                                    echo "Adresse mail déjà enregistrée";
                                    $valid=false;
                            }else{
                                    srand((double)microtime()*1000000);       
                                    $string = md5(rand(0,1000000)); 
                                    $thekey=$string;
                                    $insertemail="INSERT into newsletterusers1 (nom,email,validkey) values('$nom','$email','$thekey')";
                                    mysql_query($insertemail) or die("Could not insert mail");
     
                                    $to     = $email;
                                    $sujet  = "Activation de votre inscription aux newsletters";
                                    $entete = "MIME-Version: 1.0\r\n";
                                    $entete .= 'Content-type: text/html; charset=UTF-8'."\r\n";
                                    $entete .= "From: root@localhost" . "\r\n".
                                                            "Replay-To: root@localhost" . "\r\n".
                                                            "X-Mailer: PHP/".phpversion();
                                                            
                                    $body  ='<html><body><head><style>
                                    </style></head><center><table>
                                    <tr><td>
                                            <p>Madame, Monsieur,</p>        
                                            <p>Vous venez de cr&eacute;er vos newsletters sur le site xxxxx.fr .<br/>       
                                            Pour les activer, merci de cliquer sur le lien ci-dessous :</p>
                                            <a href="'.$path.'/validate.php?email='.$email.'&string='.$string.'">
                                                    Je valide mon inscription
                                            </a>
                                            <p>Si vous n\'&ecirc;tes pas &agrave; l\'origine de cette demande, veuillez ne pas tenir compte de 
                                            ce message; pass&eacute; un d&eacute;lai de 48h , le compte sera automatiquement supprim&eacute;.<br/><br/>
                                            Bonne lecture,</p>
                                            <p class="bold">Votre &eacute;quipe <a href="http://127.0.0.1/knz1/">xxxxx.fr</a></p>
                                    </td></tr>
                                    </table></center></body></html>'; 
                                    function smtpmailer($to,$sujet,$body,$entete){
                                            global $error;
                                            $mail = new PHPMailer();                
                                            $mail->IsSMTP();
                                            $mail->IsHTML(TRUE);            
                                            $mail->SMTPDebug = 1;                           
                                            $mail->SMTPAuth = true;                         
                                            $mail->SMTPSecure = 'ssl';                      
                                            $mail->Host = 'smtp.gmail.com'; 
                                            $mail->Port = 465;              
                                            $mail->Username = 'monadresse@gmail.com';
                                            $mail->Password ='monpasword';
                                            $mail->Subject = $sujet;
                                            $mail->Body = $body;
                                            $mail->AddAddress($to);
                                            if(!$mail->Send()){
                                                    $error = 'Mail error'.$mail->ErrorInfo;
                                                    return false;
                                            }else{
                                                    $error='Mail envoyé avec succès';
                                                    return true;
                                            }
                                            $mail->SmtpClose(); 
                                            unset($mail); 
                                    }                       
                                    smtpmailer($to,$sujet,$body,$entete);
                                    echo "Pour valider votre inscription à la newsletter, un lien d'activation vous a été envoyé à votre adresse mail.";
                            }
                    }
            ?>
    	<form id="themes"  action="" method="post" data-rel="popup_name" class="poplight">
    		<!-- ici checkboxes pour choisir ses rubriques ( à développer plus tard)-->
    		<input id="nom-inscr" class="foo" name="nom" type="text" placeholder="Votre Nom (obligatoire, 5 à 26 caractères)" />
    		<div id="error_name" class="failure" for="nom-inscr"></div>
     
    		<input id="email-inscr" class="foo" name="email" type="text" placeholder="Votre Email" 
    			value="<?php if(isset($_SESSION['email']) ) echo $_SESSION['email']; ?>" />
    		<div id="error_email" class="failure" for="email-inscr"></div>
     
    		<button id="action-submit" class="action-submit" name="action-submit" type="submit"><span class="tick">JE M'INSCRIS</span></button>
    	</form>
     
    	<div id="popup_name" class="popup_block">
    		<h2>CONFIRMATION D'INSCRIPTION</h2>
    		<div class="notice">
    			<p>
    				Les données ont été correctement enregistrées.<br/>
    				Vous allez recevoir un mail d'activation à :<br /><br />
    				<strong><?php echo $_SESSION['email']; ?></strong>
     
    			</p>
    		</div>
    	</div>
     
    	<script type="text/javascript">
                    $(function(){
                            var formulaire = $("#themes");
                            formulaire.on('submit',function(event) {
                                    event.preventDefault();
     
                                    var erreur_name_div = formulaire.find("#error_name");
                                    var nom00 = formulaire.find("input[name=nom]");
                                    var nom = $.trim(nom00.val()); 
                                    var nom_regex = /^[a-zéèàùûêâôëA-Z0-9._\'\s-]{5,26}$/;
                                    
                                    var erreur_email_div = formulaire.find("#error_email");
                                    var mail = formulaire.find("input[name=email]");
                                    var email = $.trim(mail.val()); 
                                    var email_regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
                                    
                                    if(nom == "" ) {
                                            erreur_name_div.html("Veuillez renseigner votre nom ");
                                            return false;
                                    }else if(nom != "") {
                                            if (!nom_regex.test(nom))       {
                                                    erreur_name_div.html("saisie de nom incorrecte");
                                                    return false;
                                            }                                               
                                    } 
     
                                    if(email == "") {
                                            erreur_email_div.html("Veuillez renseigner une adresse mail");
                                            return false;
                                    }else if(email != "") {
                                            if (!email_regex.test(email))   {
                                            erreur_email_div.html("E-mail non valide. Veuillez recommencer");
                                            return false;}                  
                                    } 
     
                                    var datastring ='email='+email; 
                                    $.ajax({
                                            type: "POST", 
                                            url: "modules/check_email_index.php", 
                                            data: datastring, 
                                            success: function(responseText) {
                                                    if(responseText == 1) { 
                                                            erreur_email_div.html("Adresse mail déjà enregistrée");
                                                    }else if(responseText == '') { 
                                                            erreur_email_div.html("");
                                                            mail.val('');   
                                                    } 
                                            }
                                    });
                            /*------------------------------------- début popin ---------------------*/    
                                    var popID = $(this).data('rel'); 
                                    var popWidth = $(this).data('width'); 
                                    $('#' + popID).fadeIn("fast").css({ 'width': popWidth}).prepend('<a href="#" class="close"><img src="styles/images/close_pop.png" class="btn_close" title="Fermer la fenêtre" alt="Fermer" /></a>');
                                    var popMargTop = ($('#' + popID).height() + 80) / 2;
                                    var popMargLeft = ($('#' + popID).width() + 80) / 2;
                                    $('#' + popID).css({ 
                                            'margin-top' : -popMargTop,
                                            'margin-left' : -popMargLeft
                                    });
                                    $('body').append('<div id="fade"></div>');    //ie6 <
                                    $('#fade').css({'filter' : 'alpha(opacity=70)'}).show();
                                    return false;
                                    
                            });
     
                            $('body').on('click', 'a.close, #fade', function() { 
                                    $('#fade , .popup_block').fadeOut("fast",function() {
                                            $('#fade, a.close').remove();  
                                    }); 
                                    return false;
                            });
                            /*------------------------------------- fin popin -------------------*/
                    });
            
            
            </script>
    </body>
    </html>

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Points : 43
    Points
    43
    Par défaut
    Apparement, j'ai un problème avec l'éditeur de texte pour la coloration syntaxique,
    Veuillez m'en excuser, je ne cesse de modifier le message ,en vain
    PS/ comment puis-je supprimer le sujet que j'ai créé ?

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Points : 43
    Points
    43
    Par défaut
    coloration syntaxique rétablie partiellement.

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    le code javascript s’exécute sur le poste du client
    le code php s’exécute sur le serveur

    merci de poster le code HTML produit par le serveur (et qui est donc exécute par le client) et non le code php

    de plus merci d'isoler la partie de code HTML et javascript qui pose problème et non l'ensemble du code.
    Merci de reporter les information de trace que donne la console javascript sur le navigateur du client lorsque le problème se produit.

    A+JYT

  5. #5
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    Par défaut
    Bonjour,

    à la vue de ton code Javascript je dirais que tu as un problème de fermeture des parenthèses/accolades. plus précisément ligne 198;

    Ré-indente bien ton code afin que ce soit plus clair et que tu n'aies pas d'erreur de syntaxe

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Points : 43
    Points
    43
    Par défaut
    Je découpe ma page newsletter.php:

    1/ traitement et envoi d'email en php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <?php
    require("config-db.php");
    mysql_connect($adresse,$nom,$motdepasse);
    mysql_select_db($database); 
     
    require_once "PHPMailer_5.2.4/class.phpmailer.php";
    if(isset($_POST['email'])){
            $_SESSION['email']=$_POST['email'];
    }
    if(isset($_POST['action-submit'])){
            
            $valid=true;
            
            $nom=$_POST['nom'];
            $match_nom = preg_match('#^[a-zéèàùûêâôëA-Z0-9._\'\s-]{5,26}$#', $nom);
            $email=$_POST['email'];
            $sort=$_POST['sort'];
            
            if(!$match_nom ){
                    echo "Le nom saisi n'est pas correct";
                    $valid=false;
            }
            
            $query=mysql_query("SELECT email from newsletterusers1 where email='$email'") or die(mysql_error());
            $row=mysql_num_rows($query);
            if(empty($email)){
                    echo "Veuillez renseigner votre adresse e-mail";
                    $valid=false;
            }else if(! filter_var($email,FILTER_VALIDATE_EMAIL))  {
                    echo "E-mail non valide. Veuillez recommencer";
                    $valid=false;
            }else if($row>0){
                    echo "Adresse mail déjà enregistrée";
                    $valid=false;
            }else{
                    srand((double)microtime()*1000000);       
                    $string = md5(rand(0,1000000)); 
                    $thekey=$string;
                    $insertemail="INSERT into newsletterusers1 (nom,email,validkey) values('$nom','$email','$thekey')";
                    mysql_query($insertemail) or die("Could not insert mail");
     
                    $to     = $email;
                    $sujet  = "Activation de votre inscription aux newsletters";
                    $entete = "MIME-Version: 1.0\r\n";
                    $entete .= 'Content-type: text/html; charset=UTF-8'."\r\n";
                    $entete .= "From: root@localhost" . "\r\n".
                                            "Replay-To: root@localhost" . "\r\n".
                                            "X-Mailer: PHP/".phpversion();
                                            
                    $body  ='<html><body><head><style>
                    </style></head><center><table>
                    <tr><td>
                            <p>Madame, Monsieur,</p>        
                            <p>Vous venez de cr&eacute;er vos newsletters sur le site xxxxx.fr .<br/>       
                            Pour les activer, merci de cliquer sur le lien ci-dessous :</p>
                            <a href="'.$path.'/validate.php?email='.$email.'&string='.$string.'">
                                    Je valide mon inscription
                            </a>
                            <p>Si vous n\'&ecirc;tes pas &agrave; l\'origine de cette demande, veuillez ne pas tenir compte de 
                            ce message; pass&eacute; un d&eacute;lai de 48h , le compte sera automatiquement supprim&eacute;.<br/><br/>
                            Bonne lecture,</p>
                            <p class="bold">Votre &eacute;quipe <a href="http://127.0.0.1/knz1/">xxxxx.fr</a></p>
                    </td></tr>
                    </table></center></body></html>'; 
                    function smtpmailer($to,$sujet,$body,$entete){
                            global $error;
                            $mail = new PHPMailer();                
                            $mail->IsSMTP();
                            $mail->IsHTML(TRUE);            
                            $mail->SMTPDebug = 1;                           
                            $mail->SMTPAuth = true;                         
                            $mail->SMTPSecure = 'ssl';                      
                            $mail->Host = 'smtp.gmail.com'; 
                            $mail->Port = 465;              
                            $mail->Username = 'monadresse@gmail.com';
                            $mail->Password ='monpasword';
                            $mail->Subject = $sujet;
                            $mail->Body = $body;
                            $mail->AddAddress($to);
                            if(!$mail->Send()){
                                    $error = 'Mail error'.$mail->ErrorInfo;
                                    return false;
                            }else{
                                    $error='Mail envoyé avec succès';
                                    return true;
                            }
                            $mail->SmtpClose(); 
                            unset($mail); 
                    }                       
                    smtpmailer($to,$sujet,$body,$entete);
                    echo "Pour valider votre inscription à la newsletter, un lien d'activation vous a été envoyé à votre adresse mail.";
            }
    }
    ?>
    2/ formulaire et popin html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <form id="themes"  action="" method="post" data-rel="popup_name" class="poplight">
    	<!-- ici checkboxes pour choisir ses rubriques ( à développer plus tard)-->
    	<input id="nom-inscr" class="foo" name="nom" type="text" placeholder="Votre Nom (obligatoire, 5 à 26 caractères)" />
    	<div id="error_name" class="failure" for="nom-inscr"></div>
     
    	<input id="email-inscr" class="foo" name="email" type="text" placeholder="Votre Email" 
    		value="<?php if(isset($_SESSION['email']) ) echo $_SESSION['email']; ?>" />
    	<div id="error_email" class="failure" for="email-inscr"></div>
     
    	<button id="action-submit" class="action-submit" name="action-submit" type="submit"><span class="tick">JE M'INSCRIS</span></button>
    </form>
     
    <div id="popup_name" class="popup_block">
    	<h2>CONFIRMATION D'INSCRIPTION</h2>
    	<div class="notice">
    		<p>
    			Les données ont été correctement enregistrées.<br/>
    			Vous allez recevoir un mail d'activation à :<br /><br />
    			<strong><?php echo $_SESSION['email']; ?></strong>
     
    		</p>
    	</div>
    </div>
    3/ traitement et popin en js:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    $(function(){
    	var formulaire = $("#themes");
    	formulaire.on('submit',function(event) {
    		event.preventDefault();
     
    		var erreur_name_div = formulaire.find("#error_name");
    		var nom00 = formulaire.find("input[name=nom]");
    		var nom = $.trim(nom00.val()); 
    		var nom_regex = /^[a-zéèàùûêâôëA-Z0-9._\'\s-]{5,26}$/;
     
    		var erreur_email_div = formulaire.find("#error_email");
    		var mail = formulaire.find("input[name=email]");
    		var email = $.trim(mail.val()); 
    		var email_regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
     
    		if(nom == "" ) {
    			erreur_name_div.html("Veuillez renseigner votre nom ");
    			return false;
    		}else if(nom != "") {
    			if (!nom_regex.test(nom))	{
    				erreur_name_div.html("saisie de nom incorrecte");
    				return false;
    			}						
    		} 
     
    		if(email == "")	{
    			erreur_email_div.html("Veuillez renseigner une adresse mail");
    			return false;
    		}else if(email != "") {
    			if (!email_regex.test(email))	{
    			erreur_email_div.html("E-mail non valide. Veuillez recommencer");
    			return false;}			
    		} 
     
    		var datastring ='email='+email; 
    		$.ajax({
    			type: "POST", 
    			url: "modules/check_email_index.php", 
    			data: datastring, 
    			success: function(responseText) {
    				if(responseText == 1) { 
    					erreur_email_div.html("Adresse mail déjà enregistrée");
    				}else if(responseText == '') { 
    					erreur_email_div.html("");
    					mail.val(''); 	
    				} 
    			}
    		});
    	/*------------------------------------- début popin ---------------------*/	
    		var popID = $(this).data('rel'); 
    		var popWidth = $(this).data('width'); 
    		$('#' + popID).fadeIn("fast").css({ 'width': popWidth}).prepend('<a href="#" class="close"><img src="styles/images/close_pop.png" class="btn_close" title="Fermer la fenêtre" alt="Fermer" /></a>');
    		var popMargTop = ($('#' + popID).height() + 80) / 2;
    		var popMargLeft = ($('#' + popID).width() + 80) / 2;
    		$('#' + popID).css({ 
    			'margin-top' : -popMargTop,
    			'margin-left' : -popMargLeft
    		});
    		$('body').append('<div id="fade"></div>');    //ie6 <
    		$('#fade').css({'filter' : 'alpha(opacity=70)'}).show();
    		return false;
     
    	});
     
    	$('body').on('click', 'a.close, #fade', function() { 
    		$('#fade , .popup_block').fadeOut("fast",function() {
    			$('#fade, a.close').remove();  
    		}); 
    		return false;
    	});
    	/*------------------------------------- fin popin -------------------*/
    });
    Je réitère ma question: pourquoi au submit, le js de la popin empêche l'enregistrement des données dans le bdd et l'envoi d'email?

    Mes excuses pour le raté du premier post (faute de ne pas avoir su comment le supprimer).

  7. #7
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $('body').on('click', 'a.close, #fade', function() { 
    		$('#fade , .popup_block').fadeOut("fast",function() {
    			$('#fade, a.close').remove();  
    		}); 
    		return false;
    	});
    Je traduit en français
    lors d'un click sur n'importe quoi dans le body
    fermer progressivement l'objet #fade et supprimer les lien 'close'
    empêcher tout autre traitement

    A+JYT

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Points : 43
    Points
    43
    Par défaut
    @sekaijin:
    Avec ce code, j'arrive à enregistrer mes données et envoyer l'email, mais la popin ne s'affiche que la durée des 2 opérations .Je crois que ça un rapport avec le function(event):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    $(function(){
    	var formulaire = $("#themes");
    	//formulaire.on('submit',function(event)   {
    		//event.preventDefault();
    	formulaire.on('submit',function()   {	
     
     
    		var erreur_name_div = formulaire.find("#error_name");
    		var nom00 = formulaire.find("input[name=nom]");
    		var nom = $.trim(nom00.val()); 
    		var nom_regex = /^[a-zéèàùûêâôëA-Z0-9._\'\s-]{5,26}$/;
     
    		var erreur_email_div = formulaire.find("#error_email");
    		var mail = formulaire.find("input[name=email]");
    		var email = $.trim(mail.val()); 
    		var email_regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
     
    		if(nom == "" )	{
    			erreur_name_div.html("Veuillez renseigner votre nom ");
    			return false;
    		}else if(nom != "") {
    			if (!nom_regex.test(nom))	{
    				erreur_name_div.html("saisie de nom incorrecte");
    				return false;
    			}						
    		} 
     
    		if(email == "")	{
    			erreur_email_div.html("Veuillez renseigner une adresse mail");
    			return false;
    		}else if(email != "") {
    			if (!email_regex.test(email))	{
    			erreur_email_div.html("E-mail non valide. Veuillez recommencer");
    			return false;}			
    		} 
     
    		var datastring ='email='+email; 
    		$.ajax({
    			type: "POST", 
    			url: "modules/check_email_index.php", 
    			data: datastring, 
    			success: function(responseText) {
    				if(responseText == 1) { 
    					erreur_email_div.html("Adresse mail déjà enregistrée");
    				}else if(responseText == '') { 
    					erreur_email_div.html("");
    					mail.val(''); 	
    				}
    			}
    		});
    	/*------------------------------------- début popin ---------------------*/	
    		var popID = $(this).data('rel'); 
    		var popWidth = $(this).data('width'); 
    		$('#' + popID).fadeIn("fast").css({ 'width': popWidth}).prepend('<a href="#" class="close"><img src="styles/images/close_pop.png" class="btn_close" title="Fermer la fenêtre" alt="Fermer" /></a>');
    		var popMargTop = ($('#' + popID).height() + 80) / 2;
    		var popMargLeft = ($('#' + popID).width() + 80) / 2;
    		$('#' + popID).css({ 
    			'margin-top' : -popMargTop,
    			'margin-left' : -popMargLeft
    		});
    		$('body').append('<div id="fade"></div>');    
    		$('#fade').css({'filter' : 'alpha(opacity=70)'}).show();
    		//return false;
    		return true;
    	});
     
    	$('body').on('click', 'a.close, #fade', function() { 
    		$('#fade , .popup_block').fadeOut("fast",function() {
    			$('#fade, a.close').remove();  
    		});
    		//return false;
    		return true;
    	});
    	/*------------------------------------- fin popin -------------------*/
    });
    Svp, quelqu'un pourrait-il me montrer comment fermer ma popin au clic, et non qu'elle se referme d'elle même en quelques secondes le temps de l'enregistrement des données et envoi du mail (1 à 2 secondes après qu'elle soit affichée).
    Pour le système du popin, je me suis inspiré de ce tuto:
    http://sohtanaka.developpez.com/tuto...css-et-jquery/

  9. #9
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Il faut dans ce cas que tu change cette partie met ton button au lieu de body :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $('a.close').on('click', 'a.close, #fade', function() { 
    		$('#fade , .popup_block').fadeOut("fast",function() {
    			$('#fade, a.close').remove();  
    		});
    		//return false;
    		return true;
    	});

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Points : 43
    Points
    43
    Par défaut
    Pour le moment, peu importe où je clique pour fermer (le bouton 'fermer' ou body), le problème est que la popin se ferme d'elle même juste après traitement côté serveur, c'est à dire après que le php ait enregistré les données et envoyé l'email.
    Quelqu'un pourra-t-il diagnostiquer le dysfonctionnement entre mes codes php et js ?
    Merci

  11. #11
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut Ok pour un mode DEBUG
    Un test tout simple juste pour vérifié si c'est pas un problème lié au submit du formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form onsubmit="return false" id="themes"  action="" method="post" data-rel="popup_name" class="poplight">
    Dit moi qu'elle effet ça sur ton script?

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Août 2012
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2012
    Messages : 84
    Points : 43
    Points
    43
    Par défaut
    @headmax:
    Ça a pour effet que le popin marche bien: fermable ( au clic sur le lien.close et dans le body) mais le php n'enregistre pas les données et pas d'envoi d'email.

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/04/2015, 09h13
  2. [Forum] Intégrer des commandes AT dans du code javascript ou script php
    Par steeveness dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 17/01/2009, 17h52
  3. [EasyPHP] Le code source des scripts php s'affiche au lieu d'être exécuté
    Par bobolatete dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 08/09/2008, 20h06
  4. Réponses: 1
    Dernier message: 21/11/2007, 09h04
  5. [PHP-JS] Problème avec un script php d'un formulaire
    Par Dark DJ dans le forum Langage
    Réponses: 3
    Dernier message: 11/06/2006, 19h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo