Привет, разработчики!
Я работаю над системой уведомлений. Что я делаю, так это то, что мне нужно отправлять уведомления для клиента без каких-либо refre sh и без какого-либо щелчка. Но я запутался.
Я сделал следующее:
- Используя ajax и php, всякий раз, когда скидка на продукт вставляется или обновляется, уведомление вставляется в уведомления таблица в базе данных. И это работает правильно.
- Затем я выполнил функцию ajax, содержащую метод GET с файлом getNotif. php, который ВЫБИРАЕТ текст уведомления и номер уведомления для определенного клиента и добавляет их в HTML, отправляя их из PHP в AJAX путем получения ответа.
- До сих пор мне нужно обновить 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 ВПРЫСКИВАНИЯ подготовленными операторами. Забудьте об этом сейчас. И спасибо за уделенное время :)