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"); } ?>
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.
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?
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]
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
Aras Geschrieben 28. Juni 2012 Geschrieben 28. Juni 2012 Ich glaube, du solltest das alleine ausknobeln. Der Code ist eigentlich grausam
Funkour Geschrieben 28. Juni 2012 Autor Geschrieben 28. Juni 2012 Das weiß ich selbst ;-) Erste Versuche mit PHP ;-)
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.
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 ;-)
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden