私はこれで約1か月間問題を抱えています。このような大規模なプロジェクトを管理する負担を軽減するために、会社のコピーライティング管理システムを構築しました。システムは、週に完了したアイテムごとにライターに支払います。給与計算の制限により、彼らの支払い期間は木曜日の午前 0 時から水曜日の午前 11 時 59 分までです。ライターのダッシュボードには、先週の支払い期間の合計と、今週の現在の金額が表示されます。
私は strtotime() を次のように使用してこれを行っています:
$currentdate = date("Y-m-d");
$lastweekstart = date('Y-m-d', strtotime('2 thursdays ago'));
$lastweekend = date('Y-m-d', strtotime('last wednesday'));
$thisweekstart = date('Y-m-d', strtotime('last thursday'));
次に、先週のレコードを次のようにデータベースから取得します。
mysqli_query($con, "SELECT * FROM table_name WHERE username='$username' AND date BETWEEN '$lastweekstart' AND '$lastweekend'");
および現在の週:
mysqli_query($con, "SELECT * FROM table_name WHERE username='$username' AND date BETWEEN '$thisweekstart' AND '$date'");
これはほとんどの週にうまく機能しますが、木曜日には少しおかしくなりました。そこで、金曜日まで機能していた $thisweekstart と $lastweekstart の日付を変更しようとしたところ、再びおかしくなりました。したがって、基本的に、以下は金曜日を除く毎日動作する現在のコードです。
$lastweekstart = date('Y-m-d', strtotime('2 thursdays ago'));
$lastweekend = date('Y-m-d', strtotime('last wednesday'));
$thisweekstart = date('Y-m-d', strtotime('last thursday'));
if ($date == date('Y-m-d', strtotime('thursday'))) {
$thisweekstart = $date;
$lastweekstart = date('Y-m-d', strtotime('last thursday'));
} else {
if ($date == date('Y-m-d', strtotime('friday'))) {
$lastweekstart = date('Y-m-d', mktime(0,0,0,date("m"),date("d")-8,date("Y")));
}
}
// counts descriptions written last week
$lastcount = 0;
$result = mysqli_query($con, "SELECT * FROM table_name WHERE username='$username' AND date BETWEEN '$lastweekstart' AND '$lastweekend'");
$lastcount = mysqli_num_rows($result);
// counts descriptions written this week
if ($thisweekstart == $date) {
$result = mysqli_query($con, "SELECT * FROM table_name WHERE username='$username' AND date='$date'");
} else {
$result = mysqli_query($con, "SELECT * FROM table_name WHERE username='$username' AND date BETWEEN '$thisweekstart' AND '$date'");
}
$thiscount = mysqli_num_rows($result);
私はまだ PHP に慣れていないので、この問題について頭が混乱しています。新鮮な表情が必要です。あなたたち(そしてギャル)はどう思いますか?strtotime() を使用するのではなく、約数週間を過ごすためのより良い方法はありますか?