0

我想用从 PHP 获取的记录来实现彗星

我的 PHP 将在页面调用getlog.php处执行以下操作

$sql = "select log_description,log_time from log ORDER by log_time DESC";

$result=mysql_query($sql);
if($result == false)
{     die("unable to fetch records."); }

while ($row = mysql_fetch_assoc($result)) {
   $result_output[] = $row;
}

$counter = 1;
foreach($result_output as $row)
{
echo $counter . ".  " $row[log_description];
$counter++;
}

如果有新日志,我想在viewlog.php中回显它

所以它会在viewlog.php中看起来像这样

1. Customer 1 logged in at 12:05.

也许5分钟后

1. Customer 2 logged in at 12:10
2. Customer 1 logged in at 12:05

它最多可以保持 15 条记录。

数据是从 PHP 中获取的,我读到的方法是所谓的“彗星”,但我只想要一个简单的数据库获取,例如每 10 秒自动刷新一次,以查看是否有新记录添加到数据库中并将其附加到分区。

有没有一种简单的方法可以使用 AJAX 和 PHP 而不是使用彗星来实现这一点。

感谢大家的帮助,不胜感激!

以下代码是否更改

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>

<script>
   show_log(){
    var lnk = "fetchlog.php";
    $.ajax({url:lnk,success:function(result){
        $("#log_div").html(result);
    }});
}
   window.setInterval(function(){
  show_log();
}, 10000);
    </script>

</head>
<body>
<div id="log_div"></div>
</body>
</html>

我的代码有什么问题,因为它没有从 fetchlog.php 中获取

fetchlog.php 回显类似这样的内容

1. Acct_1 logged to the system.
2. Acct_3  logged in to the system.
3. Acct_2  logged in to the system.
4. Assign permissions on Acct_1.
5. Delete record on table building with id 80

jsFiddle

4

1 回答 1

0

是的,您可以为此使用 ajax 并简单地更新 html 中的 div。您需要链接 jquery 才能使用以下代码。

show_log(){
    var lnk = "link to the viewlog.php file";
    $.ajax({url:lnk,success:function(result){
        $("#log_div").html(result);
    }});
}

每 x 分钟运行一次 show_log() 函数。让您的 viewlog.php 按时间降序显示最后 x 条记录。你可以更新你的 sql 看起来像

$sql = "select log_description,log_time from log ORDER by log_time DESC LIMIT 5 ";

您可以在 javascript 中使用以下内容每隔 x 秒运行一次该函数。在此每 10 秒。

window.setInterval(function(){
  show_log();
}, 10000);

10,000 以毫秒为单位

----- 试试下面

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>

<script>
http = getHTTPObject();

function getHTTPObject(){
  var xmlhttp;

  if(!xmlhttp && typeof XMLHttpRequest != 'undefined'){
    try {
      xmlhttp = new XMLHttpRequest();
    }catch(e){
      xmlhttp = false;
    }
  }
  return xmlhttp;
}
function   show_log(){
    var url = "viewlog.php";
  http.open("GET", url, true);
  http.onreadystatechange = handleHttpResponse;
  http.send(null);
}
function handleHttpResponse(){
  if(http.readyState == 4){
    document.getElementById('log_div').innerHTML = http.responseText;
  }
}
   setInterval ( "show_log()", 5000 );
    </script>

</head>
<body>
<div id="log_div"></div>
</body>
</html>
于 2013-11-12T06:38:08.677 回答