leo: Berechnung und Ausgabge

Hallo,

ich möchte über radio-Buttons die Berechnungsmethode auswählen und dann das jeweilige mit den beiden Zahlen aus dem Formular durchführe, aber weiß jetzt nicht wie ich mit php etwas in ein ein "Feld" setzen kann, hab es ja bisher nur komplett neu ausgegeben und wenn ich jetzt den code wie er bisher ist aufrufe, schmeizt der mir direkt ne meldung "keine division durch 0". Also geht der den php code schon durch bevor ich auf den submit-Button geklickt habe?

habe mir folgendes gebastelt:

<html>
<head>
</head>
<body>
<form name="Addition" action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post">
 <input type="text" name="zahl1" value="" length="10"><br>
 <input type="text" name="zahl2" value="" length="10"><br>
 <input type="submit" name="addition" value="berechne"><br>
 <input type="radio" name="auswahl" value="1">+
 <input type="radio" name="auswahl" value="2">-
 <input type="radio" name="auswahl" value="3">*
 <input type="radio" name="auswahl" value="4">/
</form>

<?php
 if($_REQUEST["addition"]){
  $wahl=$_POST["auswahl"];
  $zahl1=$_POST["zahl1"];
  $zahl2=$_POST["zahl2"];
  if($wahl==1){
   $ergebnis=$zahl1+$zahl2;
   echo "<input type='text' name='ergebnis' value='$ergebnis'>";
  }
  if($wahl==2){
   $ergebnis=$zahl1-$zahl2;
   echo "<input type='text' name='ergebnis' value='$ergebnis'>";
  }
  if($wahl==3){
   $ergebnis=$zahl1*$zahl2;
   echo "<input type='text' name='ergebnis' value='$ergebnis'>";
  }
  if($wahl==4){
   $ergebnis=$zahl1/$zahl2;
   echo "<input type='text' name='ergebnis' value='$ergebnis'>";
  }
 }

?>
</body>
</html>

Gruß

  1. Hallo.

    Schreibe anstelle von

    if($_REQUEST["addition"]){...

    if (isset($_POST['addition'])){...

    Wieso willst du das Ergebnis in einem Textfeld ausgeben?

    Das könnte etwas so aussehen:

      
    <input type="text" name="ergebnis" value="<php if (!empty($ergebnis)) {echo htmlspecialchars($ergebnis);}?>"  
    
    

    Beachte: Daten _niemals_ ungefiltert aus einem Formular übernehmen!

    MfG, Kungschu.

    --
    The computer is not willing? The bug is well hidden? The release is tomorrow?
    1. Hallo.

      Das könnte etwas so aussehen:

      <input type="text" name="ergebnis" value="<php if (!empty($ergebnis)) {echo htmlspecialchars($ergebnis);}?>"

      Hier fehlt natürlich ein >.  
        
      MfG, Kungschu.
      
      -- 
      The computer is not willing? The bug is well hidden? The release is tomorrow?
      
      1. Hab eigentlich alles einbauen können außer das mit der Ausgabe in dem Textfeld.

        <html>
        <head>
        </head>
        <body>
        <form name="Addition" action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post">
         <input type="text" name="zahl1" value="" length="10"><br>
         <input type="text" name="zahl2" value="" length="10"><br>
         <input type="submit" name="addition" value="berechne"><br>
         <input type="radio" name="auswahl" value="1">+
         <input type="radio" name="auswahl" value="2">-
         <input type="radio" name="auswahl" value="3">*
         <input type="radio" name="auswahl" value="4">/
         <p>
         <input type="text" name="ergebnis" value="<?php if (!empty($ergebnis)) {echo htmlspecialchars($ergebnis);} ?>">
        </form>

        <?php
         if(isset($_POST["addition"])){
          $wahl=$_POST["auswahl"];
          $zahl1=$_POST["zahl1"];
          $zahl2=$_POST["zahl2"];
          if($wahl==1){
           $ergebnis=$zahl1+$zahl2;
           echo "<br>",$zahl1," + ",$zahl2," = ",$ergebnis," \n";
          }
          if($wahl==2){
           $ergebnis=$zahl1-$zahl2;
           echo "<br>",$zahl1," - ",$zahl2," = ",$ergebnis," \n";
          }
          if($wahl==3){
           $ergebnis=$zahl1*$zahl2;
           echo "<br>",$zahl1," * ",$zahl2," = ",$ergebnis," \n";
          }
          if($wahl==4){
         if($zahl2==0){
          echo $zahl1,"/ ", $zahl2, " ist nicht möglich";
         }
         else{
             $ergebnis=$zahl1/$zahl2;
          echo "<br>",$zahl1," / ",$zahl2," = ",$ergebnis," \n";
         }
          }
         }

        ?>
        </body>
        </html>

        1. Hallo.

          Hab eigentlich alles einbauen können außer das mit der Ausgabe in dem Textfeld.

          Und was ist nun konkret das Problem? Positioniere den HTML-Teil hinter den verarbeitenden Script-Teil; sonst kann $ergebnis ja nur leer sein (und somit keine Ausgabe erfolgen), da $ergebnis in deinem Code erst danach gefüllt wird.

          MfG, Kungschu.

          --
          The computer is not willing? The bug is well hidden? The release is tomorrow?
    2. echo $begrüßung;

      <input type="text" name="ergebnis" value="<php if (!empty($ergebnis)) {echo htmlspecialchars($ergebnis);}?>"
      Beachte: Daten _niemals_ ungefiltert aus einem Formular übernehmen!

      Generell hast du Recht, aber $ergebnis ist kein Datum aus einem Formular, sondern das Ergebnis einer numerischen Berechnung. Auch bei ungültigen Eingabewerten kommt dabei eine Zahl raus. Darauf htmlspecialchars() anzuwenden ist zwar nicht schädlich aber unnötig.

      Wichtiger wäre es, die Formulardaten vor der Weiteverarbeitung durch floatval() zu schicken, denn diese Funktion garantiert einen Fließkomma-Wert bei jeder Art von Eingabe. Und bei der Division ist anschließend noch eine Prüfung auf 0 als zweiter Eingabewert erforderlich, will man den Divison-durch-Null-Fehler abfangen.

      echo "$verabschiedung $name";