How can one efficiently implement a read/unread marking system in a PHP forum?

To efficiently implement a read/unread marking system in a PHP forum, you can create a database table to store the read status of each post for each user. When a user reads a post, update the database to mark it as read for that user. When displaying posts, check the database to determine if a post has been read by the current user and display it accordingly.

// Assuming you have a database connection established

// Function to mark a post as read for a specific user
function markPostAsRead($postId, $userId) {
    // Update the database to mark the post as read for the user
    $query = "INSERT INTO read_status (post_id, user_id) VALUES ($postId, $userId)";
    mysqli_query($connection, $query);
}

// Function to check if a post has been read by a specific user
function isPostRead($postId, $userId) {
    // Check the database to see if the post has been marked as read for the user
    $query = "SELECT * FROM read_status WHERE post_id = $postId AND user_id = $userId";
    $result = mysqli_query($connection, $query);
    
    return mysqli_num_rows($result) > 0;
}

// Example of how to use the functions
$postId = 123;
$userId = 456;

if(isPostRead($postId, $userId)) {
    echo "Post has been read";
} else {
    echo "Post is unread";
}