Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Web-Rechner, Abfrage von drop-down Auswahl

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Web-Rechner, Abfrage von drop-down Auswahl

    Hallo,

    Ich bin gerade an einen sehr einfach gehaltenen Web-Rechner dran der mir + - * und / ausgeben soll. Dazu habe ich 2 Formularfelder und ein drop-down Menü wo ich eben zwischen + - * und / auswählen kann.
    Jetzt versuche ich mit php zu sagen das, wenn option (name) ausgewählt ist, dann führe dieses aus (in dem Fall die Berechnung).
    Bis jetzt kann ich auch + rechnen aber wenn ich die anderen auswähle, bleibt er bei plus. So wie es aussieht, guckt er bei der if-bedingung nicht was ausgewählt worden ist. Ich habe schon die ganze Zeit gegoogelt und etwas rum getestet aber irgendwie will das nicht....

    Hier ist bis jetzt der Code:

    Code:
    <!-- Rechner -->
    <div class="container text-center" style="height: 370px;">
        <form method="post">
            <input type="text" name="zahl1" class="form-control form-rund text-center">
            <select class="form-controll" name="operator">
                <option name="plus">+</option>
                <option name="minus">-</option>
                <option name="mal">*</option>
                <option name="geteilt">/</option>
            </select>
            <input type="text" name="zahl2" class="form-control form-rund text-center">
            <br/>
            <button type="submit" class="btn btn-default btn-rund">OK</button>
        </form>
    
    <?php
        if (isset($_POST["zahl1"], $_POST["zahl2"])) {
            
            if (["plus"]) {
                $ergebnis1 = $_POST["zahl1"] + $_POST["zahl2"];
                echo $ergebnis1;
            }
            elseif (["minus"]) {
                $ergebnis2 = $_POST["zahl1"] - $_POST["zahl2"];
                echo $ergebnis2;
            }
            elseif (["mal"]) {
                $ergebnis3 = $_POST["zahl1"] * $_POST["zahl2"];
                echo $ergebnis3;
            }
            elseif (["geteilt"]) {
                $ergebnis4 = $_POST["zahl1"] / $_POST["zahl2"];
                echo $ergebnis4;
            }
        }
    ?>
    </div>

  • #2
    hmm, mach mal hier <option name="plus"> aus dem name ein value.
    Dann musst noch mit z.b
    $rechnung=$_POST['operator'];
    abfragen, was in der dropbox ausgewählt wurde. In Rechnung hast dann eben plus, minus, mal oder dividiert drin stehen.
    tja, und bei den Rechnungen solltest dann noch strval() verwenden, damit die zahlen auch echte zahlen und kein text sind.

    Kommentar


    • #3
      Das funktioniert leider nicht, ich habe es so ähnlich schon getestet aber er zeigt mir dann gar nichts an... =(

      Kommentar


      • #4
        hmm, du weißt aber schon dass das Formular auch abgesendet gehört?
        so wie du es jetzt hast
        <form method="post">
        wird dein Formular nicht gesendet.

        Kommentar


        • #5
          PHP-Code:
           if (["plus"]) { 
          Ich denke das tut nicht was du denkst das es tut.

          Mit [...] erstellt man einen neuen Array.
          ["plus"] erstellt einen neuen Array und fügt den String "plus" direkt ein.

          Ich glaube, if (["plus"]) castet den erzeugten Array automatisch zu bool.
          Das geschieht dergestalt, dass ein leerer Array zu false gecastet wird und ein Array mit mindestens einem Element zu true.

          D. h. der Ausdruck ist in diesem Fall immer true.

          Kommentar


          • #6
            @disky01: Dazu habe ich ja den Button. Plus rechnet er ja schon mal nur die anderen leider nicht =(

            @monolith: Ja soweit habe ich es auch schon gemerkt^^Ich habe es erstmal so stehen lassen damit man so ca. sieht was ich vor habe. Ich weiß an der Stelle nur leider nicht wie ich die drop-down Auswahl ansprechen kann...

            Kommentar


            • #7
              Mit $_POST['operator']

              Schau dir bei solchen Problemen einfach mal die Ausgabe von dem hier an:
              PHP-Code:
              var_dump($_POST); 
              Damit lässt du dir den gesamten Inhalt (inklusive Datentypen) von $_POST anzeigen. Sicherlich hilfreich um herauszufinden was unter welchem Namen abgelegt und übertragen wird.

              Kommentar


              • #8
                Also es zeigt ein array mit 0 Inhalt halt an. Wenn ich jetzt was in den Feldern eingebe, weißt er sie in arrays zu:
                (array(3) { ["zahl1"]=> string(1) "5" ["operator"]=> string(4) "plus" ["zahl2"]=> string(1) "4" })

                Ich muss nur sagen das es mir persönlich jetzt nicht weiter hilft... Habe gerade noch ein klein wenig getestet aber es hat nicht geklappt.

                Kommentar


                • #9
                  Naja dann weißt du, dass du definitiv bei dem select etwas falsch gemacht hast

                  Das name-Attribut einer option wird beim Senden nicht übermittelt. Das Attribut muss anders heißen.

                  Kommentar


                  • #10
                    Ich habs gestern noch hin bekommen.
                    Habe statt "name", "value" genommen und die option namen ohne [] geschrieben bzw. noch eine Variable auch dazu. So hat es dann geklappt. Vielen Dank euch für die Hilfe

                    Kommentar

                    Lädt...
                    X