ホームページ >バックエンド開発 >PHPチュートリアル >PHP がリアルタイム チャット機能用のメッセージ既読および未読ステータス識別を開発

PHP がリアルタイム チャット機能用のメッセージ既読および未読ステータス識別を開発

王林
王林オリジナル
2023-08-14 08:57:171071ブラウズ

PHP がリアルタイム チャット機能用のメッセージ既読および未読ステータス識別を開発

PHP は、リアルタイム チャット機能のためのメッセージ既読および未読ステータス識別を開発します。

現代のソーシャル アプリケーションや Web サイトでは、リアルタイム チャット機能が不可欠な部分になっています。この機能を開発する際、重要な機能はメッセージの既読と未読のステータスを識別する機能でした。この記事では、PHP を使用してリアルタイム チャット機能を開発し、メッセージの既読および未読のステータス インジケーターを追加する方法を紹介します。

この機能を実装するには、MySQL データベースを使用してユーザー情報とメッセージ レコードを保存します。作成する必要がある 2 つのデータベース テーブルは次のとおりです。

users テーブル:

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

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

user テーブルには、ユーザーの ID とユーザー名が含まれます。メッセージ テーブルには、メッセージ ID、送信者 ID、受信者 ID、メッセージの内容、および読み取りステータスが含まれます。

次に、次のサンプル コードを使用して、メッセージの既読および未読ステータスの識別を実装する方法を示します。

  1. すべてのユーザーのリストを取得する

    <?php
    // 连接到数据库
    $connection = mysqli_connect('localhost', 'username', 'password', 'database_name');
    // 获取用户列表
    $query = mysqli_query($connection, "SELECT * FROM users");
    $users = mysqli_fetch_all($query, MYSQLI_ASSOC);
  2. チャット メッセージの読み込み

    <?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. 未読メッセージと既読メッセージの表示

    <?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>";
    }

上記のコードでは、まずデータベースに接続し、すべてのユーザーのリストを取得します。次に、チャット メッセージを読み込むときに、現在のユーザーの未読メッセージをデータベースから取得し、既読としてマークします。最後に、未読メッセージと既読メッセージを別々に表示します。

上記の例により、メッセージの既読・未読ステータス識別機能を実装することができました。ユーザーが新しいメッセージを受信すると、そのメッセージは未読としてマークされ、ユーザーがメッセージを閲覧した後は既読としてマークされます。

この機能を改善するために、新しいメッセージの通知の追加やメッセージ送信の受信確認の追加など、実際のニーズに応じてさらなる改善を行うことができます。ただし、上記の実装により優れた基盤が提供され、PHP を使用してリアルタイム チャット機能でのメッセージの既読および未読ステータスの識別を開発できるようになりました。

以上がPHP がリアルタイム チャット機能用のメッセージ既読および未読ステータス識別を開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。