Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Điền dữ liệu nhóm vào một chuỗi cụ thể trên Highcharts

Bằng cách xem thao tác của bạn, kết quả mong đợi mà bạn muốn cho HighCharts như sau:

1: Dữ liệu danh mục :

  • Nó phải là một mảng ngày tháng.
  • Đảm bảo rằng bạn loại bỏ các bản sao và sắp xếp chúng theo thứ tự tăng dần / giảm dần tùy theo ý bạn muốn, để xem một biểu đồ liên tục.
"categories":["2019-02-07", "2019-02-08", "2019-02-09", "2019-02-12", "2019-02-13", "2019-02-14"]

2: Dữ liệu chuỗi :

  • Nó sẽ là một mảng đối tượng, trong đó mỗi đối tượng chứa hai thuộc tính name và dữ liệu data .
  • Dữ liệu phải có n không có giá trị nào nếu categories của bạn mảng có n và mỗi giá trị tương ứng với cùng một chỉ mục.
  • Vì chúng tôi không có dữ liệu cho từng ngày cho mỗi lớp học, chúng tôi sẽ thêm 0 vào đó.

Vì vậy, dữ liệu sẽ giống như

"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 mà PHP có thể đạt được bằng cách sử dụng mã dưới đây:

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

Cập nhật mã javascript của bạn để phản ánh những điều trên

$(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. ký tự đại diện mysql (bỏ qua một / hai ký tự trong tìm kiếm)

  2. Wordpress SQL:lấy danh mục bài đăng và các thẻ

  3. Từ khóa không được hỗ trợ:'siêu dữ liệu' + MySQL

  4. Tìm kiếm toàn văn MySQL cho các từ có ba chữ cái trở xuống

  5. Symfony:Cố định dữ liệu giáo lý:làm thế nào để xử lý tệp csv lớn?