Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme de boucle dans fonction

Sujet résolu
    26 mai 2010 à 1:43:53

    bonsoir :)
    je n'arrive pas à résoudre mon problème de boucle ...

    tout d'abord, le code :

    ceci est le code PHP de depart
    <?php
    	$reponse->execute(array($j+1));	// affichage des lignes du tableau de chaque categorie ($j) //
    	while ($donnees = $reponse->fetch())
    		{
    ?>					
    					<tr>			
    						<td class="nom_article" ><?php echo $donnees['nom_refined'];?></td>					
    						<td class="TTSaisie"><input type="text" size="6" name="tt1<?php echo $j.$i; ?>" id="tt1<?php echo $j.$i; ?>" value="0" Onblur="calcul()"/></td>	
    						<td class="TTSaisie"><input type="text" size="6" name="tt2<?php echo $j.$i; ?>" id="tt2<?php echo $j.$i; ?>" value="0" Onblur="calcul()"/></td>
    						<td class="totaltt"><input type="text" size="12" readonly= "true" value="0" name="totaltt<?php echo $j.$i; ?>" id="totaltt<?php echo $j.$i; ?>" /></td>						
    						<td class="tdvide"><input type="hidden" size="1" readonly= "true" name="Article<?php echo $i; ?>" value="<?php echo $donnees['ID']; ?>" /></td>
    
    <?php
    			$AncienMkup->execute(array($donnees['ID'],$donnees['ID']));  // affichage des anciens markup //
    			while ($AMkup = $AncienMkup->fetch())
    			{
    ?>
    						<td class="TauxAchat"><input type="text" size="6" name="taux<?php echo $j.$i; ?>" id="taux<?php echo $j.$i; ?>" value="<?php echo $AMkup[1] ?>" OnBlur="calcul()" />%</td>							
    						<td class="tdvide"></td>
    						<td class="totalfinal"><input type="text" size="12" readonly= "true" name="totfin<?php echo $j.$i; ?>" id="totfin<?php echo $j.$i; ?>" /></td>
    					</tr>
    <?php
    			}
    		$AncienMkup->closecursor();
    		$i++;
    		}
    


    Ce qui nous donne ceci en language HTML :

    <tr>
    						<th>Article</th>
    						<th>TT 1</th>
    
    						<th>TT 2</th>
    						<th>total TT</th>
    						<th></th>							
    						<th>% Achat</th>
    						<th></th>
    						<th>total</th>
    					</tr>					
    					
    					<tr>			
    						<td class="nom_article" >Adomasite Ingot</td>					
    						<td class="TTSaisie"><input type="text" size="6" name="tt120" id="tt120" value="0" Onblur="calcul()"/></td>	
    						<td class="TTSaisie"><input type="text" size="6" name="tt220" id="tt220" value="0" Onblur="calcul()"/></td>
    
    						<td class="totaltt"><input type="text" size="12" readonly= "true" value="0" name="totaltt20" id="totaltt20" /></td>						
    						<td class="tdvide"><input type="hidden" size="1" readonly= "true" name="Article0" value="1" /></td>
    
    						<td class="TauxAchat"><input type="text" size="6" name="taux20" id="taux20" value="4500.23" OnBlur="calcul()" />%</td>							
    						<td class="tdvide"></td>
    						<td class="totalfinal"><input type="text" size="12" readonly= "true" name="totfin20" id="totfin20" /></td>
    					</tr>
    					
    					<tr>			
    						<td class="nom_article" >Alferix Ingot</td>					
    						<td class="TTSaisie"><input type="text" size="6" name="tt121" id="tt121" value="0" Onblur="calcul()"/></td>	
    						<td class="TTSaisie"><input type="text" size="6" name="tt221" id="tt221" value="0" Onblur="calcul()"/></td>
    
    						<td class="totaltt"><input type="text" size="12" readonly= "true" value="0" name="totaltt21" id="totaltt21" /></td>						
    						<td class="tdvide"><input type="hidden" size="1" readonly= "true" name="Article1" value="2" /></td>
    
    						<td class="TauxAchat"><input type="text" size="6" name="taux21" id="taux21" value="0.00" OnBlur="calcul()" />%</td>							
    						<td class="tdvide"></td>
    						<td class="totalfinal"><input type="text" size="12" readonly= "true" name="totfin21" id="totfin21" /></td>
    					</tr>
    					
    					<tr>			
    						<td class="nom_article" >Azzurdite Ingot</td>					
    						<td class="TTSaisie"><input type="text" size="6" name="tt122" id="tt122" value="0" Onblur="calcul()"/></td>	
    						<td class="TTSaisie"><input type="text" size="6" name="tt222" id="tt222" value="0" Onblur="calcul()"/></td>
    
    						<td class="totaltt"><input type="text" size="12" readonly= "true" value="0" name="totaltt22" id="totaltt22" /></td>						
    						<td class="tdvide"><input type="hidden" size="1" readonly= "true" name="Article2" value="3" /></td>
    
    						<td class="TauxAchat"><input type="text" size="6" name="taux22" id="taux22" value="0.00" OnBlur="calcul()" />%</td>							
    						<td class="tdvide"></td>
    						<td class="totalfinal"><input type="text" size="12" readonly= "true" name="totfin22" id="totfin22" /></td>
    					</tr>
    


    j'ai mis qu'une portion du code (répétitif)

    et voici ma fonction:

    function calcul()
    		{	
    		var x=0, y=0
    			for(var x=1;x<NbreCategorie;x++)
    			{
    				for(y=1;y<NbreArticle[x+1];y++)
    				{
    					form.elements['totaltt'+x+y].value = parseFloat(form.elements['tt1'+x+y].value) + parseFloat(form.elements['tt2'+x+y].value);
    					form.elements['totfin'+x+y].value = parseFloat(form.elements['totaltt'+x+y].value) * parseFloat(form.elements['taux'+x+y].value)/100;
    				}
    			}
    		}
    


    j'ai testé avec une seule boucle et ca marche impecable.
    avec la 2e non ... j' ai essayé d'afficher la somme de x+y afin de voir si il les met cote à cote ou si il les additionne mais ca ne marche pas non plus ...
    je viens de tenter de séparer x et y par une lettre ds la formule et ds le code de la page mais ca ne change rien ...

    quel est votre avis svp :p

    merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
    Souvent la moitié de la réponse se trouve dans une question bien posée.
      26 mai 2010 à 8:15:04

      Où sont définis NbreCategorie et NbreArticle ?
      • Partager sur Facebook
      • Partager sur Twitter
        26 mai 2010 à 10:22:50

        plus haut :) mais je n'ai pas mis le code entier ...

        en fait, ca vient bien d'une de ses variables. et la je ne pige franchement pas ...

        je m'explique :

        je suis au taf donc je n'ai pas le code en question. j'ai donc fait un petit code simple qui reprend l'idée de boucle. le voici :

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
           <head>
               <title>test</title>
               <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        	          <!-- <link rel="stylesheet" media="screen" type="text/css" title="Design" href="modele.css" /> -->
        		<script type="text/javascript">
        			var test = new Array(1, 2, 3);
        			alert(test[0]);   
        			function calcul()
        			{
        			var i, j;
        				for(i=0;i<=2;i++)
        				{
        					for(j=0;j<=test[i];j++)
        					{
        						form.elements['Total1'+i+'a'+j].value = parseFloat(form.elements['TT1'+i+'a'+j].value) + parseFloat(form.elements['TT2'+i+'a'+j].value);
        						form.elements['Total2'+i+'a'+j].value = parseFloat(form.elements['Total1'+i+'a'+j].value) * parseFloat(form.elements['Taux'+i+'a'+j].value)/100;
        					}
        				}
        				
        			}
        			
        		</script>
           </head>
         
           <body>
           	<script type="text/javascript">
        
        
        	</script>
          
        	<form method="post" id="form" action="action.php">
        	<input type="reset" id="reset"/>
        	
        <?php
        $test2 = array('2', '3', '4');
        for($j=0;$j<=2;$j++)
        {
        	for($x=0;$x<=$test2[$j];$x++)
        		{
        ?>
        	<table>
        		<tr>
        			<td><label for="TT1<?php echo $x; ?>">TT1</label> : <input type="text" id="TT1<?php echo $j; ?>a<?php echo $x; ?>" name="TT1<?php echo $j; ?>a<?php echo $x; ?>" value="0" onblur="calcul()"></td>
        			<td><label for="TT2<?php echo $x; ?>">TT2</label> : <input type="text" id="TT2<?php echo $j; ?>a<?php echo $x; ?>" name="TT2<?php echo $j; ?>a<?php echo $x; ?>" value="0" onblur="calcul()"></td>
        			<td><label for="Total1<?php echo $x; ?>">Total1</label> : <input type="text" id="Total1<?php echo $j; ?>a<?php echo $x; ?>" readonly="true" name="Total1<?php echo $j; ?>a<?php echo $x; ?>"></td>
        			<td><label for="Taux<?php echo $x; ?>">Taux</label> : <input type="text" id="Taux<?php echo $j; ?>a<?php echo $x; ?>" name="Taux<?php echo $j; ?>a<?php echo $x; ?>" value="110" onblur="calcul()"></td>
        			<td><label for="Total2<?php echo $x; ?>">Total2</label> : <input type="text" id="Total2<?php echo $j; ?>a<?php echo $x; ?>" readonly="true" name="Total2<?php echo $j; ?>a<?php echo $x; ?>"></td>
        		<br/>
        	</table>
        <?php
        		}
        }
        ?>
        		<label for="TTotal1">Total du total1</label> : <input type="text" id="TTotal1" readonly="true" name="TTotal1">
        		<label for="TTotal2">Totaldu total2</label> : <input type="text" id="TTotal2" readonly="true" name="TTotal2">
        	</form>
        	<script type="text/javascript">
        			var form = document.getElementById("form");
        
        	</script>
        		
           </body>
        


        il marche parfaitement, mais j' ai eu le même soucis que mon code d'hier,
        si on demande l'affichage de la variable avec "alert(test[0]);" juste au dessous de la ligne de declaration de celle-ci, ca n'affichait rien ... même si j'isole ces 2 lignes sur une page vierge, nada ...
        j'ai pris le modèle du tuto de josé en changeant les valeurs puis le nom de la variable et ca a fonctionné ...
        je suis persuadé de ne pas m' être trompé ds la syntaxe pourtant ...
        j'ai l'impression que c'est un bug de notepad++ car parfois aussi, le fait d'oublier une ")" à la fin d'un "for" m'oblige à retaper la ligne car même si je rajoute juste le ")" il me remettra l'erreur sans arret ...

        est ce que ca vous arrive aussi à vous?
        • Partager sur Facebook
        • Partager sur Twitter
        Souvent la moitié de la réponse se trouve dans une question bien posée.
          26 mai 2010 à 11:03:47

          Une fois tu commences à 0, une fois à 1
          ça m'arrive jamais, np++ marche très bien
          • Partager sur Facebook
          • Partager sur Twitter
            26 mai 2010 à 11:31:34

            oui c'est moi qui bug lol

            je regarderai de nouveau mon code cet aprem avec un oeil reposé :)

            merci birdy :)
            • Partager sur Facebook
            • Partager sur Twitter
            Souvent la moitié de la réponse se trouve dans une question bien posée.

            probleme de boucle dans fonction

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown