-1

I'm trying to populate a Flot chart using the example from here. I've been trying for hours, but can't get the PHP output to be parsed to the Javascript variable. To break it down here is the example with the hard coded data which works...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<style type="text/css">
body { font-family: Verdana, Arial, sans-serif; font-size: 12px; }
#placeholder { width: 450px; height: 200px; }
</style>

<!--[if lte IE 8]><script type="text/javascript" language="javascript" src="excanvas.min.js"></script><![endif]-->
<script type="text/javascript" language="javascript" src="flot/jquery.js"></script>
<script type="text/javascript" language="javascript" src="flot/jquery.flot.js"></script>

<script type="text/javascript">
var d1 = [[1,7],[2,8],[3,7],[4,7]];

$(document).ready(function () {
    $.plot($("#placeholder"), [d1]);
});
</script>
</head>

<body>
    <div id="placeholder"></div>
</body>
</html>

The series data used above is the output of a php file I have set up to query my mysql database. But when I combine the two into one .HTML page I am unable to parse the PHP output to the javascript plot area. Below is what I have...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<style type="text/css">
body { font-family: Verdana, Arial, sans-serif; font-size: 12px; }
#placeholder { width: 450px; height: 200px; }
</style>

<!--[if lte IE 8]><script type="text/javascript" language="javascript" src="excanvas.min.js"></script><![endif]-->
<script type="text/javascript" language="javascript" src="flot/jquery.js"></script>
<script type="text/javascript" language="javascript" src="flot/jquery.flot.js"></script>

<?php

    $server = "myserver:1234";
    $user="dbuser";
    $password="userpass";  
    $database = "dbname";

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

    $query = "SELECT X, Y FROM dbtable";
    $result = mysql_query($query);        

    while($row = mysql_fetch_assoc($result))
    {
        $dataset1[] = array($row['X'],$row['Y']);
    }
    $final = json_encode($dataset1,JSON_NUMERIC_CHECK);

?>  

<script type="text/javascript">
var d1 = <?php echo $final; ?>;

$(document).ready(function () {
    $.plot($("#placeholder"), [d1]);
});
</script>
</head>

<body>
    <div id="placeholder"></div>
</body>
</html>

Finally I'd like to update this chart dynamically too if possible, but first things first! Thanks in advance:)

Community
  • 1
  • 1
square_eyes
  • 1,269
  • 3
  • 22
  • 52

4 Answers4

2

But when I combine the two into one .HTML page I am unable to parse the PHP output to the javascript plot area

PHP scripts need to have .php extension. If you try to output PHP code in an HTML page, it'll just get displayed as plain text. If you want the code to get executed (which you probably do), change the extension to .php.

Note that it's possible parse PHP in HTML pages with some .htaccess tricks, but I doubt you need that.

Community
  • 1
  • 1
Amal Murali
  • 75,622
  • 18
  • 128
  • 150
0

you don't echo $final variable

var d1 = <?php echo $final; ?>
kasper Taeymans
  • 6,950
  • 5
  • 32
  • 51
0

Try this

var d1 = <?=$final; ?>;
Sajuna Fernando
  • 1,364
  • 9
  • 16
0

You're not actually echo'ing out your result string.

<?= $final; ?>
Paul Osborne
  • 1,550
  • 1
  • 10
  • 11