базовый расчет даты для проверки истечения срока действия

Я хочу создать систему светофоров , которая сообщит мне, сколько дней осталось до тех пор, пока документ не достигнет срока действия. Я хочу, чтобы он был отмечен цветами в моем html.

  • зеленый: если у документа есть 31 день или больше, пока он не истечет.
  • Янтарь: 30 дней или меньше до истечения срока его действия.
  • красный: в течение 7 дней или менее.

Я также хочу отобразить текст, рассказывая мне, сколько дней до истечения срока действия. Дата истечения срока действия исходит из моей базы данных в области, называемой insurance_date

Heres my code Я новичок в php, поэтому стараюсь скомпоновать код, если кто-то может показать мне, как реструктурировать мой код, чтобы добиться того, что я пытаюсь сделать id be greatful, спасибо.

мой код:

<?php include 'config.php'; $data = mysql_query("SELECT * FROM supplier_stats") or die(mysql_error()); while($info = mysql_fetch_array( $data )) { echo "<p>Insurance Expires ! - <font color=\"red\">".$info['insurance_date'] . "</font></p>"; } $date_diff = 60*60*24*7; // 7 days // time()+$date_diff will be a timestamp 7 days in the future if ($info['insurance_date'] < time()+$date_diff) { echo "less than 7 days left!"; } 

В цикле while вы перебираете все записи в таблице supplier_stats . Для каждой итерации вы выводите "<p>Insurance Expires ! ... Вы, вероятно, не хотите этого делать. Отредактируйте свой запрос, чтобы выбрать только те записи, которые истекают в вашем диапазоне.

Пример:

 SELECT * FROM supplier_stats WHERE insurance_date >= yourDateToCompareTo 

В зависимости от того, как вы создали свою базу данных, insurance_date может быть «Тип MySQL DATE или String или даже Integer. В зависимости от этого вы должны сделать Comparsion, чтобы проверить, приближается ли дата к вашему диапазону истечения срока действия.

После вашего цикла ( закрытого } ) вы все равно будете использовать $info в вашем if ($info['insurance_date'] который будет использовать только LAST-запись в вашей таблице.

Это, тем не менее, очень, очень простой вопрос, и я бы посоветовал вам ознакомиться с некоторыми базовыми учебниками для начинающих, которые можно легко найти с помощью поисковой системы Интернета .

Я предполагаю, что $info['insurance_date'] является строкой datetime в формате YYYY-mm-dd HH:ii:ss , правильно?

Если это так, вам нужно запустить его через strtotime прежде чем сравнивать его с числовым временем ( time()+$date_diff )