2016-04-17 2 views
0

У меня есть таблица под названием 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 показывает месяцы. С одной строки в таблице, на диаграмме отображаются следующим образом:

enter image description here

Что это нормально. Хотя в идеале я хотел бы иметь все месяцы внизу, но в месяцах, которые существуют в таблице, только они будут показывать данные.

Тем не менее, проблема начинается, когда существует более одной строки существует в таблице. Если у меня есть и данные за апрель и май (2 строки в таблице), то диаграмма будет выглядеть так:

enter image description here

Номер 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> 

Текущий график:

enter image description here

+0

только перед установкой месяцев как категории, а total_flagged как данные, вы пытались проверить, какие ценности есть в двух массивах, месяцев и данных? –

+0

@RahulSharma - Спасибо за ваш ответ :) И нет.Я очень редко использовал массивы и поэтому не знаю, как проверить ценность? – Freddy

+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); ?> 
} 
+0

Вы являетесь спасатель! большое спасибо! :) – Freddy

Смежные вопросы