# Zahlen addieren, in while-schleife



## Sebigf (25. November 2005)

Hallo zusammen!

  Scheine heute net ganz wach zu werden, da mir sowas einfach nicht mehr einfallen will. 

  Es geht darum, dass ich mit while() aus der SQL-DB Werte ausgeben lasse.

  Dabei sollen aber im Endeffekt alle zusammen gerechnet werden...

  var1+
  var2+
  ....


  usw, und dann der zusammenrechnen aller vars...

UND...

  Ich habe einen Stat. so gebaut, dass es für jede Stunde ein Spalte gibt. (Möchte Tag zusammen addieren)

  Nur wie kann ich die am besten addieren?
  Soll ich alle 24 spalten in der query ansprechen?
  Habe leider keine richtige lösung gefunden, wie ich es sonst machen sollte...

  Wenn da jemand eine Idee hat, her damit 

  Danke!


----------



## nero_85 (25. November 2005)

Zu deiner ersten Frage:


```
$var=0;

while($result=mysql_fetch_...){

$var+=$result['zahl'];

}
```


----------



## GH@NDI (25. November 2005)

Also zum addieren:

```
<?php
$summe = 0;
while(DatenbankReiheHolen) {
   $summe += $zeile['spalte'];
}
print $summe;
```

Bezüglich des anderen Problems würde ich dazu raten, mysql_fetch_array zu verwenden. Dann bekommst du nämlich für jede selektierte Reihe ein Array zurück welches du jetzt natürlich in einer normalen Schleife wieder durcharbeiten kannst und dann wie oben bereits beschrieben auch aufsummieren kannst.

Quasi so:

```
$summe = 0;
while($row = mysql_fetch_array($query)) {
   foreach($row as $spalte) {
      $summe += $spalte;
   }
}
?>
```

Wobei du jetzt natürlich anstatt einer einfache Summen Variable natürlich nen assoziatives Array verwenden könntest, um so die Summe pro Tag zu hinterlegne und ansprechbar zu machen.

(Code nicht getestet und dazu noch von einem Perl-Programmierer verfasst, also keine Garantie *g*)


----------



## Sebigf (25. November 2005)

THX euch beiden 

Genau das wars. KA, warum mir das net eingefallen ist 

Hat einer von euch beiden eine Idee wegen der SQl Query? (ich weis, hier ist dein SQL board)


----------



## GH@NDI (25. November 2005)

Also so wie du das beschrieben hast, hast du doch pro Tag eine Zeile in der Tabelle die wiederum min. 24 Spalten hat (da du ja wenigstens 24h speichern willst/musst).

Aber ich geh mal davon aus, dass du auch irgendwo das Datum zu den ganzen Zeiten die du speicherst in der Zeile hinterlegst, weil sonst macht das ja alles keinen Sinn, da du ja sonst keine Zuordnung zwischen Zeit und entsprechendem Tag hast.

Sofern das obere gilte, ist das Query doch total easy ohne großes Bedienungen?


```
SELECT * FROM tabelle
```

Zumindest müsste das passen, soweit ich das anhand deiner Darbietung erfassen kann


----------



## nero_85 (25. November 2005)

```
SELECT * FROM `tabelle`
```

 Keine Ahnung was genau du meinst!


----------



## Sebigf (25. November 2005)

Hallo!

Ja sicher es gibt ein date (timetstamp) feld in dem das jeweilige Datum hinterlegt wird.
Im Moment sieht die Query eben so aus:


```
$sql = "SELECT *, (hour00+hour01+hour02+hour03+hour04+hour05+hour06+hour07+hour08+hour09+hour10+hour11+hour12+hour13+hour14+hour15+hour16+hour17+hour18+hour19+hour20+hour21+hour22+hour23) AS count, UNIX_TIMESTAMP(date) AS datum FROM statistik ORDER BY datum DESC LIMIT 7";
```

Dabei geht es darum, dass die letzten 7 Tage nur ausgegeben werden, da es sich um eine "Wochenstatistik" handelt.

Ich nutze auch ein Balkendiagramm, damit ich es "anschaulicher" machen kann.
Meine Frage dazu, sollte der höchste wert 100% (breite) einnehmen oder mein ihr, dass es sich einteilen MUSS auf die 7 Tage? (100 / 7) ?

Im moment sieht die berechnung so aus:


```
$width = round(($tageszahl / $gesamtwoche * 100),2);
```

Einer eine Idee dazu?

Danke


----------

