Ankündigung

Einklappen
Keine Ankündigung bisher.

Seite schickt beim Neuladen Daten erneut an Datnebank

Einklappen

Neue Werbung 2019

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

  • Seite schickt beim Neuladen Daten erneut an Datnebank

    Hi Leute,
    wie schon im Titel gesagt, ich hab das Probelm das die Daten aus einem Formular erneut an die Datenbank gesendet werden und dort ernuet gespeichert werden.
    Jetzt kommt nicht wieder: Ja benutz doch die SuFu oder Google. Hab ich ;D
    Ich hab auch einige Lösungen gefunden.
    Mit Session oder der header() funktion oder so. Aber wie ihr schon gemerkt habt. Ich bin blutiger Anfänger.

    Könnte mir jemand erklären wie ich vorgehen muss und wie ich das bewerkstellige?

    Der Code:
    PHP-Code:
    <?php
    include("db.php");
    $defaultWert null;
    if ( isset(
    $_POST['aussteller']) ) {

        
    $aussteller $_POST['aussteller'];
        
    $standort $_POST['standort'];
        
    $firma $_POST['firma'];
        
    $besucher $_POST['besucher'];
        
    $besucham $_POST['besucham'];
        
    $ankunft $_POST['ankunft'];
        
    $abreiseam $_POST['abreiseam'];
        
    $abfahrt $_POST['abfahrt'];
        
    $betrifft $_POST['betrifft'];
        
    $besucherraum $_POST['besucherraum'];
        
    $zimmerres $_POST['zimmerres'];
        
    $hotel $_POST['hotel'];
        
    $bemerkung $_POST['bemerkung'];
        
    $betreuung $_POST['betreuung'];
        
    $zulasten $_POST['zulasten'];
        
    $bewirtung $_POST['bewirtung'];
        
    $fahnen $_POST['fahnen'];
        
    $fahr $_POST['fahr'];
    }

    else{
       
    $aussteller $defaultWert;
       
    $standort $defaultWert;
       
    $firma $defaultWert;
       
    $besucher $defaultWert;
       
    $besucham $defaultWert;  
       
    $ankunft $defaultWert;
       
    $abreiseam $defaultWert;
       
    $abfahrt $defaultWert;
       
    $betrifft $defaultWert;
       
    $besucherraum $defaultWert;
       
    $zimmerres $defaultWert;
       
    $hotel $defaultWert;
       
    $bemerkung $defaultWert;
       
    $betreuung $defaultWert;
       
    $zulasten $defaultWert;
       
    $bewirtung $defaultWert;
       
    $fahnen $defaultWert;
       
    $fahr $defaultWert;

    {
    $eintrag "INSERT INTO besmeld (Aussteller, Standort,Firma,Besucher,BesuchAm,Ankunft,AbreiseAm,Abfahrt,Betrifft, Besucherraum,Zimmerreservierung,ImHotel,Bemerkungen,BetreuungDruch,ZuLasten, Bewirtung,FahnenHissen, Fahrbereitschaft ) 
    VALUES ('
    $aussteller', '$standort','$firma','$besucher','$besucham','$ankunft','$abreiseam','$abfahrt','$betrifft','$besucherraum','$zimmerres','$hotel','$bemerkung','$betreuung','$zulasten','$bewirtung','$fahnen','$fahr')";
    $eintragen mysqli_query($db$eintrag);}
    ?>

    Code:
    <html>
    <head>
    	<link rel="stylesheet" type="text/css" href="style.css">
    </head>
    
    <body>
    	<div class="header">
    		<h1 class="headline">Besuchermeldungen anlegen</h1>
    	</div>
    	<div >
    		<form class="formu" action="" method="post" >
          <table>
            <tr>
    			      <td>Aussteller</td> <td><input name="aussteller" type="text" maxlength="100" size="53">  </td>
            </tr>
            <tr>
                <td>Standort</td> <td><SELECT NAME="standort">
                                       <OPTION>Niles
                                       <OPTION>Kapp
                                       </SELECT></td>
            </tr>             
    			  <tr>
                <td>Firma</td> <td> <textarea name="firma" cols="40" rows="5"></textarea>
            </tr> 
            <tr>
                <td>Besucher</td> <td> <textarea name="besucher" cols="40" rows="5"></textarea>
            </tr>
            <tr>
             <td> Besuch am: </td>   
             <td> <input name="besucham" type="text" maxlength="100"> Jahr-Monat-Tag &#x007C; YYYY-MM-DD</td>
            </tr>   
            <tr>
             <td> Ankunft </td>   
             <td> <input name="ankunft" type="text" maxlength="100"> Stunden:Minuten &#x007C; SS:MM</td>
            </tr>   
            <tr>
             <td> Abreise am: </td>   
             <td> <input name="abreiseam" type="text" maxlength="100" > Jahr-Monat-Tag &#x007C; YYYY-MM-DD</td>
            </tr>    
            <tr>
             <td> Abfahrt </td>   
             <td> <input name="abfahrt" type="text" maxlength="100"> Stunden:Minuten &#x007C; SS:MM</td>
            </tr> 
            <tr>
                <td>Betrifft</td> <td> <textarea name="betrifft" cols="40" rows="5"></textarea></td>
            </tr>  
            <tr>
                <td>Besucherraum</td> <td> <input name="besucherraum" type="text" maxlength="200" list="raueme" size="30">
                  <datalist id="raueme">
                     <option value="Ferienkalender">
                    <option value="K2T Raum B 0.1(B)">
                    <option value="K2T Raum B 0.2(B)">
                    <option value="K2T Raum B 1.1">
                    <option value="K2T Raum B 2.1">
                    <option value="K2T Raum K 1.1(B)">
                    <option value="KAPP1 Raum 110">
                    <option value="KAPP1 Raum 201(B)"> 
                    <option value="KAPP1 Raum 206">
                    <option value="KAPP1 Raum 207(B)">
                    <option value="KAPP1 Raum 208(F)">
                    <option value="KAPP1 Raum 209">
                    <option value="KAPP1 Raum 210(B)">
                    <option value="Kapp1 Raum 403(F)">
                    <option value="KAPP1 Raum 408(B)">
                    <option value="KAPP1 Raum E01(B)">
                    <option value="KAPP1 Raum E02(B)">
                    <option value="KAPP1 Raum E09">
                    <option value="KAPP1 Raum H5-1">
                    <option value="KAPP1 Raum H5-2">
                    <option value="KAPP1 Raum H5-3">
                    <option value="KAPP1 Raum H62(B)">
                    <option value="KAPP1 Raum T24">
                    <option value="KAPP1 Schulungsraum 1">
                    <option value="KAPP1 Schulungsraum 2">
                    <option value="KAPPUSA Meeting Room 1">
                    <option value="NILES Raum 2211, ZOG">
                    <option value="NILES Raum 3101, VEG Einkauf">
                    <option value="NILES Raum 3116, VEG ggü Sek.">
                    <option value="NILES Raum 3122, VEG Kopfende"> 
                    <option value="Niles Schulungsraum Hall 3">
                    <option value="N-ITE-URLAUB">  
                    </datalist>  
                </td>
            </tr>
            <tr>
                <td>Zimmerreservierung</td> <td> <textarea name="zimmerres" cols="40" rows="5"></textarea> </td>
            </tr>  
            <tr>
                <td>Im Hotel</td> <td> <textarea name="hotel" cols="40" rows="5"></textarea> </td>
            </tr>
            <tr>
                <td>Zu Lasten</td> <td> <textarea name="zulasten" cols="40" rows="5"></textarea> </td>
            </tr>
            <tr>
                <td><p title="z.B. Wlan-Gutschein, Beamer etc. n&ouml;tig">Bemerkung</p></td> <td> <textarea name="bemerkung" cols="40" rows="5" ></textarea> </td>
            </tr> 
            <tr>
                <td>Betreuung durch</td> <td> <textarea name="betreuung" cols="40" rows="5"></textarea> </td>
            </tr> 
            <tr>
                <td>Bewirtung<br>
                <a href="bewirtungsformular.php" target="_blank">Bewirtungsformular</a></td> <td> <textarea name="bewirtung" cols="40" rows="5"></textarea> </td>
            </tr>  
            <tr>
                <td>Fahnen hissen</td> <td> <textarea name="fahnen" cols="40" rows="5"></textarea> </td>
            </tr> 
            <tr>
                <td>Fahrbereitschaft</td> <td> <textarea name="fahr" cols="40" rows="5"></textarea> </td>
            </tr>
            </table>
    
    
    
    
    			<input type="submit" value=" Absenden ">
          <input type="reset" value=" Abbrechen">
          <a href="index.html">Zurueck</a>
    		</form>
    	</div>
    </body>
    
    </html>


  • #2
    Seite schickt beim Neuladen Daten erneut an Datnebank

    Zitat von Webmensch
    Aber wie ihr schon gemerkt habt. Ich bin blutiger Anfänger.
    Das ist nicht das erste Mal, dass du das schreibst...das sollte keine Ausrede für dein Problem sein.

    Schau´ dir doch bitte nochmal deinen Code an:
    PHP-Code:
    if ( isset($_POST['aussteller']) ) {
    // Formular Werte
    } else {
    // Default Werte

    $eintrag "INSERT INTO tabelle (...) VALUES ( Werte aus Formular oder Default )"
    Fällt dir was auf?
    Delirius

    PHP - Grundlagen / PDO - Tutorial / PDO - Dokumentation

    Kommentar


    • #3
      Nein eigentlich fällt mir nichts auf

      Es tut mir ja leid wenn ich als Anfänger Fragen über PHP in ein PHP Forum poste

      Kommentar


      • #4
        Script macht was es soll. Ich kann keinen Fehler erkennen. Schön dass ich helfen konnte.
        Zitat von derwunner
        "Ein FISI ist auf gut-deutsch der Netzwerker. Das heißt Du gehst rauß zum Kunden oder auf die Straße und verlegst Leitungen" - derwunner 2015

        Kommentar


        • #5
          Du hast das außerhalb deiner if Abfrage.
          Allgemein ist das bei php aber so, wenn du einmal nen submit button drückst, und danach ohne eine weitere aktion die Seite neulädst, er den button im Hintergrund nochmal "drückt".

          Oder irre ich mich da ? Ich nutze keine submit buttons, das ist nicht wirklich dynamisch.
          No Sacrifice , no Glory--

          Kommentar


          • #6
            Zitat von Webmensch Beitrag anzeigen
            Jetzt kommt nicht wieder: Ja benutz doch die SuFu oder Google. Hab ich ;D
            Gar nicht nett.



            Aber ja, wenn du den Request nochmal abschickst wird natürlich auch noch einmal gespeichert.
            Was genau ist daran das Problem?
            Funktioniert die IF-Else-Struktur eigentlich so, wie du dir das vorstellst?
            Relax, you're doing fine.
            RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

            Kommentar


            • #7
              Das mit dem nochmal drücken stimmt so nicht ganz.

              Die Daten die beim Seitenaufruf an den Server gesendet werden ($_POST) werden bei F5 noch einmal gesendet (Die Seite wird genauso aufgerufen wie vorher).
              Zitat von derwunner
              "Ein FISI ist auf gut-deutsch der Netzwerker. Das heißt Du gehst rauß zum Kunden oder auf die Straße und verlegst Leitungen" - derwunner 2015

              Kommentar


              • #8
                Das was du in den If Klammern geschrieben hast wird ausgeführt, wenn die $_POST['aussteller'] Variable gesetzt ist. Das wäre ja schonmal ein anfang. Nun verstehe ich das hier nicht

                PHP-Code:
                {$eintrag "INSERT INTO besmeld (Aussteller, Standort,Firma,Besucher,BesuchAm,Ankunft,AbreiseAm,Abfahrt,Betrifft, Besucherraum,Zimmerreservierung,ImHotel,Bemerkungen,BetreuungDruch,ZuLasten, Bewirtung,FahnenHissen, Fahrbereitschaft ) 
                VALUES ('
                $aussteller', '$standort','$firma','$besucher','$besucham','$ankunft','$abreiseam','$abfahrt','$betrifft','$besucherraum','$zimmerres','$hotel','$bemerkung','$betreuung','$zulasten','$bewirtung','$fahnen','$fahr')";
                $eintragen mysqli_query($db$eintrag);} 
                Wieso hast du da am Anfang und am Ende Klammern gesetzt?

                Dir sollte als Anfänger mittlerweile klar sein, das ein PHP Skript von oben nach unten abgearbeitet wird. Daher ist es klar das deine Query jedesmal ausgeführt wird, wenn du das Skript ausführst. Steck den Query einfach auch in eine IF Klammer und prüfe ob eine $_POST Variable gesetzt ist, so wie du es schon am Anfang gemacht hast. Ich hoffe ich konnte helfen.

                Ich habe jetzt keinen fertigen Code den ich dir zeigen kann, aber lass dich nicht entmutigen.

                Kommentar


                • #9
                  Zitat von CrocoBlack Beitrag anzeigen
                  Das mit dem nochmal drücken stimmt so nicht ganz.

                  Die Daten die beim Seitenaufruf an den Server gesendet werden ($_POST) werden bei F5 noch einmal gesendet (Die Seite wird genauso aufgerufen wie vorher).
                  Drücken war vlt. das falsche Wort, der Request wird auf jedenfall nochmal abgeschickt und er geht wieder in den if(isset()) rein.
                  No Sacrifice , no Glory--

                  Kommentar


                  • #10
                    Ok danke für die Hilfe
                    Ich probier es mal mit einer If-Abfrage..... wenn ich des hinbekomme

                    Aber ja, wenn du den Request nochmal abschickst wird natürlich auch noch einmal gespeichert.
                    Was genau ist daran das Problem?
                    Funktioniert die IF-Else-Struktur eigentlich so, wie du dir das vorstellst?
                    Es soll nicht nochmal abgespeichert werden,

                    Und ja ich denke schon ... also es überprüft ob ...
                    achso vielleicht tut es doch nicht das was es soll wenn ich das jetzt richtig verstanden habe
                    setzt es wenn ich nicht eingebe aber auf senden drücke als auf den defaultwert der ja null ist.
                    Dann bekomme ich eine zeile mit leeren feldern.
                    jetzt habe ich 2 probleme

                    Kommentar


                    • #11
                      Zitat von Sakron Beitrag anzeigen
                      Drücken war vlt. das falsche Wort, der Request wird auf jedenfall nochmal abgeschickt und er geht wieder in den if(isset()) rein.
                      Allerdings ist das hier nicht er Hauptfehler. Das Hauptproblem ist, dass der Query mit den Defaultwerten IMMER abgeschickt wird wenn $_POST['aussteller'] nicht gesetzt ist. So ist das wenn man sich nicht mit Tutorials auseinander setzen möchte. IF Bedingung ist eins der ersten Dinge die man dabei lernen würde.
                      Zitat von derwunner
                      "Ein FISI ist auf gut-deutsch der Netzwerker. Das heißt Du gehst rauß zum Kunden oder auf die Straße und verlegst Leitungen" - derwunner 2015

                      Kommentar


                      • #12
                        Nachdem der POST Request verarbeitet worden ist, mache einen (header) Redirect auf das Formular, dann ist es wieder leer... drückt der Benutzer dann F5, werden nicht nochmal die Daten versendet...
                        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                        Kommentar


                        • #13
                          Mit einem Header Redirect hab ich es schon probiert...
                          Aber dann komme ich immer in einen unendlichen Kreislauf

                          Kommentar


                          • #14
                            Genau so macht man das aber. Das kann nur heißen, dass du da noch was reparieren musst. Wie sieht denn der logische Weg zum redirect aus?
                            Standards - Best Practices - AwesomePHP - Guideline für WebApps

                            Kommentar


                            • #15
                              Zitat von rkr Beitrag anzeigen
                              Wie sieht denn der logische Weg zum redirect aus?
                              Was meinst du damit ?

                              Also ich hätte geschrieben

                              PHP-Code:
                              header('Location: besmeld.php'); 
                              Dann bekomm ich aber die Fehlermeldung das die Anfrage so umgeleitet wird, dass sie nie beendet werden kann.

                              Kommentar

                              Lädt...
                              X