Verbesserung 3

Was passiert eigentlich, wenn der Besucher mumpitz eingibt, oder sich einfach nur vertippt hat?

Als erstes sollte geprüft werden, ob tatsächlich eine Zahl engegeben wurde, und nur dann darf die Berechnung und Ausgabe ausgeführt werden. Es gibt eine Funktion, welche einen Text darauf hin prüft, ob es sich dabei um eine Zahl handelt: "is_numeric()"
Sie gibt "true" zurück, wenn es eine Zahl ist, und "false" wenn nicht.

Versuche es zunächst selbst.

Lösung

<?PHP

//  Ausgabe  des  Formulars
echo  '<h1>Umrechner</h1>';
echo 
'<form  method="post"  action="index.php">';
echo 
'    <input  type="text"  name="euro"  size="42"  />  EURO';
echo 
'    <br/>Umwandeln  in:  ';
echo 
'    <select  name="waehrung">';
echo 
'          <option  value="usd">Amerikanische  Dollar</option>';
echo 
'          <option  value="gbp">Britische  Pfund</option>';
echo 
'    </select>';
echo 
'    <br>';
echo 
'    <input  type="submit"  name="submit"  value="Umrechnen"  />';
echo 
'</form>';

//  Array  mit  unseren  Kursen
$kurs  =  array(
   
'usd'  =>  1.2758,
   
'gbp'  =>  0.84545
);

//  Prüfe  ob  "euro"  existiert
if  (  isset($_POST['euro'])  )  {
   
//  Prüfe  ob  es  keine  Zahl  ist
   
if  (  !is_numeric($_POST['euro'])  )  {
         
//  Wenn  es  keine  Zahl  ist,  Variabel  löschen
         
unset($_POST['euro']);
    }
}

//  Prüfe  ob  Daten  vorhanden  sind
if  (  isset($_POST['euro'])  AND  isset($_POST['waehrung'])  )  {

   
//  ersetze  Komma  durch  Punkt  in  $_POST['euro']  und
    //  schreibe  das  Ergebnis  in  die  Variabel  $eurobetrag
   
$eurobetrag  str_replace',''.'$_POST['euro']);

   
//  Umrechnung  von  $eurobetrag  und
    //  schreibe  das  Ergebnis  nach  $ergebnis
   
$ergebnis  $eurobetrag  $kurs$_POST['waehrung']  ];

   
//  Ergebnis  auf  zwei  Nachkommastellen  runden
   
$ergebnis  round$ergebnis2);

   
//  Ausgabe  des  Ergebnis
   
echo  '<p>';
    echo 
$eurobetrag;
    echo 
'  entsprechen  ';
    echo 
$ergebnis;
    echo 
'  in  ';
    echo 
$_POST['waehrung'];

}

?>