Page 1 sur 1

Boucle WHILE

Posté : 23 nov. 2008, 21:35
par dunbar
Bonsoir,
Comment est t'il possible de sortir une variable d'une boucle while ?

D'avance merci

Posté : 24 nov. 2008, 00:02
par Victor BRITO
Et la structure de contrôle break, à quoi sert-elle ? ;)

Posté : 24 nov. 2008, 00:10
par dunbar
Bin elle permet de sortir d'une structure for, foreach, while, do-while ou switch. :lol:

Blague a part je me suis mal exprimer
while($row08 = mysql_fetch_assoc($result08)){

          $vgu08sep = (($row08['mois']=="9")? $row08['VGU08'] : "");
          $vgu08oct = (($row08['mois']=="10")? $row08['VGU08'] :"");
          $vgu08nov = (($row08['mois']=="11")? $row08['VGU08'] :"");
          $vgu08dec = (($row08['mois']=="12")? $row08['VGU08'] :"");
          $vgu08jan = (($row08['mois']=="1")? $row08['VGU08'] :"");
          $vgu08fev = (($row08['mois']=="2")? $row08['VGU08'] :"");
          $vgu08mar = (($row08['mois']=="3")? $row08['VGU08'] :"");
          $vgu08avr = (($row08['mois']=="4")? $row08['VGU08'] :"");
          $vgu08mai = (($row08['mois']=="5")? $row08['VGU08'] :"");
          $vgu08jui = (($row08['mois']=="6")? $row08['VGU08'] :"");
Comment est t'il possible de récupéré par exemple la valeur de $vgu08jui en dehord de la boucle while :?:

Posté : 24 nov. 2008, 00:50
par AB
Ta question n'est toujours pas claire. La variable gérée par la boucle est bien disponible en dehors, non ? ?

Posté : 24 nov. 2008, 00:56
par dunbar
Ta question n'est toujours pas claire. La variable gérée par la boucle est bien disponible en dehors, non ? ?
et bin non justement
si j'essaye de la répérée en dehord de ma boucle rien ne s'affiche :roll:
par exemple : $vgu08nov s'affiche mais pas les deux avant $vgu08sep $vgu08oct . :oops:

Posté : 24 nov. 2008, 01:15
par jojolapine
Et d'ailleurs, pourquoi vouloir les atteindres en dehors de la boucle?
Dans ce cas là autant utiliser un tableau plus grand où tu stockes tout ce que tu traites à l'intèrieur de ta boucle...

Posté : 24 nov. 2008, 01:59
par Patriboom
Si tu n'as pas initialisé ta variable et que le travail qu'effectue ta boucle while ne trouve jamais de valeur égale à 11, ta variable nov ne contiendra rien.

Voici une proposition qui pourrait peut-être simplifier ton code:

$vgu = array();
$row = array();
$an = 2008;
while($row[$an] = mysql_fetch_assoc($result08)){ 
          $vgu[$an][$row[$an]['mois']] = $row[$an];
}

Ainsi, tu pourras appliquer le traitement chaque année sans avoir à coder de nouveau.
Le code ci-haut te donnera donc un tableau comme ceci
$row[2008][1] = contenu de $row[2008] relatif au mois de jan;
$row[2008][2] = contenu de $row[2008] relatif au mois de fév;
$row[2008][3] = contenu de $row[2008] relatif au mois de mar;
$row[2008][4] = contenu de $row[2008] relatif au mois de avr;
$row[2008][5] = contenu de $row[2008] relatif au mois de mai;
$row[2008][6] = contenu de $row[2008] relatif au mois de juin;
$row[2008][7] = contenu de $row[2008] relatif au mois de juil;
$row[2008][8] = contenu de $row[2008] relatif au mois de août;
$row[2008][9] = contenu de $row[2008] relatif au mois de sep;
$row[2008][10] = contenu de $row[2008] relatif au mois de oct;
$row[2008][11] = contenu de $row[2008] relatif au mois de nov;
$row[2008][12] = contenu de $row[2008] relatif au mois de déc;

Posté : 24 nov. 2008, 09:40
par Hywan
Hey :),

On parle de portée de variable. Si ta variable existe dans la boucle, elle n'existe pas en dehors. En revanche, si tu la déclares en dehors (avant), elle sera accessible à l'intérieure :
$handle;
$i = 0;
while($i++ < 10)
    $handle = $i;
var_dump($handle);
QED.

Posté : 24 nov. 2008, 23:43
par AB
Hey :),

On parle de portée de variable. Si ta variable existe dans la boucle, elle n'existe pas en dehors. En revanche, si tu la déclares en dehors (avant), elle sera accessible à l'intérieure :
$handle;
$i = 0;
while($i++ < 10)
    $handle = $i;
var_dump($handle);
QED.
Pas clair non plus, depuis quand une variable créée dans une boucle ne serait-elle pas accessible de l'extérieur de la boucle ? Bah heureusement qu'on est dans la rubrique php avancé :oops:
for ($i=0; $i<=5; $i++)
{
$a = $i;
}
var_dump($a);// int(5) 
D'après ce que j'ai finalement compris la variable que tu veux récupérer est écrasée à chaque itération. Ben oui donc utilise un tableau ...
Ou alors comme dans ton exemple les variables ne seront renseignées qu'une fois, tu peux faire aussi
($row08['mois']=="9")? $vgu08sep = $row08['VGU08'] : "";

enfin bon une solution à la manière de ce qu'indique Patriboom serait plus optimisée

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

Posté : 24 nov. 2008, 23:52
par Hywan
Bah heureusement qu'on est dans la rubrique php avancé :oops:
Dites voir Mr. l'Invité, merci de rester courtois :evil:

Posté : 24 nov. 2008, 23:58
par AB
HyWaN, arrêtes de prendre des substances illicites :lol:

Posté : 25 nov. 2008, 00:30
par dunbar
Salut,
Merci à tous, j'ai tout recommencer et comme je m'en doutais JE SUIS UN BOULET :twisted:
j'étais mal parti et je me suis enfoncer dans mes erreurs en corrigeant celle-ci au lieu de me demander pourquoi elle étais là !

Quand à @ Patriboom merci mais le 08 est le nom du module pas 2008 :wink: parce que sinon j'aurais simplement fait un truc du genre dans ma requête.
 WHERE date BETWEEN '".$dateDebut."' AND '".$dateFin."'
Bon le boulet va faire enfin dodo :wink: