sql >> Database teknologi >  >> RDS >> Mysql

hvordan arbejder man med dynamiske data og google-diagrammer?

Dit spørgsmål berører noget, der har frustreret mig meget:Googles API-dokumentation er ikke fantastisk! Specielt for Charts API, i stort set alle deres eksempler, er dataene for deres diagram hårdkodet på siden, og i det virkelige liv vil du stort set altid gengive data, der er gemt i en DB og transmitteret til browseren.

1) Du skal bruge noget kode på serveren (jeg bruger PHP) som forespørger databasen, "printer" og transmitterer JSON/komplekse datastrukturen som er et objekt hvor egenskaberne er arrays der indeholder yderligere objekter med egenskaber og værdier i den nøjagtige format, som Googles Chart JavaScript forventer at modtage det i browseren. Jeg gjorde det sådan her:

$sql = "SELECT year,d_pop FROM metrics WHERE year IN ('1940','1950','1960','1970','1980')";

$sth = mysql_query($sql, $conn) or die(mysql_error());

//start the json data in the format Google Chart js/API expects to recieve it
$JSONdata = "{
           \"cols\": [
               {\"label\":\"Year\",\"type\":\"string\"},
               {\"label\":\"Detroit Population\",\"type\":\"number\"}
             ],
        \"rows\": [";

//loop through the db query result set and put into the chart cell values
while($r = mysql_fetch_assoc($sth)) {
   $JSONdata .= "{\"c\":[{\"v\": " . $r['year'] . "}, {\"v\": " . $r['d_pop']  ."}]},";

}    

//end the json data/object literal with the correct syntax
$JSONdata .= "]}";

echo $JSONdata;

2) Du skal modtage det JSON-objekt i din JavaScript på din side og videregive det til Googles Chart JS. Jeg bragte JQuery ind og brugte derefter dens AJAX-metode som denne:

function drawChart() {
    var jsonData = $.ajax({
        url: "index_db.php",
        dataType:"json",
        async: false
    }).responseText;

    // Create our data table out of JSON data loaded from server.
    var data = new google.visualization.DataTable(jsonData);

    // Instantiate and draw our chart, passing in some options.
    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
    chart.draw(data, {vAxis: {minValue: 0}});
}

Mine kodestykker fokuserer på de vigtigste dele af forespørgsler i mySQL DB, generering af JSON-objektet Google Charts API-behov og modtagelse af det med JQuery og AJAX. Håber dette lyser!



  1. MySQL-ydeevneoptimering:rækkefølge efter dato og klokkeslæt felt

  2. phpMyAdmin - Fejl> Forkert formatparameter?

  3. Hvordan indstilles et AUTO_INCREMENT-felt til at starte med værdien 6000 i mysql?

  4. Android til Wamp-serverforbindelse ved hjælp af Android Studio og PHP