我有一个PHP While循环:
$workgroups = mysqli_query($con,"SELECT a.TASK_ID, a.DELETE_WEEK, SUM(a.MON_BILL+a.TUE_BILL+a.WED_BILL+a.THU_BILL+a.FRI_BILL) AS hours, b.ID, b.TITLE, b.GROUP_ID, c.ID, c.NAME, d.VALUE_ID, reverse(reverse(d.VALUE) + 0) AS companyid, e.VALUE_ID, e.UF_CRM_1384938829 AS hourrate, f.ID, f.TITLE as companyname FROM b_report_week a INNER JOIN b_tasks b ON a.TASK_ID = b.ID INNER JOIN b_sonet_group c ON b.GROUP_ID = c.ID INNER JOIN b_utm_tasks_task d ON a.TASK_ID = d.VALUE_ID INNER JOIN b_uts_crm_company e ON reverse(reverse(d.VALUE) + 0) = e.VALUE_ID INNER JOIN b_crm_company f ON reverse(reverse(d.VALUE) + 0) = f.ID WHERE a.DELETE_WEEK = 0 GROUP BY a.TASK_ID");
while($row = mysqli_fetch_array($workgroups))
{
$taskTitle = $row['TITLE'];
$taskTotalHours = $row['hours'];
$companyName = $row['companyname'];
$companyRate = number_format($row['hourrate'] / 7.50,2);
$valueTotal = number_format($row['hours'] * number_format($row['hourrate'] / 7.50,2),2);
}
如果我要在循环内绘制一个表,则会在表中生成正确的结果(显示大约8行,上面标识了5列)。我想要的是在Y轴上显示$ companyname,在x轴上显示$ valueTotal。我比较熟悉谷歌图表,但我尝试了以下(不要高兴):
<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 = google.visualization.arrayToDataTable([
['Company', 'Sales'],
<I INSERTED THE ABOVE PHP CODE WITH CONNECTION DETAILS HERE WITH A CLOSING ?>>
['<?php echo $companyName; ?>', <?php echo $valueTotal; ?>],
<?php } ?> <!-- Ends the While Loop -->
['Last Row', 0]
]);
var options = {
title: 'Company Performance',
vAxis: {title: 'Year', titleTextStyle: {color: 'red'}}
};
var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
<div id="chart_div" style="width: 900px; height: 800px;"></div>
答案 0 :(得分:0)
使用orientation:'vertical',选项数组中的参数
试试这个
<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 = google.visualization.arrayToDataTable([
['Company', 'Sales'],
<?php while ($row = mysql_fetch_array($res)) {?>
['<?php echo $row['company']?>', <?php echo $row['valueTotal']?>],
<?php } ?>
]);
var options = {
title: 'Company Performance',
orientation : 'vertical',
vAxis: {title: 'Year', titleTextStyle: {color: 'red'}}
};
var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
答案 1 :(得分:0)
数据应为数字,number_format
返回string
。如上所述使用round
或使用(float)
或(int)
答案 2 :(得分:0)
请改为尝试:
<?php
$workgroups = mysqli_query($con,"SELECT a.TASK_ID, a.DELETE_WEEK, SUM(a.MON_BILL+a.TUE_BILL+a.WED_BILL+a.THU_BILL+a.FRI_BILL) AS hours, b.ID, b.TITLE, b.GROUP_ID, c.ID, c.NAME, d.VALUE_ID, reverse(reverse(d.VALUE) + 0) AS companyid, e.VALUE_ID, e.UF_CRM_1384938829 AS hourrate, f.ID, f.TITLE as companyname FROM b_report_week a INNER JOIN b_tasks b ON a.TASK_ID = b.ID INNER JOIN b_sonet_group c ON b.GROUP_ID = c.ID INNER JOIN b_utm_tasks_task d ON a.TASK_ID = d.VALUE_ID INNER JOIN b_uts_crm_company e ON reverse(reverse(d.VALUE) + 0) = e.VALUE_ID INNER JOIN b_crm_company f ON reverse(reverse(d.VALUE) + 0) = f.ID WHERE a.DELETE_WEEK = 0 GROUP BY a.TASK_ID");
$data = array(array('Company', 'Sales'));
while($row = mysqli_fetch_array($workgroups)) {
$taskTitle = $row['TITLE'];
$taskTotalHours = $row['hours'];
$companyName = $row['companyname'];
$companyRate = number_format($row['hourrate'] / 7.50,2);
$valueTotal = number_format($row['hours'] * number_format($row['hourrate'] / 7.50,2),2);
$data[] = array($companyName, $valueTotal);
}
$data[] = array('Last Row', 0);
?>
在javascript中:
var data = google.visualization.arrayToDataTable(<?php echo json_encode($data, JSON_NUMERIC_CHECK); ?>);