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

PHP开发BMI计算器表单提交后输出结果为1的问题求助

问题修复方案

你提交后页面只输出1是几个明确的语法和逻辑问题导致的,按下面步骤改完就能正常运行:

  • 输出1的核心原因:你代码里$bmiSubmitted = isset($_POST['bmi-submitted']);拿到的是布尔判断结果,PHP中布尔值true被直接输出时就会显示为1,你现有逻辑没有输出计算后的BMI结果,反而把这个判断值输出到了页面,才会出现这个现象。
  • 其次你表单的提交按钮存在语法错误,value属性和属性值之间漏了等号,可能导致表单提交时识别不到提交标记字段。

1. 修复表单代码

把原来写错的提交按钮标签替换即可,修正后的完整表单代码:

<?php
return "
<p>Calculate your BMI</p>
<form method='post' action='index.php?page=process-bmi'>
    <p>Please enter your height and weight to calculate your BMI</p>
    <label for='height'>Height</label>
    <input type='text' id='height' name='height'>
    <label for='weight'>Weight</label>
    <input type='text' id='weight' name='weight'>
    <input type='submit' value='Submit' name='bmi-submitted'>
</form>";

唯一改动点就是给提交按钮的value属性补上了缺失的等号。

2. 修复BMI处理逻辑代码

你原来的逻辑只把结果存到了$output变量,没有做输出,还缺少基础的合法性校验,修正后的代码:

<?php 
$bmiSubmitted = isset($_POST['bmi-submitted']);
$output = ''; // 初始化输出变量,避免未定义变量报错
if ($bmiSubmitted) {
    // 强转浮点型,避免传入非数字内容导致计算异常
    $weight = (float)$_POST['weight'];
    $height = (float)$_POST['height'];
    
    // 注意:如果你输入身高用的是厘米单位(比如175、180),取消下面这行注释转成米,否则计算结果完全不对
    // $height = $height / 100;

    $output = bmi($weight, $height);
}
// 输出最终计算结果
echo $output;

function bmi($weight, $height) {
    // 避免身高/体重为0触发除零错误
    if ($height <= 0 || $weight <= 0) {
        return "<p>请输入有效的身高、体重正数数值</p>";
    }
    $bmi = $weight / ($height * $height);
    // 保留两位小数,结果更易读
    $bmi = number_format($bmi, 2);
    return "<p>Your bmi is $bmi</p>";
} 
?>

补充说明

  • 代码里加的参数校验是基础容错逻辑,能避免用户空提交、填0或者填非数字内容时抛出代码报错
  • BMI计算公式要求身高单位为米,如果你平时输入身高习惯用厘米单位,一定要记得开启单位转换的注释行,不然算出来的数值会比正常范围小好几个数量级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:45:25