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

jQuery Discussion :

Popin (js) empêche traitement php : traitement simultané en js et php d'un submit formulaire


Sujet :

jQuery

  1. #1
    Membre confirmé
    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
    Par défaut Popin (js) empêche traitement php : traitement simultané en js et php d'un submit formulaire
    Bonjour,

    Au submit d'un formulaire, il y a 2 traitements:
    1- coté serveur, le php enregistre les données postées dans la bdd.
    2- Une popin confirme les saisies (js).

    Seulement, cette popin, en s'éxécutant, empêche le traitement php.
    En la désactivant, le php fait son boulot.

    Quelqu'un a-t-il une idée sur la façon de faire pour que le surgissement de la popin n'empêche pas
    le php d'enregistrer les données dans la bdd ?

    Merci.
    Code php : 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
    <?php
        require("config-db.php");
        mysql_connect($adresse,$nom,$motdepasse);
        mysql_select_db($database);
        if(isset($_POST['action-submit'])){
            $valid=true;
            $prenom=$_POST['prenom'];
            $email=$_POST['email'];
            if(isset($prenom) && isset($email)){
                $insertdata="INSERT into testable (prenom,email) values('$prenom','$email')";
                mysql_query($insertdata) or die(mysql_error());
                return true;
            }
        }
    ?>
    <form id="themes"  action="" method="post" data-rel="popup_name" class="poplight">
        <input id="nom-inscr" class="foo" name="prenom" type="text"/>
        <input id="email-inscr" class="foo" name="email" type="text" />
     
        <button id="action-submit" class="action-submit" name="action-submit" type="submit"><span class="tick">JE M'INSCRIS</span></button>
     
        <div id="popup_name" class="popup_block">
            <p>
                Les données ont été correctement enregistrées.<br/>
                Vous allez recevoir un mail d'activation à :<br /><br />
                <strong id="emailtarget"></strong>
            </p>
        </div>
    </form>

    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
    $(function(){
        var formulaire = $("#themes");
        formulaire.on('submit',function(event)   {
            event.preventDefault();
     
            var mail = formulaire.find("input[name=email]");
            var email = $.trim(mail.val());
            document.getElementById("emailtarget").innerHTML = email;
            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 true;
        });
     
        $('body').on('click', 'a.close, #fade', function() {
            $('#fade , .popup_block').fadeOut("fast",function() {
                $('#fade, a.close').remove(); 
            });
            return true;
        });
    });
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #fade {display: none;background: #000;position: fixed;left: 0;top: 0;
        width: 100%; height: 100%;opacity:.7;z-index: 9999;}
    .popup_block{display: none;background: #fff;float: left;font-size:1.0em;position: fixed;
        top: 50%; left: 50%;z-index: 99999;}

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    Seulement, cette popin, en s'éxécutant, empêche le traitement php.
    je ne vois pas ou tu fais une requête dans ce que tu montres.

  3. #3
    Membre confirmé
    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
    Par défaut
    Ma requête, je la fais à ce niveau : ligne 10 du premier code php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $insertdata="INSERT into testable (prenom,email) values('$prenom','$email')";

    Depuis tout à l'heure , j'ai cherché et voici où j'en suis:
    Code php : 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
    <?php
    require("config-db.php");
    mysql_connect($adresse,$nom,$motdepasse);
    mysql_select_db($database); 
    if(isset($_POST['action-submit'])){
    	$valid=true;
    	$prenom=$_POST['prenom'];
    	$email=$_POST['email'];
    	if(isset($prenom) && isset($email)){
    		$insertdata="INSERT into testable (prenom,email) values('$prenom','$email')";
    		mysql_query($insertdata) or die(mysql_error());
    		return true;
    	}
    }
    ?>
    <form id="themes"  action="" method="post" data-rel="popup_name" class="poplight">
    	<input id="nom-inscr" class="foo" name="prenom" type="text"/>
    	<input id="email-inscr" class="foo" name="email" type="text" />
    	<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">
    	<p>
    		Les données ont été correctement enregistrées.<br/>
    		Vous allez recevoir un mail d'activation à :<br /><br />
    		<strong id="emailtarget"></strong>
    	</p>
    </div>

    insert.php :

    Code php : 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
    <?php 
    session_start();
    $prenom=$_POST['prenom'];
    $email=$_POST['email'];
    require("../config-db.php");
    mysql_connect($adresse,$nom,$motdepasse);
    mysql_select_db($database);
    if(isset($prenom) && isset($email)){
    	$insertdata="INSERT into testable (prenom,email) values('$prenom','$email')";
    	$query = mysql_query($insertdata) or die(mysql_error());
    	return true;
    	echo '';
    } else {
    	echo '1'; 
    }
    ?>

    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
    $(function(){
    	var formulaire = $("#themes");
    	formulaire.on('submit',function(event)   {
    		event.preventDefault();
    	//formulaire.on('submit',function()   {
    		var prenom00 = formulaire.find("input[name=prenom]");
    		var prenom = $.trim(prenom00.val()); 
    		var mail = formulaire.find("input[name=email]");
    		var email = $.trim(mail.val()); 
    		document.getElementById("emailtarget").innerHTML = email;
     
    		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 true;
    //-----------------------------------------------------
    		var datastring = "prenom="+prenom+"&email="+email;
    		$.ajax({
    			type: "POST", 
    			url: "insert.php", 
    			data: datastring, 
    			success: function(responseText) {
    				if(responseText == 1) { 
    					return false;
    				}else if(responseText == '') { 
    					return true;
    				}
    			}
    		});
    //--------------------------------------------------------
    	});
     
    	$('body').on('click', 'a.close, #fade', function() { 
    		$('#fade , .popup_block').fadeOut("fast",function() {
    			$('#fade, a.close').remove();  
    		});
    		return true;
    	});
    });
    SVP, comment insérer en Ajax les données postées dans la table 'testable' ?

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Bah... tu mets un return true; juste avant ta requête AJAX, donc logiquement, si tout se passe bien, ça se passera mal !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre éprouvé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Billets dans le blog
    6
    Par défaut
    de plus mette event.preventDefault(); dans ton événement submit annule systématiquement un envois

Discussions similaires

  1. php traitement dynamique
    Par blacksf dans le forum Langage
    Réponses: 8
    Dernier message: 17/12/2012, 17h05
  2. [WD15E] Traitement sur le retour d'un script php
    Par android_debutant dans le forum WinDev
    Réponses: 7
    Dernier message: 13/06/2012, 15h58
  3. [AJAX] traitement dynamique d'une zone texte HTML/PHP/AJAX
    Par Hyuge dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/07/2008, 09h48
  4. [PHP-JS] [javascrip + php] traitement formulaire
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 24/04/2006, 13h13

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