站内信 数据库表 是否浏览字段
前几天在论坛上问了一个问题
关于如何设计站内信的;
具体是这样:管理员可以向注册用户发送站内信,注册用户可以接受、浏览、删除站内信
当时的答案是:
如果不需要实时的话那比较方便一些
管理员向用户发站内消息,实际上也就是把消息存到数据表中去,当用户登录时到这张表中
去找找看看是否有人给自己留言了,并且是未读的,有的话在界面的某个地方提示一下,以
便用户能点击查看留言列表,当用户点开留言时表示该留言已被读取,同时更新数据表中该
留言的读取状态。
如果需要实时的话那就比较麻烦一些,采用 Ajax 轮询那张表,可以把轮询间隔设成 1 分钟
一次或者是几分钟一次。[b][/b]
后来仔细的想了想,大概的意思或者做法懂了,可是有一个问题还没想到怎么解决……
比如在站内信的表里设置一个int类型的值表示该站内信是否已读(比如0表示未读,1表示已读)
那么如何在用户浏览站内信的页面判断一封站内信是否为已读呢???
然后每个用户的情况不一样,显示的站内信内容也不一样,这个问题该怎么解决呢???
严重疑惑中……
[解决办法]
比如在站内信的表里设置一个int类型的值表示该站内信是否已读(比如0表示未读,1表示已读)
那么如何在用户浏览站内信的页面判断一封站内信是否为已读呢???
然后每个用户的情况不一样,显示的站内信内容也不一样,这个问题该怎么解决呢???
严重疑惑中……
這個簡單阿、你在頁面不是得到了一個list麼 在遍曆list bean對象取出表示為是否已讀的那個字段。
判斷它的值為1怎樣 為0怎樣?明白沒有?
[解决办法]
然后每一条站内信后面有一个“标记为已读”的链接,当用户点击此链接时,怎么修改这一条站内信的已读/未
读属性呢?
當用戶點擊的時候是不是要跳轉到寧外一個頁面和Action去。你把這個ID帶到Action裏面做數據庫操作改變它的值不就可以了麼。同時查處屬於這條ID的一條內容?
[解决办法]
你这个表如果是把邮件发给两个人其中一个人读了一个没有读,那你怎么显示?还得一个收件人ID及邮件ID的表.
[解决办法]
--- 环境 SQL Server 2005create table t_note -- 短信表( note_id numeric(18,0) primary key identity not null, -- 主键 note_man numeric(18,0), -- 用户ID note_title varchar(100), -- 短信标题 note_content varchar(200), -- 短信内容 note_date char(19), -- 时间 flag char(1), --标示(1未读 2已读))--- 增加一条短信(未读),它是针对用户ID为1的用户的insert into t_note values(1,'欢迎新用户','**用户欢迎您使用**系统…………',SUBSTRING(CONVERT(VARCHAR(19),GETDATE(),121),1,19),'1')--- 用户1查看了该短信select * from t_note where flag = 1 and note_man = 1 --- 立即将其flag修改为2update t_note set flag = '2' where note_man = 1 and note_id = 1--- 这是用 select * from t_note where flag = 1 and note_man = 1 查询不到了-- 结束了。不只我的理解对不?
[解决办法]
這個簡單阿、你在頁面不是得到了一個list麼 在遍曆list bean對象取出表示為是否已讀的那個字段。
判斷它的值為1怎樣 為0怎樣?明白沒有?
在数据库里的站内信肯定都是未读的吧,假如用户接收站内信的页面有一个方法得到数据库里的站内信,刚开
始是全部显示的
然后每一条站内信后面有一个“标记为已读”的链接,当用户点击此链接时,怎么修改这一条站内信的已读/未
读属性呢
[解决办法]
用两个表嘛 一个信息表用来储存信息相关属性 另一个使用msgId作为主键和userId等作为用户表
已读和未读信息在用户表中标记 查询时根据用户表读取信息表的内容
可以了吧
[解决办法]
打开收件箱的时候遍历所有数据 点击未读新建时 即查询单条数据时 在查询之后加一步update 将标记置1
[解决办法]
要想功能越来越强大,至少需要两个表:一个信件表;一个需要读取信件的用户表。
如只是要把消息发给在线的用户,则可用一全局变量对象存储消息及其阅读权限等,
直接在全局变量读取。(临时数据不需做永久记录的)。
如果感觉使用AJAX的请求响应方式不能满足你的要求,可以使用DWR中的推拉技术,
什么是推拉我就不多说了,GOOGLE一下文章还是不少的。
[解决办法]
这个必须要两张表 一对多
[解决办法]
我最近刚做了个站内消息管理
区分已读未读 已读未读 搜索
已发消息 收到消息 以及 逻辑删除 对方删除这条信息 不影响自己的
多设几个状态为就可以 4个bit类型的