Page 1 sur 1

Comment corriger mon code pour réussir à faire un Système de Notification en Temps Réel comme sur Facebook ???

Posté : 05 févr. 2021, 21:11
par chegmarco
Bonjour.

Je souhaiterais mettre en place un système de notification qui n'affichera en notification que le Nombre des dernières commandes effectuées exactement comme le système de Notification de Facebook qui nous alerte en temps réel (au niveau de la bar de navigation d'en haut), du Nombre des dernières Notifications qu'on a FRAICHEMENT REÇUES.

Et quand l'utilisateur clique la dessus, et accède à la page des Notifications, l'Alert du Système de Notification disparaît car l'Utilisateur. Il devrait REAPPARAÎTRE lorsqu'il y aura une nouvelle commande.

Cependant, je ne sais pas vraiment comment m'y prendre.

J'ai essayé avec ma requête en PHP et MySQL PDO et un bout de Code AJAX. J'utilise rowCount() pour récupérer le nombre de commandes en tout. Mais ce n'est pas vraiment ce que je veux. Et bien, ce que je veux, c'est un Système de Notification en Temps Réel qui n'affichera que les dernières commandes qui n'ont pas encore été vues.

L'appel en HTML:

Code : Tout sélectionner

<span style="background-color: red; border-radius: 50%; font-size: 20px" id="notification_number"></span>
LA REQUETE D'ENREGISTREMENT en PHP et MySQL PDO:

Code : Tout sélectionner

$query = " INSERT INTO inventory_order (user_id, serie_number, inventory_category_id, inventory_order_date, inventory_order_name, inventory_order_address, payment_status, inventory_order_status, inventory_order_created_date) VALUES (:user_id, :serie_number, :inventory_category_id, :inventory_order_date, :inventory_order_name, :inventory_order_address, :payment_status, :inventory_order_status, :inventory_order_created_date) "; $statement = $connect->prepare($query); $result = $statement->execute( array( ':user_id' => $_SESSION["user_id"], ':serie_number' => mt_rand(), ':inventory_order_date' => $_POST['inventory_order_date'], ':inventory_order_name' => $_POST['inventory_order_name'], ':inventory_order_address' => $_POST['inventory_order_address'], ':inventory_category_id' => $_POST['inventory_category_id'], ':payment_status' => $_POST['payment_status'], ':inventory_order_status' => 'Pending...', ':inventory_order_created_date' => date("Y-m-d") ) );

Mon Code PHP de la méthode GET de mon Code AJAX ci-dessous (order_notification_number.php):

Code : Tout sélectionner

$query = "SELECT * FROM inventory_order"; $statement = $connect->prepare($query); $statement->execute(); echo $statement->rowCount();

MON Code AJAX:

Code : Tout sélectionner

<script type="text/javascript"> function loadDoc() { setInterval(function(){ var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("notification_number").innerHTML = this.responseText; } }; xhttp.open("GET", "order_notification_number.php", true); xhttp.send(); },1000); } loadDoc(); </script>

Comment donc faire ce Système d'Alert en Temps réel de sorte à afficher UNIQUEMENT les dernières commandes passées au lieu d'afficher la Totalité de façon statique avec le rowCount() défini dans le Fichier order_notification_number.php ???

Merci de votre aide.

Re: Comment corriger mon code pour réussir à faire un Système de Notification en Temps Réel comme sur Facebook ???

Posté : 05 févr. 2021, 21:18
par or 1
ajouter un champ dans la table en le mettant par défaut à 1 pour les nouvelles commandes.
le script appelé par l'ajax filtre la requête sql sur ce champ
à un moment, ce champ est passé de 1 à 0.

Re: Comment corriger mon code pour réussir à faire un Système de Notification en Temps Réel comme sur Facebook ???

Posté : 05 févr. 2021, 22:03
par chegmarco
ajouter un champ dans la table en le mettant par défaut à 1 pour les nouvelles commandes.
le script appelé par l'ajax filtre la requête sql sur ce champ
à un moment, ce champ est passé de 1 à 0.
Grand merci pour votre réponse rapide. Mais je ne comprends pas encore bien.

Je devrais ajouter par exemple, un champs view à la table inventory_order auquel je dois donner une valeur de 1 par défaut.

Comment devrais-je modifier par la suite le code de la requête PHP ???

Devrais-je faire un: WHERE view = 1 ???

Sinon que faire pour réussir après avoir ajouter le champs et donner une valeur de 1 par défaut ???

Un exemple basé sur du code m'aurait grandement éclairé. Merci de m'éclairer s'il vous plaît.