я пытаюсь назначить список сообщений с разделом комментариев, который является уникальным для этого сообщения.Моя проблема в том, что вместо того, чтобы отображать конкретные комментарии под определенными постами, все комментарии отображаются для каждого отдельного поста.
Я использую 2 таблицы базы данных: "posts: id, title, subtitle, content" и "comments:comment_id, post_fk (внешний ключ, прикрепленный к идентификатору сообщения), uid, дата, сообщение.
blog.php, где сообщения отображаются и комментарии отправляются, а затем публикуются через getComments
// fetch data from posts and echo them into a post
$sql = "SELECT * FROM posts ORDER BY id DESC";
$result = mysqli_query($conn,$sql);
while ($row = mysqli_fetch_array($result)) {
$title = $row['title'];
$subtitle = $row['subtitle'];
$content = $row['content'];
?>
<h2><?php echo $title; ?> - <small><?php echo $subtitle; ?></small></h2>
<p><?php echo $content; ?></p>
// echo the comment field and then get comments from the getComments function echo
echo "<form method='posts' action='".setComments($conn)."'>
<input type='hidden' name='uid' value='Anonymous'>
<input type='hidden' name='date' value='".date('Y-m-d H:i:s')."'>
<textarea name='message'></textarea><br>
<button type='submit' name='commentSubmit'>Comment</button>
</form>";
getComments($conn);
comments.php, где определены функции setComments и getComments
function setComments($conn) {
if (isset($_POST['commentSubmit'])) {
$uid = $_POST['uid'];
$date = $_POST['date'];
$message = $_POST['message'];
$sql = "INSERT INTO comments (uid, date, message) VALUES ('$uid', '$date', '$message')";
$result = mysqli_query($conn, $sql);
}
}
function getComments($conn) {
$sql = "SELECT
c.uid,
c.date,
c.message
FROM comments AS c
LEFT JOIN posts AS p ON
c.post_fk = p.id
WHERE c.post_fk = p.id
";
$result = mysqli_query($conn, $sql);
while ($row = $result->fetch_assoc()) {
echo $row['uid'];
echo $row['date']."<br><br>";
echo $row['message']."<br><br>";
Я экспериментировал с LEFT JOIN без каких-либо многообещающих результатов. Я очень новыйв PHP, но я подозреваю, что мне нужно добавить некоторые дополнительные значения в форму комментария, которая определяет, к какому сообщению относится комментарий. Надеюсь, эта информация достаточно содержательна, и извините, если мой код запутался!
Спасибо
(редактировать) setcomment.php
function setComments($conn) {
if (isset($_POST['commentSubmit'])) {
$comment_id = $_POST['comment_id'];
$uid = $_POST['uid'];
$date = $_POST['date'];
$message = $_POST['message'];
$sql = "INSERT INTO comments (comment_id, uid, date, message) VALUES ($comment_id, $uid, $date, $message)";
$stmt = mysqli_prepare($sql);
mysqli_stmt_bind_param($stmt, "iiss", $id, $uid, $date, $message);
$result = mysqli_stmt_execute($stmt);
}
}
таблица комментариев таблица сообщений