2016-05-12 5 views
0

BMIを計算する関数を使用するフォームを作成しています。 2つの質問。フォームを使用して関数を計算し、異なるコメントを表示します。致命的なエラーと正しく表示されない

  1. コメント(低体重/正常体重/ ...)出力が異なっしかし、関係なく、BMIは、それが常にアンダーウェイトを出力し、どのような値、計算されていないBMIに依存すべきです。それが機能するためには何をする必要がありますか?

  2. "致命的なエラー:未定義の関数bmi()を呼び出しています..."機能は動作しますが、致命的なエラーが表示されます。誰も私にこのエラーを取り除く方法を教えてもらえますか?どうもありがとうございます。あなたのif節の前に機能を使用する必要が

    <form name="bmi" method="GET" action="test.php"> 
        Mass in kilogram (kg): 
        <input type="text" name="mass" id="mass" size="15"> 
        <br> 
    
        Height in meter (m): 
        <input type="text" name="height" id="height" size="15"> 
        <br> 
    
        <input type="submit" name="submit" id="submit" value="submit"> 
    </form> 
    
    <?php 
    if ($_GET['submit']) { 
        $mass = $_GET['mass']; 
        $height = $_GET['height']; 
    
        function bmi($mass,$height) { 
        $bmi = $mass/($height*$height); 
        return $bmi; 
        } 
    
        if ($bmi <= 18.5) { 
        $output = "UNDERWEIGHT"; 
    
        } else if ($bmi > 18.5 AND $bmi<=24.9) { 
        $output = "NORMAL WEIGHT"; 
    
        } else if ($bmi > 24.9 AND $num<=29.9) { 
        $output = "OVERWEIGHT"; 
    
        } else if ($bmi > 30.0) { 
        $output = "OBESE"; 
        } 
    } 
    echo "Your BMI value is " . bmi($mass,$height). " and you are : "; 
    echo "$output"; 
    ?> 
    
+0

[かの構造内部の機能]の可能性の重複は(http://stackoverflow.com/questions/5912830/a-function-inside-an-if-structure) – Mike

+0

が正しくあなたを与えるかもしれないあなたのコードをインデントなぜこれがうまくいかないのか、より良い考え。 – Mike

答えて

0

:あなたのIF文が実行されることはありませんですので

if ($_GET['submit']) { 
    $mass = $_GET['mass']; 
    $height = $_GET['height']; 

    function bmi($mass,$height) { 
     $bmi = $mass/($height*$height); 
     return $bmi; 
    } 

    $bmi = bmi($mass,$height); //<--- this is critical 

    if ($bmi <= 18.5) { 
     $output = "UNDERWEIGHT"; 

     } else if ($bmi > 18.5 AND $bmi<=24.9) { 
     $output = "NORMAL WEIGHT"; 

     } else if ($bmi > 24.9 AND $num<=29.9) { 
     $output = "OVERWEIGHT"; 

     } else if ($bmi > 30.0) { 
     $output = "OBESE"; 
    } 
    echo "Your BMI value is " . $bmi . " and you are : "; 
    echo "$output"; 
} 
+1

'echo'ステートメントも' if'の中で動かす必要があります。 – Mike

+0

@Mikeそう、あまりにも。 – wogsland

0
  1. あなたの$出力は常に同じです。 IF文の前に$ bmi変数を設定しなければならないので、IF文の前に $bmi = bmi($mass, $height)を追加してからechoコマンドでbmi関数を呼び出すと、$bmi変数を使用できます。
関連する問題