Differenz ermitteln von zwei Werten an unterschiedlichen Tagen

Guten Tag!

Ich habe die Aufgabe den Energieverbrauch eines Zählers während eines Monats in einem Diagramm darzustellen. Bis jetzt habe ich es geschaft (wie im angehängten Bild zu sehen ist), dass für jeden Tag der Wert des Zählers dargestellt wird.

Zusätlich habe ich noch den letzten Tag des vorherigen Monats ausgelesen, da mich wie im Titel geschrieben die Differenz der zwei Werte intressiert (also z.B. von 30.10 auf den 01.11). Nun habe ich das Problem, dass ich nicht genau weiss wie ich es schaffe die Differenz zu brechenen ? Also das Prinzip ist mir schon klar den Wert1- Wert2 = Differenz.

Nicht klar ist mir wie ich es in der while Schlaufe mache, dass ich beide Werte erhalten, da ich ja nur den Wert des aktuellen Datums habe ?
Kann mir da jemand helfen ?

PHP:
$sqldms= ("SELECT DISTINCT DMSName from mst where zeit like '$year-$month-__ __:__:__' AND ID_Anlagen='138'");
$t_data = $db->dbquery($sqldms);
while ($r_data = mysql_fetch_array($t_data)){
    //Letzter Tag des letzten Monats errechnen
    //$lastday = date('t',11);
    $lastmonth = $month - 1;
    $lastday = $year."-".$lastmonth."-".date('t', mktime(0, 0, 0, $month, 1, $year));
    $sqlstr= ("SELECT date_format( zeit, '%d' ) as tag, wert FROM mst 
    where DMSName = '$r_data[DMSName]'
    AND (zeit like '$year-$month-__ __:__:__' OR zeit LIKE '$lastday __:__:__')
    ");
    $t_daten = $db->dbquery($sqlstr);
    $i = 0;
    while ($r_daten = mysql_fetch_array($t_daten)){
        //Werte Übergeben
        $arr[$i]['size'] = $r_daten[wert];//Wert
        $arr[$i]['name'] = "$r_daten[tag]"; //Monatstag
        $i++;
    }
    $simpleGraph2 = &new simpleGraph();
    $simpleGraph2->create("1000", "200"); 
    $simpleGraph2->headline($r_data[DMSName]);
    $simpleGraph2->bar($arr);
    $replDMS = str_replace(":", "", $r_data[DMSName]); 
    $simpleGraph2->showGraph("zaehlerbilder/".$replDMS.".png");
    unset($arr);
    echo "<img src='zaehlerbilder/$replDMS.png'><br><br>";
}

Danke schon im vorraus!

Gruess

Ruth
 

Anhänge

  • 27460attachment.jpg
    27460attachment.jpg
    12,3 KB · Aufrufe: 18
Hallo gaengsterbruth,

es ist sehr performancefressend wenn du in einer while/foreach schleife ein SQL-Query ausführst. Dies lässt sich in nahezu 100% aller Fälle mit Joins umgehen.

Kurz zu deinem Problem, ich würde die ganzen Werte erst in einem Array abspeichern, und diese dann per foreach durchlaufen und dann z.b.

PHP:
$array['diff'] = $array[$timestampFirstDay] - $array[$timestampSecondDay];

Wobei die $timestamps natürlich variable sind, je nachdem was du brauchst, so könntest du bei secondDay z.b. auch ($timestampFirstDay - 1 Day) oder sowas ähnliches schreiben, nur damit das Prinzip klar wird.

Gruß

Devil
 
hmmm, das mit den zwei arrays macht Sinn.
Weiss nur nicht genau, wie ich die zwei Arrays abgefüllt bekomme ?
(Da steht im moment grad einer auf der Leitung ;))

Ich möchte ja eigentlich nicht die Differenzen von den Timestamps,
sondern die der Werte an den zwei Tagen.

Beispiel:
30.11.2006 -> 1000
01.12.2006 -> 1100

Ausgabe am 01.12.2006 -> 100
 
Zurück