0

7日以内に始まるイベントのメールの送信を開始するようにリマインダーを作成してください. つまり、0 ~ 7 日間のみに開始されるイベントへの参加者にメールを送信します。

助けが必要な場所は次の行にあります。

...WHERE event_start_date > '$current_time' //currently sends to all attendees for all events starting in future

$current_time = time();

必要なものを反映するように変更するにはどうすればよいですか? 日付は unix_timestamp に保存されることに注意してください。

ありがとうございました

4

2 に答える 2

1

現在の UNIX タイムスタンプを取得します。

$current_time = time();

秒単位で保存されるため、60 秒 * 60 分 * 24 時間 * 7 日を追加して、1 週間の UNIX タイムスタンプを取得できます。

$weekFromNow=$current_time+(60*60*24*7);

event_start_dateがそれ以下のイベントを見つけるだけです。

...WHERE event_start_date <= '$weekFromNow' 
         and event_start_date > '$current_time'
//sends to all attendees for all events starting in future

編集: $weekFromNow1 週間後のように、クエリはその値以下のすべての時間を検索する必要があります。これがクエリの動作です。event_start_dateイベント開始時刻の UNIX タイムスタンプ以外の値を保持している場合は、お知らせください。

于 2012-07-25T08:36:44.290 に答える
1

最初に PHP で時間を決定せずに、MySQL のみでこれを行うこともできます。高速だとは思いませんが、はるかに読みやすくなっています。:

...WHERE FROM_UNIXTIME(event_start_date) <= DATE_ADD(CURDATE(), INTERVAL 1 WEEK)

ただし、これは今日より前に開始されたイベントも返します。それを望まない場合は、次を使用できます。

...WHERE FROM_UNIXTIME(event_start_date) BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 WEEK)

( MySQL ドキュメントから適応)

于 2012-07-25T09:01:20.660 に答える