На сайте уже настроено 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);
Спасибо, что ознакомились с вопросом.