Avatar billede japping Nybegynder
21. februar 2014 - 00:38 Der er 9 kommentarer og
1 løsning

Array til google.visualization

Jeg har fået 2 separate PHP programmer til at køre. Det ene program kan hente data fra en MySQL database og, det andet program kan tegne en graf med google.visualization.

Data fra SQL delen vil jeg så gerne vise vha google.visualization, men jeg kan ikke finde ud af, hvordan man aflevere variablen med data fra SQL-kaldet til google.visualization. Er der een der kan hjælpe med dette ?

Min test-kode ser således ud og, jeg ønsker at vise data fra $info variablen i grafen, i stedet for den indtastede tabel [10, 3],[20, 1],[30, 1],[40, 1],[50, 2]:

------------------ KODE ----------------------
<body>
<h1>Test af forbindelse til MySQL database</h1>
<h2>Data:</h2>
</body>

<?php // Connects to your Database: Host,User,Password
mysql_connect(database information) or die
(mysql_error());
mysql_select_db(database information);


// Collects data from "friends" table
$data = mysql_query("SELECT * FROM vejrstation")
or die(mysql_error());

// puts the "vejrdata" info into the $info array
$info = mysql_fetch_array( $data );

// Print out the contents of the entry
while($info = mysql_fetch_array( $data ))
{
Print "<b>Tid:</b> ".$info['tid'] . " ";
Print "<b>Temp.:</b> ".$info['temp'] . " <br>";
}




?>






<body>
<h1>Velkommen til vejrstationen</h1>
<h2>Data for de sidste timer</h2>
</body>

<html>
<head>
<!--Load the AJAX API-->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">

// Load the Visualization API and the piechart package.
google.load('visualization', '1.0', {'packages':['corechart']});

// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawChart);

// Callback that creates and populates a data table,
// instantiates the pie chart, passes in the data and
// draws it.
function drawChart() {

// Create the data table.
var data = new google.visualization.DataTable();
data.addColumn('number', 'tid');
data.addColumn('number', 'temp');
data.addRows([
[10, 3],
[20, 1],
[30, 1],
[40, 1],
[50, 2]
]);

// Set chart options
var options = {'title':'Temperaturer for det sidste døgn',
'width':900,
'height':400};

// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.LineChart
(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>

<body>
<!--Div that will hold the pie chart-->
<div id="chart_div"></div>
</body>
</html>
Avatar billede repox Seniormester
21. februar 2014 - 11:27 #1
'data.php'
<?php // Connects to your Database: Host,User,Password
mysql_connect(database information) or die
(mysql_error());
mysql_select_db(database information);


// Collects data from "friends" table
$data = mysql_query("SELECT * FROM vejrstation");

// puts the "vejrdata" info into the $info array
$info = mysql_fetch_array( $data );

// Put contents into usable arrays for Google Visualization
$results = array();
while($info = mysql_fetch_array( $data ))
{
    $results[] = "[".$info['tid'].", ".$info['temp']."]";
}

'visualize.php'
<?php include 'data.php'; ?>
<body>
<h1>Velkommen til vejrstationen</h1>
<h2>Data for de sidste timer</h2>
</body>

<html>
<head>
<!--Load the AJAX API-->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">

// Load the Visualization API and the piechart package.
google.load('visualization', '1.0', {'packages':['corechart']});

// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawChart);

// Callback that creates and populates a data table,
// instantiates the pie chart, passes in the data and
// draws it.
function drawChart() {

// Create the data table.
var data = new google.visualization.DataTable();
data.addColumn('number', 'tid');
data.addColumn('number', 'temp');
data.addRows([
<?php implode(",", $results); ?>
]);

// Set chart options
var options = {'title':'Temperaturer for det sidste døgn',
'width':900,
'height':400};

// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.LineChart
(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>

<body>
<!--Div that will hold the pie chart-->
<div id="chart_div"></div>
</body>
</html>
Avatar billede japping Nybegynder
21. februar 2014 - 18:26 #2
Jeg ser det som om, at du kun har ændret data til følgende:

<?php implode(",", $results); ?>

Men det virker ikke. Kan du give et hint mere ? Jeg har også prøvet at erstatte $results med $data og $info, men det virker heller ikke.
Avatar billede repox Seniormester
21. februar 2014 - 19:31 #3
Har du kigget mine eksempler ordentligt igennem, for det er ikke den eneste rettelse.
Avatar billede japping Nybegynder
22. februar 2014 - 08:18 #4
Ok, jeg var ikke helt vågen. Jeg har nu rettet lidt i synteksen og fået nedenstående kode, som ikke melder fejl, men der vises ikke nogen data i google grafen. Bemærk at jeg har udkommenteret linierne
// 'visualize.php'
// include 'data.php';
, hvilket jeg ikke er sikker på er korrekt ?

Kan du give et hint ?

-----------------KODE-----------------
<body>
<h1>Test af forbindelse til MySQL database</h1>
<h2>Data:</h2>
</body>

<?php // Connects to your Database: Host,User,Password
mysql_connect(....database adgangskoder.....) or die
(mysql_error());
mysql_select_db(... database reference.....) or die(mysql_error());


// Collects data from "friends" table
$data = mysql_query("SELECT * FROM vejrstation")
or die(mysql_error());

// puts the "vejrdata" info into the $info array
$info = mysql_fetch_array( $data );

// Print out the contents of the entry
while($info = mysql_fetch_array( $data ))
{
Print "<b>Tid:</b> ".$info['tid'] . " ";
Print "<b>Temp.:</b> ".$info['temp'] . " <br>";
}
?>




<?php
// Connects to your Database: Host,User,Password
mysql_connect(....databaseadgangskoder.....) or die (mysql_error());
mysql_select_db(...database reference.....);


// Collects data from "friends" table
$data = mysql_query("SELECT * FROM vejrstation");

// puts the "vejrdata" info into the $info array
$info = mysql_fetch_array( $data );

// Put contents into usable arrays for Google Visualization
$results = array();
while($info = mysql_fetch_array( $data ))
{
$results[] = "[".$info['tid'].", ".$info['temp']."]";
}
?>

<?php
// 'visualize.php'
// include 'data.php';
?>

<body>
<h1>Velkommen til vejrstationen</h1>
<h2>Data for de sidste timer</h2>
</body>

<html>
<head>
<!--Load the AJAX API-->
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">

// Load the Visualization API and the piechart package.
google.load('visualization', '1.0', {'packages':['corechart']});

// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawChart);

// Callback that creates and populates a data table,
// instantiates the pie chart, passes in the data and
// draws it.
function drawChart() {

// Create the data table.
var data = new google.visualization.DataTable();
data.addColumn('number', 'tid');
data.addColumn('number', 'temp');
data.addRows([
<?php implode(",", $results); ?>
]);

// Set chart options
var options = {'title':'Temperaturer for det sidste døgn',
'width':900,
'height':400};

// Instantiate and draw our chart, passing in some options.
var chart = new google.visualization.LineChart
(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>

<body>
<!--Div that will hold the pie chart-->
<div id="chart_div"></div>
</body>
</html>
Avatar billede japping Nybegynder
22. februar 2014 - 17:37 #5
Er der nogen/andre der kan hjælpe, der kommer ingen data på google-grafen ???????
Avatar billede japping Nybegynder
23. februar 2014 - 00:40 #6
Der var fejl i syntaksen da der ikke skal være semikolon og, der manglede også "echo", hvilket giver løsningen:

data.addRows([
<?php echo implode(",", $results) ?>
]);
Avatar billede repox Seniormester
23. februar 2014 - 01:07 #7
Så løste mit svar vel også dit problem, trods en syntaxfejl? Hvorfor har du så taget pointene selv?
Avatar billede repox Seniormester
24. februar 2014 - 17:56 #8
Nå, på trods af henvendelse via PB er intet hørt - jeg antager det var en fejl og korrigerer selv point.
Avatar billede japping Nybegynder
01. marts 2014 - 14:48 #9
repox - tja, man kan jo gøre som man vil som admin. Du forventer åbenbart hurtigt svar på dit spørgsmål men, du svarer ikke slev med samme fart.

Dit svar løste ikke opgaven men var en delløsning, som jeg burde give dig point for, men fik ikke eksekveret korrekt.

Men du kan da bare tage alle de point du lyster, der er 28.000 mere, hvorfor tager du ikke dem ?
Avatar billede repox Seniormester
01. marts 2014 - 16:11 #10
Nå, ja - uretfærdigt behandlet kan man jo altid føle sig...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester