多用户单向支持票务系统

时间:2013-10-03 08:43:01

标签: php jquery mysql ajax news-feed

我正在尝试在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并将其删除为读取但是这不是很优雅的解决方案......

任何建议都会非常感激。

谢谢! 利奥

1 个答案:

答案 0 :(得分:2)

您可以在会话或cookie中存储“读取”标志。这样每个用户都有自己的标志。

另一件事:

<select multiple="multiple" name=[]dest >

应该是

<select multiple="multiple" name="dest[]" >

如果你想在PHP中使用正确的数组。