2012-12-12 46 views
-2

我有一個記錄實時傳感器數據的MySQL數據庫。在我的表中,我有ID(自動遞增),TimeStamp和SensorData。我正在記錄多個傳感器(壓力,溫度等),並將它們全部存儲在SensorData列中。它是空間分隔的。所以它看起來是這樣的:解析SQL結果和積使用PHP(FLOT或HighChart)

33.5 108.3 443.2 44.2 779.553

我想繪製實時在網站上的這些信息。到目前爲止,我已經安裝海軍報,它會詢問我的數據庫,並返回結果,但我不知道如何解析出SensorData列,所以我可以爲每個傳感器的陰謀。

正在發送數據到SQL服務器的設備不能被修改,所以我將永遠在一個列中的多個傳感器的條目。這裏是我目前用於Flot的代碼:

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <title>Flot Examples</title> 
    <link href="layout.css" rel="stylesheet" type="text/css"> 
    <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="js/flot/excanvas.min.js"></script><![endif]--> 
    <script language="javascript" type="text/javascript" src="js/flot/jquery.js"></script> 
    <script language="javascript" type="text/javascript" src="js/flot/jquery.flot.js"></script> 
</head> 
    <body> 
    <h1>Apex HiPoint, LLC</h1> 

    <div id="placeholder" style="width:600px;height:300px;"></div> 

<?php 

    $server = "www.freesql.org"; 
    $user="un"; 
    $password="pw"; 
    $database = "testdb"; 

    $connection = mysql_connect($server,$user,$password); 
    $db = mysql_select_db($database,$connection); 

    $query = "SELECT Id, TME FROM SData"; 
    $result = mysql_query($query); 

    while($row = mysql_fetch_assoc($result)) 
    { 
     $dataset1[] = array($row['Time'],$row['SensorData']); 
    } 
?> 


<script type="text/javascript"> 
$(function() { 
    var dataset1 = <?php echo json_encode($dataset1); ?>; 

    $.plot($("#placeholder"), [ dataset1 ]); 
}); 
</script> 
</body> 
</html> 

所以我最終的目標是讓一個網頁包含多個圖。 RealTime中每個傳感器的一個繪圖。 15-30秒更新是可以的。而且我無法修改數據庫的結構,因此所有傳感器數據都包含在該記錄中。我是新的PHP,MySQL和這些其他好東西,所以請理解。

感謝您的幫助!

回答

1

如果你知道它總會有每個傳感器數據之間的一個空間,你可以從MySQL拆分選擇您的系列的傳感器數據列值的一個空間中並將其發送到任何你想要的圖表系統。我不確定MySQL是否具有內置的拆分功能,但我會檢查(我知道SQL Server沒有)。

+0

謝謝你的輸入。 MySQL沒有我能找到的分割函數,但那正是我的目標。我發現下面的代碼:$結果= mysql_query( 「選擇SUBSTRING_INDEX(傳感器, '\噸',1)作爲傳感器,localtme從雜物」);這將打印出第一個傳感器值。如果我將「1」更改爲「2」,它將打印出第一個和第二個值。我只是不知道如何分割結果。 – user1876087