>I have made a forum in PHP, and the users are logged in using cookies. I
>want all new threads (and if there are new replies in an old thread) to be
>highlight or something like that.
>
>How do I check if a user has read a message or not?

Every user has a unique ID when they log in, right?
And every message has a unique ID, right?

create table messages_read(
  user_id int(11) unsigned not null key,
  message_id int(11) unsigned not null key
);

When they read a message:
$query = "insert into messages_read(user_id, message_id) values($user_id,
$messages_id)";

You can then use this in the query that gets the messages for display:

select blah, blah blah, messages_read.user_id from messages
left outer join messages_read on user_id = $user_id and
messages_read.message_id = messages.message_id
where blah, blah, blah

The "left outer join ..." part is the new bit in your query.

Notice also that I've added "messages_read.user_id" to the columns you
select.

As you iterate through the messages to display, either:

1. messages_read.user_id is their $user_id, and they've read that message
or,
2. messages_read.user_id is NULL because there was no row in the
messages_read table, so they ain't seen that message yet.

Be sure to add interface elements so that they can mark a message "Read" or
"Unread" even if they've already read it or haven't -- Let the user have
control over what they consider as "Read" or they'll be only partially happy
about this new feature. :-)

-- 
Like Music?  http://l-i-e.com/artists.htm


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to