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 :

Calculs sur un tableau Html créé en boucle


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Par défaut Calculs sur un tableau Html créé en boucle
    Salut,
    Je suis depuis quelques jours sur ce tableaux a tenté d'en faire la somme. en javascript et je n'arrive pas.
    j'ai essayé parsint +getelement getelement*1 etc mais rien.

    Les lignes sont incrémentées en php (sur un BD mySQL)

    et donc ca marche une fois sur deux et ca concatène les totals HT et TTC.


    C'est un truc tout bête j'imagine
    le JS est en bas.


    Qu'en pensez-vous ?

    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
    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
    <h1><a href="Page.php">Paga</a></h1>
    <?php 
     
    // LIGNES  
    if (!ISSET($_SESSION['Lignes']))
    	{
    	$_SESSION['Lignes'] = 2; // Ici le sql
    	for($i=1; $i < $_SESSION['Lignes']; $i++) {
    		// Declaration des sessions
    		if (!ISSET($_SESSION['Designation'.$i])) {$_SESSION['Designation'.$i] = '';}
    		if (!ISSET($_SESSION['Unite'.$i])) {$_SESSION['Unite'.$i] = '';}
    		if (!ISSET($_SESSION['Prix'.$i])) {$_SESSION['Prix'.$i] = '';}
    		if (!ISSET($_SESSION['Quantite'.$i])) {$_SESSION['Quantite'.$i] = '';}
    		if (!ISSET($_SESSION['MontantHT'.$i])) {$_SESSION['MontantHT'.$i] = '';}
    	}
    } 
    echo '$_SESSION[= '. $_SESSION['Lignes'] . '<br>';
    if (ISSET($_POST['Lignes'])) { // Ajouter ligne + declarer les variables
    			$_SESSION['Lignes'] = $_SESSION['Lignes'] + $_POST['Lignes'];
    			$nb_lignes_avant = $_SESSION['Lignes']; 
    			$nb_lignes_apres = $_SESSION['Lignes'] + $_POST['Lignes'] + 7;
    			for($i=$nb_lignes_avant - 1; $i < $nb_lignes_apres; $i++) {
    				// Sessions
    				if (!ISSET($_SESSION['Designation'.$i])) {$_SESSION['Designation'.$i] = '';}
    				if (!ISSET($_SESSION['Unite'.$i])) {$_SESSION['Unite'.$i] = '';}
    				if (!ISSET($_SESSION['Prix'.$i])) {$_SESSION['Prix'.$i] = '';}
    				if (!ISSET($_SESSION['Quantite'.$i])) {$_SESSION['Quantite'.$i] = '';}
    				if (!ISSET($_SESSION['MontantHT'.$i])) {$_SESSION['MontantHT'.$i] = '';}
    		}
    	}
    	echo '<p id="i">' . $i . "</p>";
    ?>
    <form action="page.php" method="post" enctype="multipart/form-data" name="Form" style="font-size:21px ">
    <table id="tableau" style=" float:right; margin-right:121px" border="1">
      <tr>
        <td class="Doc_Tableau" width="293" style="text-align:left; width:293px; "></td>   
        <td class="Doc_Tableau" width="293" style="text-align:left; width:293px; ">D&eacute;signation</td>
        <td class="Doc_Tableau" width="89" style=" width:93px;" >Unit&eacute;</td>
        <td class="Doc_Tableau" width="97" style=" width:93px;">Prix</td>
        <td class="Doc_Tableau" width="95" style=" width:95px;">Quantit&eacute;</td>
        <td class="Doc_Tableau" width="119" style=" width:119px;">Montant HT </td>
      </tr>
    <?php for($i=1; $i < $_SESSION['Lignes']; $i++)
    { ?>
      <tr class="Doc_Tableau">
        <td class="Doc_Tableau" style="text-align:left; width:293px; ">&nbsp;</td>
        <td class="Doc_Tableau" style="text-align:left; width:293px; "><?php echo "la " .  $i;?>
    	<select name="Designation<?php echo $i;?>" style="font-size:19px;">
    	  <option <?php if ($_SESSION['Designation'.$i]== 'AAA') {echo 'AAA';}?>>AAA</option>
    	</select>
    	</td>
    <td class="Doc_Tableau" style=" width:93px;" ><input id="Unite<?php echo $i;?>" type="text" size="7" name="Unite<?php echo $i;?>" onChange="change_valeur(<?php echo $i;?>)" value="<?php if (ISSET($_SESSION['Unite'.$i])) {echo $_SESSION['Unite'.$i];} ?>" > </td>
    <td class="Doc_Tableau" style=" width:93px;"><input id="Prix<?php echo $i;?>"  type="text" size="7" name="Prix<?php echo $i;?>" onChange="change_valeur(<?php echo $i;?>)" value="<?php if (ISSET($_SESSION['Prix'.$i])) {echo $_SESSION['Prix'.$i];} ?>" value="10" ></td>
    <td class="Doc_Tableau" style=" width:95px;"><input id="Quantite<?php echo $i;?>"  type="text" size="7" name="Quantite<?php echo $i;?>" onChange="change_valeur(<?php echo $i;?>)" value="<?php if (ISSET($_SESSION['Quantite'.$i])) {echo $_SESSION['Quantite'.$i];} ?>" ></td>
    <!--  -->
    <td class="Doc_Tableau" style=" width:119px;"><input id="MontantHT<?php echo $i;?>"  type="text" size="7" name="MontantHT<?php echo $i;?>" onChange="change_valeur(<?php echo $i;?>)" value="<?php if (ISSET($_SESSION['MontantHT'.$i])) {echo $_SESSION['MontantHT'.$i];}?>" ></td>
    </tr>
      <?php } ?>
    </table>
    <table  style="float:right; margin-right:121px; text-align:center" border="0" align="right">
    <tr>
    <td class="Doc_Tableau" style=" width:119px; text-align:right" >Total HT&nbsp;</td>
    <td class="Doc_Tableau" style=" width:119px;"><input type="text" size="7" id="TotalHT" ></td>
    </tr>
    <tr>
    <td class="Doc_Tableau" style=" width:119px; text-align:right" >
    Tva <select name="tva" style="font-size:19px;" id="TauxTva" onChange="change_Tva(<?php echo $i;?>)" >
    <option>20</option>
    <option>10</option>
    </select>%&nbsp;
    </td>   <td class="Doc_Tableau" style=" width:119px;"><input type="text" size="7" id="MontantTVA" ></td>
    </tr>    <tr>
    <td class="Doc_Tableau" style=" width:119px; text-align:right" >Montant TTC&nbsp;</td>
    <td class="Doc_Tableau" style=" width:119px;"><input type="text" size="7" id="TotalTTC" ></td>
    </tr>  </table>
    <table id="tableau" style=" float:right; margin-right:121px" border="1"><tr><td>
    <h1 style="text-align:center "><input type="submit"></h1>
    </tr></td> </table>
    </form>
    <table id="tableau" style=" float:right; margin-right:121px" border="1"><tr><td>
    <form action="" method="post" >Lignes <input type="text" name="Lignes" value="1"><input type="submit"></form>
    </td></tr>
    </table>

    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
    var Total = 0;
    function change_Tva (){ 
    document.getElementById('MontantTVA').value = document.getElementById('TotalHT').value * (document.getElementById('TauxTva').value/100);
    document.getElementById('TotalTTC').value = +document.getElementById('TotalHT').value + +document.getElementById('MontantTVA').value;
    }
    function change_valeur(valeur) 
    {
    document.getElementById('MontantHT'+valeur).value = document.getElementById('Prix'+valeur).value * document.getElementById('Quantite'+valeur).value; 
    var nb = '<?php echo $_SESSION['Lignes']; ?>'; 
    var ligne = 1;
    while(ligne< nb)
    	{
    	document.getElementById('TotalHT').value = document.getElementById('MontantHT'+ligne).value
    	ligne++;
    	} 
    alert('nb'+nb+'a'+ligne+' ligne');
     
    document.getElementById('MontantTVA'). value = document.getElementById('TotalHT').value * (document.getElementById('TauxTva').value/100);
    document.getElementById('TotalTTC'). value = +document.getElementById('TotalHT').value + +document.getElementById('MontantTVA').value;
     
    }

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    vu que le tableau est généré en php
    je ferais tout les calcul en php

    A+JYT

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Par défaut Calcls en Php
    Bonjour.

    Et donc en rechargeant la page à chaque changement de Prix ou Quantité ?
    Ca fait un max de $_Session, c'est pas dérangeant ?


    Pourquoi cette incrémentation sur une même variable ne fonctionne pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while(ligne< nb - 1){
    	Total = parseInt(Total) + parseInt(document.getElementById('MontantHT'+ligne).value);
    	ligne++;
    }

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Par défaut
    Si tu recharges la page, il n'y a aucun problème car ton php est de nouveau exécuté.

    Pour la boucle, il y a plusieurs pistes (tu peux débugguer avec la console de ton navigateur, accessible depuis la touche F12), l'une étant qu'il te manque des parenthèses :


  5. #5
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    sorry mais vu qe tu as posté du php et non du html je n'ai pas lu le code
    je n'avais pas vu que tu avais de input dans ton tableau.

    perso je ferais très simple
    un tableau javascript qui contient toutes les données.
    lorsque une valeur et modifié dans un input remplacer la valeur dans le tableau javascript
    et utiliser le tableau javascript pour faire les calcul.

    ainsi pas de recherche continuelles dans le HTML pas de pb de convertions de parce ou quoi que ce soit. on ne met dans le tableau que des numbers et alea jacta est

    A+JYT

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 257
    Par défaut
    Déjà merci
    pour avoir séparer le html du js dans mon premier message de cette discussion.
    (Merci à qui l'a fait, c'est bien mieux comme ça).


    Yes, pour les parenthèses, merci.

    Pour les arrays JS, j'avais bien pensé que ca peut être une solution, mais je ne maitrise pas.
    J'imagine que
    - renseigner un array JS
    - de données MySQl
    - se fait par une une boucle Php.

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

Discussions similaires

  1. calculs sur un tableau
    Par ewaca dans le forum C#
    Réponses: 0
    Dernier message: 18/01/2014, 19h05
  2. [MySQL] Tableau HTML dans une boucle while
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 17/01/2011, 15h29
  3. Réponses: 3
    Dernier message: 08/03/2010, 05h29
  4. [HTML] scrollbar uniquement sur un tableau
    Par waddle dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/01/2006, 11h06
  5. [HTML] Alignement d'un texte sur un tableau...
    Par gdawirs dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 21/11/2005, 14h08

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