Я стал отчаянно искать решение, как справиться с этой ситуацией.
Я пытаюсь создать таблицу Google Chart, в которой количество столбцов автоматически обновляется каждый год.
Процедура в SQL добавляет теперь столбец каждый год и подсчитывает все числа, начиная с 2006 года, веб-страница показывает результаты в виде таблицы и диаграмм Google.
Динамически добавлять каждый новый год новый столбец (решено).
Динамически добавлять строки в массив для каждого года.
Правильный формат данных.
Процедура в SQL добавляет теперь столбец каждый год и подсчитывает все числа, начиная с 2006 года.
ID Type Month O2015 O2016 O2017 O2018 O2019
1 1 1 4346 3180 3409 4345 857
$sqltest1= "SELECT Month, O2006, O2007, O2008 FROM TESTOVACI100 WHERE Type = 1;";
$test1= sqlsrv_query($conn, $sqltest1);
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%'});
}
Как видно из закомментированной части кода, я добавляю один столбец вручную — месяц, остальные добавляются автоматически в зависимости от фактического года.
У меня вопрос … как автоматически добавлять строки с данными?
Я попробовал один подход в закомментированном разделе кода, но я не уверен, как это сделать, не добавляя новую строку каждый год вручную.
Есть ли способ, как решить это с какой-то петлей?
Спасибо всем за ответы.
при условии, $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);
Других решений пока нет …