Calcul total avec des input aux id dynamique

stephy -  
 stephy -
Bonjour,
J'ai créé une fiche de commande dans un formulaire
lorsque que je saisie une qte de pdt le calcul 'prix*qte' s'effectue correctement et automatiquement
mais je n'arive pas a calculer le montant total automatiquement (je ne doit pas utiliser de bonton)
qlq1 pourrait-il m'aider?
merci d'avance!

7 réponses

  1. guimton Messages postés 89 Statut Membre 10
     
    Salut,

    tu galères encore avec ton projet de boutique en ligne à ce que je vois ;)

    alors en fait ton probleme c'est d'avoir une case avec le prix total de tous les produits c'est ça ???

    sur chaque input ou tu as créé le qte*prix tu place un id (ex: totpdt1, totpdt2, etc....

    et tu crée une fonction js qui lors d'un onblur du input du choix de la quantité va mettre à jour le input de prix total.

    oublies pas de mettre un readonly à tes input de prix total.

    et de créer un $_SESSION('total'] = le montant total.
    0
    1. stephy
       
      Ha mon sauveur est revenu! ;-)
      Ok je vais essayer de faire ça
      je te dirais si ça marche
      0
      1. guimton Messages postés 89 Statut Membre 10 > stephy
         
        c'est un projet pour tes cours que tu dois faire là ?
        0
      2. stephy > guimton Messages postés 89 Statut Membre
         
        Non je suis en stage et jai proposé l'automatisation de certaines taches
        0
  2. stephy
     
    Suis je sur la bonne voix chef?
    php ça peut aller mais js c pas la mm chose

    code js :
    <SCRIPT language="javascript" >
    function calcul(){
    var qte = Number(document.getElementById(qte".$i.").value);
    var prix = Number(document.getElementById(prix".$i.").value);

    var montant = Number(prix * qte);
    document.getElementById("montant").value = montant;
    }
    </SCRIPT>

    code php:
    while ($row1 = mysql_fetch_row($result1))
    {
    if ($i<$nb)
    {
    echo "</td><td>";
    //reference du produit
    echo "<input id=\"ref".$i."\" name=\"ref".$i."\" value=\"$row1[0]\" size=\"4\">" ;
    echo "</td><td>";
    //designation du produit
    echo "<input id=\"des".$i."\" name=\"des".$i."\" value=\"$row1[1]\" size=\"30\">" ;
    echo "<td>";
    //quantite du produit
    echo "<input type=\"text\" id=\"qte".$i."\" name=\"qte".$i."\" value=\"\" onkeydown = \"document.getElementById('total".$i."').value = (this.value * document.getElementById('prix".$i."').value);\" size=\"5\" onblur =montant() >";
    echo "</td><td>";
    //unite du produit
    echo "<input id=\"unite".$i."\" name=\"unite".$i."\" value=\"$row1[3]\" size=\"20\" readonly>" ;
    echo "</td><td>";
    //prix du produit
    echo "<input type=\"text\" id=\"prix".$i."\" name=\"prix".$i."\" readonly value=\"$row1[2]\" />";
    echo "</td><td>";
    // echo "<input type=\"text\" id=\"total".$i."\" name=\"total".$i."\" readonly value=\"\" onBlur=\"document.getElementById('montant').value = (this.value + document.getElementById('montant').value);\">";
    echo "<input type=\"text\" id=\"total".$i."\" name=\"total".$i."\" readonly value=\"\" >";
    echo "</td>";
    echo "</tr>";
    $i=$i+1;
    // $montant=$montant+$total;
    }
    }
    0
  3. guimton Messages postés 89 Statut Membre 10
     
    Presque ;)

    //quantite du produit
    echo "<input type=\"text\" id=\"qte".$i."\" name=\"qte".$i."\" value=\"\" onkeydown = \"document.getElementById('total".$i."').value = (this.value * document.getElementById('prix".$i."').value);\" size=\"5\" onblur =\"montant(".$i.");\" >";

    // echo "<input type=\"text\" id=\"total".$i."\" name=\"total".$i."\" readonly value=\"\" onBlur=\"document.getElementById('montant').value = (this.value + document.getElementById('montant').value);\">"; le onblur ne sert à rien içi. car ton readonly evite de pouvoir modifier le montant. et le on blur s'execute quand tu quittes le focus d'un champ.
    0
    1. guimton Messages postés 89 Statut Membre 10
       
      ou fait tu as pas un site pour voir ce que ça donne ?

      c'est plus facile de voir pour résioudre ;)
      0
  4. stephy
     
    ça me fait le mm problème que javais avant cad :
    - le calule ne sexecute déja pas automatiquement (il faut appuyer sur des lignes pour que klk chose saffiche dans le montant total)
    - le calcule ne se fait pas correctement, les valeur sajoutes les unes après les autres

    arf :-( la galère
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. stephy
     
    c un "site" en local, dsl jc bien que ça doit pas etre facile a comprendre qd on voit pas...
    (encore une fois merci de tes réponses!)
    0
    1. guimton Messages postés 89 Statut Membre 10
       
      avec le onblur=montant($i) tu as pensé à modifier ta fonction montant ??

      function calcul(val){
      var qte = Number(document.getElementById('qte'+val).value);
      var prix = Number(document.getElementById('prix'+val).value);

      var montant = Number(prix * qte);
      document.getElementById("montant").value = montant;
      }
      0
  7. stephy
     
    Non ben enfaite ça ne fait plus rien pour le montant total
    j'ai pe etre mal compris klk chose que tu mas di de faire

    while ($row1 = mysql_fetch_row($result1))
    {
    if ($i<$nb)
    {
    echo "</td><td>";
    //reference du produit
    echo "<input id=\"ref".$i."\" name=\"ref".$i."\" value=\"$row1[0]\" size=\"4\">" ;
    echo "</td><td>";
    //designation du produit
    echo "<input id=\"des".$i."\" name=\"des".$i."\" value=\"$row1[1]\" size=\"30\">" ;
    echo "<td>";
    //quantite du produit
    echo "<input type=\"text\" id=\"qte".$i."\" name=\"qte".$i."\" value=\"\" onkeydown = \"document.getElementById('total".$i."').value = (this.value * document.getElementById('prix".$i."').value);\" size=\"5\" onblur =\"montant(".$i.");\" >";

    echo "</td><td>";
    //unite du produit
    echo "<input id=\"unite".$i."\" name=\"unite".$i."\" value=\"$row1[3]\" size=\"20\" readonly>" ;
    echo "</td><td>";
    //prix du produit
    echo "<input type=\"text\" id=\"prix".$i."\" name=\"prix".$i."\" readonly value=\"$row1[2]\" />";
    echo "</td><td>";
    echo "<input type=\"text\" id=\"total".$i."\" name=\"total".$i."\" readonly value=\"\" >";
    echo "</td>";
    echo "</tr>";
    $i=$i+1;
    // $montant=$montant+$total;
    }
    }
    echo '<tr><td colspan="5" align="right">';
    //on calcul ici le montant total
    // echo '<b>Total HT </b>: </td><td>'.$montant. '€';
    echo "<b>Total HT </b>: </td><td width=5><input type=\"text\" id=\"montant\" name=\"montant\" readonly value=\"\" />€";
    echo '</td></tr><tr><td colspan="6">';
    echo '</td></tr></table>';
    //echo '<a href="exportation.php">CREER LA COMMANDE</a>';
    echo '<input type="submit" value="CREER LA COMMANDE" name="commander" />';
    echo '</form>';

    js :

    <SCRIPT language="javascript" >
    function calcul(val){
    var qte = Number(document.getElementById('qte'+val).value);
    var prix = Number(document.getElementById('prix'+val).value);

    var montant = Number(prix * qte);
    document.getElementById("montant").value = montant;
    }
    </SCRIPT>
    0