Home  >  Article  >  Backend Development  >  PHP develops message read and unread status identification for real-time chat function

PHP develops message read and unread status identification for real-time chat function

王林
王林Original
2023-08-14 08:57:17938browse

PHP develops message read and unread status identification for real-time chat function

PHP develops message read and unread status identification for real-time chat function

In modern social applications and websites, real-time chat function has become an essential part . When developing this functionality, an important feature was the ability to identify the read and unread status of messages. This article will introduce how to use PHP to develop real-time chat functionality and add read and unread status indicators for messages.

In order to implement this function, we will use the MySQL database to save user information and message records. The following are the two database tables we need to create:

users table:

CREATE TABLE users (
    id INT(11) AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL
);

messages table:

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
);

The user table contains the user's ID and user name, and the message table Contains the message ID, sender ID, receiver ID, message content and read status.

Next, we will demonstrate how to implement the read and unread status identification of messages through the following sample code:

  1. Get the list of all users

    <?php
    // 连接到数据库
    $connection = mysqli_connect('localhost', 'username', 'password', 'database_name');
    // 获取用户列表
    $query = mysqli_query($connection, "SELECT * FROM users");
    $users = mysqli_fetch_all($query, MYSQLI_ASSOC);
  2. Load chat messages

    <?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);
  3. Display unread messages and read 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>";
    }

In the above code, we First connect to the database and get the list of all users. Then when loading chat messages, we get the current user's unread messages from the database and mark them as read. Finally, we display unread messages and read messages separately.

Through the above example, we successfully implemented the read and unread status identification function of the message. When the user receives a new message, it will be marked as unread, and after the user views the message, it will be marked as read.

In order to improve this function, we can make further improvements according to actual needs, such as adding new message notifications or adding message sending receipts, etc. However, the above implementation has provided us with a good foundation, allowing us to use PHP to develop message read and unread status identification in the real-time chat function.

The above is the detailed content of PHP develops message read and unread status identification for real-time chat function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn