PHP MySQL и даты

Задача:  задать период актуальности записи в базе данных.

Для примера, у нас есть MySQL база данных с объявлениями. Нам надо ограничить время показа объявления сроком в 30 дней. Для этого в таблице базы данных, куда попадают все объявления делаем два поля ‘ad_date’ и ‘end_date’. Типы полей — ‘datetime’, значения по умолчанию ‘0000-00-00 00:00:00’ . При подаче объявления в эти поля с помощью PHP заносятся дата подачи и дата окончания срока. Например вот так:

$now_date=date('Y-m-d H:i:s');
$end_date=date('Y-m-d H:i:s', mktime(0, 0, 0, date('m'), date('d')+30, date('Y')));
$query = "INSERT INTO Ad VALUES ( '$now_date', '$end_date')";
if (!mysql_query($query)) {
echo "Ошибка при добавлении в базу данных";
}

Понятно, что кроме дат надо добавить еще и другие поля, но это нам сейчас не важно.

Строка

$now_date=date('Y-m-d H:i:s');

Получает системную дату и время, то строка

$end_date=date('Y-m-d H:i:s', mktime(0, 0, 0, date('m'), date('d')+30, date('Y')));

Кроме получения даты, еще и прибавляет ровно 30 дней. Причем PHP сам высчитывает сколько дней в месяце и мы получаем точную дату с периодом в 30 дней. Таким же образом можно управлять и количеством месяцев, и количеством лет, и временем.

Теперь допустим, что нам необходимо продлить срок действия этого объявления еще на 30 дней… Нет ничего проще!

$end_date=date('Y-m-d H:i:s', mktime(0, 0, 0, date('m'), date('d')+30, date('Y')));
$query = ("UPDATE table SET end_date='$end_date' WHERE ad_id='$ad_id'");

Правда, всё просто? :-)

Tags:,

Add a Comment