2016-08-19 8 views
1

グラフ作成時にmysqlデータベースとPHPを使用する際に問題があります。ここグラフ内のデータベースから選択した値が更新されないphp

は私のコードである:

<?php session_start(); ?> 
<!DOCTYPE html > 
<html> 
<head> 
    <link rel="stylesheet" href="demos.css" type="text/css" media="screen" /> 
    <script src="RGraph/libraries/RGraph.common.core.js" ></script> 
    <script src="RGraph/libraries/RGraph.line.js" ></script> 

    <title>Line chart with scrolling effect</title> 

    <meta name="robots" content="noindex,nofollow" /> 
    <meta name="description" content="A chart which updates itself every 250ms producing a scrolling effect" /> 

</head> 
<body> 

    <h1>Line chart with scrolling effect</h1> 

    <canvas id="cvs" width="600" height="250">[No canvas support]</canvas> 

    <script> 
     data = RGraph.arrayPad([], 500); 
     function DrawGraph() 
     { 

      RGraph.clear(document.getElementById("cvs")); 
      RGraph.ObjectRegistry.clear(); 

      var line = new RGraph.Line({ 
       id: 'cvs', 
       data: data, 
       options: { 
        colors: ['green'], 
        linewidth: 1, 
        filled: true, 
        fillstyle: 'rgba(128,255,128,0.5)', 
        ymax: 60, 
        tickmarks: null, 
        shadow: false, 
        numxticks: 5, 
      labels: ['0s','5s','10s','15s','20s','25s'], 

       // labels: ['Now','25s','50s','75s','100s','125s'], 
        backgroundGridAutofitNumvlines: 5, 
        textAccessible: true 
       } 
      }).draw() 

<?php 

$host="localhost"; 
     $user="root"; 
     $pass="[email protected]"; 
     $dbh = new PDO("mysql:host=$host;dbname=VGW", $user , $pass); 

$req="SELECT CPUUtilization from G_info where login_id='".$_SESSION['login_device_id']."' limit 30;"; 
$stmt=$dbh->query($req); 
if(!$stmt) 
{ 
    echo "Lecture impossible"; 
} 
else 
{ 
    $nblig=$stmt->rowCount(); 
    $ligne=$stmt->fetchObject(); 
if ($ligne != null) { 
    do 
    { 
$f=$ligne->CPUUtilization; 
?> 
r = <?php echo $f; ?>; data = [r].concat(data);data.pop(); 
      <?php 
    } 
    while ($ligne = $stmt->fetchObject()) ; 
} 
else 
{echo "<br> \n No such result";} 

$stmt->closeCursor(); 
$dbh=null; 
    } 
    ?> 
      setTimeout(DrawGraph, 2500); 
     } 

     window.onload = function() 
     { 
      DrawGraph(); 
     }; 
    </script> 
</body> 
</html> 

問題は、チャートの出力にすることである:データベース(テーブルg_info)30個の値が変更される場合

、クエリが同じを返します関数の最初のエントリの結果。 $ reqが値を更新していないようです。

ありがとうございます。問題はDrawGraphある

答えて

0

は、単にページが最初ページに新しいデータを取得するために

をロードした際に提供されたデータとグラフを描画するには、実行して、新しいデータを書き込むためのPHP用のウィンドウをリロードする必要がありますページへの代わりの

...
setTimeout(DrawGraph, 2500);

あなたが試みることができる...
setTimeout(function() {window.location.reload();}, 2500);

+0

理想的には、phpとhtml/javascriptを分離したい - phpはデータのみを返し、次にjavascript/ajaxを使用してPHPからデータを取得する - 別のチャートライブラリ[ここには例がある](http ://stackoverflow.com/questions/38947898/redraw-google-chart-based-on-user-input-via-ajax-request/38955110#38955110) – WhiteHat

+0

この質問は運がいいですか? – WhiteHat

関連する問題