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 :

Récupération id et prix en js


Sujet :

JavaScript

  1. #1
    Membre habitué
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 238
    Points : 129
    Points
    129
    Par défaut Récupération id et prix en js
    Bonjour à tous et à toutes,
    Toujours dans la réalisation de mon panier en js je voudrais savoir comment récupérer l'id du produit ou les quantités sont entrées dans l'input pour pouvoir ensuite récupérer le prix qui correspond.
    Voici le code
    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
    <script>
    function CalculPanier(NbrProduit) {
    var nbr1 = NbrProduit;
    var nbr2 = Number(2);
    var total = (Number(nbr1) * Number(nbr2));
    document.getElementById("totaldon").innerHTML = total;
    }
    function Produit(id, reference, designation, prix) {
            this.id= id;
         this.reference= reference;
            this.prix= prix;
            this.designation= designation;
            this.toString= function() {
                    return this.reference + " " + designation + " "+ prix;
            }
      }
     
      var catalogue= new Array();
      catalogue.push(new Produit(1, "ref 1", "ordinateur", 800));
      catalogue.push(new Produit(2, "ref 2","souris", 20.45));
      catalogue.push(new Produit(3, "ref 3","uniter centrale", 620));
    catalogue.push(new Produit(4, "ref 4","ecran", 120));
      var panier= new Array();
      
     
      function remplirCatalogue() {
            var cat= document.getElementById('cat');
            for (var i in catalogue) {
                var e= document.createElement("p");
                e.value=i;
          var txt= document.createTextNode(catalogue[i].id + " " + catalogue[i].reference + " " + catalogue[i].designation + " " + catalogue[i].prix);
          var txt2=document.createElement("input");
                e.appendChild(txt);
          e.appendChild(txt2);
                cat.appendChild(e);
            }
      }
     
    function ajouterCase(parent, txt) {
      var e= document.createElement("td");
      e.appendChild(document.createTextNode(txt));
      parent.appendChild(e);
    }
     
    function calculerTotal() {
      var tot= 0;
      for (var produit in panier) {
            tot+= panier[produit].prix;
      }
      return tot;
    }
    function ajouter() {
            /*var cat= document.getElementById('cat');
            var sel= cat.options[cat.selectedIndex].value;*/
      var cat= document.getElementById('cat');
            var sel= inputProduit;
            var prod= catalogue[sel];
            panier.push(prod);
            var ligne= document.createElement("tr");
            ajouterCase(ligne,prod.reference);
      ajouterCase(ligne,prod.designation);
            ajouterCase(ligne,prod.prix);
            document.getElementById("pan").appendChild(ligne);
            document.getElementById("tot").innerHTML= calculerTotal();
    }
    remplirCatalogue();
    const inputs = document.querySelectorAll(".ligne_article input");
    inputs.forEach((NbrProduit) => {
      NbrProduit.addEventListener("change", (e) => {
        alert(NbrProduit.value);
        CalculPanier(NbrProduit.value);
      });
    });
    </script>
     
    <div id="cat" class="ligne_article"></div>
        <div class="reduction_impot"><span id="totaldon"></span> € Total Panier</div>
     
    <table id="pan">
      <tr><th>référence</th><th>designation</th><th>prix</th></tr>
    </table>
     
    <p>Total <span id="tot">0</span></p>
    Merci de votre aide

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 117
    Points : 240
    Points
    240
    Par défaut
    Bonjour,
    si je peux me permettre ta demande est assez flou,
    Infiné il existe plusieurs solutions, mais la question c'est toi tu veux laquelle?
    Récupérer le prix qui correspond directement lors de la saisie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.querySelector('#machinTruc').addEventListener('keydown',function(){})
    Après une confirmation sur un button pour faire les totaux s'il y a plusieurs produits ?

    Dans tout les cas une idée serait de faire des id faciles à réutiliser , lorsque tu génères ton code html via ton js
    Tu fais en sorte que les spécifité du produit ait pour id un truc comme ca : 1_caracteristique ou 1_produit, tu as l'idée :p
    Et pour ton input quantité 1_qte.
    Comme ca tu peux retrouver éventuellement les catégories de produits concerné.

    Cdt,

  3. #3
    Membre habitué
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 238
    Points : 129
    Points
    129
    Par défaut
    Bonjour,
    Merci gabi7756 de ton aide.
    Pour affiner ma demande en faite je récupère des produits dans une bdd même si là j'en ai mit quatre pour l'exemple, il va y en avoir environs 200 mais ça c'est pas un problème.

    L'input qui est sur la même ligne que l'id, la référence, la description et le prix des produits qui sont affichés sert à mettre la quantité de produit que l'utilisateur veut ajouter au panier.
    Ce qu'il faudrait c'est que j'arrive à récupérer l'id du produit correspondant à l'input ou une valeur a été renseignée pour pouvoir récupérer le prix et faire les calcules et tous le reste (affichage dans le panier, enregistrement dans la bdd etc...).

    Pour le moment dans mon script le tarif est à 2 pour faire des essaies car je ne sais pas comment faire pour récupérer le tarif qui correspond.

    Je ne souhaite pas de bouton, je voudrais que le calcul se fasse dès que la valeur dans l'input change.

    Je serais très bien le faire en php avec un bouton bien sur mais justement l'idée c'est de faire un truc diffèrent.

    J’espère avoir été un peut plus précis dans ma demande.
    Merci de ton aide.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 117
    Points : 240
    Points
    240
    Par défaut
    Bonjour,
    Merci pour ton retour
    Pour ce qui est de récupéré la quantité saisie tu fait un truc comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    input.addEventListener("input", updateValue);
     
    function updateValue(e) {
      console.log(e.target.value); // value de l'input
    qte=e.target.value
      console.log(e.target.id); // Id de l'input modifié
    id=e.target.id
    }
    L'evenement input se déclenche dès que la valeur de l'input change.
    Ainsi comme évoqué dans mon dernier post tu as un id à partir du quel tu pourras déterminé le produit concerné par un nommage spécifique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    id=id.substring(0,1); // La tu récupères l'id 
    var prix_unite = document.querySelector('#'+id+'prix_produit').textContent // Ou value en fonction de ton choix
    // Je te laisse le soins d'enlevé pottentiellement l'unité monétaire derrière ( euro , dollar etc)
    prix_total=prix_unite *qte
    document.querySelector('#'+id+'prix_total').textContent=prix_total
    Donc le code complet un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    input.addEventListener("input", updateValue);
     
    function updateValue(e) {
      // console.log(e.target.value); // value de l'input
      // console.log(e.target.id); // Id de l'input modifié
    qte=e.target.value  
    id=e.target.id
    id=id.substring(0,1); // La tu récupères l'id 
    prix_unite = document.querySelector('#'+id+'prix_produit').textContent // Ou value en fonction de ton choix
    // Je te laisse le soins d'enlevé pottentiellement l'unité monétaire derrière ( euro , dollar etc)
    prix_total=prix_unite *qte
    document.querySelector('#'+id+'prix_total').textContent=prix_total
    }
    Oublié de dire mais prévois un input number ca sera plus simple et ca évitera de tapé des lettres

    Pour l'histoire du reste et enregistrement sur la bdd, on va pas le faire à chaque fois , laisse toi un bouton de validation pour confirmé les quantités saisies ou ton panier

  5. #5
    Membre habitué
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 238
    Points : 129
    Points
    129
    Par défaut
    Bonjour gabi7756 et merci de tout aide,
    Je dois t'avouais que je n'y comprend pas grand chose.
    Je vais m'acheter un livre sur le js histoire de me dégrossir un peu, si tu en connais un bien n'hésite pas à me donner le titre.
    Pour mon projet je l'ai fait en php mais j'aimerais bien pouvoir le faire en js pour ma culture personnel et par ce que j'aime bien le js, je trouve que ça dynamise bien un site.

    Pour le type de l'input, oui je vais mettre number mais pour l'instant je m'étais concentré sur le fonctionnement de base.
    Je vais mettre mon code avec des commentaires fonction par fonction pour voir si j'ai bien compris et si ça te dérange pas de me donner des petites explication j'en serai ravi.

  6. #6
    Membre éclairé
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juin 2014
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2014
    Messages : 427
    Points : 859
    Points
    859
    Par défaut
    bonjour;
    Il y a des tas de ressources en ligne concernant JS.
    je peux te recommander entres autres les cours de Pierre Giraud (qui sont également disponibles dans des versions PDF.
    Cordialement;

  7. #7
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 117
    Points : 240
    Points
    240
    Par défaut
    Bonjour,
    Avec plaisir que si je peux t'aider je le ferai
    Ton approche de faire fonction par fonction c'est le meilleur moyen pour apprendre.
    La solution miracle pour apprendre c'est bidouillé, bidouillé ett encore bidouillé
    Le plus simple c'est de découper toutes les fonctionnalités en plusieurs étapes ,
    Généralement tu commences par récupéré les datas ( dans le cas d'un site vitrine)
    En deuxième tu trouves un beau moyen en js de les affichers proprement (tableau , affichage par page etc ...)
    En trois, tu t'occupes de l'Interface homme machine( IHM), mettre en place tout ce que l'utilisateur devrait pouvoir faire (choisir un produit ,saisir les quantités , valider , etc). Connaitre le prix TTC , hors taxe , le coût de livraison etc ...
    Et en dernier la mise à jour en bdd + un message ou un affichage pour confirmer que sa saisie à été prise en compte , pour la séléction de matériel tu pourrais faire un récapitulatif des demandes concernés et un petit message pour expliquer la procédure à suivre pour le récupéré par exemple etc...

    J'oubliais , si t'as des question hésite pas

  8. #8
    Membre habitué
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 238
    Points : 129
    Points
    129
    Par défaut
    Merci à vous deux pour votre gentillesse et de prendre du temps pour moi.
    Merci aussi domi65 pour ton lien, je vais acheter sont livre pour le lire tranquillement, 10€ c'est correcte.

    Voici les premières fonction.
    N'hésitez pas à me corriger.
    J'ai pas trouver comment attribuer un id en js comme je le ferais en php Ex : <input id="num_pro_1/>
    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
    <script>
    function CalculPanier(NbrProduit) {
    var nbr1 = NbrProduit; //ici la variable nbr1 récupère le nombre de produit 
    var Prix_article = Number(2); //ici la variable du prix. j'ai mis 2 mais le tarif sera différent selon le produit
    var total = (Number(nbr1) * Number(Prix_article)); //ici je calcule le nombre par le prix
    document.getElementById("totalarticle").innerHTML = total; //ici j'affiche la valeur de la variable total dans le span qui a pour id totalarticle
    }
    function Produit(id, reference, designation, prix) {
            this.id_produit= id; // la je dit que id_produit à pour valeur id
         this.ref_produit= reference;// pareil que pour id_produit 
            this.prix_produit= prix;// pareil que pour id_produit 
            this.designation_produit= designation;// pareil que pour id_produit 
            this.ListeProduits= function() { //je comprend pas bien à quoi sert cette fonction, même si on l'enlève ça fonctionne, en plus vue la couleur syntaxtique du .id je pense qu'il y a une erreur
                    return this.id + " " + reference + " " + designation + " "+ prix;
            }
      }
     
      var catalogue= new Array(); // on créé un tableau catalogue
      catalogue.push(new Produit(1, "ref 1", "ordinateur", 800));// je remplis le tableau catalogue avec push() qui ajoute un ou plusieurs éléments à la fin d'un tableau et retourne la nouvelle taille du tableau.
      catalogue.push(new Produit(2, "ref 2","souris", 20.45));
      catalogue.push(new Produit(3, "ref 3","uniter centrale", 620));
    catalogue.push(new Produit(4, "ref 4","ecran", 120));
      var panier= new Array();// on créé un tableau panier
      
     
      function remplirCatalogue() {
            var cat= document.getElementById('cat'); //je récupère la balise div ou id=cat
            for (var i in catalogue) { //je fais une boucle sur le tableau catalogue
                var e= document.createElement("p");// crée un nouvel élément p
                e.value=i;//la variable e prend tour à tour les valeurs de i
          var txt= document.createTextNode(catalogue[i].id_produit + " " + catalogue[i].ref_produit + " " + catalogue[i].designation_produit + " " + catalogue[i].prix_produit);// on met le contenu dans la balise p
          var txt2=document.createElement("input");// crée un nouvel élément input
          txt2.setAttribute("type", "number");// on donne le type à l'input
          txt2.setAttribute("name", catalogue[i].id_produit+"_numproduit");//je donne un nom à chaque input
          cat.appendChild(e);//je place la balise div dans mon doc
                e.appendChild(txt);//je place les balises p dans mon div id=cat
          e.appendChild(txt2);//je place les balises input dans mon div id=cat
                
            }
      }
    </script>
    <div id="cat" class="ligne_article"></div>
        <div class="reduction_impot"><span id="totalarticle"></span> € Total Panier</div>
     
    <table id="pan">
      <tr><th>référence</th><th>designation</th><th>prix</th></tr>
    </table>
     
    <p>Total <span id="tot">0</span></p>

  9. #9
    Membre habitué
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 238
    Points : 129
    Points
    129
    Par défaut
    Bonjour,
    à force de bidouiller et de faire des recherches fonction par fonction j'ai réussi à créer et à récupérer les valeurs des input grâce au id.
    Je suis en train d'essayer de récupérer le bon prix de l'article mais c'est toujours le dernier prix (120) qui et récupérer dans la fonction CalculPanier car il faudrait que je lui dise de récupérer le prix qui correspond à l'id mais je vois vraiment pas comment faire.
    Quelqu'un peut me donner un coup de main ?
    Voici le code
    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
    <script>
    var catalogue= new Array(); // on créé un tableau catalogue
      catalogue.push(new Produit(1, "ref 1", "ordinateur", 800));// je remplis le tableau catalogue avec push() qui ajoute un ou plusieurs éléments à la fin d'un tableau et retourne la nouvelle taille du tableau.
      catalogue.push(new Produit(2, "ref 2","souris", 20.45));
      catalogue.push(new Produit(3, "ref 3","uniter centrale", 620));
    catalogue.push(new Produit(4, "ref 4","ecran", 120));
     
    function CalculPanier(NbrProduit) {
    var nbr1 = NbrProduit; //ici la variable nbr1 récupère le nombre de produit
      for (var tarifId in catalogue) {
                var Prix_article = Number(catalogue[tarifId].prix_produit);//il faudrait ici que je renseigne quel tarif prendre mais je vois pas comment
            }
    //var Prix_article = Number(2); //ici la variable du prix. j'ai mis 2 mais le tarif sera différent selon le produit
    var total = (Number(nbr1) * Number(Prix_article)); //ici je calcule le nombre par le prix
    document.getElementById("totalarticle").innerHTML = total; //ici j'affiche la valeure de la variable total dans le span qui a pour id totalarticle
    }
    function Produit(id, reference, designation, prix) {
            this.id_produit= id; // la je dit que id_produit à pour valeur id
         this.ref_produit= reference;
            this.prix_produit= prix;
            this.designation_produit= designation;
            this.ListeProduits= function() { //je coprend pas bien à quoi sert cette fonction, même si on l'enlève ça fonctionne
                    return this.id + " " + reference + " " + designation + " "+ prix;
            }
      }
     
      var panier= new Array();// on créé un tableau panier
      
      function remplirCatalogue() {
            var cat= document.getElementById('cat'); //je récupère la balise div ou id=cat
            for (var i in catalogue) {
                var e= document.createElement("p");// crée un nouvel élément p
                e.value=i;//la variable e prend tour à tour les valeurs de i
          var txt= document.createTextNode(catalogue[i].id_produit + " " + catalogue[i].ref_produit + " " + catalogue[i].designation_produit + " " + catalogue[i].prix_produit);// on met le contenu dans la balise p
          var txt2=document.createElement("input");// crée un nouvel élément input
          txt2.setAttribute("type", "number");// on donne le type à l'input
          txt2.setAttribute("name", catalogue[i].id_produit+"_numproduit");//je donne le nom à chaque input
          txt2.setAttribute("placeholder", 0);
          txt2.setAttribute("id", catalogue[i].id_produit+"_numproduit");
          cat.appendChild(e);//je place la balise div dans mon doc
                e.appendChild(txt);//je place les balises p dans mon div
          e.appendChild(txt2);//je place les balises input dans mon div
                
            }
      }
     
    function ajouterCase(parent, txt) {
      var e= document.createElement("td");
      e.appendChild(document.createTextNode(txt));
      parent.appendChild(e);
    }
     
    function calculerTotal() {
      var tot= 0;
      for (var produit in panier) {
            tot+= panier[produit].prix;
      }
      return tot;
    }
    function ajouter() {
            /*var cat= document.getElementById('cat');
            var sel= cat.options[cat.selectedIndex].value;*/
      var cat= document.getElementById('cat');
            var sel= inputProduit;
            var prod= catalogue[sel];
            panier.push(prod);
            var ligne= document.createElement("tr");
            ajouterCase(ligne,prod.ref_produit);
      ajouterCase(ligne,prod.designation);
            ajouterCase(ligne,prod.prix);
            document.getElementById("pan").appendChild(ligne);
            document.getElementById("tot").innerHTML= calculerTotal();
    }
    remplirCatalogue();
     
    var inputs= new Array();
    for (var ListeId in catalogue) {
                inputs.push(document.getElementById(catalogue[ListeId].id_produit+"_numproduit"));//je sélectionne l'id de chaque input
            }
    inputs.forEach((NbrProduit) => {
      NbrProduit.addEventListener("change", (e) => {
        alert(NbrProduit.value);
        CalculPanier(NbrProduit.value);
      });
    });
    </script>
    <div id="cat" class="ligne_article"></div>
        <div class="reduction_impot"><span id="totalarticle"></span> € Total Panier</div>
     
    <table id="pan">
      <tr><th>référence</th><th>designation</th><th>prix</th></tr>
    </table>
     
    <p>Total <span id="tot">0</span></p>

  10. #10
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 117
    Points : 240
    Points
    240
    Par défaut
    Bonjour,
    Je te propose une solution ci-contre:
    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
    function CalculPanier(produit) {
    var id = produit.id
    id=id.replace("_numproduit","") // ici on enlève le texte inutile, on veut récupéré que le chiffre pour trouver dans ton catalogue le produit concerné
    // replace( searchValue , replaceValue)
    var nbr1 = produit.value; //ici la variable nbr1 récupère le nombre de produit
    var Prix_article = Number(catalogue[id].prix_produit);//il faudrait ici que je renseigne quel tarif prendre mais je vois pas comment
    //var Prix_article = Number(2); //ici la variable du prix. j'ai mis 2 mais le tarif sera différent selon le produit
    var total = (Number(nbr1) * Number(Prix_article)); //ici je calcule le nombre par le prix
    document.getElementById("totalarticle").innerHTML = total; //ici j'affiche la valeure de la variable total dans le span qui a pour id totalarticle
    }
     
     
    inputs.forEach((produit) => {
      produit.addEventListener("change", (e) => {
        alert(produit);
        CalculPanier(produit);
      });
    });
    J'ai aussi modifié ton Event change pour qu'il renvoie l'élément concerné et pas que la quantité saisie.
    Comme ca dans le calculPanier tu peux récupérer ta quantité , ton id et tout ce dont tu as besoin , la en l'occurence il n'y a que ca.
    Cdt,

  11. #11
    Membre habitué
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 238
    Points : 129
    Points
    129
    Par défaut
    Bonjour gabi7756 et merci de ton aide,
    J'ai modifié mon code pour l'adapter avec le tient.
    Il y a bien un prix qui est récupéré mais c'est pas celui du bon id, c'est celui d'aprés
    J’essaie de me débrouiller mais je n'y arrive pas.

    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
    <script>
    var catalogue= new Array(); // on créé un tableau catalogue
    catalogue.push(new Produit(1, "ref 1", "ordinateur", 800));// je remplis le tableau catalogue avec push() qui ajoute un ou plusieurs éléments à la fin d'un tableau et retourne la nouvelle taille du tableau.
    catalogue.push(new Produit(2, "ref 2","souris", 20.45));
    catalogue.push(new Produit(3, "ref 3","uniter centrale", 620));
    catalogue.push(new Produit(4, "ref 4","ecran", 120));
    catalogue.forEach(function (item, index, array) {
    // console.log(item, index);
    });
    function Produit(id, reference, designation, prix) {
      	this.id_produit= id; // la je dit que id_produit à pour valeur id
            this.ref_produit= reference;
      	this.prix_produit= prix;
      	this.designation_produit= designation;
      }
    function remplirCatalogue() {
            var cat= document.getElementById('cat'); //je récupère la balise div ou id=cat
      	for (var i in catalogue) {
      	    var e= document.createElement("p");// crée un nouvel élément p
      	    e.value=i;//la variable e prend tour à tour les valeurs de i
          var txt= document.createTextNode(catalogue[i].id_produit + " " + catalogue[i].ref_produit + " " +   catalogue[i].designation_produit + " " + catalogue[i].prix_produit);// on met le contenu dans la balise p
          var txt2=document.createElement("input");// crée un nouvel élément input
          txt2.setAttribute("type", "number");// on donne le type à l'input
          txt2.setAttribute("name", catalogue[i].id_produit+"");//je donne le nom à chaque input
          txt2.setAttribute("placeholder", 0);
          txt2.setAttribute("id", catalogue[i].id_produit+"");
          cat.appendChild(e);//je place la balise div dans mon doc
                e.appendChild(txt);//je place les balises p dans mon div
          e.appendChild(txt2);//je place les balises input dans mon div
     
      	}
      }
     
    remplirCatalogue();
     
    function CalculPanier(produit, Nbr_article) {
    var id = produit.id;
    //id=id.replace("_numproduit","") // ici on enlève le texte inutile, on veut récupéré que le chiffre pour trouver dans ton catalogue le produit concerné
    // replace( searchValue , replaceValue)
    var nbr1 = produit.value; //ici la variable nbr1 récupère le nombre de produit
     
    //var Prix_article = produit.prix_produit;
    var Prix_article = Number(catalogue[id].prix_produit);
      var Prix_article = catalogue.find(item => item.prix_produit == id);
    var total = (Number(nbr1) * Number(Prix_article)); //ici je calcule le nombre par le prix
    //document.getElementById("totalarticle").innerHTML = total; //ici j'affiche la valeure de la variable total dans le span qui a pour id totalarticle
      alert(id);
      alert(Nbr_article);
      alert(Prix_article);
    }
     
    var inputs= new Array();
    for (var ListeId in catalogue) {
     inputs.push(document.getElementById(catalogue[ListeId].id_produit+""));//je liste l'id de chaque input
      document.getElementById(catalogue[ListeId].id_produit+"");
      	}
     
    inputs.forEach((produit) => {
      produit.addEventListener("change", (e) => {
     
        var Nbr_article = produit.value;
     
        CalculPanier(produit, Nbr_article);
      });
    });
    </script>
    Merci de ton aide

  12. #12
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 117
    Points : 240
    Points
    240
    Par défaut
    Bonjour ton problème est relativement simple
    Ton tableau de catégorie fonctionne comme ceci , Catalogue [0] donne le premier élément ,, Catalogue [1] donne le deuxième, ainsi de suite.
    A l'inverse ton id dans le tableau Catalogue commence à 1 et pas a 0.
    Le décalage s'explique comme ca
    Tu crée un produit mais son id ne correspond pas a son index dans le tableau
    catalogueId[0]=1
    catalogueId[1]=2
    Etc

    Première solution : tu commences tes id de Catalogue a 0
    Deuxième solution : CF la première

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var catalogue= new Array(); // on créé un tableau catalogue
    catalogue.push(new Produit(0, "ref 1", "ordinateur", 800));// je remplis le tableau catalogue avec push() qui ajoute un ou plusieurs éléments à la fin d'un tableau et retourne la nouvelle taille du tableau.
    catalogue.push(new Produit(1, "ref 2","souris", 20.45));
    catalogue.push(new Produit(2, "ref 3","uniter centrale", 620));
    catalogue.push(new Produit(3, "ref 4","ecran", 120));

  13. #13
    Membre habitué
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 238
    Points : 129
    Points
    129
    Par défaut
    Merci pour ta réponse mais je ne peux pas faire ça.
    Pour mon teste j'ai mit 1,2,3,4 mais quand ça sera en prod, les produits seront exportés depuis un base de données et les id des produits ne seront ni dans l'ordre ni forcément incrémenté de +1
    J'ai essayé ça mais j'ai undefined en retour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var Prix_article = catalogue.find(item => item.prix_produit == id);

  14. #14
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2022
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2022
    Messages : 117
    Points : 240
    Points
    240
    Par défaut
    Oups
    Vraiment désolé j'ai pas réfléchi :')

    Tiens voici un élément de réponse valable je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     function findProductById(tonCatalogue, targetId) {
      return tonCatalogue.find(product => product.id_produit === targetId);
    }
    function CalculPanier(produit, Nbr_article) {
    product=findProductById(catalogue,Number(produit.id))
    console.log(product)
    var id =product.id_produit
    var prix_produit = product.prix_produit
    var total = Nbr_article * prix_produit;
    console.log(id,prix_produit,total)
    Cdt

  15. #15
    Membre habitué
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 238
    Points : 129
    Points
    129
    Par défaut
    Au top
    Merci beaucoup.

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

Discussions similaires

  1. Prix SQLServer
    Par Pasiphae dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/07/2004, 15h16
  2. calcul prix sql
    Par Damien69 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 04/05/2004, 09h00
  3. [Info] J2EE prix licence?
    Par Piolet dans le forum Java EE
    Réponses: 10
    Dernier message: 21/04/2004, 10h25
  4. Calcul d'un prix
    Par maki dans le forum Flash
    Réponses: 16
    Dernier message: 26/09/2003, 17h24

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