アプリケーションでニュースを配布するために、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 を保存し、既読として削除できることは知っていますが、これはあまりエレガントなソリューションではありません...
どんな提案でも大歓迎です。
ありがとうございました!レオ