[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как лучше реализовать?
KamSocial.ru
Приветь! Хочу написать такую вещь...
Юзер регится, и каждый месяц, чтобы продлить свой аккаунт, нужно нажать на кнопочку, но кнопочка будет под СМС-замком...
Дак вот меня интересует, как это можно реализовать. Как проверять оставшееся время? И как по прошествию 1 месяца менять значение столбца ban с 1 на 0.
Ну а как нажать на кнопочку чтобы поменять всё назад, я догадываюсь как реализую...




Спустя 1 час, 34 минуты, 9 секунд (1.05.2009 - 06:20) Sylex написал(а):
KamSocial.ru
Есть же дата регистрации юзера. Можно проверять каждый раз при авторизации пользователя.

Спустя 1 час, 5 минут, 26 секунд (1.05.2009 - 07:26) KamSocial.ru написал(а):
Цитата
Есть же дата регистрации юзера. Можно проверять каждый раз при авторизации пользователя.

Т.е в базе хранить и дату регистрации, и значение ban.
Юзер заходит, проверяем дату, если больше месяца, ban =1, если нет продолжаем...
Так, а когда нажимаю на продлить, мнеж надо зафиксировать эту дату, и в следующий раз её использовать, точно...во класс! Как всё просто, а я всё голову ломал...
А как обозначить переменную равную 1 месяцу?

Спустя 1 час, 51 минута, 44 секунды (1.05.2009 - 09:18) Sylex написал(а):
т.е. в таблице у тебя будут поля:
date_reg DATETIME,
date_pay DATETIME,
ban TINYINT(1)

Цитата ("KamSocial.ru")
А как обозначить переменную равную 1 месяцу?


какую переменную? Что значит равную 1 месяцу? Для чего? Как?

Спустя 14 минут, 8 секунд (1.05.2009 - 09:32) KamSocial.ru написал(а):
Ну смотрите, у меня есть значение поля date_pay, например 12/05/2009
Я сегодня авторизировался (сегодня уже 13/06/2009) , и дальше идёт проверка,
13/06/2009 - 12/05/2009 = 31 день, т.е. больше месяца = > бан. Надо же PHP знать сколько должно пройти времени, для этого нужна переменная со значением 1 месяца...т.е.
$date_pay (13/06/2009) - $date_today (12/05/2009) = $pro(31 день) прошло.
Дальше должна быть переменная равная 30 дням например, и мы должны сравнить ту переменную и $pro и по результату делать действия...или как?

Спустя 3 часа, 17 минут, 28 секунд (1.05.2009 - 12:49) FatCat написал(а):
Используйте не date(), а time(), и храните в БД не дату регистрации, а time()последней оплаты в формате int(10).
Никаких полей "бан" нафиг не надо.
При заходе пользователя запросом вытягиваем данные о последней оплате и вычитаем из текущей time() - получаем время в секундах от последней оплаты.
Как этой цифрой воспользоваться сообразите?

Спустя 37 минут, 54 секунды (1.05.2009 - 13:27) Sylex написал(а):
ban, конечно, нет смысла хранить, это так для красоты и наглядности smile.gif

а дата платежа это и есть date_pay, date_reg - не помешала бы тоже.

FatCat
чем оправдано хранение даты целым числом?

Спустя 27 минут, 13 секунд (1.05.2009 - 13:54) KamSocial.ru написал(а):
Цитата
FatCat
чем оправдано хранение даты целым числом?

Может потому что легче проводить математические операции?!
Цитата
Используйте не date(), а time(), и храните в БД не дату регистрации, а time()последней оплаты в формате int(10).
Никаких полей "бан" нафиг не надо.
При заходе пользователя запросом вытягиваем данные о последней оплате и вычитаем из текущей time() - получаем время в секундах от последней оплаты.
Как этой цифрой воспользоваться сообразите?

Идея хорошая и незамысловатая...эм, что делать с цифрой?! пока ни чё на ум не приходит, про функцию time() мало написано, но мож есть способы перевести это число, я не знаю...

Спустя 3 минуты, 49 секунд (1.05.2009 - 13:58) Sylex написал(а):
KamSocial.ru
biggrin.gif математические операции, какие?

а здесь запрос будет простой smile.gif

Спустя 11 минут, 10 секунд (1.05.2009 - 14:09) KamSocial.ru написал(а):
Цитата
KamSocial.ru
biggrin.gif математические операции, какие?
Ну с целыми числами хорошо проводить мат.опер. отнять например...незнаю, так сказал...
Цитата
а здесь запрос будет простой smile.gif
Это вы к кому, и по какому поводу?

Спустя 2 часа, 2 минуты, 3 секунды (1.05.2009 - 16:11) FatCat написал(а):
Цитата (Sylex @ 1.05.2009 - 13:27)
чем оправдано хранение даты целым числом?

Я не большой специалист в sql. А как лучше хранить число? Не текстом же... Мы же наверняка будем использовать или ORDER BY time, или WHERE time > xxx

Спустя 1 час, 27 минут, 4 секунды (1.05.2009 - 17:38) Sylex написал(а):
FatCat
я имею ввиду почему не использовать для даты стандартный тип данных в MySQL - DATETIME?

Спустя 4 дня, 12 часов, 38 минут, 38 секунд (6.05.2009 - 06:17) KamSocial.ru написал(а):
Цитата
я имею ввиду почему не использовать для даты стандартный тип данных в MySQL - DATETIME?

Ну хорошо, зделаем мы таким макаром, но тогда как сравнить то что из базы, и с сегоднящним днём, и как получить результат...ну а сравнить его с 30 днями я думаю не составит труда...

Спустя 1 час, 16 минут, 4 секунды (6.05.2009 - 07:33) Sylex написал(а):
SQL
... WHERE NOW() - INTERVAL 1 MONTH > date_pay


то как ты говоришь "бан"
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.