Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ограничиваем выполнение скрипта на раз в сутки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
ykpon
Отправлено: 26 Июля, 2013 - 14:55:30
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




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

К примеру, есть скрипт:

PHP:
скопировать код в буфер обмена
  1.  
  2.         if (isset($_POST["give_bonus"])) {
  3.         extract($_POST);
  4.         $item = $_POST['item'];
  5.         $query = doquery("INSERT INTO {{table}} (`name`, `item`) VALUES ('".$userrow['name']."','$item')","items");
  6.         echo "Ok!";
  7.         die();
  8.         }
  9.  

Есть форма:

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form action="script.php" method="post">
  3. <input type="text" name="item"></input>
  4. <button type="submit" name="give_bonus"> Give! </button>
  5. </form>
  6.  


Вопрос:

Как прикрутить ограничение на получение этого самого бонуса на раз в сутки.

Есть предположение, что можно сделать так:
При получении бонуса заносим в таблицу время, когда он был получен, и к этому времени прибавляем сутки, после чего, скриптом, который по крону будет сверять, не истекло ли время, очищать таблицу, если время истекло, либо, если запись со временем в колонке присутствует, говорить, что сегодня бонус был получен.

Мысли есть, реализовать не могу. Есть даже набросок, вроде этого:

PHP:
скопировать код в буфер обмена
  1.  
  2. $timebd = time() + (24*60*60);
  3.         if ( $timebd>time() )
  4.         {
  5.         echo "Сегодня Вы уже получали бонус";
  6.         }
  7.         else
  8.         {
  9.         echo "Получите Ваш бонус";
  10.         }
  11.  

А как прикрутить не знаю.

(Отредактировано автором: 26 Июля, 2013 - 14:56:09)

 
 Top
Alvor
Отправлено: 26 Июля, 2013 - 15:18:11
Post Id


Гость


Покинул форум
Сообщений всего: 79
Дата рег-ции: Июль 2013  


Помог: 1 раз(а)




Пиши в базу дату выдачи бонуса, добавляй к этой дате 24ч и выводи форму или не выводи
Очень простая задача в плане реализации
 
 Top
ykpon
Отправлено: 26 Июля, 2013 - 16:57:52
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




Alvor пишет:
Пиши в базу дату выдачи бонуса, добавляй к этой дате 24ч и выводи форму или не выводи
Очень простая задача в плане реализации

Я и прошу помочь ее реализовать, а не переписать метод, который описал я.
У меня проблемы с реализацией, а не способом.
Все таки, раздел называется "Напишите за меня, пожалуйста", а не "Как сделать".
 
 Top
LIME
Отправлено: 26 Июля, 2013 - 17:12:13
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ykpon я дико извиняюсь но считаю нужным не написать за тебя а направить
итак
зачем кроном что-то делать?
просто при добавлении бонуса проверяй не получен ли он уже
много лишней нагрузки снимешь
 
 Top
ykpon
Отправлено: 26 Июля, 2013 - 17:44:34
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




LIME пишет:
ykpon я дико извиняюсь но считаю нужным не написать за тебя а направить
итак
зачем кроном что-то делать?
просто при добавлении бонуса проверяй не получен ли он уже
много лишней нагрузки снимешь

Да, этот способ тоже указан в шапке, но повторюсь:
У меня не получается это реализовать.
Господа, я понимаю, что вам нет резона что либо писать, ведь вам за это не заплатят.
Но я написал в соответствующий раздел не для того, чтобы мне говорили как сделать, с этим у меня проблем нет Улыбка

Я прошу помощи в реализации, именно поэтому я сюда написал.
Сей текстом я никого не хотел обидеть, но, правда, читайте, пожалуйста, сообщения внимательней.
 
 Top
LIME
Отправлено: 26 Июля, 2013 - 17:46:50
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




ykpon тогда уж будь любезен показать код
как пытаешься?
точно писать не буду но вполне возможно что у тебя элементарная ошибка в коде
пысы: глянь ссылку в подписи
 
 Top
ykpon
Отправлено: 26 Июля, 2013 - 17:53:17
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




LIME пишет:
ykpon тогда уж будь любезен показать код
как пытаешься?
точно писать не буду но вполне возможно что у тебя элементарная ошибка в коде
пысы: глянь ссылку в подписи

Как может появиться ошибка в том, чего нет?
Первый код - обработчик кнопки.
Третий - пример реализации.
Я прошу склеить это вместе.
 
 Top
Alvor
Отправлено: 26 Июля, 2013 - 18:00:41
Post Id


Гость


Покинул форум
Сообщений всего: 79
Дата рег-ции: Июль 2013  


Помог: 1 раз(а)




ykpon пишет:
LIME пишет:
ykpon тогда уж будь любезен показать код
как пытаешься?
точно писать не буду но вполне возможно что у тебя элементарная ошибка в коде
пысы: глянь ссылку в подписи

Как может появиться ошибка в том, чего нет?
Первый код - обработчик кнопки.
Третий - пример реализации.
Я прошу склеить это вместе.


БД использовать как я понимаю - собирался, да?
 
 Top
LIME
Отправлено: 26 Июля, 2013 - 18:01:29
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




PHP:
скопировать код в буфер обмена
  1. $timebd = mysqli_query("SELECT last_bonus_time FROM tbl WHERE id=$user_id")->fetch_array()[0] + (24*60*60);
извини
снова не написал все за тебя
если не помог то игнорируй пост
(Добавление)
>=5.4

(Отредактировано автором: 26 Июля, 2013 - 18:02:51)

 
 Top
Alvor
Отправлено: 26 Июля, 2013 - 18:18:52
Post Id


Гость


Покинул форум
Сообщений всего: 79
Дата рег-ции: Июль 2013  


Помог: 1 раз(а)




ykpon, вот, держи.
Надеюсь это то что тебя интересует Радость

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.         session_start();
  3.         $mysql_con = mysql_connect("localhost", "DB_USER", "DB_PASSWORD");
  4.         mysql_set_charset("UTF8");
  5.         mysql_select_db("MyDataBase");
  6. ?>
  7. <html>
  8. <head>
  9.         <title>Give me BON :)</title>
  10. </head>
  11. <body>
  12. <form method="post">
  13.         <button name="G_BON">Give me BON</button>
  14. </form>
  15. </body>
  16. </html>
  17. <?PHP
  18.         if (isset($_POST['G_BON'])) {
  19.                 $give_bon = mysql_query("SELECT `last_bonus_time` - NOW() FROM `tbl` WHERE `id`=$user_id") or die(mysql_error());
  20.                 $last_time = mysql_fetch_row($give_bon);
  21.                 if ($last_time[0] >= 24) {
  22.                         // выдаём бонус
  23.                         /**
  24.                                 здесь действия по выдаче бонуса
  25.                         **/
  26.                         mysql_query("UPDATE tbl SET `last_bonus_time` = NOW() WHERE (`id`=$user_id)") or die(mysql_error());
  27.                         // записываем новую дату выдачи в БД
  28.                 }
  29.         }
  30. ?>
 
 Top
ykpon
Отправлено: 26 Июля, 2013 - 18:19:52
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




Alvor пишет:
ykpon пишет:
LIME пишет:
ykpon тогда уж будь любезен показать код
как пытаешься?
точно писать не буду но вполне возможно что у тебя элементарная ошибка в коде
пысы: глянь ссылку в подписи

Как может появиться ошибка в том, чего нет?
Первый код - обработчик кнопки.
Третий - пример реализации.
Я прошу склеить это вместе.


БД использовать как я понимаю - собирался, да?

Именно так

LIME пишет:
PHP:
скопировать код в буфер обмена
  1. $timebd = mysqli_query("SELECT last_bonus_time FROM tbl WHERE id=$user_id")->fetch_array()[0] + (24*60*60);
извини
снова не написал все за тебя
если не помог то игнорируй пост
(Добавление)
>=5.4

Думаю, что помог.
Теперь попытаюсь правильно прикрутить сие дело, не смотря на то, что с этим и проблема.
Цитата:
>=5.4

Это по теме или что?, если не секрет? Улыбка
 
 Top
LIME
Отправлено: 26 Июля, 2013 - 18:21:38
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Alvor хрень полнейшая
начнем с того что >= 24*60*60 всетаки
(Добавление)
ykpon пишет:
Это по теме или что?, если не секрет?
разыменование массива возможно только в php >=5.4
иначе придется слегка доработать
(Добавление)
вернее разыменование массива возвращемого ф-цией
тоесть 5.4 возможно my_func()[0]
а для 5.3 надо $arr=my_func(); echo $arr[0]
 
 Top
Alvor
Отправлено: 26 Июля, 2013 - 18:26:58
Post Id


Гость


Покинул форум
Сообщений всего: 79
Дата рег-ции: Июль 2013  


Помог: 1 раз(а)




LIME пишет:
Alvor хрень полнейшая
начнем с того что >= 24*60*60 всетаки
(Добавление)
ykpon пишет:
Это по теме или что?, если не секрет?
разыменование массива возможно только в php >=5.4
иначе придется слегка доработать

Почему же хрень?
 
 Top
LIME
Отправлено: 26 Июля, 2013 - 18:28:24
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Alvor пройти по каждому пункту?
лениво
достаточно того что я не рекомендую ТС следовать коду буквально
(Добавление)
Alvor пишет:
$last_time[0] >= 24
более 24 секунд?))
дальше даже не смотрю
 
 Top
ykpon
Отправлено: 26 Июля, 2013 - 18:31:59
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)




LIME пишет:
Alvor пройти по каждому пункту?
лениво
достаточно того что я не рекомендую ТС следовать коду буквально
(Добавление)
Alvor пишет:
$last_time[0] >= 24
более 24 секунд?))
дальше даже не смотрю

Да ладно Вам придираться. Более чем уверен, что он имел ввиду 24*60*60.

Попробую вариант, предоставленный Alvor'ом.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB