Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten aus HTML-Formular in Datenbank eintragen lassen, wie?

Einklappen

Neue Werbung 2019

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

  • Daten aus HTML-Formular in Datenbank eintragen lassen, wie?

    Hey alle zusammen!

    Bin relativ neu auf dem Gebiet und habe folgendes Problem:
    Ich habe ein Formular in HTML erstellt, indem ich Namen, Anrede und E-Mail eintragen kann. Das Formular sieht folgerndermaßen aus:

    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
           "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Testdokument</title>
    <script type="text/javascript">
    function chkFormular () {
      if (document.form1.vname.value == "") {
        alert("Falsch!");
        document.form1.vname.focus();
        return false;
      }
      if (document.form1.nname.value == "") {
        alert("Falsch!");
        document.form1.nname.focus();
        return false;
      }
      if (document.form1.email.value == "") {
        alert("Falsch!");
        document.form1.email.focus();
        return false;
      }
      if (document.form1.email.value.indexOf("@") == -1) {
        alert("Falsch!");
        document.form1.email.focus();
        return false;
      }
    }
    </script>
    </head>
    <body>
    
    <h1>Dateneingabe:</h1>
    
    <form name="form1" action="out.php" method="post" onsubmit="return chkFormular()">
      <table border="0" cellpadding="0" cellspacing="3">
        <tr>
          <td align="right">Vorname</td>
          <td><input name="vname" type="text" size="30" maxlength="30"></td>
        </tr>
        <tr>
          <td align="right">Nachname</td>
          <td><input name="nname" type="text" size="30" maxlength="40"></td>
        </tr>
        <tr>
          <td align="right">E-Mail</td>
          <td><input name="email" type="text" size="30" maxlength="30"></td>
        </tr>
          <input type="radio" name="anrede" value="Herr"> Ein Herr<br>
          <input type="radio" name="anrede" value="Frau"> Eine Frau<br>
      </table>
        <td>
            <input type="submit" name="button" value="SENDEN">
            <input type="reset" value="LÖSCHEN">
        </td>
    </form>
    
    </body>
    </html>
    Mithilfe von PHP will ich die eingetragenen Werte nun in eine MySQL-Datenbank eintragen lassen. Leider komme ich mit den vorgegeben Beispielen oder Anleitungen, die Google hervor gebracht hat, als Anfänger nicht so gut zurecht. Kann jemand mir weiterhelfen an meinem konkreten Beispiel?
    Außerdem soll automatisch nach der erfolgten Eintragung per Echo-Befehl ein kurzer Text ausgegeben werden, wie wäre das möglich?
    Gibt auch einen virtuellen Keks!

    Vielen Dank schonmal an alle...

  • #2
    Such mal nach "Affenformular"

    Kommentar


    • #3
      Danke, das ist natürlich schon mal ein Ansatz!

      Nur hat mich die Komplexität eines "einfachen" Affenformulars etwas erschlagen. Ansätze der Überprüfung habe ich bereits mit JavaScript realisiert.

      Wie würde die Überprüfung und das Verarbeiten der Daten in PHP nach dem Affen-Schema denn in meinem Fall gehen?

      Kommentar


      • #4
        Genau wie ohne Javascript bzw. wie glaubst du unterscheidet sich dein Fall von einem Standardfall?

        Kommentar


        • #5
          Ich hab noch nie was von einem Affenformular gehört.

          Also in PHP hätte ich eine Datenbank-Verbindung aufgebaut und mit dem "INSERT INTO" Befehl die Datenbank mit den eingegeben Werten gefüllt.
          Die Überprüfung hätte ich direkt in HTML vorgenommen, damit mit JavaScript gleich ein Fenster raus ploppen kann mit dem Fehlertext?
          Quasi das der Client sich selbst überprüft und nicht der Server anhand des PHP-Skriptes!

          Ist das weit weg von dem Affenformular oder nur ein etwas anderer Weg?

          Kommentar


          • #6
            Zitat von XardasLehrling Beitrag anzeigen
            Ich hab noch nie was von einem Affenformular gehört.
            Dann siehe rkrs Beitrag.

            Zitat von XardasLehrling Beitrag anzeigen
            Also in PHP hätte ich eine Datenbank-Verbindung aufgebaut und mit dem "INSERT INTO" Befehl die Datenbank mit den eingegeben Werten gefüllt.
            [...]
            Ist das weit weg von dem Affenformular oder nur ein etwas anderer Weg?
            Das ist weder weit weg, noch ein anderer Weg, das ist einfach etwas anderes. Das Affenformular hat eigentlich nur mit der Auswertung der Daten zu tun, ob du diese jetzt in Datenbanken oder Dateien schreibst, oder einfach nur wieder ausgibst ist dabei egal. Beim Affenformular ist eigentlich nur die Weiterleitung in diesen 2 Fällen relevant:
            1. Daten sind ok -> Daten verarbeiten
            2. Daten sind nicht ok -> Formular (mit Fehlermeldung) nochmal anzeigen.
            Um nichts anderes kümmert sich das Affenformular. "Daten verarbeiten" wäre dann z.B. das Eintragen in die DB.

            Quasi das der Client sich selbst überprüft und nicht der Server anhand des PHP-Skriptes!
            Der Client kann (absichtlich) ungültige Daten schicken. NIEMALS Benutzerdaten zu vertrauen ist eine Grundlage bei jeglicher Form von Eingabe.

            Kommentar


            • #7
              Zitat von XardasLehrling Beitrag anzeigen
              Die Überprüfung hätte ich direkt in HTML vorgenommen, damit mit JavaScript gleich ein Fenster raus ploppen kann mit dem Fehlertext?
              Quasi das der Client sich selbst überprüft und nicht der Server anhand des PHP-Skriptes!
              Und wenn der Benutzer Javscript deaktiviert hat (z.B. mit NoScript)? Dann greifen deine ganzen "Überprüfungen" nicht mehr.

              Merk dir dazu folgendes: ALLES! was von Benutzern kommt ist BÖSE. IMMER. Gehe niemals von etwas anderem aus.

              Sobald du von guten Benutzern ausgehst und die Daten am Server nicht ausreichend prüfst, wird irgendwann einer kommen, der nicht so gut ist.

              Also: Eingaben prüfen (isset, empty, is_int, preg_*,...), für die Datenbank vorbereiten (z.B. mysqli_real_escape_string), bei der Ausgabe sichern (htmlspecialchars).
              Windows Server gehören NICHT ins Internet!

              Dildo? Dildo!

              Kommentar


              • #8
                Zitat von XardasLehrling Beitrag anzeigen
                Ich hab noch nie was von einem Affenformular gehört.
                http://php-de.github.io/jumpto/affenformular/

                ALLES! was von Benutzern kommt ist BÖSE. IMMER
                http://php-de.github.io/#security

                und

                http://php-de.github.io/jumpto/sicherheit/

                Dazu etwas Lesestoff
                The string "()()" is not palindrom but the String "())(" is.

                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar


                • #9
                  Probiere mal das aus..

                  Code:
                  	//hier wird gepfrüft ob das $_POST Array existiert
                  	if(isset($_POST)){
                  		
                  		/* hier wird geprüft ob vname, nname, email, anrede einen Wert enthalten
                  		   zusätzlich muss Input namens button gleich senden ist (praktisch wenn du mehrere Formulare hast und diese alle in einer 
                  		   Datei verarbeiten willst, so mache ich das jedenfalls immer) */	
                  		if('' != $_POST['vname'] && '' != $_POST['nname'] && '' != $_POST['email']  && '' != $_POST['anrede'] && "SENDEN" == $_POST['button'])
                  		
                  			//Zuweisung der Wert in PHP Variablen
                  			$vname = $_POST['vname'];
                  			$nname = $_POST['nname'];
                  			$email = $_POST['email'];
                  			$anrede = $_POST['anrede'];
                  			
                  			// HOST, USER, PASSWORD, Datenbank <-- müssen natürlich mit deinen Werten ersetzt werden 
                  			$db = new mysqli("HOST", "USER", "PASSWORD", "Datenbank");
                  			
                  			// Wenn Fehler in DB Verbindung, dann ausgabe
                  			if($db->connect_error){
                  				echo "Fehler in DB Verbindung <br/> Fehler {$db->error_list['0']}";
                  			}
                  			
                  			// Query um die Werte in die DB zu schreiben (tabelle muss der entsprechende Name der Tabelle sein)
                  			$sql = "INSERT INTO
                  				   		`tabelle`(vname, nname, email, anrede)
                  				   	VALUES(
                  						'$vname', '$nname', '$email', '$anrede'				   	
                  				   	)";
                  			// Objektinstanz $db führt Query aus
                  			$db->query($sql);
                  			
                  			
                  	}
                  Anzumerken ist hierbei, prepared Statement sind hier zu empfehlen. Thema SQL Injection.

                  Noch ein kleiner Tipp von Anfänger zu Anfänger..
                  http://tut.php-quake.net/de/ <-- hier werden viele deiner Fragen auf Antworten treffen, ich empfand das Tut als sehr hilfreich..

                  Kommentar


                  • #10
                    NEIN, probier das bitte nicht aus. Das ist gefährlicher Unsinn.

                    Anzumerken ist hierbei, prepared Statement sind hier zu empfehlen. Thema SQL Injection.
                    Statt eines Disclaimers solltest Du es entweder richtig oder gar nicht posten.
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #11
                      Leider komme ich mit den vorgegeben Beispielen oder Anleitungen, die Google hervor gebracht hat, als Anfänger nicht so gut zurecht. Kann jemand mir weiterhelfen an meinem konkreten Beispiel?
                      Helfen ja, für Dich machen, nein. Und Dir ist schon bewusst, dass Du im PHP-Forum gerade Javascript diskutierst?!
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #12
                        Also ich habe jetzt mal ein PHP-Skript erstellt, welches meine Daten aus HTML in eine Datenbank schreibt:

                        PHP-Code:
                        <?php
                        $verbindung 
                        mysql_connect("localhost""Name""Passwort")
                        or die (
                        "Keine richtigen Login-Daten verwendet");

                        mysql_select_db("Test")
                        or die (
                        "Verbindung nicht erfolgreich");

                        $anrede $_POST["anrede"];
                        $vname $_POST["vname"];
                        $nname $_POST["nname"];
                        $email $_POST["email"];

                        $eintrag "INSERT INTO test
                        (anrede, vname, nname, email)

                        VALUES
                        ('"
                        .mysql_real_escape_string($anrede)."', '".mysql_real_escape_string($vname)."', '".mysql_real_escape_string($nname)."', '".mysql_real_escape_string($email)."');";

                        $eintragen mysql_query($eintrag)

                        if (
                        $eintragen == true) {
                            echo 
                        "Erfolg..."
                        }     else
                        {
                            echo 
                        "Kein Erfolg..."
                        }
                        mysql_close($verbindung);
                        ?>
                        Meinungen dazu? Ist das zu simpel oder erfüllt es seinen Zweck?
                        Vielen Dank!

                        Nachtrag: Da die mysql_*-Befehle ja weg fallen sollen, wie sieht die Sache mit dem MySQLi-Standard aus?
                        Ich hab da überhaupt keine Erfahrung, weil ich bisher alle Versuche mit der alten Variante gemacht hab!

                        Kommentar


                        • #13
                          Zitat von XardasLehrling Beitrag anzeigen
                          Nachtrag: Da die mysql_*-Befehle ja weg fallen sollen, wie sieht die Sache mit dem MySQLi-Standard aus?
                          Ich hab da überhaupt keine Erfahrung, weil ich bisher alle Versuche mit der alten Variante gemacht hab!
                          Einfach z.B. mysql_connect durch mysqli_connect ersetzten?

                          Außerdem solltest du ggf. überprüfen, ob die zu übermittelten Werte gesetzt sind (z.B. mit empty() ) und diese valide Werte enthalten.

                          Kommentar


                          • #14
                            Wenn du noch am lernen bist, dann lerne direkt PDO:

                            Wie man von mysql* auf PDO umsteigt

                            Ausserdem: Der schließende Tag eines PHP-Blocks am Ende einer Datei ist optional. In einigen Fällen ist das Weglassen hilfreich:
                            • Es können ungewollte Whitespaces am Ende einer Datei auftreten, durch die ein späteres setzen von headern be-/verhindert werden kann.
                            • Außerdem verhindert dies, dass beim Output Buffering Whitespaces am Ende eines durch die eingebundenen Dateien erzeugten Parts.
                            • Im PSR Standard (PSR-2) ist ?> sogar ausdrücklich verboten, wenn in einer Datei ausschliesslich PHP verwendet wird (2.2 Files).

                            Kommentar

                            Lädt...
                            X