• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Absenden des Gästebuch-Eintrages funktioniert nicht

Programmier-Felix

Neues Mitglied
Hi!

Ich hab ein Gästebuch programmiert, aber irgendwo müssen noch ein paar Fehler sein, denn es geht nicht die Einträge abzuschicken... Könnt ihr euch mal den Code angucken?

PHP:
<?php
error_reporting(-1);
ini_set('display_errors', 1);
$verbinde = @mysql_connect("localhost", "BENUTZERNAME", "PASSWORT");
if (isset($_POST["eintragen"]))
{
 $name = @mysql_real_escape_string (htmlentitles($_POST["name"]));
 $email = @mysql_real_escape_string (htmlentitles($_POST["email"]));
 $text = @mysql_real_escape_string (htmlentitles($_POST["text"]));
 $datum = date ("d.m.Y");
 $uhrzeit = date ("H:i:s");
 if (empty ($name))
 {
  echo "Bitte geben Sie ihren Namen ein.<br>";
  $fehler = true;
 }
 if (empty ($text) && strlen <=10)
 {
  echo "Bitte geben Sie ihre Nachricht (mind. 10 Zeichen) ein.<br>";
  $fehler = true;
 }
 if ($fehler == false)
 {
  $sql_eintrag = "INSERT INTO `DATENBANK`.`eintraege` (`id`, `name`, `email`, `nachricht`, `datum`, `uhrzeit`) VALUES (NULL, '$name', '$email', '$text', '$datum', '$uhrzeit');";
  $sql_senden = mysql_query($sql_eintrag);
  header ("Location: gaestebuch.php?gesendet=true");
 }
}
?>
<html>
<head>
<title>Programmier Felix::Gaestebuch</title>
<style type="text/css">
body {
 font-family:Arial;
 font-size:18px;
 color:black;
 background-color:lightgreen;
}
</style>
</head>
<body>
<h1>G&auml;stebuch</h1>
<p>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST">
<table border="0">
<tr>
<td>Name*: </td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>E-Mail: </td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td valign="top">Nachricht*: </td>
<td><textarea cols="50" rows="30" name="text"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="eintragen" value="Eintragen"></td>
</tr>
</table>
</form>
<br>* Pflichtfelder
<p><br><b>Eintr&auml;ge:</b>
<p>
<?php
$db_auswahl = mysql_select_db("DATENBANK");
$abfrage = mysql_query("SELECT * FROM eintraege");
echo "Es sind " . mysql_num_rows ($abfrage) . " Eintr&auml;ge vorhanden.<p><br>";
 
?>
<?php
$db_auswahl = @mysql_select_db("DATENBANK");
$sql = @mysql_query("SELECT * FROM eintraege ORDER BY id DESC");
while ($row = mysql_fetch_object ($sql))
{
 echo "<p><br>";
 echo $row->datum . " " . $row->uhrzeit . "<p>";
 echo "Name: " . $row->name . "<br>";
 echo "Nachricht: " . $row->nachricht . "<br>";
 echo "</br></p>";
}
?>
 
</body>
</html>

Die Namen 'DATENBANK', 'BENUTZERNAME' und 'PASSWORT' ersetzte ich natürlich mit den richtigen Daten.

Brauche dringend Hilfe.

Programmier-Felix


PS: Ich hatte schon einmal Fehler mit diesem Gästebuch. (siehe Forumbeitrag:http://www.html.de/php/37727-code-verschwindet.html )
 
Werbung:
Du brauchst ein Umfeld, das dir Fehler anzeigt. Das wird so nichts. Du kannst schlecht jedesmal, wenn du „htmlentitles“ statt „htmlentities“ schreibst, einen neuen Thread aufmachen.
 
Sorry. Das Programm was du (du oder Sie??) mir gezeigt hast als evtl. Lösung (im anderen Beitrag), hat mir keine weiteren Fehler angezeigt.
Jetzt wo ich die Fehler verbessert habe, ist jetzt auch eine andere URL nach dem Absenden oben in der Leiste. Aber immernoch funktioniert es nicht, dass der Eintrag angezeigt wird. (In der Datenbank ist auch kein neuer Eintrag.)

Programmier-Felix
 
Werbung:
PHP:
$sql_eintrag = "INSERT INTO `DATENBANK`.`eintraege` (`id`, `name`, `email`, `nachricht`, `datum`, `uhrzeit`) VALUES (NULL, '$name', '$email', '$text', '$datum', '$uhrzeit');";
'Datenbank'.'eintraege'???
weiß nicht, ob das geht, glaub aber nicht. (btw. hab ich noch von gehört / gesehen)

Erst die Datenbank auswählen
PHP:
mysql_select_db("DATENBANK");
dann die Tabelle so auswählen
PHP:
$sql_eintrag = "INSERT INTO `eintraege` (`id`, `name`, `email`, `nachricht`, `datum`, `uhrzeit`) VALUES (NULL, '$name', '$email', '$text', '$datum', '$uhrzeit');";
</span></span>
 
Ich weiß nicht ob das geht. (Ich hab das Gästebuch mit Hilfe eines Tutorials gemacht.) Ich habe es jetzt geändert (und die Fehler-Variable vor der If-Schleife hinzugefügt), aber ich habe immernoch das gleiche Problem.

Jetzt sieht der Code so aus:

PHP:
<?php
error_reporting(-1);
ini_set('display_errors', 1);
$verbinde = @mysql_connect("localhost", "BENUTZERNAME", "PASSWORT");
if (isset($_POST["eintragen"]))
{
 $name = @mysql_real_escape_string (htmlentities($_POST["name"]));
 $email = @mysql_real_escape_string (htmlentities($_POST["email"]));
 $text = @mysql_real_escape_string (htmlentities($_POST["text"]));
 $datum = date ("d.m.Y");
 $uhrzeit = date ("H:i:s");
 $fehler = false;
 if (empty ($name))
 {
  echo "Bitte geben Sie ihren Namen ein.<br>";
  $fehler = true;
 }
 if (empty ($text) && strlen <=10)
 {
  echo "Bitte geben Sie ihre Nachricht (mind. 10 Zeichen) ein.<br>";
  $fehler = true;
 }
 if ($fehler == false)
 {
  mysql_select_db("DATENBANK");
  $sql_eintrag = "INSERT INTO `eintraege` (`id`, `name`, `email`, `nachricht`, `datum`, `uhrzeit`) VALUES (NULL, '$name', '$email', '$text', '$datum', '$uhrzeit');";
  $sql_senden = mysql_query($sql_eintrag);
  header ("Location: gaestebuch.php?gesendet=true");
 }
}
?>
<html>
<head>
<title>Programmier Felix::Gaestebuch</title>
<style type="text/css">
body {
 font-family:Arial;
 font-size:18px;
 color:black;
 background-color:lightgreen;
}
</style>
</head>
<body>
<h1>G&auml;stebuch</h1>
<p>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST">
<table border="0">
<tr>
<td>Name*: </td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>E-Mail: </td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td valign="top">Nachricht*: </td>
<td><textarea cols="50" rows="30" name="text"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="eintragen" value="Eintragen"></td>
</tr>
</table>
</form>
<br>* Pflichtfelder
<p><br><b>Eintr&auml;ge:</b>
<p>
<?php
$db_auswahl = mysql_select_db("DATENBANK");
$abfrage = mysql_query("SELECT * FROM eintraege");
echo "Es sind " . mysql_num_rows ($abfrage) . " Eintr&auml;ge vorhanden.<p><br>";
 
?>
<?php
$db_auswahl = @mysql_select_db("DATENBANK");
$sql = @mysql_query("SELECT * FROM eintraege ORDER BY id DESC");
while ($row = mysql_fetch_object ($sql))
{
 echo "<p><br>";
 echo $row->datum . " " . $row->uhrzeit . "<p>";
 echo "Name: " . $row->name . "<br>";
 echo "Nachricht: " . $row->nachricht . "<br>";
 echo "</br></p>";
}
?>
 
</body>
</html>

Bitte weiterhin um hilfe.
 
YEAH! Ich habe die Lösung gefunden. Das ist so ein peinlicher Fehler...:oops: Ich hatte in der MYSQL-Datenbank in der ID-Zeile nicht 'NULL' angegeben.

Ich bedanke mich ganz herzlich für eure Hilfe.
 
Werbung:
Sorry. Das Programm was du (du oder Sie??) mir gezeigt hast als evtl. Lösung (im anderen Beitrag), hat mir keine weiteren Fehler angezeigt.

Gerne „du“. ;) Ich hatte nicht gedacht, dass du's dir installiert hast. Das ist schon mal gut für das Auffinden fehlender Klammern und so, also von grundlegenden Syntaxfehlern. :)

Entschuldige, wenn ich etwas genervt klang, das war eigentlich nicht beabsichtigt. Aber es ist definitiv so, dass du dir das Leben unglaublich erschwerst, wenn du keine hilfreichen Fehlermeldungen bekommst. Ich empfehle deshalb wie gesagt die Installation von XAMPP, falls du unter Windows arbeitest.

- apache friends - xampp
 
Ich habe schon wieder Probleme mit dem Gästebuch:

Ich will das die ID sich immer um eins erhöht, wenn eine neue Zeile hinzukommt. Das zu habe ich die Funktion AUTO_INCREMENT (oder so) aktiviert, damit es passiert. Dann bekomm ich aber das Problem, dass die Einträge wieder nicht funktionieren. Wenn ich dann NULL einschalte, muss ich erst mal wieder AUTO_INCREMENT ausschalten, damit es geht. Dann funktionieren auch wieder die Einträge, aber die ID wird nicht um ein erhöht und wenn die ID nicht erhöht wird kriege ich Probleme mit der Sortierung. (Ich will die Einträge nämlich nach der ID ordnen und nicht nach der Uhrzeit oder nach dem Datum, da sie sonst nicht richtig sortiert werden.)

Meine Einstellungen in der Datenbank:
mysql_datenbank.JPG

Muss ich etwas anders Einstellen? oder muss ich im Code etwas ändern?

PHP:
$sql_eintrag = "INSERT INTO `gb` (`id`, `name`, `email`, `nachricht`, `datum`, `uhrzeit`) VALUES (NULL, '$name', '$email', '$text', '$datum', '$uhrzeit');";

Bin schon am verzweifeln... Ich mein wer will schon ein Gästebuch haben, wo die Einträge nicht bzw. falsch geordnet sind.
 
Werbung:
Werbung:
und wenn du den eintrag für die id weglässt?
PHP:
$sql_eintrag = "INSERT INTO `gb` (`name`, `email`, `nachricht`, `datum`, `uhrzeit`) VALUES ('$name', '$email', '$text', '$datum', '$uhrzeit');";
 
Werbung:
funktioniert auch nicht... Ich habe das Gästebuch ja mit einem Tutorials aus dem Netz gemacht... der der das Tutorial gemacht hat, hat es genau so gemacht und es hat geklappt. Ich frage mich wo der Fehler ist...
 
Werbung:
Zurück
Oben