Mysql
 sql >> база данни >  >> RDS >> Mysql

Попълване на групови данни в определена серия на Highcharts

Като видите вашата цигулка, очакваният резултат, който искате за HighCharts, е както следва:

1:Данни за категория :

  • Това трябва да е масив от дати.
  • Уверете се, че премахвате дубликати и ги подреждате във възходящ/низходящ ред, както искате, за да видите непрекъсната графика.
"categories":["2019-02-07", "2019-02-08", "2019-02-09", "2019-02-12", "2019-02-13", "2019-02-14"]

2:Серийни данни :

  • Това ще бъде масив от обекти, където всеки обект съдържа две свойства name и data .
  • Данните трябва да имат n няма стойности, ако вашите categories масивът има n стойности и всяка съответства на един и същ индекс.
  • Тъй като нямаме данни за всяка дата за всеки клас, бихме добавили 0 там.

Така че данните биха изглеждали така

"series":[
      {
         "name":"class 1",
         "data":[45,0,166,78,0,0]
      },
      {
         "name":"class 2",
         "data":[0,64,0,64,627,0]
      },
      {
         "name":"class 3",
         "data":[0,0,0,0,87,352]
      }
   ]

Final Fiddle което може да се постигне чрез PHP с помощта на кода по-долу:

$arrDates = [];
$arrClass = [];
$arrData  = [];

while ( $row = $query->fetch(PDO:: FETCH_ASSOC)) {
  $arrDates[] = $row['dates'];
  $arrClass[] = $row['class'];
  $arrData[$row['class'] . ':' . $row['dates']] = $row['marks']; // to identify for which date & class this marks belong to, we can directly search for index.
}

$arrDates = array_unique($arrDates);
sort($arrDates);
$arrClass = array_unique($arrClass);

// Create series data
$arrSeriesData = [];
foreach($arrClass as $strClass){
  $tempArr = ['name' =>  $strClass];
  foreach($arrDates as $strDate){
      $tempArr['data'][] = isset($arrData[$strClass . ':' . $strDate]) ? intval($arrData[$strClass . ':' . $strDate]) : 0;
  }

  $arrSeriesData[] = $tempArr;
}


$response = ['categories' => $arrDates, 'series' => $arrSeriesData];

echo json_encode($response);

Output:
{"categories":["2019-02-07","2019-02-08","2019-02-09","2019-02-12","2019-02-13","2019-02-14"],"series":[{"name":"class 1","data":[45,0,166,78,0,0]},{"name":"class 2","data":[0,64,0,64,627,0]},{"name":"class 3","data":[0,0,0,0,87,352]}]}

Актуализирайте своя javascript код, за да отразява горното

$(document).ready(function() {
    $(function() {
        $.getJSON('data.php', function(data) {
            // Create the chart
            Highcharts.chart('container', {
                title: {
                    text: 'class Marks'
                },

                xAxis: {
                    categories: data.categories
                },
                series: data.series,

            });
        });
    });
});



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql изберете къде не е в таблицата

  2. Как да поставите ред отгоре в mysql заявка.

  3. PHP рекурсивната функция за изтриване на всички дъщерни възли причинява препълване на стека

  4. Свържете се със сървърна база данни от localhost

  5. Mysql заявка, за да се определи дали дадената дата и час е включена в интервала дата и час