Niet elke regel maar om de 5 regels ophalen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rene Zwolsman

Rene Zwolsman

22/03/2008 14:21:00
Quote Anchor link
Van de gegevens in een tabel maak ik met behulp van GD library een grafiek. Het is een grafiek van de temperatuur. In de tabel heb ik per minuut een waarde staan welke ik ophaal met de volgende code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$query
= "SELECT TempOut FROM weerdata WHERE DateTime BETWEEN '" . $first_datetime . "' AND '". $second_datetime . "'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{

blablabla
}
?>


Met deze waarden wordt dan de grafiek getekend. Dit werkt prima wanneer ik een tijdsperiode van 1 uur tot een paar dagen neem, maar bij een langere periode duurt het steeds langer voordat er een grafiek getekend is.
Dit is logisch aangezien het aantal regels die met de query opgehaald worden ook toeneemt en dus de array ook groter wordt. Nu wil ik bij een periode langer dan een paar dagen niet elke regel ophalen maar bijvoorbeeld 1 per 5. Hoe doe ik dit?

het resultaat van de grafiek tot nu toe staat op:
http://www.weerstation-houten.nl/pages/grafieken/grafiek.php
(en ja, hij doet het alleen nog maar voor de temperatuur ;), en op de tijdstippen dat de klok verzet wordt, gaat het nog niet helemaal goed maar daar wordt aan gewerkt ;))
 
PHP hulp

PHP hulp

24/12/2024 17:57:28
 
Jesper Diovo

Jesper Diovo

22/03/2008 14:24:00
Quote Anchor link
Je kunt (volgens mij) wel i.p.v. 1 per 5 een gemiddelde per uur gaan uitrekenen. Dat is misschien nog beter dan 1 per 5.

Gebruik overigens mysql_fetch_assoc() ipv mysql_fetch_array(), dat is sneller.
 
Joren de Wit

Joren de Wit

22/03/2008 14:26:00
Quote Anchor link
Je zou tijdens het fetchen dan de data, telkens alleen het 5e record aan een array toe kunnen toevoegen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$aTemperaturen
= array();
$i = 1;

while($row = mysql_fetch_assoc($result))
{

    if($i % 5 == 0)
    {

        array_push($row['TempOut'], $aTemperaturen);
    }

    $i++;
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Rene Zwolsman

Rene Zwolsman

25/03/2008 18:59:00
Quote Anchor link
@Djemo: kan ik bij het ophalen een gemiddelde per 5 minuten (of uur) berekenen of moet ik er dan een tabel naast maken met uurgemiddelden?

@Blanche: Hoe kom ik erachter wat de langzaamste schakel is? Want zo worden wel alle regels geselecteerd voordat ik wat met de gegevens kan doen. De array is uiteindelijk wel kleiner dus het aantal berekeningen die erna volgen is een vijfde van het oorspronkelijke. Dit zal wellicht wel tijd schelen maar wat is sneller...?

Is het ook mogelijk om tijdens het berekenen van de grafiek een ander plaatje te tonen?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.