2016-05-15 6 views
1

私はwhileループを使ってグラフを作成し、mysqlクエリから変数を取得しています。Google Visualization PHPとJavascript

最初の列にhtmlを追加しようとしていますが、次の問題が発生しています。[object Object]がControlまたはVisualizationのいずれの仕様にも適合しません。

したがって、表は正しく表示されますが、カテゴリフィルタでこのエラーが発生しています。誰かが私のコードを見て、私が逃しているものを見ることができますか?ありがとう!ここで

は私のコードです:

echo "<script type='text/javascript' src='https://www.google.com/jsapi'></script> 

    <body> 
    <br><br> 
<div id='dashboard'> 
    <div style='float:left;' id='control1'></div> 
    <div style='float:left;' id='control2'></div> 
    <div style='float:left;' id='control4'></div> 
    <br><br> 
    <div style='float:left;' id='control3'></div> 
    <div style='float:left;' id='control5'></div> 
    <br><br> 
    <div id='table'></div> 
</div> 
</body>"; 



echo "<script> 

google.load('visualization', '1.0', {packages:['corechart', 'table', 'controls']}); 
google.setOnLoadCallback(drawChart); 

    function drawChart() 
{ 
    var data = new google.visualization.DataTable(); 
    data.addColumn('string', 'Save'); 
    data.addColumn('string', 'School'); 
    data.addColumn('string', 'State'); 
    data.addColumn('string', 'Scholarship Type'); 
    data.addColumn('string', 'Scholarship Amount'); 
    data.addColumn('string', 'For International');"; 

    while ($schools = mysql_fetch_row($schoolsearch)) { 
$schoolnames = str_replace(array('.', ',', "'"), '' , $schools[2]); 

echo "data.addRows([ 
['<input type=\"checkbox\">', '$schoolnames', '$schools[1]', '$schools[6]', '$schools[5]', '$schools[7]'], 
]);"; 
} 

echo "var name_filter = new google.visualization.ControlWrapper({ 
    'controlType': 'CategoryFilter', 
    'containerId': 'control1', 
    'options': { 
     'filterColumnLabel': 'School', 
    } 
}); 

var state_filter = new google.visualization.ControlWrapper({ 
    'controlType': 'CategoryFilter', 
    'containerId': 'control2', 
    'options': { 
     'filterColumnLabel': 'State', 
    } 
}); 

var scholarshiptype_filter = new google.visualization.ControlWrapper({ 
    'controlType': 'CategoryFilter', 
    'containerId': 'control3', 
    'options': { 
     'filterColumnLabel': 'Scholarship Type', 
    } 
}); 

var scholarshipamount_filter = new google.visualization.ControlWrapper({ 
    'controlType': 'CategoryFilter', 
    'containerId': 'control4', 
    'options': { 
     'filterColumnLabel': 'Scholarship Amount', 
    } 
}); 

var international_filter = new google.visualization.ControlWrapper({ 
    'controlType': 'CategoryFilter', 
    'containerId': 'control5', 
    'options': { 
     'filterColumnLabel': 'For International', 
    } 
}); 


var table = new google.visualization.ChartWrapper({ 
    'chartType': 'Table', 
    'containerId': 'table', 
}); 

var table = new google.visualization.Table(document.getElementById('table')); 
table.draw(data, { 
allowHtml:true, 
}); 

var dashboard = new google.visualization.Dashboard(document.getElementById('dashboard')); 
dashboard.bind([name_filter, state_filter, scholarshiptype_filter, scholarshipamount_filter, international_filter], [table]); 
dashboard.draw(data); 
} 

</script> 

答えて

0

私はこのようなオプションでallowHtmlを置くことによってこの問題を解決することができました:

var table = new google.visualization.ChartWrapper({ 
    'chartType': 'Table', 
    'containerId': 'table', 
     options: { 
allowHtml: true 
}, 
}); 
0

別のオプション、場合によっては、より良い仕事がありフィルターがHTMLまたはその値を表すようにしたい場合...

DataTableの各セルには値(v :)とフォーマットされた値(f :)があります。

は、HTML

あなたが持っている

用にフォーマット値を使用することができます...

echo "data.addRows([ 
    ['<input type=\"checkbox\">', '$schoolnames', '$schools[1]', '$schools[6]', '$schools[5]', '$schools[7]'], 
]);"; 

...

echo "data.addRows([ 
    [{v: '', f: '<input type=\"checkbox\">'}, '$schoolnames', '$schools[1]', '$schools[6]', '$schools[5]', '$schools[7]'], 
]);"; 
を試してみてください
関連する問題