簡體   English   中英

PHP為什么else_Statment在is_numeric函數之前無法正常工作

[英]PHP Why does the else-Statment not work properly before the is_numeric function

只要我想知道bmi,那段代碼就可以完成工作。 但是它也應該檢查公式是否用數字填充,如果不是這樣,則應插入else語句。 盡管它似乎總是可以指出以下錯誤消息:

(((這不是我鏈接到的另一個問題的重復項。那里談論的是另一個主題,它涉及新的錯誤消息,但這是關於我必須如何編寫if-else語句,以便對數字進行檢查以取出else的問題)。聲明。))

警告:在第15行的C:\\ xampp \\ htdocs \\ workspace \\ 4.5 \\ Aufgabe19.php中遇到一個非數字值

警告:在第15行的C:\\ xampp \\ htdocs \\ workspace \\ 4.5 \\ Aufgabe19.php中遇到一個非數字值

警告:在第16行的C:\\ xampp \\ htdocs \\ workspace \\ 4.5 \\ Aufgabe19.php中遇到一個非數字值

它不應該這樣做。 它應該只說:bitte geben sie zahlen ein(如果配制者充滿其他東西)。

        <?php
    // Variablen deklararien und Werte zuweisen.
    $gewicht = $_POST['gewicht'];
    $koerpergroesse = $_POST['koerpergroesse'];
$bmi = 0;
$dezimal = 0;

        $dezimal = ($koerpergroesse /100) * ($koerpergroesse / 100);
  $bmi = $gewicht / $dezimal;


if (is_numeric($gewicht) && is_numeric($koerpergroesse)) {
    if ($bmi < 18.5) {

     echo "Ihr BMI beträgt: " . round($bmi,2) . "<br>";
     echo "Sie haben Untergewicht.";
    }

  if ($bmi >= 18.5 && $bmi < 25) {

     echo "Ihr BMI beträgt: " . round($bmi,2) . "<br>";
     echo "Sie haben Normalgewicht.";
  }

  if ($bmi >= 25 && $bmi < 30) {

     echo "Ihr BMI beträgt: " . round($bmi,2) . "<br>";
     echo "Sie haben leichtes Übergewicht.";
  }

  if ($bmi >= 30 && $bmi < 40) {

     echo "Ihr BMI beträgt: " . round($bmi,2) . "<br>";
     echo "Sie haben starkes Übergewicht.";
  }

  if ($bmi >= 40) {

     echo "Ihr BMI beträgt: " . round($bmi,2) . "<br>";
     echo "Sie haben lebensbedrohliches Übergewicht.";
  }
}
else {

echo "Bitte geben sie Zahlen ein.";
}

  ?>

我無法清楚地回答您的問題。但是我想提醒您輸入用戶值,它應該是數字的.....而不是您所描述的錯誤顯示....可能是我判斷您的問題是錯誤的...

嘗試這樣。

  $error = false; // this should be before checking if post submitted...

  if ( ((!isset( $gewicht)) || (empty( $gewicht)) )  && ( (!isset( $koerpergroesse )) || (empty( $koerpergroesse ))) ){
   $error=true;
   echo "Please fill up values";
   }

  if ( (!is_numeric($gewicht)) && (!is_numeric($koerpergroesse)) ){
    $error=true;
    echo "Value must be numeric";
   }

  if (!$error) {
     if ($bmi < 18.5) {.......

在測試非數字值以查看它們是否為數字之前,請在計算中使用它們。 POST值包含無效字符串。 然后, 檢查它們是否為數字之前,請立即在計算中使用它們:

$gewicht = $_POST['gewicht'];
$koerpergroesse = $_POST['koerpergroesse'];
$dezimal = ($koerpergroesse /100) * ($koerpergroesse / 100);
$bmi = $gewicht / $dezimal;
if (is_numeric($gewicht) && is_numeric($koerpergroesse)) {

您應該將計算結果放入if語句中:

$gewicht = $_POST['gewicht'];
$koerpergroesse = $_POST['koerpergroesse'];
if (is_numeric($gewicht) && is_numeric($koerpergroesse)) {
    $dezimal = ($koerpergroesse /100) * ($koerpergroesse / 100);
    $bmi = $gewicht / $dezimal;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM