ChartJS |如何使用MySQL表和PHP中的数据绘制条形图

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

在本教程中,我们将学习使用MySQL表和PHP中的数据绘制条形图。

前提条件

我们将需要以下各项来完成本教程。

  • 文本编辑器(例如SublimeText,TextMate,Coda,NotePad ++)或者IDE(例如Eclipse)
  • Web浏览器,例如Chrome或者Firefox
  • 本地主机上的PHP开发环境。
    为此,您可以使用XAMPP(Windows/Linux/OS X用户)或者MAMP(Windows/OS X用户)
  • MySQL
  • ChartJS
  • jQuery的

所以开始吧...

MySQL表

在本教程中,我们将考虑一个非常简单的分数表,该表具有两列playerid,score和5个条目。

分数表

CREATE TABLE `score` (
  `playerid` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `score` int(11) DEFAULT '0',
  PRIMARY KEY (`playerid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

score表数据

INSERT INTO `score` VALUES (1,10),(2,40),(3,20),(4,9),(5,20);

创建一个新项目

创建一个新的项目文件夹,并将其命名为chartjs。
注意!根据您的选择随意命名您的项目。
在chartjs项目文件夹中,创建一个子文件夹并将其命名为js。
这将保存所有的javascript文件。

在js文件夹中移动JS文件

将Chart.min.js和jquery.min.js文件复制到我们在chartjs项目文件夹中创建的js文件夹中。
并在js文件夹中创建一个app.js文件。
这将包含我们将为此项目编写的所有javascript代码。

创建data.php文件以从MySQL表中获取数据

在chartjs文件夹中创建一个新文件data.php。
该文件将包含php代码,这些代码将从成绩表中获取数据并以JSON格式显示。

文件:data.php

<?php
//setting header to json
header('Content-Type: application/json');

//database
define('DB_HOST', '127.0.0.1');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'root123');
define('DB_NAME', 'mydb');

//get connection
$mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

if(!$mysqli){
  die("Connection failed: " . $mysqli->error);
}

//query to get data from the table
$query = sprintf("SELECT playerid, score FROM score ORDER BY playerid");

//execute query
$result = $mysqli->query($query);

//loop through the returned data
$data = array();
foreach ($result as $row) {
  $data[] = $row;
}

//free memory associated with result
$result->close();

//close connection
$mysqli->close();

//now print the data
print json_encode($data);

data.php文件的输出

要获取data.php文件的输出,请在网络浏览器(例如Chrome)中将其打开

网址:localhost/chartjs/data.php

[  
   {  
      "playerid":"1",
      "score":"10"
   },
   {  
      "playerid":"2",
      "score":"40"
   },
   {  
      "playerid":"3",
      "score":"20"
   },
   {  
      "playerid":"4",
      "score":"9"
   },
   {  
      "playerid":"5",
      "score":"20"
   }
]

创建bargraph.html文件以显示条形图

现在,在chartjs项目文件夹中创建一个新文件,并将其命名为bargraph.html,该文件将显示条形图。

文件:bargraph.html

<!DOCTYPE html>
<html>
  <head>
    <title>ChartJS - BarGraph</title>
    <style type="text/css">
      #chart-container {
        width: 640px;
        height: auto;
      }
    </style>
  </head>
  <body>
    <div id="chart-container">
      <canvas id="mycanvas"></canvas>
    </div>

    <!-- javascript -->
    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/Chart.min.js"></script>
    <script type="text/javascript" src="js/app.js"></script>
  </body>
</html>

在app.js中编写一些JavaScript

我们将从app.js文件到data.php文件进行AJAX调用,以获取用于绘制条形图的JSON数据。

文件:app.js

$(document).ready(function(){
  $.ajax({
    url: "http://localhost/chartjs/data.php",
    method: "GET",
    success: function(data) {
      console.log(data);
      var player = [];
      var score = [];

      for(var i in data) {
        player.push("Player " + data[i].playerid);
        score.push(data[i].score);
      }

      var chartdata = {
        labels: player,
        datasets : [
          {
            label: 'Player Score',
            backgroundColor: 'rgba(200, 200, 200, 0.75)',
            borderColor: 'rgba(200, 200, 200, 0.75)',
            hoverBackgroundColor: 'rgba(200, 200, 200, 1)',
            hoverBorderColor: 'rgba(200, 200, 200, 1)',
            data: score
          }
        ]
      };

      var ctx = $("#mycanvas");

      var barGraph = new Chart(ctx, {
        type: 'bar',
        data: chartdata
      });
    },
    error: function(data) {
      console.log(data);
    }
  });
});