Problem beim HInzufügen von Kommentaren

heimatlied

Mitglied
So nachdem ich das Löschen von Einträgen in meinem Gästebuch hinbekommen habe, habe ich ein nächstes Problem - und zwar mit dem Kommentieren von Einträgen.

Ich lass mir die Gästebucheinträge ausgeben und darunter erscheint dann ein Link "Eintrag kommentieren".
Wenn ich darauf klicke, komm ich zu ner anderen Seite wo dieser eine Eintrag nochmals alleine ausgegeben wird und darunter dann das textfeld für das Kommentar mit Absende Button.
So das läuft alles.

Wenn ich allerdings auf den Button klicke, bekomme ich folgende Fehlermeldung:
You have an error in your SQL syntax near 'WHERE ID = ''' at line 1

Mein PHP Code sieht wie folgt aus:

kommentar.php
PHP:
<?php
      $db=mysql_connect("localhost","root","") or die
      ("Keine Verbindung moeglich");
      mysql_select_db("gaestebuch")or die
      ("Die Datenbank existiert nicht");
      




      $ergebnis=mysql_query("SELECT * FROM gb WHERE ID = '".$_GET['ID']."'");



?>

<table border="0">
<?php

     while($row = mysql_fetch_object($ergebnis))
      {
?>
<font face="Verdana" size="1">
<tr><td><font face="Verdana" size="1">Verfasst von <b><font face="Verdana" size="2"><? echo $row->Name; ?></b><font face="Verdana" size="1"> am  <? echo $row->Datum;?></td> </tr>
<tr><td><font face="Verdana" size="1">E-Mail: <?echo $row->Mail; ?></font></td></tr>
<tr><td><font face="Verdana" size="1">Homepage <?echo $row->Homepage; ?></font></td></tr> <br>
<tr><td><font face="Verdana" size="2"><?echo $row->Eintrag; ?></tr></td> <br>

       <?php
      }


?>

</table><br><br><br>

<form action="kommentar.php" method= "Post">
<tr><td>
<b>Ihr Kommentar:</b> <br>
<textarea name="kommentar" cols="56" rows="8"></textarea><br>
</tr></td>  <br><br>
<tr><td>
<input type="submit" name="senden2" value="Eintrag kommentieren">   </tr></td>
</form>
</p>
<?php

$kommentar = $_Post["kommentar"];
$kommentar2 = nl2br($kommentar);
     
if(isset($_REQUEST['senden2']))
{

$einf="INSERT INTO gb(Kommentar) VALUES ($kommentar2) WHERE ID = '".$_GET['ID']."'";
mysql_query($einf) or die(mysql_error());
echo "<b>Kommentar wurde hinzugefügt.</b><br><br>";
echo "<a href=\"gaestebuch.php\">Zurück zum Gästebuch</a>";


}

?>

Weiß vllt einer von euch wo der Fehler ist und kann mir helfen?
 
Okay,

dann gib dir mal die ID mittels echo $_GET['ID'] aus ...

Aber bevor du das machst hier direkt die nächsten Fehler:

$_Post[] gibts nicht und wird '' zurück geben, wahrscheinlich meinst du $_POST - btw, kennst du den Unterschied zwischen $_POST / $_GET

und aus VALUES ($kommentar2) würde ich .. VALUES ('$kommentar2') .. machen.

Nun sollte der Test schon besser laufen ...

Dirk
 
Also ich hab den php code jetzt in ne extra datei gemacht.

Also, mein Formular:

<form action="kommentar2.php" method= "Post">
<tr><td>
<b>Ihr Kommentar:</b> <br>
<textarea name="kommentar" cols="56" rows="8"></textarea><br>
</tr></td> <br><br>
<tr><td>
<input type="submit" name="senden2" value="Eintrag kommentieren"> </tr></td>
</form>
</p>


kommentar2.php

PHP:
<?php
$db=mysql_connect("localhost","","") or die          //Verbindung
      ("Keine Verbindung moeglich");
      mysql_select_db("gaestebuch")or die
      ("Die Datenbank existiert nicht");

$kommentar = $_POST["kommentar"];
$kommentar2 = nl2br($kommentar);

echo $_GET['ID'];

$einf="INSERT INTO gb(Kommentar) VALUES ("$kommentar2") WHERE ID = '".$_GET['ID']."'";
mysql_query($einf) or die(mysql_error());
echo "<b>Kommentar wurde hinzugefügt.</b><br><br>";
echo "<a href=\"gaestebuch.php\">Zurück zum Gästebuch</a>";

}

?>

Hab jetzt die Fehler beseitigt, bekomm trotzdem noch ne Fehlermeldung:
You have an error in your SQL syntax near 'WHERE ID = ''' at line 1
 
Zuletzt bearbeitet:
Wird die ID den richtig angezeigt wenn du
Code:
echo $_GET["ID"]
machst? Wie wird die ID übergeben? Ist dir der Unterschied zwischen GET und POST klar?
 
Seltsam, eigentlich sollte das gar nicht gehen ..

$einf="INSERT INTO gb(Kommentar) VALUES ("$kommentar2") WHERE ID = '".$_GET['ID']."'";

machste
$einf="INSERT INTO gb(Kommentar) VALUES (" . $kommentar2 . ") WHERE ID = '".$_GET['ID']."'";
draus! - Allerdings ist das nicht unbedingt das sicherste, da begabte SQL-Skripter so deine Seite hacken könnten ... aber da musste dich vielleicht noch nicht mit beschäftigen .. :)

Dann musste irgendwo in deinem Formular auch die ID setzen, also via get am besten in action = "kommentar2.php?ID=1"

und noch was zu echo $_GET['ID']; .. mach mal echo "ID: '" . $_GET['ID'] . "'"; dann siehste auch, dass da nix steht ;) !

Dirk



kommentar
 
Müsste ich das beim Formular so schreiben?

PHP:
<form action="kommentar2.php?ID=".$_GET['ID']."" method= "Post">

Wahrscheinlich nicht da beim link nur ID= steht. Also ohne Zahl hinter.
Es kommt immer noch diesselbe Fehlermeldung:
You have an error in your SQL syntax near 'WHERE ID = ''' at line 1

(Auch wenn ich zb action="kommentar2.php?ID=11" schreibe, taucht die Fehlermerldung auf.)
 
Also die ID wird jetzt übergeben und es kommen auch keine Fehlermeldungen mehr...
Dennoch trägt er es nicht in die Datenbank ein das Kommentar...
 
Zuletzt bearbeitet:
Aua ....

Also mal im Ernst, wenn du an so Sachen so lange rummachst, was für Projekte willst du da fertig machen ;)

Code:
einf="INSERT INTO gb(id, Kommentar) VALUES (" . $_GET['ID'] . ", '" . $kommentar2 . "')"

.. wobei es die Spalte id geben sollte!

Dirk
 
Mh ja, ich bin noch nich so lnge im PHP Bereich tätig ;)
Naja...ähm...das Hinzufügen an sich klappt, wenn ich das so schreibe:

PHP:
mysql_query("INSERT INTO gb(Kommentar) VALUES ('$kommentar2')");

Bei dem speichert er das aber in ne neue Spalte bzw legt ne neue ID an.
Wenn ich das aber so schreibe, dass er das in die eine bestimmte Salte einträgt passiert nichts. Es wird kein Fehler angezeigt, aber auch nicht in der Datenbank gespeichert:

PHP:
mysql_query("INSERT INTO gb(Kommentar) VALUES ('$kommentar2') WHERE ID = '"$_GET['ID']"'");

Ich hoffe ich bin noch ertragbar mit meinem Problem...
 
Zurück