我很难找到关于这个的答案,因此这里的问题。
我想用我的数据库中的数据做一个仪表板。我开始很容易,一个包含女性/男性分布的饼图。随意告诉我如何使代码更好,感觉真的很混乱......
<?php
require_once 'database.php';
include 'head.php';
include 'nav.php';
global $conn;
$query = "SELECT COUNT(gender) FROM persons WHERE gender = 'female'";
$stmt = $conn->prepare($query);
$stmt->execute();
$result = $stmt->fetchColumn();
$quantityFemales = $result;
$query = "SELECT COUNT(gender) FROM persons WHERE gender= 'male'";
$stmt = $conn->prepare($query);
$stmt->execute();
$result = $stmt->fetchColumn();
$quantityMales = $result;
// style for pie-chart div
$genderStyle = "width: 300px;
height: 300px;
background: radial-gradient(grey 40%, transparent 41%), conic-gradient(#e1cbe4 0% " . $quantityFemales / ($quantityFemales + $quantityMales) * 100 . "%, #cde1b9 " . $quantityFemales / ($quantityFemales + $quantityMales) * 100 . "% 100%);
border-radius: 50%;
display: inline-block;";
?>
然后我只绘制饼图:
<div style="<?php echo $genderStyle ?>"></div>
效果很好。
接下来我在考虑做国籍,但意识到一些潜在的问题。
我可以通过以下方式获得数据库中国籍的出现次数:
SELECT nationality, COUNT(nationality) FROM persons GROUP BY nationality
并且可能和我为性别做的事情一样。
我的想法是,当我在数据库中获得新国籍时,圆锥梯度将需要另一个输入。所以圆锥梯度中输入的数量与数据库中的民族数量有关。
我想我可以做一个循环来设置 $nationalityStyle 中圆锥梯度的输入数量。
但这是最好的方法吗?在我开始做之前想要一些输入,如果这是一个坏主意,那就浪费时间。也许它没有我想象的那么难xD
也许甚至有一种完全不同的方法?
就像四个民族一样,圆锥梯度将是:
conic-gradient(red 0deg, orange 90deg, yellow 180deg, blue 360deg);
但有五个:
conic-gradient(red 0deg, orange 90deg, yellow 180deg, green 270deg, blue 360deg);
希望有人能理解我(:
干杯!