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 :

Récupérer des champs créer dynamiquement


Sujet :

jQuery

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Points : 69
    Points
    69
    Par défaut Récupérer des champs créer dynamiquement
    Bonjour à tous,

    J'ai une liste de produit avec un champ text qui me permet de saisir la quantité.
    J'ai un boutton pour chaque ligne de produit et je souhaiterai enregistrer la quantité qui correspond au bouton dans ma base de donnée.

    J'ai adapté une source sur le web et cela fonctionne pour un champ créer statiquement mais je ne sais pas comment récupérer les valeurs avec les champs créer dynamiquement.

    Voilà la fonction ajax :

    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
     
    $(function(){
     
    		   $("#formcom").submit(function(){
    									$("#loader").show();	
     
    										quantite = $(this).find("input[name=quantite1]").val();
     
    										$.post("add.php",{quantite: quantite}, function(data){
    										$("#loader").hide();	
    										if(data!="ok"){
    											$(".error").empty().append(data + "<br>");	
    										}
    										else {
    										$("#resultat").hide().append(quantite).slideDown();
    										$("#forcom").fadeOut();
    										}
    										});
     
    										return false;
    										});
     
    		   });
    J'avais pensé récupérer la valeur du boutton qui correspondrait à la valeur du champ^mais je ne vois pas trop...

    Merci d'avance de votre aide.

  2. #2
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    Je te conseil de mettre chaque Select, Input et button dans un DIV.

    Voilà un exemple : (C'est pas propre mais cela fonctionne.)
    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
     
     
    <html>
    <head>
     
    <script language="javascript" type="text/javascript" src="jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
     
    function recupVal(bouton){
    var div = $(bouton).parent(); //On récupère le conteneur
    var selectVal = $(div).children('select').val(); // la valeur du Select
    var inputVal = $(div).children('input').val(); // la valeur du input
     
    alert (selectVal + inputVal);
    }
    </script>
     
    </head>
    <body>
    <div style="border:1px solid;">
    <select class="Groupe" size="1">
    	<option value="0">Sélectionner ...</option>
    	<option value="1">Groupe 1</option>
    	<option value="2">Groupe 2</option>
    </select>
    <input type="text">
    <input type="button" name="toto" value="enregistrer" onClick="recupVal(this)">
    </div> 
    <br>
    <div style="border:1px solid;">
    <select class="Groupe" size="1">
    	<option value="0">Sélectionner ...</option>
    	<option value="1">Groupe 1</option>
    	<option value="2">Groupe 2</option>
    </select>
    <input type="text">
    <input type="button" name="toto" value="enregistrer" onClick="recupVal(this)">
    </div> 
    <br>
    <div style="border:1px solid;">
    <select class="Groupe" size="1">
    	<option value="0">Sélectionner ...</option>
    	<option value="1">Groupe 1</option>
    	<option value="2">Groupe 2</option>
    	<option value="2">Groupe 3</option>
    </select>
    <input type="text">
    <input type="button" name="toto" value="enregistrer" onClick="recupVal(this)">
    </div> 
    </body>
    </html>
    comme tu isole tes données individuellement il ne te reste plus que faire un push en BDD (là c'est à toi de jouer )

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Points : 69
    Points
    69
    Par défaut
    Super merci cela a fonctionné

    Voilà ce que ça donne :

    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
     
    function recupVal(bouton){
    var div = $(bouton).parent(); 
    var quantite = $(div).children('input[type=text]').val(); // la valeur du input
    var article = $(div).children('input[type=hidden]').val(); // la valeur du input
    var total = $(div).children('input[name=total]').val(); // la valeur du input
    var totalg = parseInt(total)+parseInt(quantite);
    //alert (quantite + " : " + article);
    $("#loader").show();
    $.post("add.php",{quantite: quantite, article: article}, function(data){
    	$("#loader").hide();	
    	if(data!="ok"){
    		$(".error").empty().append(data + "<br>");	
    	}
    	else {
    			$("#panier").hide();
    				//$(".error").empty().append(data + "<br>");	
    			$("#panier_ajax").hide().append("Total Panier : " + totalg).slideDown();
    			//$("#forcom").fadeOut();
    		}
     
    	//alert (data);
    	});
    return false;
    }
    J'ai une dernière petite question, en fait je souhaite afficher le total du panier.
    J'ai créer un div panier_ajax qui s'affiche mais le problème est que cela me crée plusieurs lignes, si j'ajout plusieurs produits.

    J'ai essayé de mettre un empty() mais là il le vide et n'ajoute que la dernière quantité.

    La meilleur méthode serait peut être d'aller de faire une requête dans ma fonction pour aller chercher la somme qui est stocker dans ma table mysql (enfin calculé)

    Merci d'avance de ton aide.

  4. #4
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    Je ferais un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function SommeTotal(quantite){
    var ValPrecedente =  $('input[name=total]').val();
    if (ValPrecedente!=""){
    var quantite= (parseInt(ValPrecedente)+parseInt(quantite));
    }
    $('input[name=total]').empty();
    $('input[name=total]').val(quantite);
    }
    Que je lancerais après chaque appuis sur le bouton. (le gros défaut c'est que ce n'est que de l'ajout)

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Points : 69
    Points
    69
    Par défaut
    Oui effectivement ça fonctionne. Merci.

    Mais peux t-on actualiser une requête après un enregistrement en ajax.
    Je m'explique :

    J'ajoute un produit a un panier.
    Enregistrement dans ma table.
    Affichage de la table à jour sans recharger la page.
    Parce que la j'arrive juste à afficher une phrase ou le dernier résultat avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $("#panier1").hide().append(data).slideDown();
    Merci d'avance.

  6. #6
    Membre confirmé Avatar de llaffont
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2007
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2007
    Messages : 701
    Points : 597
    Points
    597
    Par défaut
    Oui tu fais faire un retour à ta requête PHP.

    Exemple :

    Ta requête AJAX demande à un script PHP de faire l'enregistrement en BDD;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $.ajax({
      type: 'POST',
      url: tonscript.PHP,
      data: saveInBDD,
      success: success,
      dataType: JSON
    });
    Ton Script PHP est constitué comme suit : (Je synthétise un max)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function saveInBDD(){
     
    $Sqlinput = "Input ....."
    $RecupValBDD = "SELECT Val FROM BDD..."
     
    echo '{"recupVal": "'.$RecupValBDD.'"}';
    }
    Et ensuite ta fonction JavaScript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function success(retourJSON){
     
    $('input[name=total]').empty();
    $('input[name=total]').val(retourJSON.recupVal);
     
    }

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 261
    Points : 69
    Points
    69
    Par défaut
    Merci ça fonctionne !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Comment créer des champs nommés dynamiquement
    Par franz.moraine dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/07/2012, 14h35
  2. Réponses: 2
    Dernier message: 08/06/2007, 18h00
  3. [SQL] Comment récupérer des champs a partir d'un fichier de sauvegarde?
    Par baguira dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/03/2007, 18h23
  4. Récuperer coté serveur la valeur de champs créer dynamiquement en javascript
    Par julien.le.cool dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 05/01/2007, 09h25
  5. Récupérer les valeurs des champs créés dynamiquement
    Par outlawz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/05/2006, 16h32

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