par
chegmarco » 05 févr. 2021, 21:11
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.
Bonjour.
Je souhaiterais mettre en place un système de notification qui [b]n'affichera en notification que le Nombre des dernières commandes effectuées[/b] exactement comme [b]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[/b].
[b]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.[/b]
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 [b]rowCount()[/b] pour récupérer le nombre de commandes en tout. Mais ce n'est pas vraiment ce que je veux. [b]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.[/b]
L'appel en HTML:
[CODE]<span style="background-color: red; border-radius: 50%; font-size: 20px" id="notification_number"></span>[/CODE]
LA REQUETE D'ENREGISTREMENT en PHP et MySQL PDO:
[CODE]$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")
)
);[/CODE]
Mon Code PHP de la méthode [b]GET[/b] de mon Code [b]AJAX[/b] ci-dessous ([b]order_notification_number.php[/b]):
[CODE]$query = "SELECT * FROM inventory_order";
$statement = $connect->prepare($query);
$statement->execute();
echo $statement->rowCount();[/CODE]
MON Code [b]AJAX[/b]:
[CODE]<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>[/CODE]
[b]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 ???[/b]
Merci de votre aide.