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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Pourquoi es-ce que ce while ne s'execute pas

par ghalaad » 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 ;-)

par guilt92 » 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....

par manix » 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.

par manix » 08 mai 2007, 15:56

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

par guilt92 » 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++;

}

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

par manix » 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]