2017-10-11 4 views
1

Ich schreibe ein einfaches PHP-Programm, um den BMI des Benutzers zu berechnen und eine Zeichenfolge zurückzugeben, die angibt, ob er im Normalbereich oder übergewichtig ist. Ich habe gerade angefangen, also muss ich die Benutzereingabe von HTML-Eingabeelementen abrufen. Das Problem ist, ich bekomme einen nicht wohlgeformten numerischen Wertfehler. Hier ist mein Code:PHP: Abrufen eines Gleitkommawerts aus einem (Eingabe-) Textfeld, nicht wohlgeformter numerischer Wert Fehler

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 

     <?php require("header.php") ?> 

     <title></title> 
    </head> 

    <body> 

     <h1>Lab #05 -- BMI Calculator</h1> 

     <br /><br /><br /> 

     <form action="Lab05b.php" method="post"> 
      <input id="imperial" name="imperial" type="text" value="0.00" /> &nbsp;&nbsp; <label for="imperial">Height in inches/centimeters</label> 
      <br /> 
      <input id="metric" name="metric" type="text" value="0.00" /> &nbsp;&nbsp; <label for="metric">Weight in pounds/kilograms</label> 
      <br /><br /> 
      <input type="radio" name="imperial" id="imperial" value="imperial" /> Imperial 
      <br /> 
      <input type="radio" name="metric" id="metric" value="metric" /> Metric 
      <br /><br /> 
      <input type="submit" /> 
      &nbsp; 
      <input type="reset" /> 
     </form> 

     <?php require("footer.php"); ?> 

    </body> 
</html> 

und hier ist das das Lab05b.php ist:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 

     <?php require("header.php") ?> 
     <?php require("Lab05b_Functions.php") ?>; 

     <title></title> 
    </head> 

    <body> 

     <h1>Lab #05 -- BMI Calculator</h1> 

     <br /><br /><br /> 

     <?php echo "<p style='color: <?php echo $color; ?>' ?>Your body mass index is in the {$result} range</p>" ?> 

     <?php require("footer.php"); ?> 

    </body> 
</html> 

und hier ist die Funktionen Datei:

<?php 

$imperial = filter_input(INPUT_POST,'imperial'); 
$metric = filter_input(INPUT_POST, 'metric'); 

    echo $imperial. " " + "imperial units"; 
    $color = "red"; 
    $result = "Obese"; 

?> 

Für diese Aufgabe ist es ok für der Wert, der als Integer in das Textfeld eingegeben werden soll. Im Moment bin ich nur daran interessiert, den nicht gutgeheißenen Zahlenwertfehler aufzuspüren.

Vielen Dank für Ihre Hilfe, DB

+0

In welcher Zeile beschwert sich der Fehler? Bitte auch den ganzen Fehler posten. –

+0

Können Sie hier das Ergebnis von 'var_dump ($ _ POST)' posten? – OPV

+0

Sie haben mehrere Eingänge mit demselben Namen, die nicht gültig sind. Ihre Optionsfelder können nicht den gleichen Namen wie die Textfelder haben. Ohne zu testen, bin ich nicht sicher, was PHP daraus machen wird, wenn es versucht, die $ _POST-Werte zu erstellen, aber es ist keine gute Idee. – ADyson

Antwort

2

Verwendung:

echo $imperial . " " . "imperial units"; 

Statt:

echo $imperial. " " + "imperial units"; 

+ für die Addition ist, . für Verkettung ist.

Vom docs: ''

Strings verkettet werden können, die unter Verwendung von (Punkt-) Operator. Beachten Sie, dass der '+' (Addition) -Operator dafür nicht funktioniert.

Verwandte Themen