Ich nehme einige Online-Kurse und in einer der Übungen werden wir zwei Tabellen für einen Blog erstellen - Blog-Artikel und Blog-Posts - und verbinden sie durch einen Fremdschlüssel, dann alle anzeigen Inhalt von beiden. Kommentare sollten nur mit einem bestimmten Artikel verknüpft sein und gleichzeitig mehrere Kommentare zulassen.Anzeigen und Verknüpfen von Fremdschlüssel in PHP
Mein Versuch:
function list_articles() {
include('core/db/db_connection.php');
$sql = "SELECT blog.title, blog.content, blog.posted_by, blog.date, article_comments.comments, article_comments.comment_by
FROM blog LEFT OUTER JOIN article_comments
ON blog.content_id = article_comments.content_id
WHERE blog.content != ''
ORDER BY blog.content_id DESC";
$result = mysqli_query($dbCon, $sql);
while ($row = mysqli_fetch_array($result)) {
echo
"<h5 class='posted_by'>Posted by " . $posted_by = $row['posted_by'] . " on " . $row['date'] . "</h5>" .
"<h1 class='content_headers'>" . $title = $row['title'] . "</h1>" .
"<article>" . $content = $row['content'] . "</article>" .
"<div class='commented_by'>Posted by: " . $row['comment_by'] . "</div>" .
"<div class='comments'>Comments: " . $row['comments'] . "</div>";
}
}
Und das ist, wie ich Kommentare in der Datenbank bin Einfügen:
function insert_comments($comment_by, $comments) {
include('core/db/db_connection.php');
$sql = "SELECT blog.content_id, article_comments.blog_id
FROM blog AS blog
INNER JOIN article_comments AS article_comments ON article_comments.blog_id > blog.content_id";
mysqli_query($dbCon, $sql);
}
phpMyAdmin die Fremdschlüsselwerke in Ordnung und die Kommentare zu einem bestimmten Artikel verbunden sind, . Ich möchte das auf einer Webseite umsetzen. Wenn ich einen neuen Artikel auf der Seite einfüge, funktioniert es gut, aber wenn ich versuche, einen Kommentar für diesen Artikel einzufügen, wird er nicht angezeigt.
Wenn ich ON blog.content_id = article_comments.content_id
zu ON blog.content_id = article_comments.blog_id
ändern (blog_id ist der Feldname für den Fremdschlüssel) - es werden alle Kommentare für einen Artikel angezeigt - aber es dupliziert diesen Artikel für jeden damit verbundenen Kommentar. Macht das irgendeinen Sinn? Ich habe versucht, es so gut wie möglich zu erklären. Bitte lassen Sie mich wissen, wenn Sie weitere Erläuterungen benötigen. Dank
By the way, ist dies die Aussage, die ich verwendet, um die Fremdschlüssel zu erstellen:
ALTER TABLE article_comments ADD CONSTRAINT comment_blog_fk FOREIGN KEY (blog_id) REFERENCES wt.blog(content_id) ON DELETE NO ACTION ON UPDATE CASCADE;
EDIT: Das Ergebnis, das ich mit ON blog.content_id = article_comments.blog_id
Article title: LOREM IPSUM
Content: LOREM IPSUM DOLOR SIT AMET....
--------------------------------------
Name: DSK
Comment: Great article!
-- HERE IT DUPLICATES THE ARTICLE TO INSERT A NEW COMMENT --
Article title: LOREM IPSUM
Content: LOREM IPSUM DOLOR SIT AMET....
--------------------------------------
Name: DSK
Comment: Great article! - 2nd comment
Wie bekommen Sie sehen Sie, es dupliziert den Artikel für jeden eingefügten Kommentar. Ich habe also zwei doppelte Artikel mit unterschiedlichen Kommentaren. Wenn Wenn ich 100 Kommentare haben werden, wird der Artikel 100 Mal
Das Verhalten repliziert ich erwarte:
Article title: LOREM IPSUM
Content: LOREM IPSUM DOLOR SIT AMET....
-------------------------------------- \\ COMMENTS \\
Name: DSK
Comment: Great article!
--------------------------------------
Name: DSK
Comment: Great article! - 2nd comment
ich in Ihrer Frage sehen nur ** SELECT **, aber niemand ** INSERT **. Also Problem beim Einfügen von Daten oder bei der Auswahl? –
@DanilaGanchar Momentan füge ich Daten direkt über die Datenbankschnittstelle ein, bis ich herausgefunden habe, wie ich sie richtig anzeigen kann, daher keine INSERT-Anweisung in meinem Code. Also, mein Problem liegt darin, es anzuzeigen. In der Datenbank sind Kommentare korrekt mit Artikeln verknüpft. Die Art, wie ich sie auf der Seite anzeige, scheint das Problem zu sein. Mehr als wahrscheinlich gibt es ein Problem mit der Art, wie ich entweder die Kommentare oder die Artikel auswähle. – Dominique
Können Sie Ihr Ergebnis aus db drucken und was Sie erwarten? –