[mysql/php] Ontbrekende waarden verpesten statistiek

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • StephanVierkant
  • Registratie: Mei 2003
  • Laatst online: 08-09 16:22
Ik ben sinds een tijdje bezig met grafieken maken door middel van Google Chart Api (aanrader!). Het lukt aardig, maar ik zit nog met een klein probleempje.

Uit een database haal ik getallen (in mijn geval aantal MB dataverkeer per dag):
datedata
2007-12-01100
2007-12-02110
2007-12-02120
(maar dan is de tabel véél groter)

Om alle gegevens uit de database te halen gebruik ik deze query momenteel:
SQL:
1
2
3
4
SELECT MAX( data ) AS data, month(date) AS maand
FROM verbruik
WHERE YEAR( date ) = '2007'
GROUP BY month( date )

Nu krijg ik netjes een lijstje met de maanden (in dit geval alleen van december) van dat jaar, met de maximale dataverkeer van die maand. Op zich netjes, maar omdat ik de getallen wil invoeren in de parameters van de Chart API, wil ik een andere uitvoer hebben.

Ik wil namelijk "0,0,0,0,0,0,0,0,0,0,0,120" hebben, omdat anders de eerste staaf (januari) de waarden van de eerst rij (in dit geval) december op wordt gehaald. De grafiek klopt dan dus niet, omdat ik pas in december ben gaan meten.

Een optie is natuurlijk om for($i = 0; $i <12: $i++) te gebruiken, met daarin elke keer een aangepast query (where month(date) = '$i'), maar je zult begrijpen dat dat niet de mooiste oplossing is.

For is dus niet echt een oplossing, maar ik weet zo ook geen betere. De beste oplossing zou natuurlijk een leuk truukje zijn in sql, maar een fatsoenlijke php-oplossing kan natuurlijk ook.

Wie helpt me op weg?

Acties:
  • 0 Henk 'm!

  • OnTracK
  • Registratie: Oktober 2002
  • Laatst online: 20:37
array_fill


PHP:
1
2
3
4
5
6
$stats = array_fill(1, 12, 0);
$query = ...

while($row = ...) {
    $stats[$row->maand] = $row->data;
}

[ Voor 15% gewijzigd door OnTracK op 27-04-2008 22:42 ]

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.


Acties:
  • 0 Henk 'm!

  • StephanVierkant
  • Registratie: Mei 2003
  • Laatst online: 08-09 16:22
Mag ik je zoenen? Perfecte oplossing!