data.addRows правильный формат данных

Я стал отчаянно искать решение, как справиться с этой ситуацией.

Я пытаюсь создать таблицу Google Chart, в которой количество столбцов автоматически обновляется каждый год.

Процедура в SQL добавляет теперь столбец каждый год и подсчитывает все числа, начиная с 2006 года, веб-страница показывает результаты в виде таблицы и диаграмм Google.

Проблема:

Динамически добавлять каждый новый год новый столбец (решено).

Динамически добавлять строки в массив для каждого года.

Правильный формат данных.

Процедура в SQL добавляет теперь столбец каждый год и подсчитывает все числа, начиная с 2006 года.

SQL TABLE:

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

Решение

при условии, $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);
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector