@Gristen

Что делать если запрос дублирует записи?

есть админка , в ней выводятся все посты . Идея была такой , написать функцию которая раз в 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 раз
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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