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

Eléphanteau du PHP | 16 Messages

08 mai 2007, 15:47

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]
Modifié en dernier par manix le 08 mai 2007, 16:30, modifié 2 fois.

Mammouth du PHP | 1353 Messages

08 mai 2007, 15:53

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++;

}
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 16 Messages

08 mai 2007, 15:56

$i++; 
ca correspond a ca ?
$i=$i+1;

Eléphanteau du PHP | 16 Messages

08 mai 2007, 15:59

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.

Mammouth du PHP | 1353 Messages

08 mai 2007, 16:04

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....
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 49 Messages

09 mai 2007, 06:41

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 ;-)