Notifications nouveau message
flo39400
Messages postés
596
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Voila j'ai un tchat en javascript ajax et php.
J'ai fait un système de notification mais le problème sais qu'il est basé sur le temps du message j'aimerais ajouter un condition qui désactive l'envoi de la notification.
Car celui qui envoie le message entend la notification alors que il ne devrait pas.
Comment faire cela ?
chat_modele.php
chat_control.php
tchat.php
chat_vue.php
Merci d'avance de votre aide.
Voila j'ai un tchat en javascript ajax et php.
J'ai fait un système de notification mais le problème sais qu'il est basé sur le temps du message j'aimerais ajouter un condition qui désactive l'envoi de la notification.
Car celui qui envoie le message entend la notification alors que il ne devrait pas.
Comment faire cela ?
chat_modele.php
<?php function bdd() { return $db = new PDO('mysql:host=localhost;dbname=sitebeta; charset=utf8', 'root', ''); } function ajout_message($bdd,$pseudo,$message) { $req = $bdd->prepare("INSERT INTO message(Pseudo,Message,Date) VALUES(:Pseudo,:Message,NOW())"); $req->execute(array("Pseudo"=>$pseudo,"Message"=>$message)); } function message($bdd) { $req = $bdd->query("SELECT * FROM message ORDER BY Date DESC"); return $req; } function expire_message($bdd) { $req = $bdd->query("DELETE FROM message WHERE Date < DATE_SUB(NOW(), INTERVAL 30 MINUTE)"); } function pair($nombre) { if ($nombre%2 == 0) return true; else return false; } function getRelativeTime($date) { // Déduction de la date donnée à la date actuelle $time = time() - strtotime($date); // Calcule si le temps est passé ou à venir if ($time > 0) { $when = "il y a"; } else if ($time < 0) { $when = "dans environ"; } else { return "il y a 1 seconde"; } //Notification sonore a l'arriver d'un message de 1 seconde if ($time == 1) { echo "<audio src='bipmessage.mp3' autoplay></audio>"; } $time = abs($time); // Tableau des unités et de leurs valeurs en secondes $times = array( 31104000 => 'an{s}', // 12 * 30 * 24 * 60 * 60 secondes 2592000 => 'mois', // 30 * 24 * 60 * 60 secondes 86400 => 'jour{s}', // 24 * 60 * 60 secondes 3600 => 'heure{s}', // 60 * 60 secondes 60 => 'minute{s}', // 60 secondes 1 => 'seconde{s}'); // 1 seconde foreach ($times as $seconds => $unit) { // Calcule le delta entre le temps et l'unité donnée $delta = round($time / $seconds); // Si le delta est supérieur à 1 if ($delta >= 1) { // L'unité est au singulier ou au pluriel ? if ($delta == 1) { $unit = str_replace('{s}', '', $unit); } else { $unit = str_replace('{s}', 's', $unit); } // Retourne la chaine adéquate return $when." ".$delta." ".$unit; } } } ?>
chat_control.php
<?php require_once("chat_modele.php"); $bdd = bdd(); if(isset($_GET['name']) AND isset($_GET['message'])) { ajout_message($bdd,$_GET['name'],$_GET['message']); } else { expire_message($bdd); $message = message($bdd); require_once("chat_vue.php"); } ?>
tchat.php
<?php session_start(); ?> <!doctype html> <html lang="fr"> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet" href="style.css"> </head> <body> <?php include('menu.php'); ?> <?php if(isset($_SESSION['id'])) { ?> <table id="body"> <tr> <td id="titre">Discution :</td> </tr> <tr > <td style="height:500px"> <div id="chat_aff"></div> </td> </tr> <tr > <td id="form" valign="top"> <table id="form2"> <tr> <td style="width:30%"> <label for="name" style="font-family:Comic Sans MS;">Pseudo</label> </td> <td style="width:55%"> <label for="message" style="font-family:Comic Sans MS;">Message</label> </td> <td></td> </tr> <tr> <td> <input id="name" type="text" maxlength="20" value="<?= $_SESSION['pseudo']; ?>" disabled /> </td> <td> <input id="message" type="text" maxlength="250" /> </td> <td> <button id="submit">Envoyer</button> </td> </tr> </table> </td> </tr> </table> <script src="http://code.jquery.com/jquery.min.js"></script> <script> setInterval(function() { $("#chat_aff").load("chat_control.php",function(){}); },1000); $("#submit").click(function() { var name = $("#name").val(); var message = $("#message").val(); $("#message").val(""); $.ajax({ async: false , type: 'GET', url: 'chat_control.php?name='+name+'&message='+message }); }); </script> <?php } else { echo "Vous devez être connecter pour discuter avec d'autre membres !"; } ?> </body> </html>
chat_vue.php
<table id="table_message"> <?php while($don = $message->fetch()) { if(pair($don['id'])) { $color = ""; } else { $color = "#EDEDED"; } ?> <tr style="background-color:<?php echo $color; ?>"> <td class="info_message" valign="top"> <span style="font-size:small"><?php echo $don['Pseudo'];?></span></br> <?php echo getRelativeTime($don['Date']);?> </td> <td class="message" > <div class="message2" > <?php echo $don['Message'];?> </div> </td> </tr> <?php } ?> </table>
Merci d'avance de votre aide.
A voir également:
- Notifications nouveau message
- Recuperer message whatsapp supprimé - Guide
- Message supprimé whatsapp - Guide
- Message absence thunderbird - Guide
- Nouveau site coco chat - Accueil - Réseaux sociaux
- Comment créer un nouveau groupe sur whatsapp - Guide
1 réponse
Il faut mettre un moyen d’identifier l'utilisateur dans ta fonction qui permet la notification sonore, et de voir si c'est lui qui a envoyé le message ou non, ce qui implique de refaire ta fonction car le seul paramètre que tu utilises c'est la date du message.
Je te conseil de créer une fonction notification, ou tu as le message et l'utilisateur actuel, pour faire la comparaison et donc savoir si l'utilisateur doit recevoir la notif ou non.
Après si je ne me trompe pas tu rafraîchis la page qui contient les messages, je te conseilles plutôt d'utiliser un système de JSON, pour récupérer les messages, comme ça tu récupères que les messages non lu au lieu de recharger tout les messages, et tu auras un meilleur contrôle.
Je te conseil de créer une fonction notification, ou tu as le message et l'utilisateur actuel, pour faire la comparaison et donc savoir si l'utilisateur doit recevoir la notif ou non.
Après si je ne me trompe pas tu rafraîchis la page qui contient les messages, je te conseilles plutôt d'utiliser un système de JSON, pour récupérer les messages, comme ça tu récupères que les messages non lu au lieu de recharger tout les messages, et tu auras un meilleur contrôle.
Uttiliser un système JSON je veux bien mais déjà que je galère avec sa... Ça risque d'être compliqué pour moi
https://www.grafikart.fr/tutoriels/tchat-jquery-ajax-php-82
Il est un peu vieux, comme l'utilisation de mysql_ et non PDO, mais bon ça te donne les bases pour le JSON et récupération des messages.