如何定期从psql表中获取数据

时间:2018-11-08 13:16:43

标签: javascript php html postgresql

我正在从psql表中获取数据,并将其作为json数组传递给javascript,以显示为时间序列图。传递的数据必须位于数组的from中。

由于表中的数据会定期更新,因此我需要不断地从psql中获取数据,例如每15分钟将更新后的数组传递给javascript。

我正在搜索,但到目前为止我还没有任何解决方案。我的问题是如何定期从psql提取数据。

这是我的代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <script>
        var Device_Data;
        var time, batt;
        var timeArray = [];
        var battArray = [];
        var N = 12;
        for (i = 0; i < N; i++) {
            timeArray.push(0);
            battArray.push(0); }

    function dspChrt(Device_Data) { 

        console.log(Device_Data[0].date_time);
        console.log(Device_Data[1].battery_voltage_mv);

        time = Device_Data[0].date_time;
        batt = Device_Data[1].battery_voltage_mv;

        timeArray.shift();
        timeArray.push(time);
        battArray.shift();
        battArray.push(batt);

    </script>

</head>
<body> 

  <?php
    require("Connection.php");
    $stmt = $conn->prepare("Select date_time, battery_voltage_mv FROM measuring_device_statuses order by date_time desc limit 12");
    $stmt->execute();

    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    $WData = $stmt->fetchAll();

    /*
    echo "<pre>".print_r($WData, true)."</pre>"; 
    die();
    */

    ?>

    <script>
      var WData = <?php print_r(json_encode($WData));?>;
      //console.log(WData);
      dspChrt(WData);
    </script>
    </body>
</html>    

2 个答案:

答案 0 :(得分:0)

让您将数据提取php脚本保存在某个文件“ fetch.php”中,并通过javascript设置间隔功能定期调用它,例如,此代码每3秒打印一次警报。

setInterval(function(){ alert("Hello"); }, 3000);

答案 1 :(得分:0)

您可以为此目的使用AJAX。

HTML

<div id="myDiv"></div>

JavaScript

<script>

window.onload = function(){
loadDoc();
SetInverval(loadDoc, (10000 * 60 * 15)); // Perform function every fifteen minutes
}

function loadDoc() {
var div = document.getElementById("myDiv"); // Get Div
div.innerHTML = ""; // Set to nothing
  var xhttp = new XMLHttpRequest(); // Create new XML object
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) { // If successful
     div.innerHTML = this.responseText; // Display result
    }
  };
  xhttp.open("GET", "loadDoc.php", true);
  xhttp.send();
}

该文件应该在您的PHP文件中,名为loadDoc.php或您选择替换为它的任何文件。

<?php
    require("Connection.php");
    $stmt = $conn->prepare("SELECT date_time, battery_voltage_mv FROM measuring_device_statuses ORDER BY date_time DESC LIMIT 12");
    $stmt->execute();

    //$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    $WData = $stmt->fetchAll();
    $stmt->close();


    echo "<pre>".print_r($WData, true)."</pre>"; 
    die();


    ?>