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 :

indépendance entre les objets et un evenement (en jquery)


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2013
    Messages : 19
    Points : 14
    Points
    14
    Par défaut indépendance entre les objets et un evenement (en jquery)
    Bonjour,

    Sur mon projet de site de e-commerce, je veux afficher mon panier où les valeurs sont affichées dans un tableau créé dynamiquement par une boucle en 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
    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
     
    <?php
    while(isset($_SESSION['produit'][$i])){
            if($_SESSION['produit'][$i][0] != $_SESSION['produit'][0][0]){
    		$donne= $donne.' OR ';
    	}
    	$donne=$donne.'id_produit=\'';
     
    	$donne = $donne . $_SESSION['produit'][$i][0].'\'';
    	$quantitee = $quantitee . $_SESSION['produit'][$i][1].' ';
    	$i++;
    }
     
    $resultat=mysql_query("SELECT id_produit, nom, url, prix, taille, quantitee FROM produit WHERE $donne");
     
    if($resultat){
     
    	//variable
    	$num = mysql_num_rows($resultat);
    	$num_rows = $num;
    	?>
    	         <span id="rows" data-num_rows="<?php echo $num; ?>"></span>
    	<?php
     
    	//boucle ordre décroissant
    	for($num_rows;$num_rows>=1;$num_rows--){
     
    		//variable pour inverse l'ordre 
    		$num_croissant=$num-$num_rows;
     
    		//curseur
    		mysql_data_seek($resultat,$num_croissant);
     
    		$resul=mysql_fetch_array($resultat,MYSQL_ASSOC);
     
    			for($cpt=0;$resul['id_produit'] != $_SESSION['produit'][$cpt][0];$cpt++);
    		?>
    			<tr>
    				<td><?php echo $resul['nom']; ?></td>
    				<td><?php echo $resul['taille']; ?></td>
    				<td><img src="<?php echo $resul['url']; ?>"></td>
    				<td class="a<?php echo $cpt; ?>">
    					<img src="img/down-arrow-icon.png" id="down" />
    					<input  data-quantitee="<?php echo $resul['quantitee'] ; ?>" type="text" value="<?php echo $_SESSION['produit'][$cpt][1]; ?> "/>
    					<img src="img/up-arrow-icon.png" id="up"/>
    				</td>
    				<td><?php echo $resul['prix']; ?></td>
    				<td><?php echo $resul['quantitee'] ; ?></td>
    			</tr>
    			<?php
    			}
    mysql_free_result($resultat);
    ?>

    Le soucis, est que je veux donner la possibilitée à l'utilisateur de modifier n'importe quelles quantitées des produits qu'il veut acheter. Comme le tableau est créer dynamiquement, j'ai pu creer des id différentes aux images à chaques tours de boucle(ou ligne du tableau) où lorsque l'on clique dessus, le champ input est censé incrémenter ou décrémenter. J'ai fait la même fonctionnalitée sur une page où un seul article était affiché. Ce qui fonctionnait très bien.
    Mais ici, lorsqu'on incrémente ou décrémente c'est tout les champs input du tableaux qui sont modifie en même temps.
    Après quelques recherches, il me semble qu'il faut employé la méthode .each()
    mais je n'arrive pas avec.

    voici l'evenement pour incrémenter le champ input
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $("#up").on('click',function(event){
    		var max = $("#up").prev().attr("data-quantitee");
    		var compteur =  parseInt($("#up").prev().val());
    			if( compteur < max ){
    			$("#up").prev().val(parseInt($("#up").prev().val())+1);
    			}
    		});


    Je suis ouvert à toute suggestion. Merci pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Un id dans une boucle ...

    Rappel, un id DOIT ETRE UNIQUE sur la page ...

    => soit tu ajoutes un incrément sur tes id, soit tu passes par un class .

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2013
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Oui tu as raison, après modification cela donne
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <td><?php echo $resul['nom']; ?></td>
    <td><?php echo $resul['taille']; ?></td>
    <td><img src="<?php echo $resul['url']; ?>"></td>
    <td class="a">
    	<img src="img/down-arrow-icon.png" id="down<?php echo $cpt; ?>" />
    	<input class="a" data-quantitee="<?php echo $resul['quantitee'] ; ?>" type="text" value="<?php echo $_SESSION['produit'][$cpt][1]; ?> "/>
    	<img class="x" src="img/up-arrow-icon.png" id="up<?php echo $cpt; ?>"/>
    </td>
    <td><?php echo $resul['prix']; ?></td>
    <td><?php echo $resul['quantitee'] ; ?></td>

    De cette manière chaque id créer sont différents.

    Une fois cela en place, comment créer un evenement si l'id est inconnu par nous?Peut etre un évenement dans un evenement?(si c'est possible) Mes testes sont peu concluant...
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $(".a").on('click',function(){
    		var id ='#' + $('this : last-child').attr('id');
     
    		$("id").on('click',function(id){
    		// $('#err').text(id);
    		var max = $("id").prev().attr("data-quantitee");
    		var compteur =  parseInt($("id").prev().val());
    			if( compteur < max ){
    			$("id").prev().val(parseInt($("id").prev().val())+1);
    			}
    		});
    Je m'explique ".a" correspond à la balise <td> qui a des enfants <img>, <input>, <img>. Et ce code est censé récupérer l'id du dernière enfant. mais ca ne fonctionne pas du tout...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2013
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    J'ai une autre idée, créer dynamiquement un événement click grâce à un événements de type mouseover?

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonjour

    $( "td.aClass > *:last-child" )[ 0 ].id

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    il suffisait juste d emodifier le script précédent pour le selecteur d'id :

    id commence par up


  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2013
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2013
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    C'est super merci à tout les deux pour vos réponses, j'y étais dessus depuis 21h hier....

    Voici le code final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $("[id^='up']").on('click',function(){
    		var max = $(this).prev().attr("data-quantitee");
    		var compteur =  parseInt($(this).prev().val());
    			if( compteur < max ){
    			$(this).prev().val(parseInt($(this).prev().val())+1);
    			}
    		});

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    ou à la place d'un id passer pat un class

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

Discussions similaires

  1. Question sur les relations entre les objets
    Par kedare dans le forum Ruby on Rails
    Réponses: 4
    Dernier message: 18/04/2008, 14h13
  2. Réponses: 6
    Dernier message: 18/02/2008, 23h24
  3. [POO] Mise en cummun de variables entre les objets
    Par ChriGoLioNaDor dans le forum Langage
    Réponses: 2
    Dernier message: 08/03/2007, 08h22
  4. Incompatibilité entre les objets
    Par bastoonet dans le forum Designer
    Réponses: 1
    Dernier message: 22/02/2007, 08h51
  5. GLScene et les collisions entre les objets
    Par HopeLeaves dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 13/06/2005, 19h45

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