我正在尝试在 php 和 mysql 中做一个非常简单的单向票务/新闻系统,以便在我的应用程序上分发新闻(例如:“维护星期五晚上 10 点至晚上 11 点”)。最初我认为它只能用一个简单的表来做:
CREATE TABLE IF NOT EXISTS `message` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` varchar(18) NOT NULL,
`subject` varchar(200) NOT NULL,
`message` varchar(1000) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`recipient` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`read` int(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
管理员通过多选选择创建新新闻并选择收件人。
<select multiple="multiple" name=[]dest >
<option value="all">All users</option>
<option value="1">User_1</option>
<option value="2">User_2</option>
<option value="n">User_n</option>
</select>
'dest' 将内爆并更新为 'message.recipient' 用户可以查看新闻:
SELECT * FROM message m WHERE m.recipient='all' or m.recipient RLIKE '[[:<:]]".$userID."[[:>:]]'"
当用户单击新闻并阅读它时,我的问题就开始了,因为我通过 jQuery Ajax 更新了“1”“message.read”,并取消了相应的新闻,但是......这是错误的,因为当第一个用户阅读新闻时将为任何其他用户标记为已读。
我知道我可以创建其他表并存储未读新闻的 userID 和 message.id 并在已读时删除,但这不是很优雅的解决方案......
任何建议将不胜感激。
谢谢!狮子座