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 :

Bouton dans une boucle PHP : Lors de l'appel de la fonction jQuery toutes les valeurs sont mises à jour


Sujet :

jQuery

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Points : 58
    Points
    58
    Par défaut Bouton dans une boucle PHP : Lors de l'appel de la fonction jQuery toutes les valeurs sont mises à jour
    Bonjour,

    Je viens vers vous car j'ai un problème que je n'arrive pas à résoudre.
    En effet, j'ai une boucle PHP (foreach...) dans laquelle je crée une <div> qui elle-même contient deux boutons "+" et "-" ainsi qu'un champ input texte permettant de rentrer une quantité.

    Le fonctionnement vous l'aurez deviné est lorsque je clique sur le bouton - la valeur se décrémente et inversement avec le bouton +.
    Jusque là rien de très compliqué, mon problème intervient lorsque ma boucle foreach me ramène plusieurs éléments : Si je clique (admettons) sur le bouton "-" du 3è élément retourné, TOUS les éléments vont être modifiés en même temps, alors que je ne veux modifier que le 3ème...

    Je vous colle quelques petits morceaux de codes afin d'illustrer mon explication :

    Code PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?php
    foreach($blabla as $key => $blibli):?>
     
    Qté
    <div class="spinner">
      <input type="button" id="<?php echo "buttonSpinnerMinus".$key; ?>" class="buttonSpinnerMinus"><img src="images/moins.png" width="18" height="18" alt="Quantité Moins" />
     
      <input name="quantiteEntree" id="<?php echo "quantity".$key; ?>" class="quantity" value="<?php echo $blibli->getAttribut(); ?>" type="text" />
     
      <input type="button" id="<?php echo "buttonSpinnerPlus".$key; ?>" class="buttonSpinnerPlus"><img src="images/plus.png" width="16" height="18" alt="Quantité Plus" />
    <?php endofreach; ?>
    Code jQuery
    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
     
    $(document).ready(function() {
          $(".buttonSpinnerPlus").live('click', function(){
            var multiple = Session.multiple;
            /**
             * Récupération de l'id du bouton
             */
            var lengthIdSpinner = $(this).attr('id').length;
            /**
             * Récupération de l'index dans la boucle PHP
             */
            var indexIdSpinner = $(this).attr('id').substr(lengthIdSpinner-1, lengthIdSpinner);
            var spinnerDiv = $(this).parent(".spinner");
            var input = spinnerDiv.find(".quantity").val();
            /**
             * Récupération de l'id de l'input
             */
            var lengthIdInput = $(this).parent(".spinner").find(".quantity").attr('id').length;
            /**
             * Récupération de l'index de l'input dans la boucle PHP
             */
            var indexIdInput = $(this).parent(".spinner").find(".quantity").attr('id').substr(lengthIdInput-1, lengthIdInput);
     
            if(indexIdSpinner == indexIdInput) {
              inputInt = parseInt($(".quantity").val());
              if(inputInt < multiple) {
                inputInt = multiple;
              } else {
                inputInt = inputInt + multiple;
              }
              $(".quantity").val(inputInt);
            }
          });
    La fonction jQuery "Minus" est sensiblement la même en décrémentant au lieu d'incrémenter.

    Pourriez-vous m'aider à débugger mon problème ?

    Merci d'avance.

  2. #2
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    TOUS les éléments vont être modifiés en même temps, alors que je ne veux modifier que le 3ème...
    Ben oui mais tu ne le précises pas dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(".quantity").val(inputInt);
    D'autant plus étonnant que tu le fais avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(this).parent(".spinner").find(".quantity")
    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

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Points : 58
    Points
    58
    Par défaut
    Mon dieu des fois je me gifflerai.

    Merci encore !

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

Discussions similaires

  1. [MySQL] Requetes SQL dans une boucle PHP
    Par Siteac dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2006, 14h35
  2. [Smarty] Affectation dans une boucle PHP
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/08/2006, 09h30
  3. Réponses: 14
    Dernier message: 25/06/2006, 19h18
  4. [Performance] LEFT JOIN vs SELECT dans une boucle (PHP)
    Par frochard dans le forum Requêtes
    Réponses: 4
    Dernier message: 28/10/2005, 17h45
  5. Réponses: 3
    Dernier message: 06/07/2004, 10h21

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