2010-11-03 4 views
0

Est-il possible pour moi d'afficher la somme à l'en-tête avant que le programme traverse?php boucle affichage somme avant boucle qui fait le calcul

while (($data = fgetcsv($handle, 1000, ","))) { 

if($data[2] != $prevRow2) { 

echo '</div>'; 
if ($prevRow2 != '') { 
    $stringData .= '</Payment>'; 
} 
echo "<div id=\"row\">"; 
echo $sum; 
$row++; 
      $sum = 0; 
} 
else { echo "<div id=\"filler\"></div>";} 

foreach ($data as $key => $d) { 
    if ($key != 1) { 
    echo "<div class=\"field\">" .$d . "</div>"; 
    } 
} 

$sum +=$data[6]; 
echo "<br/>"; 
echo "<div id=\"filler\"></div>"; 
         $prevRow2 = $data[2]; 
} 

fclose($handle); 
} 

Répondre

3

Vous pouvez mettre en tampon la sortie, imprimer l'en-tête avec la somme après le passage de la boucle, puis sortir le tampon. Ceci pourrait être accompli simplement en ne faisant pas écho mais en assignant toutes les valeurs à une variable et en faisant écho cette variable à la fin - ou en utilisant les fonctions ob_start, ob_end_flush, etc ....

Donc, dans votre exemple, au lieu de:

while (true) { 
    echo "lots of code"; 
    echo "some variable: " . $variable; 
    $sum = $sum + 1; 
} 

Ecrire:

while (true) { 
    $output .= "lots of code"; 
    $output .= "some variable: " . $variable; 
    $sum = $sum + 1; 
} 

echo $sum; 
echo $output; 
+0

pouvez-vous me donner un exemple avec le code ci-dessus? – MG1

+0

okay, l'a édité. –

+0

Je ne suis pas capable de le faire fonctionner. while (($ data = fgetcsv ($ handle, 1000, ","))) { if ($ données [2]! = $ PrevRow2) {\t \t echo '

'; if ($ prevRow2! = '') { \t $ stringData. = ''; \t} \t echo $ sum; \t echo "
"; \t $sum=0; \t $row++; \t } \t else { echo "
";} \t si ($ data [2] == $ prevRow2) { \t somme $ + = $ data [6]; \t} \t else {somme $ = $ data [6];} \t \t \t foreach ($ data as $ key => $ d) { \t si { \t echo "
" .$d . "
($ key = 1!) "; \t}} \t \t \t \t \t \t echo "
"; echo "
"; \t $ prevRow2 = $ données [2]; } – MG1

Questions connexes