Speicherung in die Datenbak funktioniert nicht. Brauche dringend Hilfe

Slin61

Mitglied
Ich habe ein Kommentarsystem entwickelt. Allerdings habe ich bei der Speicherung ein Problem und komme nicht weiter. Ich hoffe, dass ihr mir helfen könnt:

Meine "Absender-Datei":
PHP:
 echo "
<form  action=\"?p=comment.php&vid=\" method=\"post\">

<input type=\"hidden\" name=\"id\" value=\"".$_SESSION['vid']."\" />

   <input type=\"text\" name=\"autor\" value=\"Dein Name\" onclick=\"this.value=''\" size=\"50\" maxlength=\"50\" />

   <br />
   <input type=\"text\" name=\"e-mail\" value=\"Deine E-Mail Adresse(wird vertraulich behandelt)\" onclick=\"this.value=''\" size=\"50\" maxlength=\"100\" />
   <br />
   <textarea name=\"kommentar\" cols=\"50\" rows=\"25\" onclick=\"this.value=''\">Dein  Kommentar
   </textarea>
   <input type=\"submit\" value=\"Posten\" />
</form>
";
An der Session-Variable kann es nicht liegen, da mit dieser die Seite erst aufgerufen wird.

Das ist meine "verarbeitende Seite":
PHP:
<?php
include("connect.php");
mysql_select_db("slin61");


if(isset($_POST['autor']) AND isset($_POST['e-mail']) AND isset($_POST['kommentar']))
{
$autor = $_POST['autor'];
$email = $_POST['e-mail'];
$kommentar = $_POST['kommentar'];
$id = $_POST['id'];

date_default_timezone_set ("Europe/Berlin");

$datum = date("d.F");
//da die Datumsangaben auf Englisch sind, ersetzte ich sie einfach durch die Deutschen
$search = array("January", "February", "March", "May", "June", "July", "October", "December");
$replace = array("Januar", "Februar", "M&auml;rz", "Mai", "Juni", "Juli", "Oktober", "Dezember");
for($i=0; $i < count($search); $i++)
{
$datum = str_replace($search[$i], $replace[$i], $datum);
}

$zeit = date("H:i");

$kommentar = str_replace("'", "&khh", $kommentar);
$eintrag = "INSERT INTO kommentare
            (id, autor, e-mail, kommentar, datum, zeit)
            VALUES
            ('".trim($id)."', '".trim($autor)."', '".trim($email)."', '".trim($kommentar)."', '".trim($datum)."', '".trim($zeit)."')";
$mysql_query = mysql_query($eintrag);
if($mysql_query == true)
{
    echo "Kommentar wurde gespeichert. <a onclick=\"history.back\">Zur&uuml;ck</a>";
}
else
{
    echo "Fehler beim Speichern";
}
}

?>
Entschuldigt bitte die Unübersichtlichkeit des Ganzen.

Als letztes kommt noch die Datenbank:
Name: kommentare
Felder:
id(varchar), autor(varchar), e-mail(varchar), kommentar(text), datum(varchar), zeit(varchar)

Mit je 100 Zeichen

Also alles, was ich dort oben einfüge, aber es kommt immer "Fehler beim Speichern" raus.
 
Zuletzt bearbeitet:
Hmm, also ich würde zunächst nach dem mysql_query()-Aufruf ein 'or die( mysql_error() )' einbauen, damit man nötigenfalls Fehler aus dem SQL-Statement mitbekommt.

Edit: Im übrigen ist es unklug, ein Minus-Zeichen in den Spaltennamen einzubauen. MySQL kann auch substrahieren und das Minus-Zeichen wird als Operator angesehen. Wenn deine Spalte tatsächlich 'e-mail' heißt, solltest du entweder

- Backticks um `e-mail` machen oder
- Die Spalte in 'e_mail' umbenennen.
 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-mail, kommentar, datum, zeit) VALUES ('_DiN73Kcj0Y'' at line 2

Ist das Ergebnis daraus. Ich habe auch schon eine Idee, was falsch ist.
 

Neue Beiträge

Zurück