Maison > Article > développement back-end > PHP développe l'identification du statut des messages lus et non lus pour la fonction de chat en temps réel
PHP développe l'identification de l'état des messages lus et non lus pour la fonction de chat en temps réel
Dans les applications sociales et les sites Web modernes, la fonction de chat en temps réel est devenue un élément essentiel. Lors du développement de cette fonctionnalité, une caractéristique importante était la possibilité d'identifier l'état lu et non lu des messages. Cet article explique comment utiliser PHP pour développer une fonctionnalité de chat en temps réel et ajouter des indicateurs d'état lu et non lu pour les messages.
Afin d'implémenter cette fonction, nous utiliserons la base de données MySQL pour enregistrer les informations utilisateur et les enregistrements de messages. Voici les deux tables de base de données que nous devons créer :
table des utilisateurs :
CREATE TABLE users ( id INT(11) AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL );
table des messages :
CREATE TABLE messages ( id INT(11) AUTO_INCREMENT PRIMARY KEY, sender_id INT(11) NOT NULL, receiver_id INT(11) NOT NULL, message TEXT, is_read TINYINT(1) DEFAULT 0 );
La table des utilisateurs contient l'ID et le nom d'utilisateur de l'utilisateur, et la table des messages contient l'ID du message, l'ID de l'expéditeur et ID du destinataire, contenu du message et état de lecture.
Ensuite, nous montrerons comment implémenter l'identification du statut lu et non lu des messages avec l'exemple de code suivant :
Obtenir la liste de tous les utilisateurs
<?php // 连接到数据库 $connection = mysqli_connect('localhost', 'username', 'password', 'database_name'); // 获取用户列表 $query = mysqli_query($connection, "SELECT * FROM users"); $users = mysqli_fetch_all($query, MYSQLI_ASSOC);
Charger les messages de discussion
<?php // 获取用户ID $user_id = $_SESSION['user_id']; // 获取所有未读消息 $query = mysqli_query($connection, "SELECT * FROM messages WHERE receiver_id = '$user_id' AND is_read = 0"); $unread_messages = mysqli_fetch_all($query, MYSQLI_ASSOC); // 标记所有未读消息为已读 foreach ($unread_messages as $message) { $message_id = $message['id']; mysqli_query($connection, "UPDATE messages SET is_read = 1 WHERE id = '$message_id'"); } // 获取所有已读消息 $query = mysqli_query($connection, "SELECT * FROM messages WHERE receiver_id = '$user_id' AND is_read = 1"); $read_messages = mysqli_fetch_all($query, MYSQLI_ASSOC);
Afficher les messages non lus et lisons les messages
<?php // 显示未读消息 foreach ($unread_messages as $message) { echo "<div class='unread-message'>{$message['message']}</div>"; } // 显示已读消息 foreach ($read_messages as $message) { echo "<div class='read-message'>{$message['message']}</div>"; }
Dans le code ci-dessus, nous nous connectons d'abord à la base de données et obtenons la liste de tous les utilisateurs. Ensuite, lors du chargement des messages de discussion, nous récupérons les messages non lus de l'utilisateur actuel de la base de données et les marquons comme lus. Enfin, nous affichons les messages non lus et lisons les messages séparément.
Grâce à l'exemple ci-dessus, nous avons implémenté avec succès la fonction d'identification de l'état lu et non lu des messages. Lorsque l'utilisateur reçoit un nouveau message, il sera marqué comme non lu et une fois que l'utilisateur aura consulté le message, il sera marqué comme lu.
Afin d'améliorer cette fonction, nous pouvons apporter d'autres améliorations en fonction des besoins réels, comme l'ajout de nouvelles notifications de messages ou l'ajout de reçus d'envoi de messages, etc. Cependant, l'implémentation ci-dessus nous a fourni une bonne base, nous permettant d'utiliser PHP pour développer l'identification du statut des messages lus et non lus dans la fonction de chat en temps réel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!