我创建了一个mysql表,如下所示。
我想使用if else语句将表中的日期与当前日期进行比较,并在前一天,后一天和同一日期向用户发送通知
例如,我们说今天的日期是18/10,Milk的失效日期是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
答案 0 :(得分:1)
您可以使用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牛奶2017-10-20牛奶将在明天到期。 2鸡肉2017-10-22鸡肉将在明天到期。 3肉2017-10-25肉类将在明天到期。
你也可以在PHP中进行字符串解析和日期添加,你似乎开始了。在发送电子邮件方面,PHP具有mail
功能,How to send an email using PHP?可能会为您提供一些指导。现在,我假设您希望按计划运行,因此我会调查Execute PHP script in cron job。
希望这有助于进一步澄清。