Also hier ist die Situation. In meiner Db-Tabelle habe ich eine Spalte namens expire_date, in der ich für jede Zeile ein bestimmtes Datum einstelle. So ist beispielsweise das Ablaufdatum 28-04-2012
Ich brauche einen PHP-Code, der einem bestimmten Benutzer eine Benachrichtigung per E-Mail sendet, dass die bestimmte Sache, die an diesem Datum abläuft, 1 Monat abläuft. Wenn also heute der 28-03-2012 ist, bedeutet das, dass es nur einen Monat vor Ablauf der Sache gibt. Ich habe keinen Code dafür gemacht, weil ich nicht weiß, wie man den -1 Monat löst.
Erhalte zuerst das Datum in einem Monat mit php:
%Vor%Dann können Sie eine Auswahl treffen:
%Vor%Und dort haben Sie ein Array mit allen Elementen, die in weniger als einem Monat ablaufen. Wenn Sie genau diejenigen wollen, die in 1 Monat ablaufen:
%Vor%Ich hoffe, das hilft
Wie von @Mikhail angegeben, sollten Sie =
verwenden, damit Sie den Datensatz nur einmal abrufen. Sie möchten Ihre Benutzer nicht täglich für den gesamten Monat spammen, der bis zum expire_date läuft -
Wenn Ihr expire_date einen DATETIME-Wert im Gegensatz zu einem DATE-Wert enthält, sollten Sie etwas wie -
verwenden %Vor% Sie können die Funktion ADDDATE()
in Ihrer MySQL-Abfrage verwenden.
Mehr dazu hier .
Wenn Sie einen Index für Ihre expire_date
-Spalte haben, kann dies sehr schnell erledigt werden, wenn Sie nach Einträgen mit einer WHERE
-Anweisung wie:
(Mehr über CURDATE()
right hier )
Wenn Sie das jeden Tag genau einmal machen , werden nur alle Personen maximal einmal ausgewählt und ihnen die E-Mail nicht zweimal gesendet, da nur diejenigen ausgewählt werden, die genau einen Monat von ihrem Ablaufdatum entfernt sind.
Dies funktioniert natürlich ohne zusätzliche Sorgfalt bei der spezifischen Darstellung von Datumsangaben, wenn Sie in Ihrer MySQL-Tabelle einen DATE-Feldtyp verwenden.
Sie müssen wahrscheinlich Ihre Datumszeichenkette in Unix-Zeit umwandeln und dann ein ausgewähltes Datingiff machen. (Ich nehme an, Sie verwenden SQL).
%Vor%