Ankündigung

Einklappen
Keine Ankündigung bisher.

Checkbox auswerten

Einklappen

Neue Werbung 2019

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

  • Checkbox auswerten

    Hallo,

    ich bin noch am Anfang von PHP und komme gerade nicht weiter.

    Folgendes: Ich habe eine Checkbox erstellt und möchte diese in einer If-Bedingung auswerten. Wenn sie aktivierte ist, soll etwas der Betrag mit Mehrwertsteuer berechnet werden und wenn nicht aktiviert dann ohne Mehrwertsteuer.

    Wie mache ich dass? Habe schon alles mögliche ausproebiert.

    Hier meine PHP Skript

    PHP-Code:
    <!DOCTYPE html>
    <html lang="de">
    <head>
    <meta charset="utf-8" />
    <title>Formular auswerten</title>

    </head>

    <body>

    <h3>Formular auswerten</h3>

    <?php
    if (isset($_POST["button"]))
    {
    $Nettopreisprov= ($_POST["Nettopreisprov"]);

    echo 
    "Nettopreis mit Provision: $Nettopreisprov";

    if(
    $_POST['MwSt']=1)
    $Bruttopreis = ($_POST['$Nettopreisprov'])*($Nettopreisprov+($Nettopreisprov*0.19));
    else
    $Bruttopreis = ($_POST["$Nettopreisprov"]);

    echo 
    "Bruttopreis: $Bruttopreis";
    }
    ?>

    <form method = "post">

    <p>
    <label for="Nettopreisprov">Nettopreis mit Provision: </label>
    <input type="text" name = "Nettopreisprov"
    placeholder="Eingabe"> <br>
    </p>

    <p>
    <input type="checkbox" name="MwSt"
    value="1" />
    <label for="MwSt">MwSt</label>
    </p>

    <p>
    <input type = "submit" name="button" value="Berechnen"/>
    </p>

    </form>

    </body>
    </html>

  • #2
    PHP-Code:
    if($_POST['MwSt']=1
    Signaturrrrrrr

    Kommentar


    • #3
      Du hast da ganz viele Fehler drin.
      Erst mal fügt man Code hier im Forum hinzu, unter Zuhilfenahme der Code-Tags, siehe auch die Schalter im erweiterten Editor..

      Dann schalte mal dein Error-Reporting ein siehe dazu https://php-de.github.io/jumpto/leitfaden/
      Dann lies mal in der Wissenssammlung nach zu Checkbox.
      Danach liest du noch den Abschnitt E-V-A--Prinzip in der Wissenssammlung.
      Auch wichtig bei Formularen und Kontextwechsel ist das Thema Sicherheit.

      So etwas
      PHP-Code:
      if($_POST['MwSt']=1
      ist natürlich grober Unfug.
      Erstens ist das eine Zuweisung, Vergleiche macht man mit mindestens 2 Gleichheitszeichen.
      Zweitens weist du nicht ob der Parameter Mwst von der Checkbox überhaupt übertragen wird.
      Drittens sind Parameter immer Zeichenketten, du willst aber auf eine Zahl prüfen, das geht immer in die Hose.

      Wenn man das alles mal berücksichtigt muss so was in etwa bei rumkommen
      PHP-Code:
      <?php

      $htmlOutput     
      null;
      $Nettopreisprov null;
      $Bruttopreis    null;
      $display 'no-display';

      if ( isset( 
      $_POST["button"] ) AND !empty( $_POST['Nettopreisprov'] ) ){

          
      $Nettopreisprov = (float)$_POST['Nettopreisprov'];

          if ( isset(
      $_POST['MwSt'] ) ){

              
      $Bruttopreis = (float)$_POST['Nettopreisprov'] * 1.19;

          }else{

              
      $Bruttopreis = (float)$_POST['Nettopreisprov'];
          }

          
      $Nettopreisprov number_format $Nettopreisprov "," " " );
          
      $Bruttopreis number_format $Bruttopreis "," " " );
          
      $display 'display';
      }

      ?>

      <!DOCTYPE html>
      <html lang="de">
      <head>
          <meta charset="utf-8">
          <title>Formular auswerten</title>
          <style>
              .no-display { display: none; }
              .display { display: block;}
          </style>
      </head>
      <body>

          <h3>Formular auswerten</h3>

          <form method="post">
              <p>
                  <label for="Nettopreisprov">Nettopreis mit Provision: </label>
                  <input type="number" name="Nettopreisprov" placeholder="z.B. 11,99" min="0.00" max="99999.99" step="0.01"> <br>
              </p>

              <p>
                  <input type="checkbox" name="MwSt">
                  <label for="MwSt">MwSt</label>
              </p>

              <p>
                  <input type = "submit" name="button" value="Berechnen">
              </p>
          </form>

          <div class="<?= $display?>">
              <h3>Ergebnis</h3>
              <p>
                  Nettopreis mit Provision: <var><?= $Nettopreisprov?></var><br>
                  Bruttopreis: <var><?= $Bruttopreis?></var>
              </p>
          </div>
      </body>
      </html>
      Hoffe das ist nachvollziehbar, habe deine Benamung mal übernommen, sonst blickst du nicht durch.
      Alles was du nicht kennst bitte nachlesen im PHP-Handbuch oder bei https://wiki.selfhtml.org/wiki/Schnell-Index/HTML

      Kommentar


      • #4
        Vielen Dank.
        Ich habe es hinbekommen und bin wieder sehr viel schlauer, wie ich die Checkbox anwende.

        Kommentar


        • #5
          Ich habe noch eine Frage zur Checkbox.

          Wie bekomme ich es hin das nach der Auswertung die Checkbox aktiviert bleibt nach der Berechnung?

          Hier mein Code:

          Code:
          if (isset ($_POST['MwSt']) )
          $Bruttopreis = $Nettopreisprov * 1.19
          else
          $Bruttopreis = $Nettopreisprov;
          
          
          
          <p>
          <input type="checkbox" name="MwSt" value="MwSt" />
          <label for="MwSt">MwSt</label>
          </p>

          Kommentar


          • #6
            /> warum mit Schrägstrich vor der schliessenden Klammer, wer hat dir das gezeigt?
            und wo sind die Code Tags?

            Siehe
            https://wiki.selfhtml.org/wiki/HTML/...und_Checkboxen

            Kommentar


            • #7
              Ist wohl irgendwie reingerutscht mit dem Schrägstrich.

              Ich möchte die Checkbox nicht am anfang als aktiviert setzen, sondern nach dem berechnen soll die checkbox in dem zustand bleiben, wie ausgewählt.

              Kommentar


              • #8
                Zitat von protestix Beitrag anzeigen
                /> warum mit Schrägstrich vor der schliessenden Klammer, wer hat dir das gezeigt?
                Das ist noch XHTML und ist auch heute noch valide (auch wenn optional).
                "Software is like Sex, it's best if it's free." - Linus Torvalds

                Kommentar


                • #9
                  Schon kapiert.
                  Du brauchst eine Variable die du mit dem Attribut checked füllst und dann einblendest, nach dem ein mal gerechnet wurde.
                  Das wirst du doch wohl hinbekommen?

                  JaMa
                  das war mir schon klar, wollte nur wissen ob er auf einer veraltenden Seite nachliest und übernimmt

                  Kommentar


                  • #10
                    Zitat von protestix Beitrag anzeigen
                    das war mir schon klar, wollte nur wissen ob er auf einer veraltenden Seite nachliest und übernimmt
                    Wieso veraltet? Das ist nach wie vor in HTML 5 gültig und ich mache es auch so, weil es meiner Ansicht nach lesbarer ist wenn jedes Element einen klaren "Schluss" hat.

                    Kommentar


                    • #11
                      Du ziehst da falsche Schlüsse. Ich habe nicht gemeint dass der Schrägstrich davor veraltet sei, sondern eventuell die Infomationsquelle wo er das her hat.
                      Nur das wollte ich wissen, da oftmals irgendwoher etwas kopiert wird, was sich hinterher als veraltet herausstellt.

                      Das ich wegen des Schrägstriches nachgefragt habe lag im übrigen daran, dass ich es in meinem Code nicht so vorgemacht habe.
                      Seine Antwort, "Ist wohl irgendwie reingerutscht mit dem Schrägstrich.", klingt auch nicht gerade danach, dass er weiss was er tut.

                      Kommentar


                      • #12
                        Zitat von hellbringer Beitrag anzeigen

                        Wieso veraltet? Das ist nach wie vor in HTML 5 gültig und ich mache es auch so, weil es meiner Ansicht nach lesbarer ist wenn jedes Element einen klaren "Schluss" hat.
                        Ist aber laut W3C Spezifikation für HTML5 "optional" und hat keinen Effekt auf "Void" Elemente. Der Backslash markiert nur bei sog. "Foreign" Elementen (MathML + SVG Namespace) das Start-Tag als selbst-schliessend.

                        Quellen:
                        https://www.w3.org/TR/html5/syntax.html#start-tags
                        https://www.w3.org/TR/html5/syntax.h...reign-elements

                        Kommentar


                        • #13
                          Zitat von CPCoder Beitrag anzeigen

                          Ist aber laut W3C Spezifikation für HTML5 "optional" und hat keinen Effekt auf "Void" Elemente. Der Backslash markiert nur bei sog. "Foreign" Elementen (MathML + SVG Namespace) das Start-Tag als selbst-schliessend.

                          Quellen:
                          https://www.w3.org/TR/html5/syntax.html#start-tags
                          https://www.w3.org/TR/html5/syntax.h...reign-elements
                          Optional eben.
                          Ich halte das auch so wie hellbringer. Es ist einfach angenehmer direkt zu erkennen, dass das Element geschlossen wurde, ohne auf den Name des Elements schauen zu müssen.
                          "Software is like Sex, it's best if it's free." - Linus Torvalds

                          Kommentar

                          Lädt...
                          X