Как отобразить уведомление о комментариях в php - PullRequest
1 голос
/ 06 февраля 2020

У меня есть три таблицы "posts", "comments" и "friend_request"

screenshot Database Structure

1: Если кто-то комментирует SESSION ['id'], уведомление должно Появляются.

Существующий запрос для "записей"

SELECT * FROM posts WHERE post_user = '".$_SESSION['id']."'

post_id = postId;
post_user = postUser;

комментариев к сообщениям

SELECT * FROM comments WHERE post_id = '$post_id' AND user_id != '".$_SESSION['id']."' AND status = '0'"

Я хочу, чтобы кто-то комментировал мое сообщение, и я отвечал на комментарии , Я просто хочу показывать уведомления только на боковой панели комментатора, даже если будет больше ответов.

friend_request - это таблица, в которой каждый член отображает друзей или нет.

1 Ответ

1 голос
/ 06 февраля 2020

Я хотел бы подойти к этому с помощью запроса AJAX на стороне клиента к php скрипту извлечения, который просматривает зарегистрированных пользователей SESSION['id'], чтобы найти все комментарии авторов постов, которые являются потомками комментариев. зарегистрированный пользователь сделал

Frontend

Вы можете использовать любой способ отправки запроса к вашему скрипту PHP, я использовал jQuery для простоты.

Функция jQuery $.ajax будет постоянно запускаться на странице для проверки уведомлений. Это было сделано, заключив его в функцию setInterval.

Этот код не тестировался, поэтому не уверен на 100% в пространстве имен массива PHP, который вы получите обратно. Лучше всего console.log объект data в обработчике успеха здесь.

Вы заметите, что есть ссылка на скрипт readComment.php, это может быть простой скрипт, который устанавливает comments.status = 1 для указания статус чтения.


  setInterval(function() {
    $.ajax({
   url:"fetch.php",
   method:"GET",
   success:function(data)
   {
    console.log(data)
    data.forEach(function(i,v) {
        $( "#notifications" ).append( "<a href=readComment.php?id=" + v.id + ">unread notification</p>" );
    });

   }
  });
 }
}, 60 * 1000); // This will run every minute to check for notifications

Сервер

fetch.php

Я использую здесь оператор select с двумя предложениями WHERE IN, чтобы получить все комментарии, сделанные авторами сообщения, которые являются детьми комментария, который сделал авторизованный пользователь. Я не на 100% по этому запросу, так как я не проверял, но это должно помочь вам начать.

$query = "SELECT 
    *
FROM
    comments
WHERE
    comments.user_id IN (SELECT posts.post_user FROM posts)
AND
    comments.parent_comment_id IN (SELECT comments.id FROM comments WHERE comments.user_id = ".SESSION['id'].")"
AND 
    comments.status = 0";

$result = mysqli_query($connection, $query);

header("Status: 200");
header('Content-Type: application/json');
echo json_encode(array('data' => mysqli_fetch_array($result) )); 
die;

Дайте мне знать, если вам нужна дополнительная информация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...