Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler in Formularauswertung

Einklappen

Neue Werbung 2019

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

  • Fehler in Formularauswertung

    Hi, ich bin absoluter PHP Anfänger und arbeite mich gerade durch ein Lehrbuch. Leider habe ich Probleme, das mir der Browser die Eingaben anzeigt.
    Ich habe zwei dateien: Eine HTML mit dem Programmcode für ein Formular und die andere als PHP mit einer $_POST Anweisung.
    Das Formular wird mir auch im Browser angezeigt, aber sobald ich auf Absenden drücke zeigt mir der Browser den Inhalt der PHP Datei an (Also den kompletten Code) anstatt eine Auswertung zu machen.

    Das ist mein HTML-Code:

    HTML-Code:
    <!DOCTYPE html><html><head><meta charset="utf-8"></head><body>
    <p>Bitte tragen Sie Ihre Adresse ein.</p>
    <form action = "u_eingabe.php" method = "post">
    <p><input name = "vor"> Vorname</p>
    <p><input name = "nach"> Nachname</p>
    <p><input name = "str"> Straße</p>
    <p><input name = "plz"> Postleitzahl</p>
    <p><input name = "ort"> Ort</p>
    <p><input type = "submit">
    <input type = "reset"></p>
    </form>
    </body></html>
    und PHP:

    PHP-Code:
    <!DOCTYPE html><html><head><meta charset="utf-8"></head><body>
    <?php
    echo "<p>Ihre Adresse lautet:</p>";
    echo 
    "<p>" $_POST["vor"] . " " $_POST["nach"] . "<br>";
    echo 
    $_POST["str"] . "<br>";
    echo 
    $_POST["plz"] . " " $_POST["ort"] . "</p>";
    ?>
    </body></html>


  • #2
    Zitat von JakubH Beitrag anzeigen
    Hi, ich bin absoluter PHP Anfänger und arbeite mich gerade durch ein Lehrbuch. Leider habe ich Probleme, das mir der Browser die Eingaben anzeigt.
    Ich habe zwei dateien: Eine HTML mit dem Programmcode für ein Formular und die andere als PHP mit einer $_POST Anweisung.
    Das Formular wird mir auch im Browser angezeigt, aber sobald ich auf Absenden drücke zeigt mir der Browser den Inhalt der PHP Datei an (Also den kompletten Code) anstatt eine Auswertung zu machen.

    Das ist mein HTML-Code:

    <!DOCTYPE html><html><head><meta charset="utf-8"></head><body>
    ....
    Du darfst deine HTML-Datei nicht als Datei laden - dann steht z.B. in der Browserzeile
    HTML-Code:
    file:///C:/xampp/htdocs/DeineHTMLDatei.html
    - sondern vom localhost, der natürlich eingeschaltet sein muß. Also:
    HTML-Code:
    http://localhost/DeineHTMLDatei.html
    Mach dir, wenn du schon erkannt hast, daß du Anfänger bist, entsprechend grundlegend klar, wie das Ganze funktioniert. Was wer wie wo hinsendet usw. Dafür gibt es Tutorials und Lehrbücher.

    Erg.: Schau dir auch mal den Tread "https://www.php.de/forum/webentwickl...%C3%BCbergeben" an da hat jemand ähnliche Probleme.

    Kommentar


    • #3
      Danke dir. Hat jetzt funktioniert.

      Kommentar


      • #4
        Zitat von JakubH Beitrag anzeigen
        Danke dir. Hat jetzt funktioniert.
        Ha-ha ... halt! Du verletzt das EVA-Prinzip. Der PHP-Code gehört oben drüber, noch vor
        HTML-Code:
        <!DOCTYPE html>
        Also eher so:
        PHP-Code:
        <?php
          $strEcho 
        "<p>Ihre Adresse lautet:</p>";
          
        $strEcho $strEcho.'<p>'$_POST["vor"] . " " $_POST["nach"] . '<br>';
          
        $strEcho $strEcho.$_POST["str"] . '<br>';
          
        $strEcho $strEcho.$_POST["plz"] . ' ' $_POST["ort"] . '</p>';
        ?>

        <!DOCTYPE html>
        <html lang="de-DE">
          <head>
            <meta charset="utf-8">
            <title>Empfang der Daten</title>
            <!-- <link href="CSS_sheets/layout_xyz.css" rel="stylesheet" type="text/css" /> -->
          </head>
          <body>
            <?php echo $strEcho?>      
          </body>
        </html>
        Außerdem fehlen:
        • Validierung der Daten
        • Berücksichtigung des Kontextwechsels.

        Und bitte: Code-Tags verwenden!!!

        Kommentar


        • #5
          marie123
          Warum der Prefix str bei deinen Variablen? protestix hat es eigentlich mal ganz gut auf den Punkt gebracht:

          Zitat von protestix Beitrag anzeigen
          $sName ist das gleiche wie $name. Wenn das Präfix s bei dir für string steht, dann lasse es weg. Variablen können jeden Zustand annehmen vom integer bis hin zum file handle oder Objekt.
          Sei dir dessen immer bewusst und verlasse dich nie darauf.
          PHP wurde zum Zusammenspiel mit Webseiten entwickelt und beim Browser ist alles String wenn es ankommt, egal was es vorher war.
          Und wenn Parameter vom Formular kommen ist auch alles wieder String. Eine Id wird erst dann zu einem Integer in dem sie dazu gezwungen wird. Siehe Casting.
          .
          Und warum nicht einfach den Verknüpfungsoperator verwenden?
          https://www.php.net/manual/de/langua...ors.string.php

          Kommentar


          • #6
            Zitat von Meister1900 Beitrag anzeigen
            marie123
            Warum der Prefix str bei deinen Variablen? protestix hat es eigentlich mal ganz gut auf den Punkt gebracht:



            Und warum nicht einfach den Verknüpfungsoperator verwenden?
            https://www.php.net/manual/de/langua...ors.string.php
            Das ist bekannt, daß protestix nicht müde wird, diesbezüglich bei jeder passenden und unpassenden Gelegenheit sein "Ceterum Censeo..." anzubringen, ja.

            Daß alles, was "beim Browser ... ankommt", String ist, stimmt so auch nicht, abgesehen davon, daß ja auch was von der DB ankommt. Das ist also auch mal wieder Quatsch.

            Warum nicht einfach den Verknüpfungsoperator? Ich mag den nicht, ganz einfach.

            Kommentar


            • #7
              Etwas OffTopic, sorry, aber... wie ich meine Variablen benenne ist vollkommen irrelevant für guten oder sauberen Code!
              Ausschlaggebend ist, dass ich oder auch andere, die an dem Code arbeiten sollen, möglichst am Bezeichner erkennen, was sich hinter Variablen verbirgt.

              Ob ich also $name oder $sName schreibe hat mit der Qualität absolut nichts zu tun. Ich persönlich verwende bspw. auch den Präfix für den Datentypen, gerade weil sich jeder beliebige Datentyp hinter dem Bezeichner verbergen kann.
              Anhand des Präfix weiß ich genau, welcher Datentyp an der Stelle erwartet wird. Die Aussage "kann mal das, mal das sein" ist da aus meiner Sicht nicht professionell, denn der Entwickler sollte dafür sorgen, dass eine bestimmte Variable nur mit einem definierten Datentypen befüllt werden kann, bzw. löst dies über Fehlerbehandlung.

              Lege ich als Entwickler eine Variable an, weiß ich auch in dem Moment schon, wozu sie da ist. Es gibt i.d.R. keinen für mich ersichtlichen Grund, diese mit einem anderen Datentypen zu füllen.

              Das nur zum Thema Präfix, sorry für OT.
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar

              Lädt...
              X