Veröffentlicht 28. Juni 201213 j Hi, hab folgende Probleme: Wenn ich auf meiner Homepage im gästebuch einen Eintrag absende kommt folgende Meldung: Warning: Cannot modify header information - headers already sent by (output started at /users/xxxxxxr/www/gbook.php:89) in /users/xxxxxx/www/gbook.php on line 143 Wenn ich die Seite aktualisiere kommt erst der Eintrag. Drück ich allerdings zweimal den Senden-Button kommt der Eintrag nochmal. Wie oben schon gesehen hab ich die Header-Funktion benutzt. Und hier mal der Quellcode des Formulars: <table> <form method="post" action="gbook.php"> <h5>Name:</h5> <tr><input type="text" name="name" value="" /></tr><br /> <h5>E-Mail:</h5> <tr><input type="text" name="email" value="" /></tr><br /> <h5>Beitrag schreiben(maximal 250 Zeichen):</h5> <tr><textarea name="beitrag" cols="30" rows="6"></textarea> </tr><br /><br /> <tr><input type="submit" name="button" value=" Abschicken " /></tr> </form> </table> $server_connect = mysql_connect($server, $user, $password) or die("Verbindung nicht erfolgreich."); $db_connect = mysql_select_db("db") or die("Verbindungsprobleme zur Datenbank."); $sql = "SELECT name AS Name, email AS Email, beitrag AS Beitrag FROM gb"; $abfrage = mysql_query($sql); if ($abfrage == TRUE) { $anz_daten = mysql_num_rows($abfrage); ?> <div id="gbook2"> <?php while($ergebnis = mysql_fetch_array($abfrage, MYSQL_ASSOC)) { //pre($ergebnis); echo "<h5>Name: " . $ergebnis['Name'] . "</h5><br />"; echo "<h5>E-Mail: " . $ergebnis['Email'] . "</h5><br />"; echo "<h5>Name: " . $ergebnis['Beitrag'] . "</h5><br /><hr />"; } ?> </div> <?php } else { echo "\nAbfrage nicht erfolgreich.<br />"; echo "MySQL-Fehler: " . mysql_error(); } if (ISSET($_POST['name'])) { $name = $_POST["name"]; $email = $_POST["email"]; $beitrag = $_POST["beitrag"]; $eintrag = "INSERT INTO gb (name, email, beitrag) VALUES ('$name', '$email', '$beitrag')"; $result = mysql_query($eintrag); header("Location: http://link zum gästebuch.php"); } ?>
28. Juni 201213 j Dein PHP-Script schickt ja schon Daten (also den HTML Code) an deinen Browser. Dadurch gibt es nicht die Möglichkeit erneut HTTP-Header zu senden.
28. Juni 201213 j Autor Gibt es denn noch ne andere Möglichkeit dass wenn ich das Formular abschicke die Seite sich aktualisiert damit der Eintrag dort steht?
28. Juni 201213 j <?php $server_connect = mysql_connect($server, $user, $password) or die("Verbindung nicht erfolgreich."); $db_connect = mysql_select_db("db") or die("Verbindungsprobleme zur Datenbank."); if (ISSET($_POST['name'])) { $name = $_POST["name"]; $email = $_POST["email"]; $beitrag = $_POST["beitrag"]; $eintrag = "INSERT INTO gb (name, email, beitrag) VALUES ('$name', '$email', '$beitrag')"; $result = mysql_query($eintrag); header("Location: http://link zum gästebuch.php"); } ?> <table> <form method="post" action="gbook.php"> <h5>Name:</h5> <tr><input type="text" name="name" value="" /></tr><br /> <h5>E-Mail:</h5> <tr><input type="text" name="email" value="" /></tr><br /> <h5>Beitrag schreiben(maximal 250 Zeichen):</h5> <tr><textarea name="beitrag" cols="30" rows="6"></textarea> </tr><br /><br /> <tr><input type="submit" name="button" value=" Abschicken " /></tr> </form> </table> <div id="gbook2"> <?php $sql = "SELECT name AS Name, email AS Email, beitrag AS Beitrag FROM gb"; $abfrage = mysql_query($sql); if ($abfrage == TRUE) { $anz_daten = mysql_num_rows($abfrage); while($ergebnis = mysql_fetch_array($abfrage, MYSQL_ASSOC)) { //pre($ergebnis); echo "<h5>Name: " . $ergebnis['Name'] . "</h5><br />"; echo "<h5>E-Mail: " . $ergebnis['Email'] . "</h5><br />"; echo "<h5>Name: " . $ergebnis['Beitrag'] . "</h5><br /><hr />"; } ?> </div> <?php } else { echo "\nAbfrage nicht erfolgreich.<br />"; echo "MySQL-Fehler: " . mysql_error(); } ?>[/PHP]
28. Juni 201213 j Autor Ahh hab das Problem soweit... Bloss jetzt hab ich das Problem dass wenn ich halt den Beitrag absende der vorherige Beitrag ein zweites mal gesendet wird
30. Juni 201213 j Aus dem Code kann ich nicht erkennen, warum der vorherige Beitrag ein zweites mal gesendet werden sollte? Was bedeutet übrigens ein zweites mal gesendet? $sql = "SELECT name AS Name, email AS Email, beitrag AS Beitrag FROM gb"; $abfrage = mysql_query($sql); if ($abfrage == TRUE) { [/php] Schau dir mal die Doku zu mysql_query an, was bei einem Select Statement im Erfolgsfall zurück geliefert wird. Das ist kein Boolean.
30. Juni 201213 j Autor Naja, hab das Problem jetzt einfach gelöst durch ne weiterleitung zu ner zweiten Seite...nicht schön aber selten ;-)
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.