刷新div每次将新记录插入mysql数据库

时间:2019-01-22 04:50:40

标签: javascript php html mysql ajax

我正在我的网页上使用SCADA系统,并且仅当mysql数据库中的两个表中的任何一个发生更改时,才希望使用gif刷新某些div。

我也想在每次更改发生时执行此操作(表中的新记录)。 当这两个表保持不变时,不应执行任何操作(没有新记录)。

整个网页都是php / html,这是我使用javascript / ajax的第一种方法。 我尝试使用:

  setInterval($('. examplediv).load(location.href + ' .examplediv), 1000);

但它不符合我的需求。当我的图形应该是静态的时,它会随着每次刷新而闪烁。 为简化起见:我只想在表中的状态从a-> b更改时重新加载它们,因此我将a.gif与b.gif交换。

我可以通过以下方式检测mysql表中的更改:记录ID,时间戳或表校验和,但是使用JavaScript会很费劲。

<div class="refresh"> // div i want to refresh
  <h3>PIR</h3>        // sensor name
  <p>Online: <?echo $aonline;?></p>  // echoing result of query if  sensor is online
  <p>State: <?echo $pirstan;?></p>      // echoing current state of  sensor
  <p>Last changed: <?echo $rowpir['Czas'];?></p>  //echoing timestamp of previous state of sensor
   <img class="center" src="pir.gif" alt="Kontrakton"> // showing image related to current sensor state (for example walking person to PIR sensor)
  </div>

任何有关上述问题的帮助将不胜感激。 特别是带有注释的示例代码,这样我就明白了。 也欢迎使用其他解决问题的方法,也许我是短视的。

2 个答案:

答案 0 :(得分:0)

您可以使用websocket或socket.io解决您的问题示例:

当客户获得信息时 您可以直接拨打Ajax电话

socket.on('notification', function(){
  ajaxFunction();
});

如果您不想使用此方法。 p / s这只是一个建议。进行验证以获取旧的行数据,并在后端中比较新的行数据。

通过js

<script>

var old_count = 0;

setInterval(function(){    
    $.ajax({
        type : "POST",
        url : "test.php",
        success : function(data){
            if (data > old_count) {
                alert('new record on i_case');
                old_count = data;
            }
        }
    });
},1000);

</script>

答案 1 :(得分:0)

对于那些对未来感兴趣的人,请提供以下代码:Fiido93

<script type="text/javascript">
var old_count = 0;
setInterval(function(){    
    $.ajax({
        type : "POST",
        url : "test.php",
        success : function(data){
            if (data > old_count) {
                   $('.divname' ).load(window.location.href + ' .divname');
               old_count = data;
           }
        }
    });
},1000);

和test.php

$result = mysqli_query($conn,"mysqlquery");
while($row = mysqli_fetch_array($result))
{
    $printme= $row[0];   // i only echo row 0 here !!
} 
echo "$printme";