webana
27. Januar 2015 um 10:24
1
Hallo,
bin gerade dabei nur für mich und zu statistischen Zwecken eine Diesel Preis Datenbank aufzubauen.
Es werden von 3 Tankstellen alle 30 Minuten die Diesel Preise abgefragt und in der Datenbank gespeichert (Funktioniert).
Jetzt hab ich pro Tag und Tankstelle 47 Preise (0:00-23:30).
Jetzt möchte ich von jedem Tag der niedrigste und höchste Wert ausgeben.
Wie mache ich das jetzt php die tage im Format jjjj-mm-tt ab dem 2015-01-26 bis jeweils „Heute“ (Nächsten Monat ist auch irgendwann Heute) auflistet.
Gruß Alex
nookie
27. Januar 2015 um 10:29
2
SELECT * FROM table WHERE date BETWEEN 'YEAR-month-DAY' AND 'YEAR-month-DAY'
In etwa so? Bin mir grad nicht ganz sicher.
webana
27. Januar 2015 um 10:34
3
Da listet er aber alle Daten von den Tagen auf …
Ich brauche eher was das mir
2015-01-26
2015-02-27
2015-03-28
ausgibt, das ich dann eine abfrage
SELECT id, DATE_FORMAT(Datum,'%d.%m.%Y %H:%i') AS Datum, xxx FROM tankstelle WHERE Datum LIKE '2015-01-27%' ORDER BY Preis DESC LIMIT 1
machen kann …
Wenn ich dich richtig verstehe, musst du nur mit „SELECT MIN(preis), MAX(preis), datum“ die Daten laden und beim Where prüfen ob das Datum größer als x ist.
webana
28. Januar 2015 um 09:34
5
Mal weg von sql, ich brauch ja erst mal was auf php das die Tage auflistet.
Beispiel:
Ausgabe 2015-01-26
Dann +1 Tag …
1 Tag …
wenn JJJJ-MM-TT == Heute Ausgabe und Stoppen.
Mir schwirrt gerade was im Kopf mit date() und + (6060 24) und einer Schleife rum …
Problem, ich weis nicht wonach ich Google muss, da mir die ganzen fach begriffe noch unbekannt sind. Finde meistens nur diverse online tools.
Bis jetzt schauts so aus, hoffe du weist was ich meine:
[PHP]<?php
$start = ‚2015-01-26‘;
$end = date(‚Y-m-d‘);
for( ??? ) {
echo date (‚Y-m-d‘ , strtotime(„+1 days“));
}
?>[/PHP]
Gruß Alex
nookie
28. Januar 2015 um 09:43
6
webana:
Mal weg von sql, ich brauch ja erst mal was auf php das die Tage auflistet.
Beispiel:
Ausgabe 2015-01-26
Dann +1 Tag …
1 Tag …
wenn JJJJ-MM-TT == Heute Ausgabe und Stoppen.
Mir schwirrt gerade was im Kopf mit date() und + (6060 24) und einer Schleife rum …
Problem, ich weis nicht wonach ich Google muss, da mir die ganzen fach begriffe noch unbekannt sind. Finde meistens nur diverse online tools.
Gruß Alex
Entweder reden wir hier aneinander vorbei oder ich verstehe deine Fragestellung einfach nicht richtig. Warum willst du die Ausgabe in PHP stoppen, wenn du in deinem SQL-Statement schon definieren kannst bis zu welchem Datum du deine Daten ausgegeben haben möchtest? Siehe Vorposter.
webana
28. Januar 2015 um 09:49
7
Hallo nookie,
habe gerade noch ein code gepostet, vielleicht hilft dir das weiter das du weist was ich meine:
[PHP]<?php
$start = '2015-01-26';
$end = date('Y-m-d');
for( ??? ) {
echo date ('Y-m-d' , strtotime("+1 days"));
}
?>[/PHP]
bzw.
[PHP]<?php
$start = ‚2015-01-26‘;
$end = date(‚Y-m-d‘);
for( $i=0; $day < $end; $i++) {
$day = date (‚Y-m-d‘ , strtotime(„+$i days“));
echo $day.„ \n“;
}
?>[/PHP]
Alex
nookie
28. Januar 2015 um 09:55
8
[PHP]<?php
$start=„2015-01-26“;
$end= date(‚Y-m-d‘);
while($start <= $end) {
echo $start . „ “;
$start = date(„Y-m-d“, strtotime($start . „+1 day“));
}
?>[/PHP]
So?
Edit: Du hast es doch grade selbst gelöst.
B3nnoX
28. Januar 2015 um 10:14
9
ich habe hier sonst auch noch eine Lösung
[PHP]
$date1 = new DateTime(„now“);
$date2 = new DateTime(‚2014-01-26‘);
$interval = $date2->diff($date1);
echo $date2->format(‚Y-m-d‘);
echo „ “;
for($i=0; $i <= ($interval->days-1); $i++) {
$date2->modify(‚+1 day‘);
echo $date2->format(‚Y-m-d‘);
echo „ “;
}
[/PHP]
webana
28. Januar 2015 um 10:16
10
Danke nookie und B3nnoX …
hab mal das von nookie genommen …
Gruß Alex
nookie
28. Januar 2015 um 13:53
11
B3nnoX:
ich habe hier sonst auch noch eine Lösung
[PHP]
$date1 = new DateTime(„now“);
$date2 = new DateTime(‚2014-01-26‘);
$interval = $date2->diff($date1);
echo $date2->format(‚Y-m-d‘);
echo „ “;
for($i=0; $i <= ($interval->days-1); $i++) {
$date2->modify(‚+1 day‘);
echo $date2->format(‚Y-m-d‘);
echo „ “;
}
[/PHP]
Mit einem DateTime-Objekt ist das natürlich deutlich schöner.