cc: Addieren von Ergebnissen in einer while-Schleife

Beitrag lesen

Hallo,

Ich bastel gerade an einer Übersicht von Wettenabgaben.
Bei result=ja heißt es, dass die Wette gewonnen wurde, bei nein entsprechend verloren und wenn noch nichts eingetragen wurde, steht sie auf open.

dann geh mal systematisch deinen Code durch, nimm an, $data_bet["result"] habe den Wert "ja".

if($data_bet["result"]=="ja")
  {
    $won=$data_bet["einsatz"]*$data_bet["quote"]-$data_bet["einsatz"];
    $won=$won-($won/25);
    print "<font color="green">+".number_format($won, 2, '.', '')." €</font>";
  }

Dieser Zweig wird also ausgeführt, $won erhält einen sinnvollen Wert.

else
  {
    if($data_bet["result"]=="nein")
    {
      $lost=-$data_bet["einsatz"];
      print "<font color="red">".$lost." €</font>";
    }
    else
    print "open";
  }

Dieser nicht, also behält $lost seinen Wert aus dem vorherigen Schleifendurchlauf, oder ist gar undefiniert.

$total += $won+$lost;

Was zählst du hier also zusammen? Jedenfalls nichts Sinnvolles.
Ich würde dir empfehlen, in beiden Zweigen (won/lost) dieselbe Variable zu verwenden - nenne sie meinetwegen $balance, damit man sich nicht mit den Namen verwirrt. Und vergiss nicht, sie bei "open" auch auf 0 zu setzen.
Alternativ verzichte auf $won, $lost oder $balance und berechne die Veränderung von $total direkt innerhalb des jeweiligen if/else-Zweigs.

So long,
Martin

Danke für den Denkanstoß!

Code sieht nun wiefolgt aus und funktioniert wunderbar:

  
$total=0;  
  
while($data_bet=mysql_fetch_array($result))  
{  
  
  if($data_bet["result"]=="ja")  
  {  
    $won=$data_bet["einsatz"]*$data_bet["quote"]-$data_bet["einsatz"];  
    $won=$won-($won/25);  
    print "<font color=\"green\">+".number_format($won, 2, '.', '')." €</font>";  
    $total=$won+$total;  
  }  
  else  
  {  
    if($data_bet["result"]=="nein")  
    {  
      $lost=-$data_bet["einsatz"];  
      print "<font color=\"red\">".$lost." €</font>";  
      $total=$lost+$total;  
    }  
    else  
    {  
    print "open";  
    $total=0+$total;  
    }  
  }  
}  
  
print number_format($total, 2, '.', '');