如何使用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 [重复]显示提交的单选按钮值的计数的主要内容,如果未能解决你的问题,请参考以下文章

单击提交后如何获取选定的单选按钮以显示特定的隐藏 div?

如何从 PHP 中的单选按钮发送值属性 [关闭]

在会话中存储单选按钮值 - PHP

基于选定的单选按钮选项,在闪亮的R中单击提交按钮后如何显示图表和数据?

如何定位单选按钮的值[重复]

如何验证magento中的单选按钮?