Formular Daten werden nicht in die DB übertragen

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

  • Formular Daten werden nicht in die DB übertragen

    Hallo zusammen,

    nachdem ich hier im Forum schon einige Beiträge gelesen habe,
    und meine komplette Registrierungsseite umgeswitched habe funktioniert zwar die Prüfung auf Inhalt der Felder und eMail Adresse wunderbar, allerdings werden jetzt die Daten nicht mehr in die DB übertragen, nachdem alles richtig eingetragen wurde und der Senden Button gedrückt wurde.
    Die Weiterleitung auf die nächste Seite erfolgt nun auch zu meiner Zufriedenheit, sogar im mainFrame ;-)

    Hier kommt der Source für euch, ich denke ich habe nur eine kleine Funktion beim SubMit Button vergessen, kann es derzeit aber nicht nachvollziehen. Jedenfalls scheint das PHP Script zum Eintragen der DB nicht aktiviert zu werden.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Registrierung</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    <script language="JavaScript" type="text/JavaScript">
    <!--

    //-->Prüfen des Formulars / Keine Weiterleitung bei Fehleingabe
    function chkFormular()
    {
    if(document.form1.Vorname.value == "")
    {
    alert("Bitte geben Sie ihren Vornamen ein.");
    document.form1.Vorname.focus();
    return false;
    }
    if(document.form1.Name.value == "")
    {
    alert("Bitte Sie ihren Namen ein.");
    document.form1.Name.focus();
    return false;
    }
    if(document.form1.Straße.value == "")
    {
    alert("Bitte geben Sie ihre Straße ein.");
    document.form1.Straße.focus();
    return false;
    }
    if(document.form1.Hausnummer.value == "")
    {
    alert("Bitte geben Sie ihre Hausnummer ein.");
    document.form1.Hausnummer.focus();
    return false;
    }
    if(document.form1.Wohnort.value == "")
    {
    alert("Bitte geben Sie ihren Wohnort ein.");
    document.form1.Wohnort.focus();
    return false;
    }
    if(document.form1.Postleitzahl.value == "")
    {
    alert("Bitte geben Sie ihre Postleitzahl ein.");
    document.form1.Postleitzahl.focus();
    return false;
    }
    if(document.form1.eMail.value.indexOf('@') == -1)
    {
    alert("Bitte kontrolliere Sie noch einmal ihre eMail Adresse");
    document.form1.eMail.focus();
    return false;
    }
    return true;
    }


    //-->
    </script>
    <link href="../../CSS/navi.css" rel="stylesheet" type="text/css">
    <style type="text/css">
    <!--
    body {
    background-color: #CCCCCC;
    }
    -->
    </style></head>

    <body>

    <?php
    //Verbindung zur DB Herstellen und Fehlerausgabe
    error_reporting(E_ALL);

    include 'konstante_chars.php';
    // Konfigurationsdatei laden

    if(!@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS)) {
    die("Es konnte keine Verbindung zur Datenbank aufgebaut werden. Bitte versuchen Sie es später erneut.");
    }

    //echo "Verbindung wurde aufgebaut<br />\n";

    if(!mysql_select_db(MYSQL_DATABASE)) {
    die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
    }

    //echo "Die Datenbank wurde ausgewählt";




    ?>

    <?php
    //Die Formulardaten werden mit diesem Script in die DB geschrieben
    if(!empty($_POST))
    {
    $sql = "INSERT INTO gruenderwettbewerb
    (
    Vorname,
    Name,
    Straße,
    Hausnummer,
    Wohnort,
    Postleitzahl,
    eMail
    )
    VALUES
    (
    '" . addslashes($_POST["Vorname"]) . "',
    '" . addslashes($_POST["Name"]) . "',
    '" . addslashes($_POST["Straße"]) . "',
    '" . addslashes($_POST["Hausnummer"]) . "',
    '" . addslashes($_POST["Wohnort"]) . "',
    '" . addslashes($_POST["Postleitzahl"]) . "',
    '" . addslashes($_POST["eMail"]) . "'
    )
    ";
    mysql_query($sql) OR die(mysql_error());
    exit;
    }
    ?>


    <form name="form1" action="../wettbewerbsunterlagen/wettbewerb.htm" target="mainFrame"
    method="post" onSubmit="return chkFormular()" value="Absenden">
    <table width="80%" border="0">
    <tr>
    <td width="15%"><h1 class="fett_gro&szlig;">&nbsp;</h1></td>
    <td width="85%"><h1 class="mediumfett">Um Ihre Daten f&uuml;r uns zu erfassen, f&uuml;llen Sie bitte die folgende Felder aus und klicken auf absenden. Anschlie&szlig;end werden Sie zu den Wettbewerbsunterlagen weitergeleitet. </h1>
    <p class="main_klein">Ihre Daten werden nur von uns zu statistischen Zwecken verwendet. Die Daten werden nicht an Dritte weiter gegeben. </p></td>
    </tr>
    <tr align="left" valign="top" class="main_klein">
    <td height="35" align="left" valign="middle">Vorname</td>
    <td valign="middle"><input name="Vorname" type="text" id="Vorname"></td>
    </tr>
    <tr align="left" valign="top" class="main_klein">
    <td height="36" align="left" valign="middle">Name</td>
    <td valign="middle"><input name="Name" type="text" id="Name"></td>
    </tr>
    <tr align="left" valign="top" class="main_klein">
    <td height="33" align="left" valign="middle">Stra&szlig;e</td>
    <td valign="middle"><input name="Stra&szlig;e" type="text" id="Stra&szlig;e"></td>
    </tr>
    <tr align="left" valign="top" class="main_klein">
    <td height="32" align="left" valign="middle">Hausnummer</td>
    <td valign="middle"><input name="Hausnummer" type="text" id="Hausnummer"></td>
    </tr>
    <tr align="left" valign="top" class="main_klein">
    <td height="32" align="left" valign="middle">Wohnort</td>
    <td valign="middle"><input name="Wohnort" type="text" id="Wohnort"></td>
    </tr>
    <tr align="left" valign="top" class="main_klein">
    <td height="32" align="left" valign="middle">Postleitzahl</td>
    <td valign="middle"><input name="Postleitzahl" type="text" id="Postleitzahl"></td>
    </tr>
    <tr align="left" valign="top" class="main_klein">
    <td height="32" align="left" valign="middle">eMail</td>
    <td valign="middle"><input name="eMail" type="text" id="eMail"></td>
    </tr>
    <tr class="main_klein">
    <td height="35">&nbsp;</td>
    <td class="main"><input name="Absenden" type="submit" id="Absenden" value="Absenden"></td>
    </tr>
    </table>
    </form>
    <p>&nbsp;</p>
    </body>
    </html>

  • #2
    Re: Formular Daten werden nicht in die DB übertragen

    Original geschrieben von Matty2k
    Jedenfalls scheint das PHP Script zum Eintragen der DB nicht aktiviert zu werden.

    [...]

    <form name="form1" action="../wettbewerbsunterlagen/wettbewerb.htm" target="mainFrame"
    method="post" onSubmit="return chkFormular()" value="Absenden">
    PHP-Skripte sind zumiest in Dateien, die auf .php enden, nicht auf .htm, oder werden auf deinem Server auch .htm geparsed?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      <form name="form1" action="../wettbewerbsunterlagen/wettbewerb.htm"
      das script sollte vielleicht die endung .php haben.
      OffTopic:
      mist zu langsam

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Nein,

        das ist nur die URL auf die Weitergeleitet wird.
        Das Script steht ja oben im Source.
        Einmal Datenbank Connect und einmal darunter das Senden der Daten an die DB.
        Wie gesagt, es hat auch funktioniert, aber jetzt leitet er nach Prüfung auf dei angegebene Seite weiter, aber trägt die Daten nicht mehr in die DB ein.

        mfG

        Matty

        Kommentar


        • #5
          Original geschrieben von Matty2k
          Nein,

          das ist nur die URL auf die Weitergeleitet wird.
          nein, ist es nicht.

          es ist der URL, denn du als ziel für die formulardaten im action-attribut angegeben hast - und da ich nirgendwo sehe, dass du das anschließend noch verändern würdest, werden die daten auch da hin geschickt.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Wie zu lösen?

            OK,

            wenn ich nun aber das action Attribut weglasse,
            sprich die URL dort weglasse, wird nur eine leere Seite angezeigt und die Daten werden immer noch nicht in die DB eingetragen.

            Wie kann ich nun die Seite ändern, um das Formular zu prüfen, aber dann anschließend, wenn die Daten auf Klick des Senden Buttons gesendet werden, auch in die Datenbank einzutragen?

            Das ist absolut zu hoch für mich, da ich gerade erst mit php und Javascrip angefangen habe. Ich weiß auch nicht wie php und Java zusammen hängen.

            Jedenfalls sollen die Daten nicht durch ein anderes php File verarbeitet werden.

            mfG

            Matty

            Kommentar


            • #7
              Daten werden eingetragen ...

              .. wie ich gerade getestet habe, werden folgende Aktionen ausgeführt,
              wenn ich das action Argument weglasse.

              Das Formular wird geprüft, und zwar jedes Feld. GUT ;-)
              Die Daten werden auch in die DB eingetragen, wenn auf den Senden Button gedrückt wird und alle Felder korrekt ausgefüllt wurden Sehr Gut ;-)
              Es wird nur auf eine leere Seite weitergeleitet, wenn überhaupt weitergeleitet wird, es wird jedenfalls nur eine leere Seite im Main Frame angezeigt, das ist sehr schlecht ... :-(

              Wie bzw an welcher Stelle kann ich nun die Weiterleitung auf eine Seite im mainFrame einfügen ???

              Matty

              Kommentar


              • #8
                header ist dein Freund, und zwar anzuwenden, nach dem die Daten überprüft und korrekt in die DB eingetragen wurden.

                Kommentar


                • #9
                  Header

                  OK,

                  was bedeutet genau nachdem ich die Daten in die DB eingetragen habe? Einfach nach dem Script einfügen? Als separatzes Script oder kann ich das mit in das andere Scrip schreiben?

                  Geht damit überhaupt das öffnen einer Seite im mainFrame?

                  Habe es eben getestet. Er gibt dann bereits auf der Formularseite eine Fehlermeldung aus, dass dereits Daten gesendet bzw geändert wurden ... :-(

                  Hat eventuell jemand einen Vorschlag in Codeform .. ?
                  Ich schaffe es sonst nicht.

                  Dann kommt bei mir entweder als Ergebnis zu stande:
                  Eintragen und überprüfen JA, Weiterleiten NEIN
                  oder
                  Eintragen und Überprüfen NEIN, Weiterleiten JA

                  mfG

                  Matty

                  Kommentar


                  • #10
                    Du mußt die Header-Anweisung setzen, bevor das Script Daten ausgibt.
                    Idealerweise brichst Du nach dem Header die weitere Verarbeitung mithilfe von Break; ab.

                    Bsp.:

                    if (isset($_POST[...]) {
                    mache Datenbankqueries
                    header("location:ziel target='mainframe'");
                    break;
                    }
                    else {
                    zeig den weiteren Inhalt der Seite an
                    }
                    Yeah !

                    Kommentar


                    • #11
                      Original geschrieben von DaGuertliz
                      Idealerweise brichst Du nach dem Header die weitere Verarbeitung mithilfe von Break; ab.
                      break ist an der stelle vollkommen unsinnig.
                      die oder exit wären geeignetere kandidaten.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Ja abbrechen will ich die Aktion doch nicht ..
                        es sei denn die wird wieder aufgenommen.

                        Also was meinst du genau mit DB Queries? Befehle an die DB?
                        Bzw das Übertragen? Somit kommt also der erste Teil ganz an den Anfang und der Rest nach den DB Befehlen darunter?

                        Irgendwie fusioniert das noch nicht so wirklich. Aber der Weg scheint der richtige.

                        mfG

                        Matty

                        Kommentar


                        • #13
                          was heißt denn im mainFrame öffen? wo findet sich das Eingabeformular? im mainFrame selbst? wenn ja, dann brauchst du dich keine Gedanken drüber zu machen. Die Version von DaGuertliz ist komplette Blödsinn, denn PHP kennt keine Frame, weil Frame nur clientseitig existiert. Wenn du irgendein anderes Frame aktualisieren willst mußt du per JS machen.

                          wie schon gesagt, bei Verwendung von header darfst du keine Ausgabe vorher haben; die Fehlermeldung kannst du als Suchwort verwenden und such einfach mal im Forum danach. Hier als Bsp.
                          PHP-Code:
                          ...
                          if () {
                          // - Eingabe validieren
                          // -- falls OK, in die DB eintragen
                          // -- DB-Operaration erfolgreich
                          // ----> header("location:http://www.deineSite.de/ziel.php?para=...");
                          } else {
                          // Formular für Eingabe anzeigen
                          }
                          ... 
                          der Abfang bei Fehleingabe oder mislungene DB-Operation darfst du selbst einbauen.

                          Kommentar


                          • #14
                            OK,

                            ich verstehe im Prinzip den logischen Ablauf, wie geprüft, bzw wann weitergeleitet werden darf. Allerdings prüfe ich die Formularfelde mit JavaScrip, wie im Code zu sehen ist und die DB Verbindung und Datenübertragung an die DB werden mit einem PHP Script getätigt.

                            Somit kann ich doch die eben genannte Variante nicht ohne weiteres umsetzen, denn ich kann ja das prüfergebnis aus dem Javascript nicht an das PHP Script geben (bspw. false) damit ich hier dann die Aktion header bzw die Weiterleitung aktivieren kann.

                            Oder liege ich da jetzt total daneben? Jedenfalls ist das Verständnis bei mir nicht vorhanden, wie ich das Resultat von dem javascrip an das PHP Script zum DB Eintrag durchführen kann.

                            Wäre noch mal dankbar um Hilfe ... :-(

                            mfG

                            Matty

                            Kommentar


                            • #15
                              da javascript nicht vorhanden sein muss, ist eine überprüfung von eingaben damit ohnehin immer nur optionaler natur.
                              eine serverseitige überprüfung der daten im script ist unerlässlich.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X