Автоматическое обновление php-переменной на html-странице - PullRequest
2 голосов
/ 02 августа 2011

У меня есть HTML-страница с div, содержащим значение переменной php из запроса MySQL. Я хочу, чтобы div автоматически обновлялся, чтобы увидеть любые новые данные из запроса SQL. Я искал неделю правильный код, но ничего ... Код div выглядит следующим образом:

<div id="last10">   
    <table width="838" cellpadding="1" cellspacing="1" class="categorie1"> 
        <tr style='font: bold 12px verdana;'> 
            <td width="149" align="center">Browser</td>
            <td width="99" align="center">OS</td>
            <td width="248" align="center">Date</td>
            <td width="103" align="center">IP</td>
            <td width="108" align="center">Country</td>
            <td width="110" align="center">Referrer</td> 
        </tr>
        {$recent_visits}        
    </table>
</div>

Ответы [ 4 ]

2 голосов
/ 02 августа 2011

Вам нужно будет использовать AJAX, если вы хотите сопротивляться обновлению всей страницы.Основные шаги:

  1. Создайте новую страницу или определенную функцию текущей страницы только для получения нового значения.Это может быть get_recent_visits_count.php или current_page.php?get_recent_visits.
  2. Найдите вызовы AJAX (я рекомендую использовать jQuery's get для простоты) и получите значение
  3. Placeэто значение на странице.
  4. Как только вы сможете получить информацию, поместите этот код в setInterval (или аналогично) и периодически обновляйте его.

Если вы хотите сохранить код на той же странице, попробуйте что-то вроде этого (добавлено вверху страницы):

<?php
  if (isset($_GET['get_recent_visits']))
  {
    // query your DB for just the numeric value and echo it here.
    exit;
  }
?>

Затем на вашей HTML-странице попробуйте что-то вродеследующее:

1-й, поместите элемент, который вы хотите заполнить новым значением на странице:

<span id="recent-visits"></span>

Затем, в разделе <head> вашей страницы вы идетенеобходимо включить jQuery и код ajax:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript">
  // wait for document to be ready
  $(function(){

    // make the code execute every so many seconds (time assigned at bottom)
    setInterval(function(){

      // make the ajax call to the same page, passing it the GET variable so
      // it only echos the number we want
      $.get('<?php echo $_SERVER['REQUEST_URI']; ?>?get_recent_visits',function(num){

        // echo that number we just retrieved to the span we placed on the page
        $('#recent-visits').text(num);

      });

    }, 30 * 1000); // run every 30 seconds

  });
</script>

Выше приведен простой способ отображения одного числа на странице, но вы должны получитьноги мокрые.PHP предлагает возможность выгружать объекты JSON, используя json_encode, который может быть связан с jQuery .getJSON для возврата более сложных объектов.

2 голосов
/ 02 августа 2011

PHP - это язык на стороне сервера, HTML и JavaScript - на стороне клиента. Итак, вам нужно использовать AJAX для обновления некоторых данных в HTML / JavaScript с использованием PHP

1 голос
/ 02 августа 2011

Вам придется использовать некоторые из них, используя магию ajax, если вы хотите, чтобы данные обновлялись автоматически.Больше информации нужно на самом деле.Что такое $ Recent_visits?

0 голосов
/ 29 июня 2018

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

Сначала создайте файл.Давайте назовем это data.php.Этот файл должен содержать весь ваш код для извлечения данных из вашей базы данных, и именно здесь вы помещаете любые соответствующие данные в переменные.Вот пример кода из моего собственного проекта:

<?php
$cpu_load = sys_getloadavg();
$total_storage = disk_total_space("/");
$free_storage = disk_free_space("/");
$public_ip = file_get_contents("public_ip.txt");
?>

Все, что делает этот код, это устанавливает переменные, и это единственный бит, который будет периодически обновляться.Вы также должны добавить содержимое DIV здесь (хотя без тегов DIV).Эта часть должна выглядеть примерно так (очевидно, заменяя мои примерные переменные):

<table width="838" cellpadding="1" cellspacing="1" class="categorie1"> 
    <tr style='font: bold 12px verdana;'> 
        <td width="149" align="center">Average CPU Load: <?php echo $cpu_load; ?></td>
        <td width="99" align="center">Total Storage: <?php echo $total_storage; ?></td>
        <td width="248" align="center">Free Storage: <?php echo $free_storage; ?></td>
        <td width="103" align="center">Public IP: <?php echo $public_ip; ?></td>
    </tr>       
</table>

Далее, на главной странице вы можете использовать что-то вроде этого:

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function() {

  $("#refresh").click(function() {
     $("#last10").load("data.php");

    return false;
    });
});
function refresh() {
$("#refresh").click();  
}
setInterval(refresh, 100);
</script>
<a href="#" id="refresh" hidden="">Refresh</a>
<div id="last10"></div>

Это просто создаетскрытая ссылка и «щелкает» ее, чтобы обновить div.

Я думаю, что это должно ответить на ваш вопрос.Спросите в комментариях, если вам нужны какие-либо разъяснения.Надеюсь, это поможет некоторым людям:)

...