我有一个名为monthly flagged
的表格,其结构如下:
id
month
year
total_flagged
它的工作方式是,当一个帖子被标记时,它将检查当前的月份和年份,如果数据库中存在年份,它将仅+1
总标记,否则它将创建一个新的行。例如,目前我的数据库中有1行:
id: 1
month: April
year: 2016
total_flagged: 28
如果用户在5月1日标记了帖子,则会为month: May
生成一个新行。
现在,我正在尝试在Highchart上显示这些数据。 y-xis显示标记的帖子数,而x轴显示月份。在表格中有一行,图表显示如下:
哪个好。虽然理想情况下我希望将所有月份都放在最底层,但表中存在的月份只会显示数据。
然而,当表中存在多行时,问题就开始了。如果我同时拥有4月和5月的数据(表格中有2行),则图表显示如下:
x轴上显示的数字10
是4月份的total_flagged
。
以下是我存储数据的方式:
$statement = mysqli_prepare ($connect, "SELECT * FROM monthly_flagged");
mysqli_stmt_execute($statement);
$months = array();
$data = array();
$result = mysqli_stmt_get_result($statement);
while($get_data = mysqli_fetch_assoc ($result)){
$months[] = $get_data['month'];
$data[] = $get_data['total_flagged'];
}
mysqli_stmt_close($statement);
在我的JavaScript for Highcharts上:
xAxis: {
categories: [<?php echo json_encode($months); ?>]
},
和
series: [{
name: 'Flagged posts',
data: [<?php echo json_encode($data); ?>]
}
修改:
当前的PHP代码:
<?php
$statement = mysqli_prepare ($connect, "SELECT * FROM monthly_flagged");
mysqli_stmt_execute($statement);
$months = array();
$data = array();
$result = mysqli_stmt_get_result($statement);
while($get_data = mysqli_fetch_assoc ($result)){
$months[] = $get_data['month'];
//$data[] = $get_data['total_flagged'];
$data[] = $get_data['total_flagged'][0];
}
mysqli_stmt_close($statement);
?>
Highcharts的JavaScript(完整版):
<script>
$(function () {
$('#container').highcharts({
title: {
text: 'Flagged Posts',
x: -20
},
xAxis: {
categories: <?php echo json_encode($months); ?>
},
yAxis: {
format: '',
},
yAxis: {
title: {
text: 'Number of flagged posts',
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
valueSuffix: ''
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0
},
series: [{
name: 'Flagged posts',
data: <?php echo json_encode($data); ?>
}]
});
});
</script>
当前图表:
答案 0 :(得分:2)
存储数据:
$statement = mysqli_prepare ($connect, "SELECT * FROM monthly_flagged");
mysqli_stmt_execute($statement);
$months = array();
$data = array();
$result = mysqli_stmt_get_result($statement);
while($get_data = mysqli_fetch_assoc ($result)){
$months[] = $get_data['month'];
$data[] = $get_data['total_flagged'];
}
mysqli_stmt_close($statement);
类别和系列图表选项:
xAxis: {
categories: <?php echo json_encode($months); ?>
}
series: [{
name: 'Flagged posts',
data: <?php echo json_encode($data); ?>
}