есть админка , в ней выводятся все посты . Идея была такой , написать функцию которая раз в 7 секунд отсылает мое время :
function check(){
$.ajax({
method: "POST",
url: "../../app/controllers/posts.php",
data: {
action: "Check",
time:getFormatedDate(), // тут посылаю свое время
}
})
.done(function( msg )
{
console.log(msg);
var d1 = document.getElementById('table'); // тут уже вывожу html верстку которая пришла с пхп.
d1.insertAdjacentHTML('beforeend', msg);
});
}
setInterval('check()',7000); // 7 сек задержка
После чего пхп берет последний пост в бд и проверяет , если время записанное в БД БОЛЬШЕ чем время которое прилетело ( Я перед отправкой своего времени вычитаю пару секунд ) пхп мне возвращает данные об этом посте .
$time = $_POST["time"];
$q = $dbh->prepare("SELECT date_create,id FROM posts ORDER BY id DESC LIMIT 1 ");
$q->execute();
$dateCreate = $q->fetch(PDO::FETCH_ASSOC);
$idNewPost = $dateCreate['id'];
// var_dump($idNewPost);
if ($dateCreate["date_create"]>=$time){
$q = $dbh->prepare("SELECT posts.*,users.username FROM posts JOIN users ON posts.user_id = users.id WHERE posts.id = $idNewPost ");
$q->execute();
$NewPost = $q->fetch(PDO::FETCH_ASSOC);
/Дальше у меня цикл foreach который посылает уже html верстку в ajax**/
Получается , когда пользователь создает новый пост , то он выводится на главной странице в админке без перезагрузки .
В чем собственно проблема , когда новая запись выводится , она дублируется ровно 8 раз