Halihallo Nadja
SELECT
*
FROM
hb_newsletter_ex
WHERE UNIX_TIMESTAMP('".date('Y-m-d',time())." 00:00:00')+1000*60*60*24*13 > ".time()."
AND UNIX_TIMESTAMP(showdatum) >= UNIX_TIMESTAMP('".date('Y-m-d',time())." 00:00:00')
ORDER BY
showdatum ASC
Warum soviele Konvertierungen und Vermischungen mit PHP?
Der Code soll alle Einträge "showdatum" ausgeben, die innerhalb der nächsten 13 Tage ab heute liegen.
http://www.mysql.com/doc/en/Date_and_time_functions.html
DATE_ADD(showdatum, INVERVAL 13 DAYS)
ist wesentlich effizienter, als die Daten (pl. Datum) zu konvertieren und die von PHP
generierten Strings zu parsen bzw. erst zu erstellen.
Zudem: Das aktuelle Datum ist die Funktion NOW() in MySQL. Du brauchst das aktuelle Datum
nicht über PHP's "date" zu erstellen.
Kann mir jemand sagen, ob das richtig ist bzw. kann mir das jemand korrigieren?
Der erste WHERE-Teil ist völlig redundant, da
UNIX_TIMESTAMP('".date('Y-m-d',time())." 00:00:00')+1000*60*60*24*13 > ".time()."
stehts wahr ist. Heute in 13 Tagen wird immer grösser sein, als heute. Dies würde
lediglich Sinn machen, wenn du ".time()." durch UNIX_TIMESTAMP(showdatum) ersetzen
würdest.
Folglich:
WHERE
showdatum <= DATE_ADD(showdatum, INTERVAL 13 DAYS) AND
showdatum >= NOW()
Basta.
Viele Grüsse
Philipp
RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.