我正在PHP/MySQL/jQuery构建一个社交网站。一旦用户登录我的网站,我想查询数据库并获得管理员通告(如果存在)。这将是一个消息框,显示在所有用户的页面上,但它会有一个X点击它,并不会再显示它,直到管理员发布新的宣告消息。因此,如果您从不点击X并且存在数据库中的公告消息,它将始终在您的页面上显示此消息框,但是如果您确实使用了X来关闭该框,那么您将返回到它将会出现的页面除非发布新的管理消息,否则不在那里。向特定用户显示管理员消息的最佳方式?
我知道有几种方法可以做到这一点,但我正在寻找最有效的方法。
我有一个想法,如果我将额外的mysql字段添加到用户的表“admin_message”并将其标记为0,那么当我发布新的管理消息时,它会将每个用户的记录更改为1,如果管理员消息设置为1,然后显示在用户的页面上。然后,当用户点击X来隐藏盒子时,它将更新那里的用户表格行和chnage值返回0.
我的另一个想法是使用cookie来检查用户是否选择隐藏信息,我认为这会更快,但可能不是那么好,因为用户可以使用不同的计算机登录,并且如果显示新消息,他们可能不会马上看到它。
所以我只是想知道是否使用额外的数据库字段是一个坏主意?如果我有1,000,000个用户,当我发布新的管理消息时,则需要更新1,000,000行以确保每个人都可以看到该消息。有没有更好的办法?同样,一旦用户登录到我的网站,我将使用会话来存储他们看到或隐藏消息的值,而不是在每次加载页面时查看数据库。
UPDATE
对不起,我想我的文章可能是一个有点混乱或不清晰的,究竟我的意思,因为大多数的答复迎合了信息系统,这是不是任何接近的东西。
忘记消息的话请我尝试用另一个词来解释。假设网站上有1个管理员,那是唯一可以发布消息给用户看到的管理员。用户只会看到1条消息,如果在网站的整个生命周期内发布了2352345234条消息,则无关紧要,它们只会看到1条消息,即最新消息。
现在一些用户登录并在页面上看到此消息“div”可能厌倦了看它,所以他们将能够隐藏它再次显示。
它会像在是或否在这个页面上显示此消息一样简单。
但是,如果我决定需要发布一条新的管理消息供所有用户查看,那么即使选择隐藏并且不显示管理消息的用户仍然会看到它,直到他们选择再也不会看到它。
老实说,它并不那么复杂。这将是1管理员在网站上,它只会显示1条消息,这是最新的消息,这将是每个用户看到的,我只需要一种方式让用户隐藏消息框,如果他们选择从那里显示页面和一种方法让我强制隐藏框显示是否发布新消息。所以我不需要存储任何类型的用户ID,也不需要查询特殊ID的 – JasonDavis 2010-01-13 15:15:45