php bekomme Datum -1 Monat

9

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.

    
gogu 28.03.2012, 15:56
quelle

9 Antworten

14

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

    
Tales 28.03.2012, 16:13
quelle
16
%Vor%

Ссылка

    
Expert wanna be 28.03.2012 15:58
quelle
5

Einfach;

%Vor%     
SudarP 31.08.2015 23:41
quelle
3

Vielleicht sollten Sie das in SQL anstatt in PHP no tun?

Wenn Sie in PHP arbeiten wollen, ist hier ein sauberer Weg als @Expert sein möchte

%Vor%     
haltabush 28.03.2012 16:09
quelle
2

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 -

%Vor%

Wenn Ihr expire_date einen DATETIME-Wert im Gegensatz zu einem DATE-Wert enthält, sollten Sie etwas wie -

verwenden %Vor%     
nnichols 28.03.2012 16:20
quelle
1
%Vor%

Beachten Sie, dass ich = und nicht weniger als verwende, denn wenn Sie nur vergleichen, dass es weniger als einen Monat ist, werden Sie die Benutzer jeden Tag während des letzten Monats per E-Mail kontaktieren.

    
Mikhail 28.03.2012 16:03
quelle
1

Sie können die Funktion ADDDATE() in Ihrer MySQL-Abfrage verwenden.

%Vor%

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:

fragen %Vor%

(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.

    
s1lence 28.03.2012 16:08
quelle
0

Sie müssen wahrscheinlich Ihre Datumszeichenkette in Unix-Zeit umwandeln und dann ein ausgewähltes Datingiff machen. (Ich nehme an, Sie verwenden SQL).

%Vor%     
user1043994 28.03.2012 16:03
quelle
-1

Für die SQL können Sie die folgende Abfrage verwenden

%Vor%     
brizido 28.03.2012 16:12
quelle

Tags und Links