Schotti: Daten in MYSQL Datenbank speichern

Hallo,

ich habe Formular gebastelt, mit dem bestimmte User etwas auf einer
Website veröffentlichen können! Ich habe jetzt folgende Problem! Ich kann die Daten zwar speichern aber wenn ich das Formular lade Speichert das Script das Formular auch schon. D. h. wenn ich etwas
erfassen will erfasse ich 2 Datensätze 1mal einen ohne Daten wenn ich das Formular lade und 1mal den den ich wirklich speichern wollte!
Wie kann ich das denn verhindern?

Gruß

Schotti

  1. Moin,

    ich habe Formular gebastelt, mit dem bestimmte User etwas auf einer
    Website veröffentlichen können! Ich habe jetzt folgende Problem! Ich kann die Daten zwar speichern aber wenn ich das Formular lade Speichert das Script das Formular auch schon. D. h. wenn ich etwas
    erfassen will erfasse ich 2 Datensätze 1mal einen ohne Daten wenn ich das Formular lade und 1mal den den ich wirklich speichern wollte!
    Wie kann ich das denn verhindern?

    Ja dazu müßte man nur wissen wie Du Dein Quelltext aussieht.. Hellsehen können wir nämlich noch nicht.

    ToMIRL

    1. Ja dazu müßte man nur wissen wie Du Dein Quelltext aussieht..

      HI,

      hier is er

      -----------------------------------------------------------------------------

      <?php
       $datum = date("d.m.Y");
       include("set_db.php");

      ?>

      <html>
      <head>
      <title>Bergwacht Sch&ouml;nseer Land News erfassen</title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

      </head>

      <body bgcolor="aabbcc" background="News%20erfassen%20Bergwacht%20Sch%F6nseer%20Land" text="#000000" on onLoad="javascript:document.news.erfasser.focus();" link="#000000" vlink="#000000" alink="#000000">

      <div align="center"><strong><font size="4" face="Verdana, Arial, Helvetica, sans-serif">_Test_<br>
        <br>
        <form name="news" id="news">
          <table width="50%" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td> <table width="100%" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Erfasst
                      von: </font></strong></td>
                    <td><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Datum:</font></strong></td>
                  </tr>
                  <tr>
                    <td><input name="erfasser" type="text" id="erfasser" size="40" maxlength="40" border="0"></td>
                    <td><input name="datum" type="text" id="datum" value="<?php echo $datum; ?>" disabled border="0"></td>
                  </tr>
                  <tr>
                    <td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Thema</strong></font></td>
                    <td>&nbsp;</td>
                  </tr>
                  <tr>
                    <td><input name="title" type="text" id="title" size="40" maxlength="50" border="0"></td>
                    <td>&nbsp;</td>
                  </tr>
                </table>
                <strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">N</font><font size="4" face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="2" face="Verdana, Arial, Helvetica, sans-serif">ews
                eingabe</font><font size="4" face="Verdana, Arial, Helvetica, sans-serif"><br>
                <textarea name="news" cols="60" rows="10" id="news"></textarea>
                </font></strong></font></strong>
                <table width="100%" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td><div align="center">
                        <input type="submit" name="Submit" value="Speichern" onClick="<?php include("save.php") ?>">
            <input type="reset" name="Submit2" value="Felder L&ouml;schen" onClick="javascript:document.news.erfasser.focus();">
                        <input type="button" name="Submit3" value="Schlie&szlig;en" onClick="javascript:window.close();">
                      </div></td>
                  </tr>
                </table></td>
            </tr>
          </table>
        </form>
        <br>
        </font></strong>
        <table width="49%" border="0" cellspacing="0" cellpadding="0">
          <tr>
            <td><div align="left"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>

      </strong></font></div></td>
          </tr>
        </table>
        <strong><font size="4" face="Verdana, Arial, Helvetica, sans-serif"> </font></strong></div>
      </body>
      </html>

      -----------------------------------------------------------------------------

      Gruß

      Schotti

      1. Moin,

        Ja dazu müßte man nur wissen wie Du Dein Quelltext aussieht..

        Mit welchem Editor hast Du diesen Quelltext erstellt?
        Warum fehlt das action Atribut bei Deiner Form?
        Wozu verwendest Du so viel JS?
        Wie fängst Du ungültige Usereingaben ab?
        Wie schreibst Du wann den Datensatz in die DB?
        Etwa hiermit?
        <body bgcolor="aabbcc" background="News%20erfassen%20Bergwacht%20Sch%F6nseer%20Land" text="#000000" on onLoad="javascript:document.news.erfasser.focus();" link="#000000" vlink="#000000" alink="#000000">

        TomIRL

        1. Wie schreibst Du wann den Datensatz in die DB?

          Ich schreibe den Datensatz mit diesem "Include" in die DB

          <input type="submit" name="Submit" value="Speichern" onClick="<?php include("save.php") ?>">

          Hier ist die "save.php" dazu"

          --------------------------------------------------------------------------

          <?php

          $erfasser = $_GET[erfasser];
           $news = $_GET[news];
           $title = $_GET[title];

          mysql_query("insert INTO news values('$title', '$news', '$erfasser', '$datum')") or die(mysql_error());

          ?>

          --------------------------------------------------------------------------

          Wie würde das mit dem Action atribut funktionieren?

          Gruß

          Schotti

      2. hi,

        <input type="submit" name="Submit" value="Speichern" onClick="<?php include("save.php") ?>">

        das tut vermutlich nicht das, was du willst.

        mach dir bitte klar, dass PHP server- und javascript clientseitig abläuft.

        dein code in save.php wird durch dieses include also bereits ausgeführt, noch bevor deine seiten an den client ausgeliefert wird.
        durch klicken des buttons passiert clientseitig anschließen vermutlich _gar nichts_ mehr (es sei denn, save.php würde entsprechenden javascript-code ausgeben).

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. durch klicken des buttons passiert clientseitig anschließen vermutlich _gar nichts_ mehr

          Hi,

          doch wenn ich den Button klicke speichernt er mir die Daten schon in die DB ich weiß jedoch nicht wie ich verhindern kann das er die daten nicht beim Form load ereignis speichert sondern nur beim Klick auf den Button!

          Gruß

          Schotti

          1. hi,

            durch klicken des buttons passiert clientseitig anschließen vermutlich _gar nichts_ mehr

            doch wenn ich den Button klicke speichernt er mir die Daten schon in die DB

            _nein_, dass passiert bereits vorher.

            wie ich schon sagte, mach dir bitte _erst mal_ den unterschied zwischen client- und serverseitigen abläufen klar - vorher hat es wenig sinn, sich weiter damit zu befassen.

            gruß,
            wahsaga

            --
            "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
            1. Mir ist klar, das PHP eine Serverseitige Sprache und JS eine Client gestützte Sprache ist.

              mach dir bitte _erst mal_ den unterschied zwischen client- und serverseitigen abläufen klar

              Er speichert mir die Daten ja 2mal ab das 1. mal wenn ich die Seite Lade! Da führt der Server den Quelltext das 1. mal aus und das 2. mal wenn ich den Submit button klicke.

              Nur gibt es jetzt eine Möglichkeit dieses 1.mal zu verhinder?

              Gruß

              Schotti

              1. hi,

                Mir ist klar, das PHP eine Serverseitige Sprache und JS eine Client gestützte Sprache ist.

                was das in der praxis bedeutet aber offenbar noch nicht.

                mach dir bitte _erst mal_ den unterschied zwischen client- und serverseitigen abläufen klar

                Er speichert mir die Daten ja 2mal ab das 1. mal wenn ich die Seite Lade! Da führt der Server den Quelltext das 1. mal aus und das 2. mal wenn ich den Submit button klicke.

                nein, sieh es bitte endlich ein! wenn du den button klickst, passiert da _nichts mehr_, weil PHP seine arbeit zu diesem zeitpunkt schon längst beendet hat!

                mit dir weiter zu diskutieren, bevor du nicht diesen unterschied verstanden hast, halte ich für zwecklos.

                Nur gibt es jetzt eine Möglichkeit dieses 1.mal zu verhinder?

                ja, abfragen, ob überhaupt schon daten übergeben wurden.

                aber das löst dein problem immer noch nicht, dass beim klicken auf den button nicht das passiert, was du erwartest.

                gruß,
                wahsaga

                --
                "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                1. aber das löst dein problem immer noch nicht, dass beim klicken auf den button nicht das passiert, was du erwartest.

                  HI,

                  was passiert denn beim Klick auf den Button? Führ er den Code ein 2. mal aus oder was macht er?

                  Gruß

                  Schotti

                  1. Hallo Schotti,

                    Ein Click auf einen Link löst eine Anfrage an einen Server aus, auch eine Klick auf einen Butten eine Formular löst eine Anfrage an einen Server aus:

                    User ---- Anfrage [Request] ----> Server
                                                         |
                                               Abarbeiten der Anfrage
                                                 nach Konfiguration
                                                         |
                                              Datei hat Extension ".php"
                                                         |
                                            Abgabe der Abarbeitung an PHP
                                                         |
                                               Einlesen des Quellcodes
                                                         |
                                                   Interpretation
                                                         |
                                            Übermittlung der Ausgabe an
                                                    den Server
                                                         |
                                                Hinzufügen von Headern
                    User <---- Auslieferung [Response]---´

                    Einem Server interessiert nicht wo Quellcode in einer Datei steht er nimmt entgegen und liefert aus und das bei jeder Anfrage. D. h. zwei Anfragen => Ergebnisse zum Speichern.

                    Gruß aus Berlin!
                    eddi

              2. Hallo Schotti

                Mir ist klar, das PHP eine Serverseitige Sprache und JS eine Client gestützte Sprache ist.

                an dem Quellcode ist das nicht erkennbar.

                mach dir bitte _erst mal_ den unterschied zwischen client- und serverseitigen abläufen klar

                Er speichert mir die Daten ja 2mal ab das 1. mal wenn ich die Seite Lade! Da führt der Server den Quelltext das 1. mal aus und das 2. mal wenn ich den Submit button klicke.

                Nur gibt es jetzt eine Möglichkeit dieses 1.mal zu verhinder?

                Ja - die gibt es und ich kann nur an Deine Vernunft appellieren: Du hast Dich an dieses Forum gewandt, weil Du siehst, Du brauchst Hilfe. Was Du noch nicht sehen kannst, ist, daß Dir wahsaga diese bereits gegeben hat. Dir fehlen schlichterdings Grundlagen. Beschäftige Dich mit http://de3.php.net/. Zur direkten Lösung Deines Problems solltest Du dich vornehmlich mit http://de3.php.net/manual/de/language.control-structures.php beschäftigen!

                Gruß aus Berlin!
                eddi

                1. Hallo,

                  ich habe jetzt dieses Action atribut in das Formular hinzugefügt und
                  jetzt funktionierts!
                  Vielen Dank für die Hilfe, ich werde mir diese Seite auf alle Fälle sehr genau anschauen!

                  Gruß

                  Schotti