1

グラフを作成するときに mysql データベースと 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="P@ssw0rd"; 
        $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 が値を更新していないようです。

何か案が?

前もって感謝します。

4

1 に答える 1

0

問題は、ページが最初にロードされ DrawGraphたときに提供されたデータを使用してチャートを描画することです

ページに新しいデータを取得するには、php のウィンドウをリロードして実行し、新しいデータをページに書き込む必要があります。

それ以外の...
setTimeout(DrawGraph, 2500);

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

于 2016-08-19T12:24:23.367 に答える