Page 1 sur 1

Pourquoi es-ce que ce while ne s'execute pas

Posté : 08 mai 2007, 15:47
par manix
Voila le probleme : tout ce qu'il a dans le while ne s'execute pas. (juste l'entete et le bas du tableau apparait, comment faire pour que ce qu'il y a dans le while aparaise (sauf les commandes mises en commentaire)
$i=1;


Echo"<table border='2'>";

echo "<tr>
<td> Référence</td>
<td> Designation</td>
<td> Prix unitaire</td>
<td> Quantité commandé</td>
<td>total pour ce produit</td>
</tr>";

while ($i>=14)
{

//If($faire['$i']=1)
//{
//$Prix=$prix[$i];
//$ref=$ref[$i];
//$qte=$qte[$i];
//$total=$total[$i];

Echo "<tr>";
Echo "<td>";
Echo $ref[$i];
Echo "</td>
<td>";
Echo $des[$i];
Echo "</td>
<td>";
Echo $prix[$i];
Echo "</td>
<td>";
Echo $qte[$i];
Echo "</td>
<td>";
Echo $total;
Echo "</td>";
Echo "</tr>";
//}
//else
//{
//};

};
echo "<tr>
<td> </td>
<td> </td>
<td> </td>
<td>Total Brut: </td>
<td>$totalbrut</td>
</tr>";
echo "<tr>
<td> </td>
<td> </td>
<td> </td>
<td>Tva (19.6%)</td>
<td>$tva</td>
</tr>";
echo "<tr>
<td> </td>
<td> </td>
<td> </td>
<td> <u>Total à payer :</u></td>
<td>$Totalreel</td>
</tr>";
Echo "</table>";
Echo "<hr>";
[/code][/quote]

Posté : 08 mai 2007, 15:53
par guilt92
Il y a des problemes dans ton code...

Deja tu définis $i a 1 et tu veux entrer dans le while TANT QUE $i est SUPERIEUR a 14 donc forcement tu rentres pas....

Si comme je le pense tu veux que ca soit INFERIEUR faut changer le signe....

Ensuite si tu veux eviter la boucle infini il faut incrémenter la valeur de î dans le while sinon tu ne sortiras jamais de la boucle.

Enfin le ; a la fin du while() n'est pas necessaire, ca n est pas un do {} while();

Réécriture de la boucle :
while ($i<=14) 
{ 

//If($faire['$i']=1) 
//{ 
//$Prix=$prix[$i]; 
//$ref=$ref[$i]; 
//$qte=$qte[$i]; 
//$total=$total[$i]; 

Echo "<tr>"; 
Echo "<td>"; 
Echo $ref[$i]; 
Echo "</td> 
<td>"; 
Echo $des[$i]; 
Echo "</td> 
<td>"; 
Echo $prix[$i]; 
Echo "</td> 
<td>"; 
Echo $qte[$i]; 
Echo "</td> 
<td>"; 
Echo $total; 
Echo "</td>"; 
Echo "</tr>"; 
$i++;

}

Posté : 08 mai 2007, 15:56
par manix
$i++; 
ca correspond a ca ?
$i=$i+1;

Posté : 08 mai 2007, 15:59
par manix
C'etait ca Merci beaucoup ca fait environ 3h que je suis dessus je commençait a en avoir marre.

Sinon je croyait que lors d'un while l'action décrite dans le while se produisait jusqua que la condition soit attente.

Posté : 08 mai 2007, 16:04
par guilt92
Oui, $i=$i+1 est équivalent à $i++
Sinon je croyait que lors d'un while l'action décrite dans le while se produisait jusqua que la condition soit attente.
C'est exactement ca sauf qu'on va plutot dire "jusqu a ce que la condition ne soit plus vraie" (donc quand on atteint la condition on est dans la derniere occurence...)

Dans ton exemple, tu donnes la valeur 1 à $i. La condition pour entrer dans la boucle est que $i soit plus petit que 14, donc comme $i=1 c'est le cas, on entre. Ensuite a la fin de la boucle $i++ fait que $i=2. On reste dans la boucle puisque $i est toujours plus petit que 14...

Ainsi de suite jusqu a atteindre la condition où $i=15 donc $i n'est PAS inférieur ou égal a 14 donc on sort de la boucle....

Posté : 09 mai 2007, 06:41
par ghalaad
en gros :

i vaut 1
...
code qui ne touche pas à i
...
tant que i est supérieur ou égal à 14 fais ceci
...code
fin de tant que


...

i ne peut être >=14 s'il est égal à 1 ;-)