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):
(maar dan is de tabel véél groter)
Om alle gegevens uit de database te halen gebruik ik deze query momenteel:
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?
Uit een database haal ik getallen (in mijn geval aantal MB dataverkeer per dag):
date | data |
---|---|
2007-12-01 | 100 |
2007-12-02 | 110 |
2007-12-02 | 120 |
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?