@Iossarian

Как вывести добавленный комментарий из БД с помощью AJAX?

На сайте реализовал ajax добавление и удаление комментариев в БД, а также удаление комментария со страницы. Тут было все просто. Проблема в выводе только что написанного комментария без перезагрузки. Есть код блока с комментариями:
<? foreach ($comments as $comment) : ?>
            <div class="comments">
                <div class="row comtext">

                    <div class="comname">
                        <?=$comment['name'];?>
                        <br>
                        <?=formatTime($comment['date']);?>
                    </div>

                    <div class="comtent">
                        <?=$comment['text'];?>
                    </div>

                    <div class="delete">
                        <button class="btn btn-sm btn-outline-light"  id="<?=$comment['id']?>">Удалить</button>
                    </div>

                </div>
            </div>
            <? endforeach;?>

И запрос к БД
$sqlComm = 'SELECT comments.id, comments.author_id, comments.date, comments.text,
        comments.post_id, users.name FROM comments
        JOIN posts ON posts.id = comments.post_id
        JOIN users ON users.id = comments.author_id
        WHERE posts.id = ' .  $_GET['id'] .
        ' ORDER BY comments.date DESC';
$comments = $db->query($sqlComm);

Так вот, подскажите, как правильно вытягивать запись из БД и выводить ее в блоке комментариев? Спасибо.
  • Вопрос задан
  • 398 просмотров
Пригласить эксперта
Ответы на вопрос 2
@sa1ch
Что первое пришло на ум.
Заносишь в data-* id каждого комментария, при отправке формы берешь id последнего комментария и отправляешь его вместе с комментарием. После того как комментарий добавился в базу вытягиваешь все последние комменты (where id>$last_id).
Или создаешь скрытое поле с id последнего комментария и отправляешь его так же с формой.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
на бэкэнде:
//тут код который добавит комментарий, а далее
$sqlComm = 'SELECT comments.id, comments.author_id, comments.date, comments.text,
        comments.post_id, users.name FROM comments
        JOIN posts ON posts.id = comments.post_id
        JOIN users ON users.id = comments.author_id
        WHERE posts.id = ' .  $_GET['id'] .
        ' ORDER BY comments.date DESC';
$comments = $db->query($sqlComm);

foreach ($comments as $comment) : ?>
            <div class="comments">
                <div class="row comtext">

                    <div class="comname">
                        <?=$comment['name'];?>
                        <br>
                        <?=formatTime($comment['date']);?>
                    </div>

                    <div class="comtent">
                        <?=$comment['text'];?>
                    </div>

                    <div class="delete">
                        <button class="btn btn-sm btn-outline-light"  id="<?=$comment['id']?>">Удалить</button>
                    </div>

                </div>
            </div>
            <? endforeach;?>


на форнте:
// кусок который аякс с отправкой коммента
.done(function (data) {
$('#comments_box').html(data); // здесь comments_box - ид врапера коментариев
})
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы