[PHP] Browser Aktualisieren = Datenbankeintrag

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Dw4rf, 5. November 2008 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 5. November 2008
    Browser Aktualisieren = Datenbankeintrag

    Hallo zusammen,

    also ich hab ein Gästebuch etwas umgeschrieben und habe nun einen Fehler, welchen ich irgendwie nicht finde oder übersehe.

    Also hier der code:

    PHP:
    if ( $_REQUEST [ 'titel' ]) {
            echo 
    '<form action="quests.php" method="post">' ;
            echo 
    '<table border="0">' ;
            echo 
    '  <tr>' ;
            echo 
    '  <td><b>QuestID::</b></td>' ;
            echo 
    '  <td><input name="qid" maxlength="50" type="text"></td>' ;
            echo 
    ' </tr>' ;
            echo 
    '  <tr>' ;
            echo 
    '  <td><b>Name:</b></td>' ;
            echo 
    '  <td><input name="Name" maxlength="50" type="text"></td>' ;
            echo 
    ' </tr>' ;
            echo 
    ' <tr>' ;
            echo 
    '  <td><b>Titel des Eintrages:</b></td>' ;
            echo 
    '  <td><input maxlength="40" name="Titel" type="text"></td>' ;
            echo 
    ' </tr>' ;
            echo 
    ' <tr>' ;
            echo 
    '  <td><b>Eintrag:</b></td>' ;
            echo 
    '  <td><textarea cols="30" name="Eintrag" rows="5"></textarea></td>' ;
            echo 
    ' </tr>' ;
            echo 
    ' <tr>' ;
            echo 
    '  <td align="center" colspan="2">' ;
            echo 
    '  <input name="Send" type="submit" value="Eintragen">' ;
            echo 
    '  <input name="Reset" type="reset" value="L&ouml;schen">' ;
            echo 
    '  </td>' ;
            echo 
    ' </tr>' ;
            echo 
    '</table>' ;
            echo 
    '</form>' ;
            }
    }
    $_REQUEST [ 'qid' ]    =  mysql_real_escape_string ( $_REQUEST [ 'qid' ]);
    $_REQUEST [ 'Name' ]    =  mysql_real_escape_string ( $_REQUEST [ 'Name' ]);
    $_REQUEST [ 'Titel' ]   =  mysql_real_escape_string ( $_REQUEST [ 'Titel' ]);
    $_REQUEST [ 'Eintrag' ] =  mysql_real_escape_string ( $_REQUEST [ 'Eintrag' ]);

    $SQL  "INSERT INTO Gaestebuch (Datum, qid, Name, Titel, Eintrag) VALUES (NOW(''), '" . $_REQUEST [ 'qid' ]. "', '" . $_REQUEST [ 'Name' ]. "', '" . $_REQUEST [ 'Titel' ]. "', '" . $_REQUEST [ 'Eintrag' ]. "')" ;
    mysql_query ( $SQL $db );

    if(
    mysql_affected_rows ( $db ) ==  1 )
    {
    ?>
    Jedesmal wenn ich nun die Seite aktualisiere, schreibt er mir einen leeren Eintrag in die Datenbank.

    Jede Hilfe ist Willkommen und BW ist Ehrensache
     
  2. 5. November 2008
    AW: Browser Aktualisieren = Datenbankeintrag

    Is ja klar, weil was eingetragen wird, aber in $_REQUEST keine Werte enthalten sind.
    Ich seh keine Abfrage, ob überhaupt was eingetragen werden soll.

    Und solang er kein Formular abschickt, wird auch immer n leerer Datenbankeintrag erstellt.
     
  3. 5. November 2008
    AW: Browser Aktualisieren = Datenbankeintrag

    Du musst den Befehl des Eintragens mysql_query mit einem if() umgreifen. Also quasi "wenn Formular abgeschickt > Eintrag" (siehe $_POST Variablen).
     
  4. 5. November 2008
    AW: Browser Aktualisieren = Datenbankeintrag

    Ok, dann sieht das ganze nun so aus:

    PHP:
     <?php 
    if ( $_POST [ 'submit' ]) {
    $qid  mysql_real_escape_string ( $_POST [ 'qid' ]);
    $name  mysql_real_escape_string ( $_POST [ 'Name' ]);
    $titel  mysql_real_escape_string ( $_POST [ 'Titel' ]);
    $eintrag  mysql_real_escape_string ( $_POST [ 'Eintrag' ]);

    $SQL  "INSERT INTO Gaestebuch (Datum, qid, Name, Titel, Eintrag) VALUES (NOW(''), ' $qid ', ' $name ', ' $titel ', ' $eintrag ')" ;

    mysql_query ( $SQL $db );

    if(
    mysql_affected_rows ( $db ) ==  1 )
    {
    ?>
    Vielen Dank f&uuml;r Ihren Eintrag!<br>
    <a href="gaestebuch.php">Zur&uuml;ck</a>
    <?php
    }
    else
    {
    ?>
    Beim Eintragen ist ein Fehler aufgetreten.<br>
    <a href="javascript:history.back();">Zur&uuml;ck</a>
    <?php
    }
    ?>
    Allerdings bekomme ich dann eine weisse Seite aufgerufen.
    Hm, was habe ich nun wieder falsch gemacht?
     
  5. 5. November 2008
    AW: Browser Aktualisieren = Datenbankeintrag

    Du hast ein } vergessen.
     
  6. 5. November 2008
    AW: Browser Aktualisieren = Datenbankeintrag

    Jo mist.....Danke

    Nun aber ein Problem was jetzt auftritt:

    Er zeigt mir nun immer direkt bei Seitenaufruf:

    Beim Eintragen ist ein Fehler aufgetreten.
    Zurück


    an. Auch kann ich nichts in die DB Schreiben. Der INSERT ist korrekt und DB Verbindung besteht. Hm....
     
  7. 5. November 2008
    AW: Browser Aktualisieren = Datenbankeintrag

    Machs doch so:
    PHP:
    if(! $_POST [ 'submit' ]) {
    echo 
    $dein_formular ;
    }
    else {
    # in die datenbank eintragen
    }
     
  8. 5. November 2008
    AW: Browser Aktualisieren = Datenbankeintrag

    Dann sagt er mir die ganze Zeit:

    Vielen Dank für Ihren Eintrag!
    Zurück


    Und das Formular zum Eintragen ist verschwunden.

    PHP:
    <? php
    if ( $_POST [ 'submit' ]) {
    echo 
    '<br><br><form action="quests.php" method="post">' ;
                echo 
    '<table border="0">' ;
                echo 
    '  <tr>' ;
                echo 
    '  <td><b>QuestID:</b></td>' ;
                echo 
    '  <td><input name="qid" maxlength="50" type="text"></td>' ;
                echo 
    ' </tr>' ;
                echo 
    '  <tr>' ;
                echo 
    '  <td><b>Name:</b></td>' ;
                echo 
    '  <td><input name="Name" maxlength="50" type="text"></td>' ;
                echo 
    ' </tr>' ;
                echo 
    ' <tr>' ;
                echo 
    '  <td><b>Titel des Eintrages:</b></td>' ;
                echo 
    '  <td><input maxlength="40" name="Titel" type="text"></td>' ;
                echo 
    ' </tr>' ;
                echo 
    ' <tr>' ;
                echo 
    '  <td><b>Eintrag:</b></td>' ;
                echo 
    '  <td><textarea cols="30" name="Eintrag" rows="5"></textarea></td>' ;
                echo 
    ' </tr>' ;
                echo 
    ' <tr>' ;
                echo 
    '  <td align="center" colspan="2">' ;
                echo 
    '  <input name="Send" type="submit" value="Eintragen">' ;
                echo 
    '  <input name="Reset" type="reset" value="L&ouml;schen">' ;
                echo 
    '  </td>' ;
                echo 
    ' </tr>' ;
                echo 
    '</table>' ;
                echo 
    '</form>' ;
                }
            else {
    $qid  mysql_real_escape_string ( $_POST [ 'qid' ]);
    $name  mysql_real_escape_string ( $_POST [ 'Name' ]);
    $titel  mysql_real_escape_string ( $_POST [ 'Titel' ]);
    $eintrag  mysql_real_escape_string ( $_POST [ 'Eintrag' ]);

    $SQL  "INSERT INTO Gaestebuch (Datum, qid, Name, Titel, Eintrag) VALUES (NOW(''), ' $qid ', ' $name ', ' $titel ', ' $eintrag ')" ;

    mysql_query ( $SQL $db );
    }
    if(
    mysql_affected_rows ( $db ) ==  1 )
    {
    ?>
    Vielen Dank f&uuml;r Ihren Eintrag!<br>
    <a href="gaestebuch.php">Zur&uuml;ck</a>
    <?php
    }
    else
    {
    ?>
    Beim Eintragen ist ein Fehler aufgetreten.<br>
    <a href="javascript:history.back();">Zur&uuml;ck</a>
    <?php
    }
    ?>
     
  9. 5. November 2008
    AW: Browser Aktualisieren = Datenbankeintrag

    Du hast ja auch ein Ausrufezeichen vergessen:
    PHP:
    if (! $_POST [ 'submit' ]) {
    Wenn es die Variable nicht gibt (nämlich dann, wenn die Seite zum ersten mal aufgerufen wird), zeigt er das Formular an! Ansonsten liest er die Vars ein und schreibts in die DB. Übrigens kannst du soweit ich weiß auf einfach so machen:
    PHP:
    <? php
    if (! $_POST [ 'submit' ]) {
    ?>
    <form action="quests.php" method="post">
    ...
    <?php
    }
    else {
    ...
    }
    ?>
    Damit ersparst du dir die echos und das escapen.
     
  10. 5. November 2008
    AW: Browser Aktualisieren = Datenbankeintrag

    Da hast Du recht, werde ich Anpassen, sobald es endlich klappt.
    Aber kurz zum anderen zurück:
    Nun habe ich den ersten Fehler wieder:

    Beim Eintragen ist ein Fehler aufgetreten.
    Zurück


    Es ist doch zum Mäuse Melken
     
  11. 5. November 2008
    AW: Browser Aktualisieren = Datenbankeintrag

    Ich glaube irgendwie, dass du das mit der Struktur noch nicht ganz verstehst:

    PHP:
    if(! $_POST [ 'submit' ]) {
    echo 
    $formular ;
    }
    else {
     
    # eintragen
     
    if ( $mysql_affected_db  ==  1 ) {
     echo 
    "Es hat geklappt!" ;
     }
     else {
     echo 
    "m00pd00p ist doof!" ;
     }
    }
     
  12. 5. November 2008
    AW: Browser Aktualisieren = Datenbankeintrag

    PHP:
    <? php  if(!isset( $_POST [ 'Send' ])):  ?>
    <form action="quests.php" method="post">
        <table border="0">
            <tr>
                <td><b>QuestID::</b></td>
                <td><input name="qid" maxlength="50" type="text"></td>
            </tr>
            <tr>
                <td><b>Name:</b></td>
                <td><input name="Name" maxlength="50" type="text"></td>
            </tr>
            <tr>
                <td><b>Titel des Eintrages:</b></td>
                <td><input maxlength="40" name="Titel" type="text"></td>
            </tr>
            <tr>
                <td><b>Eintrag:</b></td>
                <td><textarea cols="30" name="Eintrag" rows="5"></textarea></td>
            </tr>
            <tr>
                <td align="center" colspan="2">
                    <input name="Send" type="submit" value="Eintragen">
                    <input name="Reset" type="reset" value="L&ouml;schen">
                </td>
            </tr>
        </table>
    </form>
    <?php  else:
            
    $result  mysql_query ( sprintf (
                
    'INSERT INTO Gaestebuch (Datum, qid, Name, Titel, Eintrag) '  .
                    
    'VALUES (NOW(), "%u", "%s", "%s", "%s")'
                (int) 
    $_REQUEST [ 'qid' ],
                
    mysql_real_escape_string ( $_REQUEST [ 'Name' ]),
                
    mysql_real_escape_string ( $_REQUEST [ 'Titel' ]),
                
    mysql_real_escape_string ( $_REQUEST [ 'Eintrag' ])
            ), 
    $db );
            
            print !!
    $result  'Eintrag erfolgreich'  'Fehler!' ;
        endif;
    ?>
    so sollte des funktionieren
     
  13. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.