0

我很难找到关于这个的答案,因此这里的问题。

我想用我的数据库中的数据做一个仪表板。我开始很容易,一个包含女性/男性分布的饼图。随意告诉我如何使代码更好,感觉真的很混乱......

<?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);

希望有人能理解我(:

干杯!

4

0 回答 0