Ответы пользователя по тегу MySQL
  • Как отслеживать новые записи в бд и выводить их на экран без перезагрузки страницы?

    Вам нужно сделать проверку новых сообщений по интервалу.
    let lastMessageId = null
    let checkNewMessageInterval = setInterval(() => {
        $.ajax({
          url: 'ajax/checkNewMessage.php',
          type: 'POST',
          cache: false,
          data: {last_id: lastMessageId},
          dataType: 'html',
          success: function(response) {
                let lastMessage = response.data[response.data.length - 1]
                lastMessageId = lastMessage.message_id // сохраняем последнее сообщение которое получили
                // .....
          }
        })
       // ...
    }, 5000)


    При последнем обновлении, вы можете хранить ID последнего сообщения, а при следующем запросе, получать сообщения только с ID позже сохраненного.

    Запрос для БД:
    SELECT * FROM chat WHERE `message_id` > $_POST['last_id']


    еще лучше, сначала проверять есть ли вообще новые сообщения, и если есть то тогда уже получать эти сообщения:
    SELECT COUNT(*) FROM chat WHERE `message_id` > $_POST['last_id']


    Это очень простой вариант я описал, но в общем реализация чата через AJAX - это кривой вариант. Вам постоянно придется дергать БД на проверку новых сообщений, и так каждому пользователю.

    Лучший и правильный вариант использовать websoket. Используя websoket пользователи будут получать сообщения сразу после их написания, по сути и БД дергать не нужно. Так как БД будет служить только для подгрузки истории сообщений,
    Ответ написан
    1 комментарий