Bazı çevrimiçi kurslar alıyorum ve alıştırmalardan birinde bir blog için iki tablo oluşturmamız gerekiyor - blog makaleleri ve blog gönderileri - ve bunları yabancı bir anahtarla birbirine bağlayın, sonra tümünü görüntüle her ikisinden de içerik. Yorumlar, yalnızca belirli bir makaleye bağlıyken, birden çok yoruma da izin vermelidir.PHP'de Yabancı Anahtar İçeriğini görüntüleme ve bağlama
girişimim:
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>";
}
}
Ve bu veritabanındaki yorumlarımızı ekleyerek ediyorum nasıl: phpMyAdmin'de
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);
}
yolunda yabancı anahtar eserler ve yorumlar belirli makalesine bağlanmış . Bunu bir web sayfasına aktarmak istiyorum. Sayfada yeni bir makale eklediğimde tamam çalışıyor, ancak bu makaleye bir yorum eklemek istediğimde onu göstermeyecek.
ON blog.content_id = article_comments.content_id
- ON blog.content_id = article_comments.blog_id
- (blog_id, yabancı anahtarın alan adıdır) değiştirirse - bir makalenin tüm yorumlarını görüntüler - ancak bu, onunla ilişkili her bir yorum için bu makaleyi çoğaltır. Bu bir anlam ifade ediyor mu? Bunu en iyi şekilde açıklamayı denedim. Daha fazla açıklama gerekiyorsa lütfen bildirin.
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: Ben olabildiğince gibi 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
ile olsun sonuç sayesinde
arada, bu şimdiye yabancı anahtarı oluşturmak için kullanılan bir ifadedir bakın, eklenen her yorum için makaleyi çoğaltır. Bu yüzden farklı yorumları olan iki tane yinelenen makaleyle sonuçlandım. Ben 100 yorum gerekecek olursa, makale 100 kez
ben bekliyorum davranış çoğaltılmış alacak olursa:
Article title: LOREM IPSUM
Content: LOREM IPSUM DOLOR SIT AMET....
-------------------------------------- \\ COMMENTS \\
Name: DSK
Comment: Great article!
--------------------------------------
Name: DSK
Comment: Great article! - 2nd comment
sadece ** SELECT **, ancak hiç kimse ** INSERT **. Yani veri eklediğinizde veya seçtiğinizde sorun mu yaşıyorsunuz? –
@DanilaGanchar Şu an için, doğru şekilde nasıl görüntüleneceğini anlayana kadar veri tabanı arayüzüne doğrudan veri ekliyorum, dolayısıyla kodumda INSERT ifadesi yok. Yani, benim problemim onu sergilemede yatıyor. Veritabanında yorumlar doğru şekilde makalelerle ilişkilendirilmiştir. Onları sayfada görüntülemenin yolu sorun gibi görünüyor. Muhtemelen bir konuyla ilgili yorum ya da makaleleri seçiyorum. – Dominique
Sonuçlarınızı db'den ve beklediğinizden basabilir misiniz? –