Funkour Geschrieben 28. Juni 2012 Geschrieben 28. Juni 2012 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"); } ?> Zitieren
Aras Geschrieben 28. Juni 2012 Geschrieben 28. Juni 2012 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. Zitieren
Funkour Geschrieben 28. Juni 2012 Autor Geschrieben 28. Juni 2012 Gibt es denn noch ne andere Möglichkeit dass wenn ich das Formular abschicke die Seite sich aktualisiert damit der Eintrag dort steht? Zitieren
Aras Geschrieben 28. Juni 2012 Geschrieben 28. Juni 2012 <?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] Zitieren
Funkour Geschrieben 28. Juni 2012 Autor Geschrieben 28. Juni 2012 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 Zitieren
Aras Geschrieben 28. Juni 2012 Geschrieben 28. Juni 2012 Ich glaube, du solltest das alleine ausknobeln. Der Code ist eigentlich grausam Zitieren
Funkour Geschrieben 28. Juni 2012 Autor Geschrieben 28. Juni 2012 Das weiß ich selbst ;-) Erste Versuche mit PHP ;-) Zitieren
robotto7831a Geschrieben 30. Juni 2012 Geschrieben 30. Juni 2012 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. Zitieren
Funkour Geschrieben 30. Juni 2012 Autor Geschrieben 30. Juni 2012 Naja, hab das Problem jetzt einfach gelöst durch ne weiterleitung zu ner zweiten Seite...nicht schön aber selten ;-) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.