[英]How to compare dates from php database with the today's date
我創建了一個 mysql 表,如下所示。
我想使用 if else 語句將表中的日期與當前日期進行比較,並在前一天、后一天和同一日期向用戶發送通知
例如,假設今天的日期是 18/10,牛奶的到期日期是 20/10,所以我想在 19 日、20 日和 21 日發送通知。
所以,如果你能幫助我比較代碼和發送通知(例如電子郵件)的代碼應該在 if 語句下,我將非常感激:)。
我的問題可能看起來很簡單,但我是 php 新手,我沒有太多關於它的信息。
這是我正在嘗試執行的 php 代碼
<?php
$first= new Carbon;
//$second= here I want the date to be collected from date column in the database
//X= The name of the item that will be collected from database (Item_Name) column
if ($second=eq($first+1))
{echo"X is going to expire tomorrow"}
// instade of dispaying the above sentence, i want it to be sent as email
if ($first=eq($second))
{echo"X is going to expire today!!"}
if ($first>eq($second))
{echo"X has EXPIRED already"}
?>
我的表:
ID Item_Name Expiry_Date
1 Milk 2017-10-20
2 Chicken 2017-10-22
3 Meat 2017-10-25
您可以使用DATE_ADD
函數來確定間隔。
SELECT
col1,
col2,
...
FROM
table
WHERE
`date_column` BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY);
您提到了 PHP,我想澄清一下,這是 MySQL,我假設您有一個 cron 作業或類似的設置來運行 PHP 腳本。
更新:根據您更新的問題,您有兩個主要選擇,要么在數據庫中進行處理,要么在 PHP 中進行處理。 該決定取決於您計划如何使用它,但可以通過兩種方式進行。
-- MySQL --
SELECT
ID,
Item_Name,
Expiry_Date,
CASE
WHEN `Expiry_Date` < CURDATE() THEN CONCAT(`Item_Name`,' has EXPIRED already.')
WHEN `Expiry_Date` = CURDATE() THEN CONCAT(`Item_Name`,' will expire today.')
WHEN `Expiry_Date` BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY) THEN CONCAT(`Item_Name`,' will expire tomorrow.')
WHEN `Expiry_Date` > DATE_ADD(CURDATE(), INTERVAL 1 DAY) THEN CONCAT(`Item_Name`,' will expire after tomorrow.')
ELSE 'Error processing expiration date.'
END AS `Expiration_Message`
FROM
table;
這將產生 ID Item_Name Expiry_Date Expiration_Message 1 Milk 2017-10-20 Milk 將在明天之后過期。 2 雞肉 2017-10-22 雞肉將在明天之后過期。 3 肉 2017-10-25 肉將在明天之后過期。
您還可以在 PHP 中進行字符串解析和日期添加,這似乎是您開始使用的。 在發送郵件方面,PHP有mail
功能, 如何使用PHP發送郵件? 可能會給你一些指導。 現在,我假設您希望它按計划運行,因此我將研究在 cron job 中執行 PHP 腳本。
希望這有助於更多的澄清。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.