0

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

どんな提案でも大歓迎です。

ありがとうございました!レオ

4

1 に答える 1

2

セッションまたはクッキーに「読み取り」フラグを保存できます。このようにして、各ユーザーは独自のフラグを持ちます。

別物:

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

する必要があります

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

PHPで正しい配列が必要な場合。

于 2013-10-03T08:47:23.590 に答える