【发布时间】:2011-01-04 16:20:45
【问题描述】:
我正在用 PHP/MySQL/jQuery 构建一个社交网站。一旦用户登录到我的网站,我想查询数据库并获得管理员通知(如果存在)。这将是一个向所有用户显示在页面上的消息框,但它会有一个 X 来单击它,并且在管理员发布新的公告消息之前不会再次显示它。因此,如果您从未单击 X 并且数据库中存在公告消息,它将始终在您的页面上显示此消息框,但是如果您确实单击 X 以关闭该框,那么您将返回该页面不在那里,除非发布了新的管理消息。
我知道有几种方法可以做到这一点,但我正在寻找最有效的方法。
我有一个想法,如果我在用户表“admin_message”中添加一个额外的 mysql 字段并将其标记为 0,那么当我发布一条新的管理消息时,如果管理消息,它会将每个用户的记录更改为 1设置为 1 然后它显示在用户的页面上。然后当用户单击 X 隐藏该框时,它将更新用户表行并将值更改回 0。
我的另一个想法是使用 cookie 来检查用户是否选择隐藏消息,我认为这会更快但可能效果不佳,因为用户可以使用不同的计算机登录并且是否显示新消息,他们可能不会马上看到。
所以我只是想知道使用额外的数据库字段是否是一个坏主意?如果我有 1,000,000 个用户,当我发布一条新的管理员消息时,我需要更新 1,000,000 行以确保每个人都能看到该消息。有没有更好的办法?此外,一旦用户登录到我的网站,我将使用会话来存储他们看到或隐藏消息的值,而不是在每次页面加载时查看数据库。
更新
抱歉,我认为我的帖子可能有点令人困惑或不清楚我的确切含义,因为大多数回复都迎合了一个消息系统,而这并不接近。
请忘记消息词,我将尝试用不同的词来解释。假设站点上有 1 个管理员,这是唯一可以向用户发布消息以查看的管理员。用户只会看到 1 条消息,如果在网站的生命周期内发布了 2352345234 条消息,那没关系,他们只会看到 1 条消息,即最新消息。
现在,一些登录并在页面上看到此消息“div”的用户可能会厌倦查看它,因此他们可以将其隐藏起来,不再显示。
在页面上显示此消息就像是或否一样简单。
但是,如果我决定需要发布一条新的管理员消息以供所有用户查看,那么即使选择隐藏而不显示管理员消息的用户仍会再次看到它,直到他们选择不再看到它为止。
【问题讨论】: