Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Помогите придумать алгоритм работы скрипта


Автор: xShinigami 31.8.2011, 15:30
Есть база данных с различными полями. Среди них есть дни рождения и записаны они как поле TEXT. Мне нужно чтоб за 5 дней до дня рождения выводило сообщение, и менялось только за 5 дней до следующего дня рождения(другого пользователя).
Пример:
Через 5 дней у меня день рождения, выводиться мой аватар и имя. Через месяц день рождения у пользователя №2 и за 5 дней до его рождения аватар и имя меняется на его имя. и так до дня рождения следующего пользователя.

Автор: Gold Dragon 31.8.2011, 15:43
отвлечённый вопрос... а хранить дату рождения в TEXT - это принципиально?

Автор: kovaldm 1.9.2011, 20:06
Алгоритм тут не нужен.
Можно обойтись одним запросом, который будет вытаскивать максимальное значение даты рождения из удовлетворяющих условию
Код

'дата рождения' - 'текущая дата' <= 432000

Дата рождения и текущая дата должны храниться в виде timestamp без учета года, то есть только день и месяц. Сделай для этого отдельный столбец в таблице. 
И да, храни даты в предназначенном для этого формате - дешевле обойдется с точки зрения ресурсов. smile 

Автор: enoff 1.9.2011, 22:21
Цитата(kovaldm @  1.9.2011,  20:06 Найти цитируемый пост)

Дата рождения и текущая дата должны храниться в виде timestamp без учета года, то есть только день и месяц.

зачем? +- INTERVAL, сравнение и так прекрасно работают с полями DATE / DATETIME.

Автор: kovaldm 1.9.2011, 22:27
Цитата(enoff @  1.9.2011,  22:21 Найти цитируемый пост)
+- INTERVAL

У меня пока не такие глубокие познания.)

Автор: Gold Dragon 2.9.2011, 07:08
Не надо вообще вымудряться и нужно сделать поле DATE. Это именное тот тип для даты рождения... А для вычисления MySQL обладает кучей функций для работы с датой.

И тем более не пользоваться timestamp. Это явно не тот тип для дней рождений. Про ограничения слышали? smile не младше 1970 года и не старше 2037

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)