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