You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP提交动态单选表单后如何统计选中的Yes/No单选按钮总数量

解决方案

方法1:不修改现有表单代码直接统计

如果不想改动现有表单生成逻辑,可以直接遍历POST提交的所有字段,排除提交按钮字段后统计Yes/No的数量,代码如下:

if(isset($_POST['submit'])){
    $yesCount = 0;
    $noCount = 0;
    foreach ($_POST as $key => $value) {
        // 跳过提交按钮本身的提交值
        if ($key == 'submit') continue;
        if ($value == 'Yes') {
            $yesCount++;
        } elseif ($value == 'No') {
            $noCount++;
        }
    }
    // 示例输出结果,可替换为存入数据库等业务逻辑
    echo "Yes选中数量:" . $yesCount . "<br>";
    echo "No选中数量:" . $noCount;
}

注意:该方法的缺陷是如果后续表单新增其他字段,会把非答案字段也计入统计,更推荐使用下面的优化方案。


方法2:优化表单命名(更推荐)

首先修复现有表单的两个小问题:

  1. 单选按钮name没有统一分组,后续新增表单字段容易统计出错
  2. label的for属性和对应input的id不匹配,点击label无法选中对应选项,No选项的label for值甚至误写为Bo

修改后的单选生成代码

while($row = mysqli_fetch_array($result)) 
{
    $i++;
?>
<p><?php echo $row["question"] ; ?></p>
<!-- 把input包在label内不需要写for属性,点击文字就能选中 -->
<label>
    <input type="radio" name="answer[<?php echo $i; ?>]" value="Yes" required>
    Yes
</label>
<label>
    <input type="radio" name="answer[<?php echo $i; ?>]" value="No" required>
    No
</label>
<?php 
}
?>

可选优化:给单选加required属性,要求用户必须回答所有问题才能提交,避免空答案。

对应统计代码

if(isset($_POST['submit'])){
    $yesCount = 0;
    $noCount = 0;
    // 判空避免用户没选任何选项提交时报错
    if (!empty($_POST['answer'])) {
        foreach ($_POST['answer'] as $userChoice) {
            $userChoice == 'Yes' ? $yesCount++ : $noCount++;
        }
    }
    echo "Yes选中数量:" . $yesCount . "<br>";
    echo "No选中数量:" . $noCount;
}

内容的提问来源于stack exchange,提问作者devlv21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 17:54:01