2009-11-12 5 views
10

J'ai un graphique Google (en utilisant le Google Visualization API, pas Google Charts API) qui se charge au chargement de la page. Après quoi, l'utilisateur peut sélectionner des options dans plusieurs menus déroulants. J'aimerais que l'utilisateur puisse mettre à jour Google Chart en fonction de ses sélections.Mise à jour dynamique de Google Chart avec PHP et JavaScript

J'ai déjà créé le code PHP pour saisir les nouvelles données via MySQL - après que l'utilisateur a sélectionné les différentes options.

Question: Dois-je remplacer le graphique actuel? ou devrais-je créer une fonction JavaScript pour mettre à jour le graphique?

Voici mon Google Chart code JavaScript:

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' 
        }); 
} 

Répondre

16

Je voudrais juste mettre à jour les données au lieu de remplacer le tableau. Et demandez que le graphique soit redessiné. Vous pouvez modifier le code playground example pour tester cela.
Il ressemble à ceci:

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, Merci d'avoir répondu à ma question. Je te dois un! brussels0828 – brussels0828

+0

De rien, et le lien du terrain de jeu aurait dû avoir le _ non codé (comme% 5F) dans la partie # de l'URL. Mais les messages sont filtrés pour la démarque. Le lien dans ce commentaire devrait fonctionner: http://code.google.com/apis/ajax/playground/?type=visualization#column_chart – dlamblin

+0

@dlamblin J'ai collé votre code dans le Playground et cliquez sur play, mais ça ne marche pas n'importe quoi ... des idées? haha. – Shackrock

Questions connexes