Обновление количества уведомлений в реальном времени без refre sh и без щелчка с помощью AJAX & PHP - PullRequest
0 голосов
/ 30 мая 2020

Привет, разработчики!

Я работаю над системой уведомлений. Что я делаю, так это то, что мне нужно отправлять уведомления для клиента без каких-либо refre sh и без какого-либо щелчка. Но я запутался.

Я сделал следующее:

  1. Используя ajax и php, всякий раз, когда скидка на продукт вставляется или обновляется, уведомление вставляется в уведомления таблица в базе данных. И это работает правильно.
  2. Затем я выполнил функцию ajax, содержащую метод GET с файлом getNotif. php, который ВЫБИРАЕТ текст уведомления и номер уведомления для определенного клиента и добавляет их в HTML, отправляя их из PHP в AJAX путем получения ответа.
  3. До сих пор мне нужно обновить sh, чтобы изменить номер уведомления, когда установлено обновление, или даже увидеть новое уведомление. Так как я не делал обработчик событий вроде onclick или onchange. (поскольку мне не нужен определенный щелчок, мне нужно обновить уведомление без каких-либо действий со стороны клиента ..)

Как это происходит?

Мой PHP Файл:

<?php
require("../include/dbconn.php");
session_start();
$uname=$_SESSION['uname'];
$customerID=$_SESSION['customerID'];
$notif="";
$unreadNotif=0;
if(isset($_GET['getNotif'])){
$query = "SELECT notification_date,notification_status,products.product_id,product_title,product_picture,store_name,discount_percent
 FROM notification,products,stores,customer,favorite_list WHERE products.product_id=notification.product_id
 AND products.store_id=stores.store_id AND customer.customer_id=favorite_list.customer_id AND stores.store_id=favorite_list.store_id
 AND customer.customer_id='$customerID' AND product_active=1 AND notification_status!=-1 ORDER BY notification_date DESC";
$result = mysqli_query($db, $query);

if(mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_array($result))
    {
      $notif_date=$row['notification_date'];
      $product_title=$row['product_title'];
      $product_picture=$row['product_picture'];
      $store_name=$row['store_name'];
      $discount_percent=$row['discount_percent'];
      $notif_status=$row['notification_status'];

      $notif.= "<li class=\"notification-box\">
        <div class=\"row\">
          <div class=\"col-lg-3 col-sm-3 col-3 text-center\">
            <img src=\"../img/products/$product_picture\" class=\"\" style=\"width:80px;height:auto\">
          </div>
          <div class=\"col-lg-8 col-sm-8 col-8\">
            <strong class=\"text-info\">$store_name</strong>
            <div>
              Exclusive Now! $discount_percent% discount on $product_title
            </div>
            <small class=\"text-warning\">$notif_date</small>
          </div>
        </div>
      </li><hr>";
  }


$query2 = "SELECT COUNT(notification_id) as unreadNotif
 FROM notification,products,stores,customer,favorite_list WHERE products.product_id=notification.product_id
 AND products.store_id=stores.store_id AND customer.customer_id=favorite_list.customer_id AND stores.store_id=favorite_list.store_id
 AND customer.customer_id='$customerID' AND product_active=1 AND notification_status=0  GROUP BY customer.customer_id";
$result2 = mysqli_query($db, $query2);
$arr=mysqli_fetch_array($result2);
$unreadNotif=$arr['unreadNotif'];

}

else{
  $notif="<span>No Notifications Right Now.</span>";
}


$data = array(
   'notif' => $notif,
   'unread_notif'  => $unreadNotif
);

echo json_encode($data);
}

else{
  echo "error";

}

 ?>

Мой JS Файл:

  $(document).ready(function() {

    function getNotif(){
      var getNotif="";

    $.ajax({
         type: "GET",
         url: "../phpOnly/getNotif.php",
         data: {getNotif:getNotif},
         dataType:"json",
         success: function(data) {
              // alert(data.notif);
              document.getElementById("insideNotif").innerHTML=data.notif;
              // alert(document.getElementsByClassName("insideNotif").innerHTML);
              $(".unreadNotif").html(data.unread_notif);
              }



          });

}
getNotif();

});

Мой HTML ЧАСТЬ:

<div class="insideNotif" id="insideNotif">

</div>

ПРИМЕЧАНИЕ: Я знаю, что должен предотвращать SQL ВПРЫСКИВАНИЯ подготовленными операторами. Забудьте об этом сейчас. И спасибо за уделенное время :)

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