Php Mysql到带有列标签的Google图表

Php Mysql到带有列标签的Google图表,php,mysql,label,google-visualization,Php,Mysql,Label,Google Visualization,我正在尝试创建一个带有列标签的谷歌图表。下面的方法对我来说很好。除了当我尝试将它与从mysql表创建的Json数据一起使用时。你们能帮我弄清楚我哪里做错了吗 工作谷歌图表代码: <script type="text/javascript"> function drawVisualization() { var data = google.visualization.arrayToDataTable([ ['From', 'TotalOrders',

我正在尝试创建一个带有列标签的谷歌图表。下面的方法对我来说很好。除了当我尝试将它与从mysql表创建的Json数据一起使用时。你们能帮我弄清楚我哪里做错了吗

工作谷歌图表代码:

<script type="text/javascript">
    function drawVisualization() {

    var data = google.visualization.arrayToDataTable([
        ['From', 'TotalOrders', 'Quantity'],
        ['Wk of 9/7/14', 172, 8910],
        ['Wk of 9/14/14', 121, 5901],
        ['Wk of 9/21/14', null, null],
        ['Wk of 9/28/14', null, null]
    ]);


    var formatter = new google.visualization.NumberFormat( {pattern:'#,###'});
    formatter.format(data, 1);
    formatter.format(data, 2);

    mydiv = $("#mychart");
    chart = new google.visualization.ComboChart(mydiv[0]);
    chart.draw(data, {
        width: 600, height: 400, seriesType: 'bars',
        chartArea: {left: 60, top: 30, width: 540}
    });    


    rects = mydiv.find('svg > g > g > g > rect');
    var row = 0;
    for (i = 0; i < rects.length; i++) {

        el = $(rects[i]);
        if (parseFloat(el.attr("height")) <= 2) { continue; }
        aparent = el.parent();
        do { // skips 'null' values
            text = data.getValue(row++, 1);
        } while (text == null && row < data.getNumberOfRows());

        if (text) {
            text = formatter.formatValue(text);
            // see below
            pos = getElementPos(el);
            attrs = {x: pos.x + pos.width / 2, y: pos.y - 2,
                fill: 'black',
                'font-family': 'Arial', 'font-size': 11,
                'text-anchor': 'middle'};
            aparent.append(addTextNode(attrs, text, aparent));
        }
    }
}


google.load('visualization', '1', {packages: ['corechart']});
google.setOnLoadCallback(drawVisualization);

function getElementPos($el) {
    return {
        x: parseInt($el.attr("x")),
        width: parseInt($el.attr("width")),
        y: parseInt($el.attr("y")),
        height: parseInt($el.attr("height"))
    }
}


function addTextNode(attrs, text, _element) {
    var el = document.createElementNS('http://www.w3.org/2000/svg', "text");
    for (var k in attrs) { el.setAttribute(k, attrs[k]); }
    var textNode = document.createTextNode(text);
    el.appendChild(textNode);
    return el;
}

</script>

我似乎找不到这里出了什么问题。也许你们可以给我指出正确的方向。

JSON结构与
arrayToDataTable
函数不兼容-必须使用常规DataTable构造函数:

var data = new google.visualization.DataTable(<?php echo $jsonTable; ?>);

我对这两个建议都表示赞同。它提供一个空白页作为输出。您是否尝试过此方法并为您工作?页面源是否为空?如果是这样的话,您的PHP中有一个错误需要跟踪。如果不是,echo$jsonTable的输出是什么?这正是我打印jason后得到的。{“cols”:[{“label”:“From”,“type”:“string”},{“label”:“TotalOrders”,“type”:“number”},{“label”:“Quantity”,“type”:“number”}],“0”:[“Owen”,“189”,“2096”],“Scott”:[“Jay”,“42”,“891”],“2”:[“Arnold”,“13”,“314”],“3”:[“Feng”,“976”,“2232”}这有两个问题:首先,您将行添加到了
$table['cols']
$table[/code>['rows'],其次,在
JSON\u encode
函数调用中缺少了
JSON\u NUMERIC\u CHECK
参数。您是在说“$table[“cols”]=array(”?或“$table[“rows”]=$rows;”行吗
var data = new google.visualization.DataTable(<?php echo $jsonTable; ?>);
$jsonTable = json_encode($table, JSON_NUMERIC_CHECK);