如何使用PHP [重复]显示提交的单选按钮值的计数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用PHP [重复]显示提交的单选按钮值的计数相关的知识,希望对你有一定的参考价值。
这个问题与以下内容完全相同:
我试图显示提交的单选按钮值的总数,在我之前的表单中,“男性”,“女性”之间有一个选择供用户选择和提交,我有一个数据库来存储值(radiob
) 。
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT radiob FROM playertest";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $row["radiob"] . "<br>";
}
} else {
echo "0 results";
}
$conn->close();
我上面的代码只显示数据库中无线电广播下的所有项目,
Male
Male
Female
无论如何我可以用总数来显示它吗?希望它看起来像:
Male: 2
Female: 1
使用带计数的Aggragage查询
"SELECT count(id) as total, radiob FROM playertest GROUP BY radiob ";
我建议添加一个自动增量ID字段作为主键,如果你还没有它。
这在数据库世界中被称为代理键,随着表的增长,您将真正想拥有一个,这样您就可以正确引用其他查询中的行。
如果你不喜欢那样你就能做到
if ($result->num_rows > 0) {
$rows = [];
while($row = $result->fetch_assoc()) {
$rows[] = $row["radiob"];
}
}
$totals = array_count_values($rows);
array_count_values()返回一个数组,使用数组的值作为键,并将它们在数组中的频率作为值。 http://php.net/manual/en/function.array-count-values.php
SO $行应该是这样的
['male','male', 'female']
而array_count_values会给你这个
['male' => 2, 'female' => 1]
现在,如果您希望行包含更多数据,例如
while($row = $result->fetch_assoc()) {
$rows[] = $row; //assume row is ['name'=>'foo', 'radiob' => 'male']
}
你可以先做array_column
如(打开它)
$totals = array_count_values(array_column($rows, 'radiob'));
array_column()返回输入的单个列中的值,由column_key标识。可选地,可以提供index_key以通过来自输入数组的index_key列的值来索引返回的数组中的值。 http://php.net/manual/en/function.array-column.php
总之,最好的方法是使用查询聚合它,但除此之外您可能还有其他数据(例如名称),在这种情况下执行第二种方法。
干杯!
这是一个可能的解决方案。有各种方法可以做到这一点,我不是100%肯定你想要的输出。但这可能会让你开始。我添加了变量来保存男性/女性计数的整数值。我把它们放在一个数组中,其键值与数据库中的值相匹配。然后在每个循环中,该值在与DB行值匹配的数组元素的总和上递增。最后,我回应了两个总数。
$sql = "SELECT radiob FROM playertest";
$result = $conn->query($sql);
$array[ 'Male' => 0, 'Female' => 0 ];
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$array[$row["radiob"]]++;
echo $row["radiob"] . "<br>";
}
} else {
echo "0 results";
}
$conn->close();
echo "Male {$array['Male']}
";
echo "Female {$array['Female']}
";
您应该使用逐句修改代码,如下所示
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT radiob,COUNT(*) as total FROM `playertest` group by radiob";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $row["radiob"] . ": ".$row["total"]."<br>";
}
} else {
echo "0 results";}
$conn->close();
?>
以上是关于如何使用PHP [重复]显示提交的单选按钮值的计数的主要内容,如果未能解决你的问题,请参考以下文章