2009-11-12 7 views
10

Ich habe ein Google-Diagramm (mit der Google Visualization API, nicht Google Charts API), die beim Laden der Seite füllt. Danach kann der Benutzer Optionen aus mehreren Dropdown-Menüs auswählen. Ich möchte, dass der Nutzer das Google-Diagramm anhand seiner Auswahl aktualisieren kann.Aktualisieren von Google Chart dynamisch mit PHP und JavaScript

Ich habe bereits den PHP-Code erstellt, um die neuen Daten über MySQL zu bekommen - nachdem der Benutzer die verschiedenen Optionen auswählt.

Frage: Muss ich den aktuellen Graphen ersetzen? oder sollte ich eine JavaScript-Funktion erstellen, um das Diagramm zu aktualisieren?

Hier ist mein Google Chart JavaScript-Code:

google.load("visualization", "1", {packages:["columnchart"]}); 
google.setOnLoadCallback(drawChart); 

function drawChart() { 
    var data = new google.visualization.DataTable(); 
    data.addColumn('string', 'Cluster'); 
    data.addColumn('number', 'Loans'); 
    data.addColumn('number', 'Lines'); 

/* create for loops to add as many columns as necessary */ 

var len = (encoded_cluster_name.length)-27; // encoded_line_volume.length; 

    data.addRows(len); 

for(i=0; i<len; i++) { 

     var lines = (encoded_line_volume[i])/100000; 
    var loans = (encoded_loan_volume[i])/100000; 

data.setValue(i, 0, ' '+encoded_cluster_name[i]+' ');  /* x-axis */ 
data.setValue(i, 1, loans);    /* Y-axis category #1*/ 
data.setValue(i, 2, lines);    /* Y-axis category #2*/ 
} 

/*********************************end of loops*****/ 

    var chart = new google.visualization.ColumnChart(
       document.getElementById('chart_div')); 
    chart.draw(data, { 
        width: 600, 
        height: 300, 
        is3D: true, 
        title: 'Prospect Population', 
        legend: 'right' 
        }); 
} 

Antwort

16

Ich würde nur die Daten aktualisieren, anstatt das Diagramm zu ersetzen. Und fordern Sie das Diagramm neu gezeichnet werden.

Sie können die playground example ändern, um dies zu testen.
Es sieht wie folgt aus:

function drawVisualization() { 
    // Create and populate the data table. 
    var data = new google.visualization.DataTable(); 
    data.addColumn('string', 'Name'); 
    data.addColumn('number', 'Height'); 
    data.addRows(3); 
    data.setCell(0, 0, 'Tong Ning mu'); 
    data.setCell(1, 0, 'Huang Ang fa'); 
    data.setCell(2, 0, 'Teng nu'); 
    data.setCell(0, 1, 174); 
    data.setCell(1, 1, 523); 
    data.setCell(2, 1, 86); 

    // Create and draw the visualization. 
    var v=new google.visualization.ColumnChart(
      document.getElementById('visualization') 
     ); 
    v.draw(data, null); 
    // Pretend update data triggered and processed 
    data.setCell(2, 1, 860); 
    v.draw(data, null); 
} 
​ 
+1

dlamblin, Vielen Dank für die Beantwortung meiner Frage. Ich schulde dir einen! brussels0828 – brussels0828

+0

Gern geschehen, und dieser Playback-Link sollte die _uncodiert (als% 5F) im # Teil der URL haben. Posts werden jedoch nach Markdown gefiltert. Der Link in diesem Kommentar sollte funktionieren: http://code.google.com/apis/ajax/playground/?type=visualization#column_chart – dlamblin

+0

@dlamblin Ich habe deinen Code in den Playground eingefügt und drücke Play, aber das geht nicht irgendetwas ... irgendwelche Ideen? Haha. – Shackrock