Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Taschenrechner

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Taschenrechner

    Guten Tag liebe PHP-Gemeinde.

    Ich möchte zur Übung einen einfachen Taschenrechner zusammenbasteln. Dies habe ich auch schon mit Tutorials usw. gemacht aber er will einfach nicht funktionieren.
    Sobald ich auf den Submit Button klicke werden die Zahlen zurückgesetzt und nichts passiert.


    PHP-Code:
     <form method="post" style="margin-top:15px; margin-left:15px;" action="taschenrechner.php">
                
                    <input name="zahl1" maxlength="5" />
                                
                                <select name="rz"><br />
                                    <option value="+">+</option>
                                    <option value="-">-</option>
                                      <option value="*">*</option>
                                       <option value="/">/</option>
                                   </select>
            
                    <input name="zahl2" maxlength="5"  /><br /><br />
            
                    <input type="submit" name="submit" value="Berechnen"  />
                  </form>
                  
                  
                 </div>
        </div>
        
        <?php
                
                    
        
            $zahl1 
    $_POST["zahl1"];
            
    $zahl2 $_POST["zahl2"];
            
    $rz $_POST["rz"];

            if (
    $rz == "+")    $c=bcadd($zahl1$zahl22);
            if (
    $rz == "-")    $c=bcsub($zahl1$zahl22);
            if (
    $rz == "*")    $c=bcmul($zahl1$zahl22);
            if (
    $rz == "/")    $c=bcdiv($zahl1$zahl22);
                
            
    # Rechenaufgabe und Rechnung zeigen !
            
    echo $zahl1 $rz $zahl2 "=" $c;
            
                
    ?>
    Vielleicht kann mir hier ja jemand weiterhelfen. Vielen Dank schon mal im voraus !

    Grüße
    Falco

  • #2
    Erst Verarbeitung, dann Ausgabe (sprich: der PHP Code gehört an den Anfang der Datei). Zudem verwendest du POST Daten ungeprüft

    Kommentar


    • #3
      Zitat von lstegelitz Beitrag anzeigen
      Erst Verarbeitung, dann Ausgabe (sprich: der PHP Code gehört an den Anfang der Datei).
      Oben ist doch nur die Eingabe für die zu berechnenden Zahlen. Die Ausgebe erfolgt doch unterhalb des PHP Codes (echo $zahl1 usw). Oder ist das einfach nur ein Denkfehler von mir ?

      Kommentar


      • #4
        Also, abgesehen von einigen Warnungen beim ersten Aufruf funktioniert das obige Beispiel bei mir - es rechnet und gibt das Ergebnis auch aus.

        Sobald ich auf den Submit Button klicke werden die Zahlen zurückgesetzt und nichts passiert.
        Es passiert nicht "Nichts". Debugge, lass dir mal $_POST ausgeben...

        Kommentar


        • #5

          bcadd bcsub bcmul bcdiv sind Funktionen von BC Math läuft das bei dir? Teste einfach mal
          Code:
              <?php
          
          $x = '1';
          $y = '2';
          
          echo bcadd($x, $y);
          
          ?> 

          Kommentar


          • #6
            Läuft mittlerweile alles. Lag an einem Fehler von XAMPP
            Trotzdem danke für die Hilfe !

            LG

            Kommentar


            • #7
              Hi Falco123,

              hab' mich vor längerer Zeit auch mal dran versucht, allerdings mit JavaScript.

              Damit erspart man sich die Senderei, weil alles im Browser abläuft. Dann soll(te) das Ergebnis ja auch idealerweise

              im "Taschenrechnerformular" wiedergegeben werden, was sich ja z.B. mit Ajax lösen läßt, aber auch nur mit hin und her

              senden von Daten.


              Eingaben über Textfelder/Selects fand ich auch suboptimal, weil man erstens auf gültige Eingaben prüfen muss, und sich zum zweiten

              kombinierte Eingaben wie 5 x 3 + 10 schlecht realisieren lassen, weil man ja im Vorfeld nicht weiß, was berechnet werden soll.


              Also hab' ich mich an einen Rechner versucht, bei dem die Eingaben (Zahlen, Komma, Klammern, Operatoren etc. . . ) über Buttons

              in ein Textareafeld eingegeben werden. Das Feld ist schreibgeschützt, damit darin keine Tastatureingaben möglich sind.

              Leider ist dass Projekt aus Zeitmangel "eingeschlafen", zudem schien mir der Aufwand (zumindest so wie ich ihn betrieben habe) relativ hoch.


              Vielleicht kommen dir hier ja ein paar Ideen, den Code zu optimieren bzw. zu erweitern. Vielleicht ist aber auch alles Quatsch. Wenn, dann ist das so


              PHP-Code:
              <!DOCTYPE HTML>
              <
              html>
              <
              head>
              <
              title>Einfacher Rechner</title>
              <
              script type="text/javascript">
              /* Zwei Variablen zur Eingabenkontrolle */
              var last_digit "";
              var 
              last_op "";
              <!--
              /* Eine Ziffer ins Display eingeben */
              function insert_digit(digit){
               
              last_digit += digit;
               
              document.getElementById("display").value +=  digit;
              }

              /* Einen Operator ins Display eingeben */
              function insert_op(op){
               if(
              last_digit.length == 0) return;
               
              document.getElementById("display").rows += 1;
               
              document.getElementById("display").value document.getElementById("display").value "\n" op "\n";
               
              document.getElementById("display").rows += 1;
               
              last_digit "";
               
              last_op op;
              }

              /* Komma (Dezimalpunkt) eingeben */
              function insert_komma(komma){
               if(
              last_digit.length == 0) return;
               if(
              last_digit.indexOf(".") == -1){
                
              last_digit += ".";
                
              document.getElementById("display").value += ".";
               }
              }

              /* Das Display und Ergebnis löschen */
              function delete_display(){
               
              document.getElementById("display").rows 1;
               
              document.getElementById("display").value "";
               
              document.getElementById("ergebnis").innerHTML "";
               
              last_digit "";
               
              last_op "";
               
              basis "";
              }

              /* Letzte Eingabe im Display löschen */
              function delete_last_input(){
               var 
              display_zeichen_anzahl document.getElementById("display").value.length;
               var 
              last_digit_anzahl last_digit.length;
               if(
              last_digit_anzahl == 0) return;
               
              document.getElementById("display").value document.getElementById("display").value.substr(0display_zeichen_anzahl 1);
               
              last_digit last_digit.substr(0last_digit_anzahl 1);
              }

              /* Öffnende Klammer einfügen */
              function insert_Klammer_auf(klammer_auf){
               
              last_digit += klammer_auf;
               
              document.getElementById("display").value += klammer_auf;
              }

              /* Schließende Klammer einfügen */
              function insert_Klammer_zu(klammer_zu){
               
              last_digit += klammer_zu;
               
              document.getElementById("display").value += klammer_zu;
              }

              /* Ergebnis berechnen */
              function rechnen(){
               if(
              document.getElementById("display").value.length == 0) return;
               
              document.getElementById("ergebnis").innerHTML "Ergebnis: " + eval(document.getElementById("display").value);
              }

              /* Wurzel ziehen */
              function wurzel(){
               
              document.getElementById("display").rows 1;
               
              document.getElementById("display").value Math.sqrt(eval(document.getElementById("display").value));
               
              document.getElementById("ergebnis").innerHTML "Ergebnis: " + eval(document.getElementById("display").value);
              }

              /*
              * Prozentrechnen mit Operatoren
              * Übergeben wird Operand1 Operator Operand2
              * Bei Übergabe Operand1 + Operand2 wird (Operand2 % von Operand1) auf Operand1 aufaddiert
              * Bei Übergabe Operand1 - Operand2 wird (Operand2 % von Operand1) von Operand1 subtrahiert
              * Bei Übergabe Operand1 * Operand2 wird Operand2 % von Operand1 berechnet
              */
              function prozent(ausdruck){
               var 
              term ausdruck.split('\n');
               switch(
              term[1]){
                case 
              "+"plus_prozent(term);break;
               case 
              "-"minus_prozent(term);break;
               case 
              "*"prozent_rechnung(term);break;
               
              //case "/": alert(term[1]);break;
               
              default: alert("Ohne Funktion.");
               }
              }

              /* X Prozent Addieren */
              function plus_prozent(term){
               var 
              op1 term[0];
               var 
              op2 term[2];
               var 
              proz_von_op1 = eval(op1/100*op2);
               
              document.getElementById("ergebnis").innerHTML "Ergebnis: " + eval(op1+"+"+proz_von_op1);
              }

              /* X Prozent Subtrahieren */
              function minus_prozent(term){
               var 
              op1 term[0];
               var 
              op2 term[2];
               var 
              proz_von_op1 = eval(op1/100*op2);
               
              document.getElementById("ergebnis").innerHTML "Ergebnis: " + eval(op1+"-"+proz_von_op1);
              }

              /* Normale Prozentrechnung */
              function prozent_rechnung(term){
               var 
              op1 term[0];
               var 
              op2 term[2];
               var 
              proz_von_op1 = eval(op1/100*op2);
               
              document.getElementById("ergebnis").innerHTML "Ergebnis: " proz_von_op1;
              }

              /* Basis hoch Exponent */
              /*
              * Basis eingeben
              * Button p anklicken
              * Exponent eingeben
              * Button p anklicken, Ergebnis wird berechnet
              */
              var basis 0;
              function 
              b_hoch_e(term){
               if(
              basis == 0){
                
              basis last_digit;
               }
               if(
              term.indexOf("^") == -1){
                
              insert_op("^");
               return;
               }
               var 
              exponent last_digit;
               
              document.getElementById('display').rows 1;
               
              document.getElementById('display').value basis " hoch " exponent;
               
              document.getElementById("ergebnis").innerHTML "Ergebnis: " Math.pow(basisexponent);
              }
              // -->
              </script>
              </head>
              <body>
              <h3>Ein einfacher Rechner</h3>
              <!--
              textarea auf readonly setzen, damit dort keine Eingaben gemacht werden können
               -->
              <textarea id="display" readonly="readonly" rows="1" cols="30">
              </textarea>
              <table border="1" cellpadding="3" cellspacing="3">
              <row><td>
              <p>
              <button value="7" onclick="insert_digit(this.value)">7</button>
              <button value="8" onclick="insert_digit(this.value)">8</button>
              <button value="9" onclick="insert_digit(this.value)">9</button>
              </p>
              <p>
              <button value="4" onclick="insert_digit(this.value)">4</button>
              <button value="5" onclick="insert_digit(this.value)">5</button>
              <button value="6" onclick="insert_digit(this.value)">6</button>

              <p>
              <button value="1" onclick="insert_digit(this.value)">1</button>
              <button value="2" onclick="insert_digit(this.value)">2</button>
              <button value="3" onclick="insert_digit(this.value)">3</button>
              </p>
              <p>
              <button value="0" onclick="insert_digit(this.value)">0</button>
              <button value="c" onclick="delete_last_input()" title="Letzte Eingabe im Display löschen">c</button>
              <button value="," onclick="insert_komma(this.value)">,</button>
              </p>
              </td>
              <td>
              <p><button value="+" onclick="insert_op(this.value)">+</button></p>
              <p><button value="-" onclick="insert_op(this.value)">-</button></p>
              <p><button value="*" onclick="insert_op(this.value)">*</button></p>
              <p><button value="/" onclick="insert_op(this.value)">/</button></p>
              </td>
              <td>
              <p><button value="c" onclick="delete_display()" title="Display und Ergebnis löschen">C</button></p>
              <p><button value="=" onclick="rechnen()"> = </button></p>
              <p><button value="(" onclick="insert_Klammer_auf(this.value)">(</button></p>
              <p><button value=")" onclick="insert_Klammer_zu(this.value)">)</button></p>
              </td>
              <td>
              <p><button onclick="wurzel()" title="Quadratwurzel">w</button></p>
              <p><button onclick="prozent(document.getElementById('display').value)" title="Prozentrechnung">%</button></p>
              <p><button onclick="b_hoch_e(document.getElementById('display').value)" title="Basis hoch Exponent">p</button></p>
              </td>
              </row>
              </table>
              <p id="ergebnis">&nbsp;</p>
              </script>
              </body>
              </html> 
              Ein paar Hinweise zu Funktionen:

              Button mit kleinem c - Löscht letzte Zahleneingabe(n)

              Button mit großem C - Löscht alles

              Button w - Zahl eingeben, w anklicken: zieht Wurzel aus Zahl

              Button p - Zahl1 (Basis) eingeben, p anklicken, Zahl2 (Exponent) eingeben, p anklicken: berechnet Basis hoch Exponent

              Button % - Zahl1 eingeben, Button + anklicken, Zahl2 eingeben, Button % anklicken: Berechnet Zahl2% von Zahl1 und addiert das Ergebnis auf Zahl1

              Button % - Zahl1 eingeben, Button - anklicken, Zahl2 eingeben, Button % anklicken: Berechnet Zahl2% von Zahl1 und subtrahiert das Ergebnis von Zahl1

              Button % - Zahl1 eingeben, Button * anklicken, Zahl2 eingeben, Button % anklicken: Berechnet Zahl2% von Zahl1

              Button ( und Button ) - Berechnet Klammeraufgaben: 3 * (2+2)


              Gruß
              Günni

              Kommentar

              Lädt...
              X