За последние 24 часа нас посетили 20763 программиста и 1699 роботов. Сейчас ищут 1648 программистов ...

изменить переменную

Тема в разделе "JavaScript и AJAX", создана пользователем wap3t, 17 авг 2018.

  1. wap3t

    wap3t Новичок

    С нами с:
    8 мар 2018
    Сообщения:
    5
    Симпатии:
    0
    Добрый вечер всем. Суть проблемы.
    Имеется переменная $energy с максимальным значением 100.
    Если пользователь совершил действие она уменьшается, и затем каждую секунду востанавливается до максимума, но что бы значение изменилось надо перезагрузить страницу, а хочу что бы без перезагрузки. Пытался при помощи ajax, но никак не получается.
    Заранее благодарен за помощь. Прошу прошения если не туда написал.
    --- Добавлено ---
    при помощи php всё работает. Но надо каждый раз перезагружаться
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не так
    запоминай время потраты
    считай число секунд, прошедших с момента события
    это и есть то, что тебе нужно
     
  3. wap3t

    wap3t Новичок

    С нами с:
    8 мар 2018
    Сообщения:
    5
    Симпатии:
    0
    а можно пример?
     
  4. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    PHP:
    1. <?php
    2.  
    3. function update_energy ( $last_act, $energy_cur, $energy_max  )
    4. {
    5. $_SESSION["last_act"] = time();
    6.  
    7. //- Количество энергии / сек
    8. $energy_tick = 2;
    9. //- Количество энергии * количество секунд
    10. $energy_tick = round( $energy_tick * $last_act );
    11. //- Прибавляем к текущей энергии
    12. $energy_cur += $energy_tick;
    13. //- Если выходит за рамки ограничений
    14. if ( $energy_cur > $energy_max )  $energy_cur = $energy_max;
    15. //- Возвращаем значение
    16. return $energy_cur;
    17. }
    18.  
    19. //- Последнее действие выполненное пользователем
    20. //- Предполагается, что данное значение будет сохранено в таблицу базы данных пользователя при действии выполненное на сайте
    21. $last_act = time();
    22.  
    23.  
    24. //- Запишем в сессию время последнего действия
    25. if ( empty ( $_SESSION["last_act"] ) ) $_SESSION["last_act"] = $last_act;
    26.  
    27. //- Текущее значение энергии, например 50
    28. $energy_cur = 50;
    29.  
    30. //- Максимальное значение энергии
    31. $energy_max = 100;
    32.  
    33.  
    34.  
    35.  
    36. echo '
    37. Текущая энерегия : <b> ' . $energy_cur . ' </b> <br />
    38. Максимальная энергия : <b> ' . $energy_max . ' </b> <br />
    39. Прошло времени : <b> ' . ( time() - $_SESSION["last_act"] ) . ' </b> сек. <br />
    40. Восстановлено энерегии <b> ' . update_energy(( time() - $_SESSION["last_act"] ), $energy_cur, $energy_max) . ' </b> <br />
    41.  
    42. ';
    43.  
    44. ?>
    Запусти у себя, должен понять примерную логику, может лучше сделаешь)



    То есть, что должно происходить.

    1) Устанавливаешь время пользователю (последнее действие), который только что зашел на сайт или куда либо перешел/нажал.
    2) Определяешь :
    2.1) Текущую энерегию
    2.2) Максимальную энергию
    2.3) Количество энергии в сек
    3) Запускаешь функцию регенирации, куда передаешь или считаешь до этого:
    3.1) Количество секунд которые проишли ( текущее время - время последнего действия пользователем )
    3.2) Умножаешь количество секунд на количество энерегии в сек
    3.3) Прибавляешь полученное значение к текущей энергии и возвразаешь, а если оно превышает лимит - устанавливаешь дефолт максимальный
    3.4) Перезаписываешь время последнего действия
     
    #4 lastdays, 18 авг 2018
    Последнее редактирование: 18 авг 2018
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я сделал действие в 17:03:12, было 100, потратил 25, стало 75

    в 17:03:16 я сделал еще действие, было 75, прошло 4 секунды, значит 75 + 4 = 79 энергии у меня есть, действие стоит 20, значит 79 - 20 = 59