如果已修改echo'd SQL表,则发出警报

时间:2016-04-26 03:24:14

标签: php html mysqli html-table

我有一个HTML表,它回显来自我的SQL数据库的数据。 我需要的是,只要表中的某个字段在其他地方的数据库中更新,就会在HTML页面上弹出警报。

在我所在的主页上,它显示了我的getTable.php文件中的一个表。

我想要更新的特定列是一个注释列,它会定期从工厂的操作员那里获得输入。

我不确定哪些代码可以帮助理解这种情况,但我正在寻找有关非javascript函数的任何建议,这些函数可以简单地保留一个关于是否正在编辑SQL表的选项卡。

这是单元格的代码,它向我表明存在一个注释:

$conN = mysqli_connect(DB_HOST, DB_USER);
        if (!$conN) {die('Could not connect: ' . mysqli_error($conN));} // Check Connection
        mysqli_select_db($conN,"jms");

        $jid = $row['jobID'];
        $opn = $row['operation'];
        $highlight = mysqli_query($conN,"SELECT notes FROM operations WHERE jobID=$jid AND operation=$opn");
        while ($data = mysqli_fetch_array($highlight))
            if (isset($data['notes']) && $data['notes'] != "") {
            echo "<td id='notes' style='background-color:red;width:1%;' onChange='alert(\"New note on Job No " .$jid. "\")'><input id='target' type='text' value='" .$data["notes"]. "' >" . "</td>";
            } else {
            echo "<td style='background-color:palegreen;width:1%;'>" . "</td>";
            }
        echo "</tr>"; // End the row
        $index++;

1 个答案:

答案 0 :(得分:0)

这可能比你期望的更复杂。

有几个选项可以实现这一点,它们取决于您对较大系统的控制。最终,使用PHP,您可能需要使用轮询方法。

要使用一个简单的示例,您可以使用JavaScript命中AJAX PHP脚本,并将其POST为当前数据数组。然后,PHP可以检查当前数据,并比较两个数组。这可能效率不高,但它允许您判断字段何时发生变化。

为了使其更加优化,您可以在每一行上存储修改时间。然后,您只需要发送最后的最高修改时间,并使用索引来检查更新的记录。然后,AJAX PHP脚本只有在更新时才会发回数据。您可能仍需要一个数组来判断哪个特定字段已更改,但这可以在客户端完成。

另一种选择是使用TRIGGER(如果您的数据库引擎支持它们),它可以使用更改信息更新单独的表。然后,您可以使用游标通过AJAX轮询发送此信息。

继续沿着这条路走下去,你可以用websocket代替AJAX。如果您需要尽可能实时的信息,这可能会更有效。它最终连接的代码仍然需要进行轮询(除非它是一个长期存在的应用程序,更新也会通过......但如果您正在使用PHP,这是不太可能的。)< / p>

无论如何,无论如何,你需要的成分是:

  1. JavaScript每隔X时间或通过长期的websocket向服务器询问更改。
  2. 识别数据不同的方法(如修改时间,结果集,TRIGGER更改日志表等)
  3. 服务器上的某些内容,用于检查并报告信息。
  4. JavaScript以显示用户发生的更改。