JS динамичное обновление PHP переменной

248
01 декабря 2017, 06:53

Пытаюсь реализовать обновление числа в span блоке

<li><a href="/activity"><?php echo $Lang['mes65']; ?> <span id="activity" class="badge pull-right bg-warning"><?=$countActivity?></span> </a></li>

В badge имеется переменная <?=$countActivity?>, подскажите, пожалуйста, как я могу периодически обновлять ее?

Answer 1

Вам нужно подучить матчасть. А именно, понять, чем на самом деле занимается php, а что происходит в браузере.

Как происходит загрузка страницы:

  • Пользователь вводит адрес/нажимает на ссылку
  • Браузер отправляет запрос на http-сервер
  • http сервер понимает, что был запрошен php скрипт и отдаёт управление интерпретатору php.
  • php выполняет скрипт, результатом является(в данном случае) html страница
  • Сервер отдаёт сгенерированную страницу браузеру

Как видите, ни о каком обновлении php переменной речи быть не может - скрипт уже отработал и умер.

Если вам нужно динамически обновлять какой-то контент на странице, всё что у вас есть - javascript.
Вы можете получать данные от сервера с помощью технологии Ajax(или WebSocket) и обновлять данные в DOM.

Например:

создаёте отдельный скрипт, который возвращает нужное вам значение:

scripts/getUserData.php

<?php
  // Имитация изменений данных
  start_session();
  $_SESSION['countActivity'] = ($_SESSION['countActivity'] ?? 0) + 1;
  $count = $_SESSION['countActivity'];
  header('Content-type: application/json');
  echo json_encode(['countActivity' => $count]);

И запрашиваете его периодически с помощью ajax из javascript на странице:

  <div id="activityCount">0</div>
  <script>
    setInterval(() => 
      fetch('/scripts/getUserData.php')
        .then(res => res.json())
        .then(res => {
          document.getElementById('activityCount').innerText = res.countActivity;
        }),
        5000 // Каждые 5 секунд
    );
  </script>
READ ALSO
Выборка с объединением и лимитом

Выборка с объединением и лимитом

Добрый день Всем добра

283
Обработка данных

Обработка данных

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

230
Помогите разобрать код по полочкам для понимания написанного

Помогите разобрать код по полочкам для понимания написанного

Из изначальных массивов выведен новый массив с наименованием животных только из 2-х словДалее, выведены названия животных, где 1ое слово остается...

172
ajax запрос в базу данных

ajax запрос в базу данных

Доброго времени суток всем есть скрипт добавления в БД с помощью ajax,

197