У меня есть таблица под названием monthly flagged
со следующей структурой:Highchart оси Х не отображает правильные данные
id
month
year
total_flagged
Как это работает в том, что, когда пост попадает, он будет проверять текущий месяц и год, если год существует в базе данных, он будет всего +1
, чтобы полностью помечен, иначе он создаст новую строку. Например, в настоящее время у меня есть 1 строку в моей базе данных:
id: 1
month: April
year: 2016
total_flagged: 28
Если пользователь флаги на пост 1-го мая, новая строка будет генерироваться для month: May
.
Теперь я пытаюсь отобразить эти данные на Highchart's. Y-xis показывает количество помеченных сообщений, а ось x показывает месяцы. С одной строки в таблице, на диаграмме отображаются следующим образом:
Что это нормально. Хотя в идеале я хотел бы иметь все месяцы внизу, но в месяцах, которые существуют в таблице, только они будут показывать данные.
Тем не менее, проблема начинается, когда существует более одной строки существует в таблице. Если у меня есть и данные за апрель и май (2 строки в таблице), то диаграмма будет выглядеть так:
Номер 10
отображается на оси абсцисс является 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 для Highcharts:
xAxis: {
categories: [<?php echo json_encode($months); ?>]
},
И
series: [{
name: 'Flagged posts',
data: [<?php echo json_encode($data); ?>]
}
Edit:
Текущий код 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);
?>
JavaScript для Highcharts (полностью):
<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>
Текущий график:
только перед установкой месяцев как категории, а total_flagged как данные, вы пытались проверить, какие ценности есть в двух массивах, месяцев и данных? –
@RahulSharma - Спасибо за ваш ответ :) И нет.Я очень редко использовал массивы и поэтому не знаю, как проверить ценность? – Freddy
Отладчик отбойников может вам помочь. просто вставьте точку останова, где вы присваиваете значения массиву. –