2012-04-05 30 views
-1

月額定期的な請求書があり、有効期限の6日前にその人に電子メールを送信したいのですが、既に送信されている場合は再送信しません。 PHPでの作業。私は現在、db:paidUntilとsentReminderの両方にDATETIMEの2つのカラムを持っていますが、必要に応じて変更できます。日付範囲 - PHPの範囲を超えていません

ので、擬似コードで:

IF(between 6 days before expiration and expiration date AND reminder NOT sent) 
    send reminder 
    set that reminder was already sent 
else 
    if the month has past and time for new reminder, go back to top 

来月、全体のプロセスを再起動します。ユーザーは、月の1日、9日、または任意の日付に期限切れになることに注意してください。助けてください!

EDIT:基本的には、メンバーシップの有効期限が切れる6日または5日前に、毎月の通知を誰かに送信します。それで全部です。ここに私のコードのいくつかがありますが、最後のリマインダーを送信した時刻が新しいものを生成するのに十分な時間が経過したかどうかを確認する方法を怠っています。

 $paidUntil = strtotime($oneUser->paidUntil); 
    $paidUntilMonthPrior = strtotime('-1 month', $paidUntil); 

    $reminderSent = strtotime($oneUser->reminderSent); 

    //$paidDateRemindRange = strtotime('-6 days', $paidUntil);  //6 days till u remind somebody 
    $noNeedToSend = strtotime('+25 days', $reminderSent); 

    //$paidDateReset = strtotime('+1 day', $paidUntil); 

    //if($thisMonth==date('F',$paidUntil)) { 
    // $sameMonth=true; 
    //} 

    //if($todayTime>$paidDateReminder && $todayTime<$paidUntil && $todayTime>$reminderSent) 
    // $expirationRange=true;    

    if($todayTime < $noNeedToSend) { 
     // is within 25 days from last sending - do nothing 
    } 
    elseif($todayTime>$noNeedToSend && $todayTime<$paidUntil) { 
     //is between 25 days and still less than the paid until time AND has not been sent this cycle 
     // send expiration email and mark that its been sent 
     $expirationRange=true; 

    } 
+0

何か助けが必要ですか?私には聞こえる音。 – ceejayoz

+2

あなたはこれまでに何を試しましたか?私たちは壊れたコードを修正するのに役立ちますが、あなたのためにこれを最初から書きません。あなたがそれに何らかの努力をしたことを示してください。 –

+0

これらの人は両方とも言った。いくつかのコードを投稿すると、あなたの説明と疑似コードは、私に同じプロセスについて話すようには見えません。 – rgin

答えて

0

私はすべての良いコードは確かな計画から始まると思います。そしてあなたは確かな計画を持っています。助けが必要なようには見えません。そして、一般的には、人々がすでにコーディングを試みていて、つづり合っている場合にのみ、質問に答えたいと思っています。

しかし、おそらく2つのdatetimeの違いを見つけるロジックがありません。その場合は、例を示します。

<?php 
$datetime1 = new DateTime('2012-01-11'); 
$datetime2 = new DateTime('2012-01-13'); 
$interval = $datetime1->diff($datetime2); 
?> 
関連する問題