data.addRows正确的数据格式

时间:2019-01-14 07:11:46

标签: php sql charts google-visualization

我迫切希望找到一种解决方案,以解决这种情况。

我正在尝试创建一个Google图表表格,该表格每年会自动更新列数。

SQL程序现在每年都会增加一列,并计算所有数字,从2006年开始,该网页会在Google图表表格和图表中显示结果。

问题:

动态地在每个新年添加一个新列(已解决)。

每年动态地向数组添加一行。

正确的数据格式。

SQL程序现在从2006年开始每年都会增加一列,并对所有数字进行计数。

SQL表:

ID  Type    Month O2015 O2016   O2017   O2018   O2019
1   1       1     4346  3180    3409    4345    857

PHP选择:

$sqltest1= "SELECT  Month, O2006, O2007, O2008 FROM TESTOVACI100 WHERE Type = 1;";
$test1= sqlsrv_query($conn, $sqltest1);

Google图表代码:

function drawSecondTable() {
    var data = new google.visualization.DataTable();  
    var d = new Date();
    var n = d.getFullYear();

    //Funguje
    var columns = '<?php echo $column_count ;?>'; 

/*
    var showdata = <?php
                while($row = sqlsrv_fetch_array($obratmesice, SQLSRV_FETCH_ASSOC)){
                    echo "['".$row["Month"]."', ".$row["O2006"].", ".$row["O2007"].", ".$row["O2008"]."],";}                                             
            ?>   
*/

data.addColumn('number', 'Month');  
for (var i = 2006; i < n + 1; i++){
    data.addColumn('number', 'O' + i);}     

Data.addRow(showdata);   

    var table = new google.visualization.Table(document.getElementById('table_div2'));     
    table.draw(data, {showRowNumber: false, width: '100%', height: '100%'});
  }

正如您在代码的注释部分中看到的那样,我手动添加一列-月,由于实际年份的缘故,其余列会自动添加。

我的问题是...如何自动添加数据行?

我在代码的注释部分尝试了一种方法,但是我不确定如何在不每年手动添加新行的情况下执行此操作。

有没有办法解决循环问题?

谢谢大家的回答。

1 个答案:

答案 0 :(得分:0)

假设$column_count不包括"Month"列,
您可以按以下步骤循环$row的每个索引...

    var showdata = <?php
    while($row = sqlsrv_fetch_array($obratmesice, SQLSRV_FETCH_ASSOC)){
      echo "[".$row["Month"].", ";
      for ($i = 0; $i < $column_count; $i++) {
        echo $row["O".($i + 2006)].", ";
      }
      echo "];";
    }
    ?>

确保data在这里是小写...

data.addRow(showdata);

多行...

    var showdata = [<?php
    while($row = sqlsrv_fetch_array($obratmesice, SQLSRV_FETCH_ASSOC)){
      echo "[".$row["Month"].", ";
      for ($i = 0; $i < $column_count; $i++) {
        echo $row["O".($i + 2006)].", ";
      }
      echo "],";
    }
    ?>]; 

    data.addRows(showdata);