Мой вопрос о том, как группировать ответы по комментариям в каждом посте.Я новичок в PHP и учусь на практике и ставлю перед собой задачи.Я работаю над блогом, который использует систему комментариев как часть своих функций.Мне сложно группировать ответы по комментариям.
Мне удалось найти комментарии по сообщению, создав внешний ключ для идентификатора сообщения.Я пытался использовать тот же подход, чтобы искать ответы в соответствии с комментариями.То есть я хочу, чтобы каждый ответ располагался под соответствующими комментариями.Я создал внешний ключ для (comments_id) в таблице ответов и связал его с идентификатором таблицы комментариев.Поэтому я использовал запрос ниже, чтобы искать ответы в соответствии с комментарием, который отображал все ответы.Каждое сообщение, имеющее одинаковое количество ответов, отображается после последнего комментария, даже если у них нет такого количества ответов.У меня есть 5 ответов, 3 за 1 комментарий и 1 каждый за 2 других комментария.Но в конце последнего комментария в каждом сообщении будет отображаться 5 ответов.Но когда я изменяю первую строку в моем запросе на: $ r_query = $ get_replies = "SELECT * FROM answers WHERE comments_id = $ id";Ничто не будет смещено.Комментарии.php и post.php представлены ниже.Я решил не удалять какую-либо часть кода, поскольку каждая часть может быть необходимой.
$r_query = $get_replies = "SELECT * FROM replies ";
<?php
$r_query = $get_replies = "SELECT * FROM replies";
$r_run = mysqli_query($con,$r_query);
if(mysqli_num_rows($r_run) <= 1){
?>
<div class="comment">
<?php
while($r_row = mysqli_fetch_array($r_run)){
$r_id = $r_row['id'];
$r_name = $r_row['name'];
$r_username = $r_row['username'];
$r_image = $r_row['image'];
$r_reply = $r_row['reply'];
?>
<div class="row single-comment user-comment">
<div class="col-sm-2">
<img src="img/<?php echo $r_image; ?>" alt="Profile Picture" class="rounded-circle">
</div>
<div class="col-sm-10">
<h4><?php echo ucfirst($r_name); ?></h4>
<span class="time"><?php echo date('M j, Y', strtotime($r_row['date'])); ?></span>
<span class="time"><?php echo 'at '.date('h:i a', strtotime($r_row['date'])); ?></span>
<p><?php echo $r_reply; ?></p>
</div>
</div>
<?php }?>
</div>
<?php }?>
КОММЕНТАРИИ СТРУКТУРА ТАБЛИЦЫ С ОБРАЗЦОМ ДАННЫХ
СОЗДАТЬ ТАБЛИЦУ comments
(id
int (11) NOT NULL, date
datetime DEFAULT NULL, name
varchar (255) NOT NULL, username
varchar (255) NOT NULL, post_id
int (11) NOT NULL, email
varchar (255) NOT NULL, website
varchar (255) NOT NULL, image
varchar (255) NOT NULL, comment
текст NOT NULL, status
varchar (255) NOT NULL, posts_id
int (11) NOT NULL) ENGINE =CHARSET ПО УМОЛЧАНИЮ InnoDB = latin1;
INSERT INTO comments
(id
, date
, name
, username
, post_id
, email
, website
, image
,comment
, status
, posts_id
) ЗНАЧЕНИЯ (136, '2019-02-08 01:16:17', 'Val Amasiatu', 'compus', 91, 'valamasiatu@gmail.com', 'avidscholars.com.ng ',' Unknown_Member.jpg ',' так держать ',' одобрить ', 91),
- индексы для таблицы comments
ALTER TABLE comments
ДОБАВИТЬ ПЕРВИЧНЫЙ КЛЮЧ (id
), ДОБАВИТЬ КЛЮЧ comments and posts link
(posts_id
) ИСПОЛЬЗОВАТЬ BTREE;- AUTO_INCREMENT для сброшенных таблиц
- AUTO_INCREMENT для таблицы comments
ALTER TABLE comments
MODIFY id
int (11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT = 155;- Ограничения для дамп-таблиц
- Ограничения для таблицы comments
ALTER TABLE comments
ДОБАВИТЬ КОНСТРАКТ Foreign key to posts table
ИНОСТРАННЫЙ КЛЮЧ (posts_id
) ССЫЛКИ posts
(id
) УДАЛИТЬ КАСКАД ОБНОВИТЬ КАСКАД;COMMIT;
ОТВЕТИТЬ СТРУКТУРУ ТАБЛИЦЫ С ОБРАЗЦОМ ДАННЫХ
СОЗДАТЬ ТАБЛИЦУ replies
(id
int (11) NOT NULL, date
datetime NOT NULL, name
varchar (255)NOT NULL, username
varchar (255) NOT NULL, email
varchar (255) NOT NULL, image
varchar (255) NOT NULL, comment
текст NOT NULL, status
varchar (255) NOT NULL,comments_id
int (11) NOT NULL) ENGINE = InnoDB CHARSET ПО УМОЛЧАНИЮ = latin1;- Сброс данных для таблицы replies
INSERT INTO replies
(id
, date
, name
, username
, email
, image
, comment
, status
, comments_id
) VALUES (163, '2019-02-08 23:02:23', 'Vall Amasia', 'val', 'cgeneral@gmail.com', 'adult-beard-blur-927022.jpg', '1-й ответ',' утверждать ', 151),
- индексы для таблицы replies
ALTER TABLE replies
ADD PRIMARY KEY (id
), ADD KEY Comment and replies relationship
(comments_id
);- AUTO_INCREMENT для сброшенных таблиц
- AUTO_INCREMENT для таблицы replies
ALTER TABLE replies
MODIFY id
int (11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT = 168;- Ограничения для дамп-таблиц - Ограничения для таблицы replies
ALTER TABLE replies
ДОБАВИТЬ КОНСТРАКТ Foreign key to replies table
ИНОСТРАННЫЙ КЛЮЧ (comments_id
) ССЫЛКИ comments
(id
) НА УДАЛИТЬ КАСКАД НА ОБНОВЛЕНИЕ КАСКАД;COMMIT;
СТРУКТУРА И ОБРАЗЕЦ ДАННЫХ ДЛЯ ТАБЛИЦЫ ПОСТОВ
СОЗДАТЬ ТАБЛИЦУ posts
(id
int (11) НЕ ПУСТО, postDate
datetime НЕ ПУСТО,title
varchar (255) NOT NULL, author
varchar (255) NOT NULL, author_image
varchar (255) NOT NULL, image
varchar (255) NOT NULL, categories
varchar (255) NOT NULL,tags
varchar (255) NOT NULL, post_data
текст NOT NULL, views
int (11) NOT NULL, status
varchar (255) NOT NULL) ENGINE = InnoDB CHARSET DEFAULT CHARSET = latin1;- Сброс данных для таблицы posts
INSERT INTO posts
(id
, postDate
, title
, author
, author_image
, image
, categories
, tags
, post_data
, views
, status
) VALUES (42, '2019-02-03 11:21:22', 'Что такое Lorem Ipsum?', '1234', 'AvePoint.jpg', 'Administration-balance-blur-272978.jpg ',' tutorials ',' my, my, my ','
Но я не смог найти и разместить этот отсутствующий закрывающий тег div там, где он должен быть.
', 8,' publish '),
- индексы для таблицы posts
ALTER TABLE posts
ADD PRIMARY KEY (id
);- AUTO_INCREMENT для сброшенных таблиц - AUTO_INCREMENT для таблицы posts
ALTER TABLE posts
MODIFY id
int (11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT = 92;COMMIT;
Мне нужно было сгруппировать ответы в соответствии с их комментариями в любом посте с комментариями, а также с ответами.то есть ответы, приходящие под комментариями.