ChartJS |如何使用MySQL(MariaDB)表和PHP中的数据创建Donut Chart

时间:2020-02-23 14:45:50  来源:igfitidea点击:

在本教程中,我们将学习使用MySQL(MariaDB)表和PHP中的数据创建甜甜圈图。

任务

我们的任务是为两个团队-TeamA和TeamB创建甜甜圈图。
甜甜圈图将显示5场比赛中球队的得分,即比赛1,比赛2,...,比赛5。

先决条件

PHP的localhost开发环境。
如果您使用的是Microsoft Windows,则可以使用XAMPP。
如果您使用的是Apple macOS,则可以使用MAMP。

XAMPP和MAMP都将具有PHP和MySQL(MariaDB),因此您不必分别安装它们。

htdocs

准备好开发环境后,需要将chartjs2项目放置在本地主机的公用文件夹中。
此公用文件夹通常称为htdocs。

项目结构

我们将从以下项目结构开始。

我们有一个css文件夹,其中包含样式表文件。
我们有一个js文件夹,其中包含一些javascript文件。

后端部分与本教程相同-ChartJS |如何使用MySQL表和PHP中的数据绘制折线图

现在该是我们从事前端工作的时候了。

在项目文件夹chartjs2中创建一个新的html文件,并在js文件夹中创建一个新的js文件。
我将html文件命名为" doughnut-db-php.html",将js文件命名为" doughnut-db-php.js"。

HTML

打开doughnut-db-php.html文件,然后编写以下内容。

<!DOCTYPE html>
<html>
<head>
  <title>ChartJS - Doughnut</title>
  
  <link href="css/default.css" rel="stylesheet">
  
</head>
<body>

  <div class="chart-container">
  <div class="doughnut-chart-container">
    <canvas id="doughnut-chartcanvas-1"></canvas>
  </div>

  <div class="doughnut-chart-container">
    <canvas id="doughnut-chartcanvas-2"></canvas>
  </div>
  </div>

  <!-- javascript -->
  <script src="js/jquery.min.js"></script>
  <script src="js/Chart.min.js"></script>

  <script src="js/doughnut-db-php.js"></script>
  
</body>
</html>

JavaScript

现在打开doughnut-db-php.js文件,并编写以下代码。

$(document).ready(function() {

  /**
   * call the data.php file to fetch the result from db table.
   */
  $.ajax({
    url : "http://localhost/chartjs2/api/data.php",
    type : "GET",
    success : function(data){
      console.log(data);

      var score = {
        TeamA : [],
        TeamB : []
      };

      var len = data.length;

      for (var i = 0; i < len; i++) {
        if (data[i].team == "TeamA") {
          score.TeamA.push(data[i].score);
        }
        else if (data[i].team == "TeamB") {
          score.TeamB.push(data[i].score);
        }
      }

      var ctx1 = $("#doughnut-chartcanvas-1");
      var ctx2 = $("#doughnut-chartcanvas-2");

      var data1 = {
        labels : ["match1", "match2", "match3", "match4", "match5"],
        datasets : [
          {
            label : "TeamA score",
            data : score.TeamA,
            backgroundColor : [
                        "#DEB887",
                        "#A9A9A9",
                        "#DC143C",
                        "#F4A460",
                        "#2E8B57"
                    ],
                    borderColor : [
                        "#CDA776",
                        "#989898",
                        "#CB252B",
                        "#E39371",
                        "#1D7A46"
                    ],
                    borderWidth : [1, 1, 1, 1, 1]
          }
        ]
      };

      var data2 = {
        labels : ["match1", "match2", "match3", "match4", "match5"],
        datasets : [
          {
            label : "TeamB score",
            data : score.TeamB,
            backgroundColor : [
                        "#FAEBD7",
                        "#DCDCDC",
                        "#E9967A",
                        "#F5DEB3",
                        "#9ACD32"
                    ],
                    borderColor : [
                        "#E9DAC6",
                        "#CBCBCB",
                        "#D88569",
                        "#E4CDA2",
                        "#89BC21"
                    ],
                    borderWidth : [1, 1, 1, 1, 1]
          }
        ]
      };

      var options = {
        title : {
          display : true,
          position : "top",
          text : "Doughnut Chart",
          fontSize : 18,
          fontColor : "#111"
        },
        legend : {
          display : true,
          position : "bottom"
        }
      };

      var chart1 = new Chart( ctx1, {
        type : "doughnut",
        data : data1,
        options : options
      });

      var chart2 = new Chart( ctx2, {
        type : "doughnut",
        data : data2,
        options : options
      });

    },
    error : function(data) {
      console.log(data);
    }
  });

});