首页 > 解决方案 > 每次在mysql数据库中插入新记录时刷新div

问题描述

我正在网页上的 SCADA 系统上工作,并且仅在 mysql 数据库中的 2 个表中的任何一个发生更改时才想用 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>

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

标签: javascriptphphtmlmysqlajax

解决方案


对于那些对未来感兴趣的人,最终代码感谢: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";

推荐阅读