|
|
|
| доброго времени суток! подскажите пожалуйста как сделать работу скрипта по времени, тоесть пользователь нажимает кнопку, заносится время в бд! нужно сделать так чтобы в течении часа после занесения времени скрипт не работал...
заранее благодарю | |
|
|
|
|
|
|
|
для: admin
(24.01.2012 в 11:57)
| | Хм... можно поместить в MySQL дату при помощи MySQL-функции NOW(), если это новая запись, то можно использовать INSERT-запрос
INSERT INTO tbl VALUES(NOW())
| если запись уже существует, то её следует обновить
UPDATE tbl SET putdate = NOW()
| а при следующих попытках проверять прошел ли час с момента предыдущей записи при помощи запроса
SELECT COUNT(*) FROM tbl
WHERE putdate > NOW() - INTERVAL 1 HOUR
| если запрос возвращает 1 - час еще не прошел, если 0 - прошел. | |
|
|
|
|
|
|
|
для: cheops
(24.01.2012 в 12:02)
| | а без бд можно как нибудь сделать такой скрипт?
можно примерный скрипт, как он писаться должен? | |
|
|
|
|
|
|
|
для: admin
(24.01.2012 в 12:46)
| | учитесь сотавлять алгоритм
1) делаем выборку временной метки из бд для оперделенного пользователя
2) если такого пользователя нет, то создаем новую запись INSERT
3) если пользователь существует то проверяем время последнего обращения к скрипту
4) если прошло меньше часа, то выходим
5)если прошло больше часа, то выполняем действия и обновляем временную метку
при помощи UPDATE
если вы это не можете превратить в код, то нужно начинать с азов теории MySQL | |
|
|
|
|
|
|
|
для: admin
(24.01.2012 в 12:46)
| | >а без бд можно как нибудь сделать такой скрипт?
Можно, но зависит от того, насколько вам критично ограничение в час и сколько народу на эту кнопку будут жать... выкрутиться всегда можно, но нужно больше подробностей. Что за скрипт и насколько лоялен пользователь скрипта? | |
|
|
|
|
|
|
|
для: cheops
(24.01.2012 в 12:58)
| | ребят сделал так как вы говорили! теперь другая проблема, по условию обновлять запись в бд если текущее время на час больше чем время которое занесено в бд! вот вчера нажал кнопку в 19:32:14
сегодня зашел в 10:17:02 и уже не могу нажать на кнопку, т.к. время меньше чем в бд | |
|
|
|
|
|
|
|
для: admin
(25.01.2012 в 12:36)
| | ну так дату тоже надо учитывать
тип поля у вас какой?
храните время в формате TIMESTAMP так будет проще | |
|
|
|
|
|
|
|
для: admin
(25.01.2012 в 12:36)
| | Или как вариант DATETIME. | |
|
|
|
|
|
|
|
для: cheops
(25.01.2012 в 13:06)
| | дак тогда как в конце каждого месяца быть? когда предположим нажму кнопку 31 числа, а первого уже все несмогу? | |
|
|
|
|
|
|
|
для: admin
(25.01.2012 в 13:39)
| | Почему? DATETIME же и месяц, и год хранит, а когда вы пользуетесь конструкцией INTERVAL, СУБД заботится обо всех случаях, в то числе и переходя через 31 число и через конец года. Не должно быть таких проблем. | |
|
|
|
|
|
|
|
для: cheops
(25.01.2012 в 13:54)
| | спасибо все получилось) | |
|
|
|