gpt4 book ai didi

javascript - 统计mysql中的重复数据

转载 作者:行者123 更新时间:2023-11-29 17:20:05 24 4
gpt4 key购买 nike

有没有办法统计mysql中的重复数据将其显示为条形图,我正在尝试制作出勤报告使用莫里斯条形图。

这是我的示例代码:

<html >
<head>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>

</head>

<body>

<div id="chart"></div>
</body>
</html>

这是我的 php 代码:

<?php 

$connect = mysqli_connect("localhost", "root", "", "sa");
$query = "SELECT year, count(*) as course FROM test group by year,course order by year ASC ";
$result = mysqli_query($connect, $query);
$chart_data = '';
while($row = mysqli_fetch_array($result))
{
$chart_data .= "{ year:'".$row["year"]."', course:".$row["course"]."}, ";
}
$chart_data = substr($chart_data, 0, -2);
?>

这是我的 JavaScript:

<script>
Morris.Bar({
element : 'chart',
data:[<?php echo $chart_data; ?>],
xkey:'year',
ykeys:['course','course','course','course','course'],
labels:['BSIT','BSHRM','BSCS','BSTM','ABCOMM'],
hideHover:'auto',
xLabelAngle: '60',
verticalGrid: true,
resize:true,
barColors: ['red','blue','green','yellow','black'],
gridTextSize: 12



});
</script>

这是我的数据库:

enter image description here

更新:这是我到目前为止的输出: enter image description here

enter image description here正如您在我的输出中看到的,例如,所有类(class)都具有相同的值(value)这两个 2018-07-12 的输出应该基于我的数据库,BSIT = 3 其余的都是零值,与其他2018-07-12相同,输出应该是BSHRM =1,其余的都是零值,有没有办法实现这一点?希望你能帮助我。

最佳答案

您的查询有两个问题:

首先,别名 COUNT(*) AS course 重用列名作为别名。您需要给它一个不同的名称。

其次,您将类(class)排除在分组之外,因此您将合并结果中所有类(class)的计数。

应该是:

$query = "SELECT year , course ,  count(*) as count FROM test group by  year, course order by year ASC ";

每门类(class)将位于结果的不同行中,您在处理结果时需要重新分组。

您也不应该通过连接字符串来创建 JSON。将结果放入数组中并使用 json_encode()

$results = array();
while ($row = mysqli_fetch_assoc($result)) {
$results[$row['year']]['year'] = $row['year'];
$results[$row['year']][$row['course']] = $row['count'];
}
$chart_data = json_encode(array_values($results));

此方法使用类(class)名称作为 JSON 中的键,而不是 course1course2 等。因此您需要更改

ykeys:['course','course','course','course','course'],

至:

ykeys:['BSIT','BSHRM','BSCS','BSTM','ABCOMM'],

$chart_data 中的 JSON 已包含数组周围的方括号,因此您无需在 echo 周围添加它。使用:

data: <?php echo $chart_data; ?>,

关于javascript - 统计mysql中的重复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51310410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com