sql >> Database >  >> RDS >> Mysql

Groepsgegevens invullen voor een bepaalde serie op Highcharts

Door je viool te zien, is de verwachte output die je wilt voor HighCharts als volgt:

1:Categoriegegevens :

  • Het zou een reeks datums moeten zijn.
  • Zorg ervoor dat u duplicaten verwijdert en rangschik ze in oplopende/aflopende volgorde, zoals u wilt, om een ​​doorlopende grafiek te zien.
"categories":["2019-02-07", "2019-02-08", "2019-02-09", "2019-02-12", "2019-02-13", "2019-02-14"]

2:Seriegegevens :

  • Het zou een array van objecten zijn, waarbij elk object twee eigenschappen bevat name en data .
  • Gegevens moeten n . hebben aantal waarden als uw categories array heeft n waarden en elk komt overeen met dezelfde index.
  • Omdat we geen gegevens hebben voor elke datum voor elke klas, zouden we daar 0 toevoegen.

Dus gegevens zouden er als volgt uitzien:

"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]
      }
   ]

Laatste viool die kan worden bereikt door PHP met behulp van onderstaande code:

$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]}]}

Werk uw javascript-code bij om het bovenstaande weer te geven

$(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. Hoe het aantal waarden te selecteren, gegroepeerd op bereiken

  2. Hoe voorkom je dat dbms_output.put_line leidende witruimte bijsnijdt?

  3. Hoe HTTP-authenticatie te gebruiken met PHP en vervolgens de ingevoerde gegevens uit te voeren tegen een database?

  4. Datetime opslaan als UTC in PHP/MySQL