Zur Navigation

Kommentare

1 tomaschko (Gast)

Hallo ich bin wiedermal vor einen Problem, welches ich aufgrund mangelnder Kenntnisse, Php ist bei mir sowas wie dritthobby, nicht lösen kann.

Ich habe ein ganz simples Script für ein Weblog gebastelt (auf grundlage eines Buches) und teilweise erweitert und möchte nun noch eine Kommentarfunktion für die einzelnen Einträge ermöglichen. Diese Kommentarfunktion soll Automatisch bei einem neuen Blogeintrag erscheinen, d. h. ein link "Kommentar eingeben".

Wie kann ich das realisieren.

11.01.2006 15:20

2 Jörg Kruse

Hallo tomaschko,

für die Kommentare musst du eine zweite Datenbanktabelle anlegen, in der diese gespeichert werden. Damit die Kommentare mit den Weblogartiekeln verknüft werden können, enthält die Tabelle eine Spalte, in der die IDs der zugehörigen Artikel gespeichert werden. Wenn du das Formular für Kommentare über einen Link aufrufst, musst du die ID des Artikels mit übergeben, z.B. kommentar.php?aid=43. Im Formular wird diese ID dann über ein hidden input Feld weitergegeben. Um alle Kommentare zu einem bestimmten Eintrag wieder aus der Datenbank abzurufen, begrenzt du die SQL-Abfrage mit "WHERE aid = '$aid'", und gibst die Ergebnisse wieder in einer Schleife aus. Das wäre so der Weg im groben, wie ich vorgehen würde

11.01.2006 16:12

3 Jörg Kruse

Manchmal sieht man den Wald vor lauter Bäumen nicht ;)

18.01.2006 16:00

4 tomaschko (Gast)

Ja so ist es oder besser das Script vor lauter Code nicht *g*

Aber um nochmal auf die Kommentare zurückzukommen. Wie muss ich das genau machen. Ich habe gar keine Ahnung, also das der automatisch den Kommentar dem richtigen Artikel zuweist. Dass das anhand der id des Artikels sein muss habe ich mir auch schon gedacht, aber wie genau. Ein Codebeispiel wäre nicht schlecht.

25.01.2006 14:52

5 Jörg Kruse

Angenommen, kid ist die fortlaufende ID für die Kommentare und aid die ID für den dazu gehörigen Artikel, dann sehen die Einträge in der MySQL-Tabelle kommentarefolgendermaßen aus:

kid, aid, name, kommentar, etc.
1, 5, "Petra", "Blabla", etc.
2, 8, "Paul", "Blub", etc.
3, 5, "Maria", "Laber Laber", etc.

... wobei 'kid' die Eigenschaft auto_increment aufweisen sollte...

Die SELECT-Abfrage ist dann folgende:

$query = "SELECT name,kommentar FROM kommentare WHERE aid = $aid";
$result = mysql_query($query);

Es werden also alle Kommentare abgefragt, deren aid gleich der gewählten $aid ist (bei $aid = 5 z.B. di Kommentare von Petra und Maria)

In einer Schleife gibst du die Resultate aus:

while($row = mysql_fetch_array($result)) {

$name = htmlentities($row['name']);
$kommentar = nl2br(htmlentities($row['kommentar']));

echo "<p>$name: $kommentar</p>\n";

}

Soweit die Ausgabe mit der SELECT-Abfrage. Die Eingabe mit der INSERT-Abfrage verläuft ähnlich der, die du bei der Eingabe der Artikel schon anwendest, nur dass du eben noch die dazugehörige Artikel-ID mit abspeichern musst

mysql_query("INSERT INTO kommentare (aid, name, kommentar) VALUES ('$aid', '$name', '$kommentar')");

25.01.2006 19:26 | geändert: 25.01.2006 19:28

6 tomaschko (Gast)

Jetzt habe ich es verstanden, Danke.

26.01.2006 15:25

7 Jörg Kruse

Die Beiträge zum Admin-Login habe ich mal in einen eigenen Thread verschoben:

Admin-Login

27.01.2006 19:36

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]