Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Какая дата будет через 30 дней?
 
 автор: tAleks   (04.02.2007 в 13:40)   письмо автору
 
 

Я выставляю счет. И определяю срок его жизни 30 дней. Если в течение этого срока счет не оплачен, то его надо удалить.

Вопрос: Как это лучше реализовать?

У меня 2 варианта:

1. В БД сразу сделать 3 поля:
1. Дата СТАРТ ( дата выписки счета)
2. Дата СТОП (дата смерти, если не оплачен)
3. Дата ОПЛАТЫ.

В этом случае при создании счета вычислять дату СТОП и каждый день например запускать крон, чтобы выбислять все счета с просроченной датой СТОП и удалять их.

2. В БД создать 2 поля:
1. Дата СТАРТ ( дата выписки счета)
2. Дата ОПЛАТЫ.

В этом случае тоже каждый день запускать Крон и MYSQLом отсчитвывать 30 дней от даты СТАРТ и если 30 дней прошло удалять счет.

К примеру таким запросом:

DELETE FROM orders WHERE ADDDATE(date_start, INTERVAL 30 DAY) > NOW()


Как лучше сделать?

Если второй вариант будет не сильно тормозной, (на лету считать дату) то я думаю что лучше 2 вариант. Но толко вот я не знаю, будет ли он сильно тормозной.

   
 
 автор: ddhvvn   (04.02.2007 в 13:50)   письмо автору
 
   для: tAleks   (04.02.2007 в 13:40)
 

Лучше все-таки 2 вариант

   
 
 автор: Loki   (04.02.2007 в 13:50)   письмо автору
 
   для: tAleks   (04.02.2007 в 13:40)
 

А на что влияет дата оплаты?
я бы сделал два поля:
срок истечения, оплата
при выставлении счета:
INSERT INTO table (user_id, lim, paid) VALUES($user_id, NOW()+INTERVAL 30 DAY, 0)
После оплаты
UPDATE table SET lim=NOW()+INTERVAL (сколько дней оплачено) DAY, paid=1 WHERE user_id=$user_id

чистим устаревшие
DELETE FROM table WHERE lim<NOW()

   
 
 автор: ddhvvn   (04.02.2007 в 14:39)   письмо автору
 
   для: Loki   (04.02.2007 в 13:50)
 

Хороший вариант!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования