首页 > 解决方案 > 在 MySQL 数据库中显示行的计数结果并在 ChartJs 中显示

问题描述

我想在 MySQL 数据库中显示记录的行数并在 ChartJs 中显示数字,但从我的 PHP 脚本中获得的数字似乎没有正确显示。

用于从 MySQL 数据库中计数记录的 PHP 代码段 (Users_Retrieval.php)

$JSON_Response = array();

//Counts the number of Reporters
$Reporter_Query = "SELECT User_ID FROM User WHERE User_Type = 0";
$Count_Reporter = mysqli_query($Connection, $Reporter_Query);

$Reporter_Total = mysqli_num_rows($Count_Reporter);
array_push($JSON_Response, $Reporter_Total);

//Counts the number of Firefighters
$Firefighter_Query = "SELECT User_ID FROM User WHERE User_Type = 1";
$Count_Firefighter = mysqli_query($Connection, $Firefighter_Query);

$Firefighter_Total = mysqli_num_rows($Count_Firefighter);
array_push($JSON_Response, $Firefighter_Total);

echo json_encode($JSON_Response);

当我打印 json_encode 的内容时,它会打印出我期望的值,我认为我的 PHP 脚本没有问题。 json_encode 的输出:[5,1]

JavaScript ChartJs 代码

//Reporter_Result and Firefighter_Result is both initialized in 1. It will 
//be changed once the retrieval of JSON is correct
var Reporter_Result = 1; 
var Firefighter_Result = 1;
$.ajax({
        url: "Users.php",
        method: "GET",
        success: function(response){
            //alert(response);
            var User = JSON.parse(response);
            var Reporter_Result = text(User.reporter);
            var Firefighter_Result = text(User.firefighter);
        }
    });

var myPieChart = new Chart(ctx, {
  type: 'pie',
  data: {
    labels: ["Reporters", "Firefighters"],
    datasets: [{
      data: [Reporter_Result, Firefighter_Result],
      backgroundColor: ['#007bff', '#dc3545'],
    }],
  },
});

我认为问题出在我的 javascript 文件中,它没有从我的Users_Retrieval.php正确接收到[5,1]的值(我的理论)以及我尝试在我的 javascript 中访问 JSON 值的方式。

这是我当前的饼图进度/输出,我将在其中插入结果:

在此处输入图像描述

问题:

如何从我的 Users_Retrieval.php 中的 JSON 获取值?我在我的 javascript 中接收 JSON 值的实现是错误的吗?如何正确获取它们以便将值插入我的饼图中?

标签: javascriptphpmysqljsonajax

解决方案


好吧,如果是我,我很想从这里开始:

SELECT User_Type
     , COUNT(*) total
  FROM User
 GROUP 
    BY User_Type;

推荐阅读