Zum Inhalt springen

PHP/MySQL Gästebuch absenden und aktualiseren und weiteres Probleme


Empfohlene Beiträge

Geschrieben

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");

}

?>

Geschrieben

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.

Geschrieben

Gibt es denn noch ne andere Möglichkeit dass wenn ich das Formular abschicke die Seite sich aktualisiert damit der Eintrag dort steht?

Geschrieben

<?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]

Geschrieben

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

Geschrieben

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.

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...