@Iossarian

Как правильно вытянуть комментарий из БД и обновить их количество с помощью ajax?

На сайте уже настроено ajax удаление комментария со страницы и из базы, а также его добавление. Но при добавлении надо сделать его же вывод. Плюс ко всему при удалении или добавлении желательно сразу пересчитать количество комментариев к записи. Подскажите, каким образом правильнее все это организовать?
Код добавления:
<div class="comment">
                    <textarea class="text" placeholder="Ваш комментарий..." name="text" cols="100" rows="3"></textarea>
                    <input type="hidden" class="post_id" value="<?=$post['id'];?>" name="post_id">
                    <input type="hidden" class="user" value="<?=$_SESSION['user']['id'];?>" name="user">
                </div>
                <div class="comm">                 
                    <button class="btn" id="add" name="comm">Комментировать</button>
                </div>

$(document).ready(function () {
        $('button#add').on('click', function () {
            var text = $('textarea.text').val();
            var post_id = $('input.post_id').val();
            var user = $('input.user').val();
            $.ajax({
                method: "POST",
                url: "../newcom.php",
                data: {user: user,text: text, post_id: post_id}
            })
                .done(function () {
                    $('textarea.text').val('');
                })
        })
    });

$values = [
    'author_id' => $_POST['user'],
    'text' => $_POST['text'],
    'post_id' => $_POST['post_id']
];
$sql = 'INSERT INTO comments (author_id, date, text, post_id) VALUES (:author_id, NOW(), :text, :post_id)';
$result = $db->prepare($sql, $values);


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

$(".comments .btn").on('click', function(){
        var commentId = this.id;
        var $currentComment = $(this).parents(".comments");

        $.post("../delete.php", {id : commentId}, function( ){
                $currentComment.remove();
        })
    });

if( is_numeric($_POST['id']) ) {
    $commentId = (int)$_POST['id'];
    $sqlDel = 'DELETE FROM comments WHERE id = ' . $commentId;
    $result = $db->query($sqlDel);
    }
}


И код на получение числа комментариев
$sqlCount = 'SELECT COUNT(id) as count, post_id FROM comments
          where post_id = ' . $_GET['id'] .
         ' GROUP BY post_id';
$count = $db->query($sqlCount);


Спасибо, что ознакомились с вопросом.
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 1
zoozag
@zoozag
Opencart
Вы же можете прямо на фронте добавлять новый комментарий и пересчитывать количество.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы