Se connecter / S'enregistrer
Votre question
Résolu

Calcule Automatiser JS /PHP

Tags :
  • test
  • Php
  • Programmation
  • Script
Dernière réponse : dans Programmation
12 Août 2016 10:01:29

Bonjour, je suis bloqué, je cherche a créer un devis automatiser. Et, j'effectue plusieurs test pour les calculs, pour une ligne imput j'arrive a effectuer le calcule. Mais lorsque j'intègre une boucle php pou afficher une succession de ligne d'imput . Je n'arrive pas à faire le simple calcul sur aucune des lignes. Pourriez vous m'aider svp, après une succession de test , sa comment a m'exaspérer.

voici mon script:
  1. <script type="text/javascript">
  2. function calculer()
  3. {
  4.  
  5. document.form1.MT.value = (document.form1.MF.value * document.form1.TP.value)/100;
  6. }
  7. </script>
  8.  
  9. la première ligne
  10. <tr>
  11. <td align='center'><input type='text' class = 'in' name = 'designation' size='25' onkeydown="calculer()"></td>
  12. <td align='center'><input type='text' class = 'in' name = 'MF' size='25' onkeydown="calculer()"></td>
  13.  
  14. <td><select name='TP' size='1' onkeydown="calculer()">
  15. <option value='a' selected> </option>
  16. <option value='15'>Tx0</option>
  17. <option value='20'>Tx1</option>
  18. <option value='25'>Tx2</option>
  19. </select></td>
  20.  
  21. <td align='center'><input type='text' class = 'in' name = 'MT' size='25'onkeydown="calculer()"></td>
  22. </tr>
  23.  
  24. <input type="button" name="Actualiser" onclick="calculer()" value="Actualiser" />
  25.  
  26. et le code quand j'utilise php pour afficher 22 lignes
  27.  
  28. <?php
  29. for($i=1;$i<=22;$i++)
  30. {
  31. ?>
  32. <tr>
  33. <td align='center'><input type='text' class = 'in' name = 'designation' size='25' onkeydown="calculer()"></td>
  34. <td align='center'><input type='text' class = 'in' name = 'MF' size='25' onkeydown="calculer()"></td>
  35.  
  36. <td><select name='TP' size='1' onkeydown="calculer()">
  37. <option value='a' selected> </option>
  38. <option value='15'>Tx0</option>
  39. <option value='20'>Tx1</option>
  40. <option value='25'>Tx2</option>
  41. </select></td>
  42.  
  43. <td align='center'><input type='text' class = 'in' name = 'MT' size='25'onkeydown="calculer()"></td>
  44. </tr>
  45.  
  46.  
  47. <?php
  48. }
  49. ?>

Autres pages sur : calcule automatiser php

Meilleure solution

12 Août 2016 13:23:51

Bonjour,

c'est normal, tu as plusieurs fois les mêmes identifiants de champs, comment veux-tu qu'il s'y retrouve ?
ajoute ton $i dans la déclaration + calculer, et utilise ensuite GetElementByID pour récupérer les champs. Ou alors GetElementsByTag puis une boucle sur les éléments du tableau renvoyé, ou nextChild ...

vu que la variable PHP se retrouve dans les lignes générées, j'ai mis un echo.
j'ai aussi ajouté les fermetures de balises INPUT (W3C)
et pour avoir le code formaté sur le forum, utilise les balises [ code ] et [ / code ] (sans espaces)

  1. <script type="text/javascript">
  2. function calculer(numligne)
  3. {
  4. document.getElementById("MT"+numligne).value = (document.getElementById("MF"+numligne).value * document.getElementById("TP"+numligne).value)/100;
  5. }
  6. </script>
  7. <table>
  8. <form name="form1">
  9. <?php
  10. for($i=1;$i<=22;$i++)
  11. {
  12.  
  13. echo "<tr>
  14. <td align='center'><input type='text' class = 'in' name = 'designation' size='25' value='designation$i' onkeydown=\"calculer($i)\"/></td>
  15. <td align='center'><input type='text' class = 'in' id='MF$i' name = 'MF$i' size='25' onkeydown=\"calculer($i)\"/></td>
  16.  
  17. <td><select name='TP$i' id='TP$i' size='1' onkeydown=\"calculer()\">
  18. <option value='0' selected> </option>
  19. <option value='15'>Tx0</option>
  20. <option value='20'>Tx1</option>
  21. <option value='25'>Tx2</option>
  22. </select></td>
  23.  
  24. <td align='center'><input type='text' class = 'in' id='MT$i' name = 'MT$i' size='25'onkeydown=\"calculer($i)\"/></td>
  25. </tr>";
  26. }
  27. ?>

partage
12 Août 2016 14:47:14

Merci pour ton aide mais je suis encore novice sur javascript!
m
0
l