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

Форум MySQL

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

 

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

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

тема: Ограничение работы скрипта по времени
 
 автор: admin   (24.01.2012 в 11:57)   письмо автору
 
 

доброго времени суток! подскажите пожалуйста как сделать работу скрипта по времени, тоесть пользователь нажимает кнопку, заносится время в бд! нужно сделать так чтобы в течении часа после занесения времени скрипт не работал...
заранее благодарю

  Ответить  
 
 автор: cheops   (24.01.2012 в 12:02)   письмо автору
 
   для: 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 - прошел.

  Ответить  
 
 автор: admin   (24.01.2012 в 12:46)   письмо автору
 
   для: cheops   (24.01.2012 в 12:02)
 

а без бд можно как нибудь сделать такой скрипт?
можно примерный скрипт, как он писаться должен?

  Ответить  
 
 автор: Valick   (24.01.2012 в 12:56)   письмо автору
 
   для: admin   (24.01.2012 в 12:46)
 

учитесь сотавлять алгоритм
1) делаем выборку временной метки из бд для оперделенного пользователя
2) если такого пользователя нет, то создаем новую запись INSERT
3) если пользователь существует то проверяем время последнего обращения к скрипту
4) если прошло меньше часа, то выходим
5)если прошло больше часа, то выполняем действия и обновляем временную метку
при помощи UPDATE

если вы это не можете превратить в код, то нужно начинать с азов теории MySQL

  Ответить  
 
 автор: cheops   (24.01.2012 в 12:58)   письмо автору
 
   для: admin   (24.01.2012 в 12:46)
 

>а без бд можно как нибудь сделать такой скрипт?
Можно, но зависит от того, насколько вам критично ограничение в час и сколько народу на эту кнопку будут жать... выкрутиться всегда можно, но нужно больше подробностей. Что за скрипт и насколько лоялен пользователь скрипта?

  Ответить  
 
 автор: admin   (25.01.2012 в 12:36)   письмо автору
 
   для: cheops   (24.01.2012 в 12:58)
 

ребят сделал так как вы говорили! теперь другая проблема, по условию обновлять запись в бд если текущее время на час больше чем время которое занесено в бд! вот вчера нажал кнопку в 19:32:14
сегодня зашел в 10:17:02 и уже не могу нажать на кнопку, т.к. время меньше чем в бд

  Ответить  
 
 автор: Valick   (25.01.2012 в 12:53)   письмо автору
 
   для: admin   (25.01.2012 в 12:36)
 

ну так дату тоже надо учитывать
тип поля у вас какой?
храните время в формате TIMESTAMP так будет проще

  Ответить  
 
 автор: cheops   (25.01.2012 в 13:06)   письмо автору
 
   для: admin   (25.01.2012 в 12:36)
 

Или как вариант DATETIME.

  Ответить  
 
 автор: admin   (25.01.2012 в 13:39)   письмо автору
 
   для: cheops   (25.01.2012 в 13:06)
 

дак тогда как в конце каждого месяца быть? когда предположим нажму кнопку 31 числа, а первого уже все несмогу?

  Ответить  
 
 автор: cheops   (25.01.2012 в 13:54)   письмо автору
 
   для: admin   (25.01.2012 в 13:39)
 

Почему? DATETIME же и месяц, и год хранит, а когда вы пользуетесь конструкцией INTERVAL, СУБД заботится обо всех случаях, в то числе и переходя через 31 число и через конец года. Не должно быть таких проблем.

  Ответить  
 
 автор: admin   (25.01.2012 в 14:32)   письмо автору
 
   для: cheops   (25.01.2012 в 13:54)
 

спасибо все получилось)

  Ответить  
Rambler's Top100
вверх

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