Hallo zusammen,
bin noch blutiger PHP-Anfänger, kein Fachprogrammierer und baue daher auf eure Hilfe bei folgendem
Vorhaben: Mittels PHP möchte ich erreichen, dass zu jedem auf meiner Website erstellten Artikel automatisch eine entsprechende Kommentarsektion beigefügt wird. Dazu habe ich eine Datei [artikelII.php] erstellt, die auf zwei Tabellen in meiner MySQL-Datenbank zugreift, die ich über phpMyAdmin erstellt habe. In der ersten, sind die Artikel aufgelistet, in der zweiten Kommentare zu allen diesen Artikeln. In dieser zweiten Tabelle gibt es eine Spalte NEWS_ID. Da sich unter jedem Artikel ein kleines Formular zum Eingeben eines Kommentars befindet, kann ich über ein HTML-input-Tag, dass auf "hidden" gesetzt ist, jeweils die zu dem News-Artikel zugehörige ID festlegen, die beim Senden des Kommentars an die Kommentar-Tabelle meiner Datenbank auch einwandfrei übergeben wird. Wenn ich jedoch über einen SELECT...FROM...WHERE die jeweils gültigen (d.h. mit der entsprechenden NEWS_ID versehen) Kommentare aus dieser Tabelle auslesen möchte, kommt es zu folgendem
Problem: In einer Schleife sollen zunächst die bisherigen Artikel aufgelistet werden, um dabei in einer weiteren Schleife in der Schleife die jeweils passenden Kommentare auszuspucken. Daher habe ich den SELECT-Query für die Kommentartabelle wie folgt aufgebaut:
Davor habe ich die Variable $mehrnews definiert als
und diese wiederum mit der Zahl 1 belegt.
Die Idee ist nun, dass bei jedem Schleifendurchlauf, bei dem $sql2 zum Einsatz kommt, sich die Variable $mehrnews um 1 erhöht, so dass mit jedem hinzugefügten Artikel immer auch nur diejenigen Kommentare aufgeführt werden, welche die passende NEWS_ID besitzen.
Hier noch mal zur Erläuterung der entsprechende Code aus der Datei artikelII.php. Das Formular etc. funktioniert prima.
Vielleicht ist es ja nur ein dummer kleiner Fehler... jedenfalls hat er mich die letzten Tage gekostet, und nachdem ich bisher auch in Foren bei bereits vorhandenen Beiträgen nicht fündig geworden bin, hoffe ich auf den entscheidenden Tipp von euch.
Viele Grüße,
Sebastian
bin noch blutiger PHP-Anfänger, kein Fachprogrammierer und baue daher auf eure Hilfe bei folgendem
Vorhaben: Mittels PHP möchte ich erreichen, dass zu jedem auf meiner Website erstellten Artikel automatisch eine entsprechende Kommentarsektion beigefügt wird. Dazu habe ich eine Datei [artikelII.php] erstellt, die auf zwei Tabellen in meiner MySQL-Datenbank zugreift, die ich über phpMyAdmin erstellt habe. In der ersten, sind die Artikel aufgelistet, in der zweiten Kommentare zu allen diesen Artikeln. In dieser zweiten Tabelle gibt es eine Spalte NEWS_ID. Da sich unter jedem Artikel ein kleines Formular zum Eingeben eines Kommentars befindet, kann ich über ein HTML-input-Tag, dass auf "hidden" gesetzt ist, jeweils die zu dem News-Artikel zugehörige ID festlegen, die beim Senden des Kommentars an die Kommentar-Tabelle meiner Datenbank auch einwandfrei übergeben wird. Wenn ich jedoch über einen SELECT...FROM...WHERE die jeweils gültigen (d.h. mit der entsprechenden NEWS_ID versehen) Kommentare aus dieser Tabelle auslesen möchte, kommt es zu folgendem
Problem: In einer Schleife sollen zunächst die bisherigen Artikel aufgelistet werden, um dabei in einer weiteren Schleife in der Schleife die jeweils passenden Kommentare auszuspucken. Daher habe ich den SELECT-Query für die Kommentartabelle wie folgt aufgebaut:
PHP:
// Daten aus Tabelle für Kommentare werden ausgewählt.
$sq2 = "SELECT
Inhalt,
Autor,
Datum
FROM
kommentare
WHERE
NEWS_ID = '$mehrnews'";
PHP:
$mehrnews = $newsid++;
Die Idee ist nun, dass bei jedem Schleifendurchlauf, bei dem $sql2 zum Einsatz kommt, sich die Variable $mehrnews um 1 erhöht, so dass mit jedem hinzugefügten Artikel immer auch nur diejenigen Kommentare aufgeführt werden, welche die passende NEWS_ID besitzen.
Hier noch mal zur Erläuterung der entsprechende Code aus der Datei artikelII.php. Das Formular etc. funktioniert prima.
PHP:
// Hier wird der Startwert der NEWS_ID zur Verwendung im unten folgenden Formular festgelegt.
$newsid = 1;
// Daten aus Tabelle für Artikel werden ausgewählt
$sq1 = "SELECT
Titel,
Inhalt,
Autor
FROM
Artikel";
$result1 = mysql_query($sq1) OR die(mysql_error());
// Daten aus Tabelle für Kommentare werden ausgewählt.
$sq2 = "SELECT
Inhalt,
Autor,
Datum
FROM
kommentare
WHERE
NEWS_ID = '$mehrnews'";
$result2 = mysql_query($sq2) OR die(mysql_error());
// Ab hier wird dann die Website zusammengebaut.
echo "<div id=\"Grundstruktur\">\n";
if (mysql_num_rows($result1)) {
while($row = mysql_fetch_assoc($result1)) {
echo "<div class=\"Artikel\">\n";
echo "<h1>\n";
echo $row["Titel"];
echo "</h1>\n";
echo "<p>\n";
echo $row["Inhalt"];
echo "</p>\n";
echo "<p>\n";
echo $row["Autor"];
echo "</p>\n";
// Ab hier wird der jweilige Kommentarabschnitt eingebaut...
echo "<div class=\"comments\">\n";
echo "<h1>\n";
echo "Letzte Kommentare\n";
echo "</h1>\n";
if (mysql_num_rows($result2)) {
while($row = mysql_fetch_assoc($result2)) {
echo "<p>\n";
echo $row["Inhalt"];
echo "\n";
echo "<br />\n";
echo $row["Autor"];
echo ", am ";
echo $row["Datum"];
echo "\n";
echo "</p>\n";
}
mysql_data_seek ($result2, 0);
} else {
echo "<p>Leider momentan kein Kommentar vorhanden.</p>\n";
}
// ...und hier das entsprechende Formular.
echo "<form action=\"formular.php\" method=\"post\">\n";
echo "<textarea class=\"Kommentarfeld\" name=\"Inhalt\" title=\"Hier können Sie Ihren eigenen Kommentar eingeben.\" cols=\"31\" rows=\"3\" ></textarea>\n";
echo "<input class=\"Name\" name=\"Autor\" title=\"Tragen Sie hier bitte Ihren Namen ein.\" type=\"text\" size=\"18\" maxlength=\"25\" value=\"Ihr Name\" />\n";
echo "<input class=\"Absende-Button\" type=\"submit\" value=\"Absenden\" title=\"Klicken Sie hier, um Ihren Kommentar abzusenden.\" />\n";
echo "<input class=\"News-ID\" type=\"hidden\" name=\"NEWS_ID\" value=\"";
echo $newsid;
echo "\" />\n";
echo "</form>\n";
echo "</div>\n";
// Ende des Kommentarabschnitts.
$newsid++;
}
} else {
echo "<p>Leider momentan kein Artikel vorhanden.<p>\n";
}
echo "</div>\n"; // Ende
echo "</div>\n";
echo "</div>\n";
?>
Viele Grüße,
Sebastian