В диаграмме google goi данные для диаграммы задаются этой строкой:
data.addRows([ ['2004', 1000, 400], ['2005', 1170, 460], ['2006', 860, 580], ['2007', 1030, 540] ]);
Я хочу иметь возможность устанавливать эти данные из данных в моей базе данных. Ниже приведено изображение моей базы данных:
Я хочу использовать все значения salePrice
и unitPrice
и отображать значения на линейной диаграмме, соответствующие периоду, который они создали.
Вот мой код:
<?php include("getteam.php"); $saleprice = mysql_query(" SELECT `outputValue` FROM `output` WHERE `teamID` = '$teamID' && `outputType` = 'salePrice' ")or die($saleprice."<br/><br/>".mysql_error()); // set ID's = to a variable and now get Outputs for each variable(teamID) $salepriceNumR = mysql_num_rows($saleprice); $sPrice = array(); $i="0"; while ($i<$salepriceNumR && $row = mysql_fetch_assoc($saleprice)) { $sPrice[$i] = $row['outputValue']; $i++; } $unitprice = mysql_query(" SELECT `outputValue` FROM `output` WHERE `teamID` = '$teamID' && `outputType` = 'unitPrice' ")or die($unitprice."<br/><br/>".mysql_error()); // set ID's = to a variable and now get Outputs for each variable(teamID) $unitpriceNumR = mysql_num_rows($unitprice); $uPrice = array(); $i="0"; while ($i<$unitpriceNumR && $row = mysql_fetch_assoc($unitprice)) { $uPrice[$i] = $row['outputValue']; $i++; } $chartrow = array(); for ($i = 0; $i < $unitpriceNumR; $i++ ) { $chartrow[$i] = "['".$i."',".$sPrice[$i].", ".$uPrice[$i]."]"; } switch ($currentStage) { case "0": case "1": $value = $chartrow[0]; break; case "2": $value = $chartrow[0].",".$chartrow[1]; break; case "3": $value = $chartrow[0].",".$chartrow[1].",".$chartrow[2]; break; default: $value = $chartrow[0]; // You should have some default value, seriously!!! } ?> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", {packages:["corechart"]}); google.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Year'); data.addColumn('number', 'Sales'); data.addColumn('number', 'Expenses'); data.addRows(JSON.parse( [<?php echo json_encode($value); ?>] )); var options = { width: 400, height: 240, title: 'Company Performance' }; var chart = new google.visualization.LineChart(document.getElementById('chart_div')); chart.draw(data, options); } </script> <div id="chart_div"></div>
в<?php include("getteam.php"); $saleprice = mysql_query(" SELECT `outputValue` FROM `output` WHERE `teamID` = '$teamID' && `outputType` = 'salePrice' ")or die($saleprice."<br/><br/>".mysql_error()); // set ID's = to a variable and now get Outputs for each variable(teamID) $salepriceNumR = mysql_num_rows($saleprice); $sPrice = array(); $i="0"; while ($i<$salepriceNumR && $row = mysql_fetch_assoc($saleprice)) { $sPrice[$i] = $row['outputValue']; $i++; } $unitprice = mysql_query(" SELECT `outputValue` FROM `output` WHERE `teamID` = '$teamID' && `outputType` = 'unitPrice' ")or die($unitprice."<br/><br/>".mysql_error()); // set ID's = to a variable and now get Outputs for each variable(teamID) $unitpriceNumR = mysql_num_rows($unitprice); $uPrice = array(); $i="0"; while ($i<$unitpriceNumR && $row = mysql_fetch_assoc($unitprice)) { $uPrice[$i] = $row['outputValue']; $i++; } $chartrow = array(); for ($i = 0; $i < $unitpriceNumR; $i++ ) { $chartrow[$i] = "['".$i."',".$sPrice[$i].", ".$uPrice[$i]."]"; } switch ($currentStage) { case "0": case "1": $value = $chartrow[0]; break; case "2": $value = $chartrow[0].",".$chartrow[1]; break; case "3": $value = $chartrow[0].",".$chartrow[1].",".$chartrow[2]; break; default: $value = $chartrow[0]; // You should have some default value, seriously!!! } ?> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("visualization", "1", {packages:["corechart"]}); google.setOnLoadCallback(drawChart); function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('string', 'Year'); data.addColumn('number', 'Sales'); data.addColumn('number', 'Expenses'); data.addRows(JSON.parse( [<?php echo json_encode($value); ?>] )); var options = { width: 400, height: 240, title: 'Company Performance' }; var chart = new google.visualization.LineChart(document.getElementById('chart_div')); chart.draw(data, options); } </script> <div id="chart_div"></div>
Проблема заключается в том, как я устанавливаю $value
это строка, и поэтому данные выводятся неправильно. Есть ли способ, которым я могу установить $value
чтобы я мог использовать его по назначению?
Когда $value
эхо ( $currentStage
является значением 3), это выводится: ['0', 0, 0], ['1', 65, 35], ['2', 88, 35]
Однако когда я просматриваю исходный код, я получаю:
data.addRows(JSON.parse( ["['0',0, 0],['1',65, 35],['2',88, 35]"] ));
Мне нужно избавиться от "".
Вы должны проанализировать строку JSON:
data.addRows(JSON.parse( <?php echo json_encode($value); ?> ));
Если я не ошибаюсь, это должно решить вашу проблему.
Редактировать На самом деле я не уверен, что понимаю, почему вы устанавливаете переменную $value
в строку; вся суть json_encode
заключается в том, что вы можете напрямую кодировать объекты или массивы.
Изменить 2 : Вот как я это вижу, но мой php более чем ржавый.
<?php $chartrow = array(); for ($i = 0; $i < $unitpriceNumR; $i++ ) { $chartrow[$i] = array( (string)$i, (int)$sPrice[$i], (int)$uPrice[$i] ); } switch ($currentStage) { case "0": case "1": $value = $chartrow[0]; break; case "2": $value = array($chartrow[0], $chartrow[1]); break; case "3": $value = array($chartrow[0], $chartrow[1], $chartrow[2]); break; default: $value = $chartrow[0]; }
Редактировать 3 Я редактировал фрагмент js, я не знаю, почему я оставил скобки вокруг тегов php.
Редактировать 4 Отредактировал PHP-код рабочей версии.