聊天框注销消息

时间:2017-03-25 13:32:27

标签: php postgresql

我有一个包含四行的表(时间,名称,文本和chat_id)

             time             |     name      |     text     | chat_id 
------------------------------+---------------+--------------+---------
 2017-03-25 13:15:02.70061+00 | James Douglas | Hello world! |     478
(1 row)

这是插入到数据库的插入东西(工作正常):

  $db->perform("insert into chat(name,text) values($1,$2)",$_SESSION['name'],$_POST['text']);

以下是将页面上的数据显示为聊天消息的内容:

  $('#chatbox').append('<div><p><b>'+v.name+'</b> - <span>'+v.text+'</span><span style="display: inline-block; float: right;"><small>('+v.timee+')</small></span></div>');

和退出消息:

  $db->perform("insert into chat(name, text) values($1,$2)",$_SESSION['name'],' has left the chat session');

所有这些大部分工作正常,聊天消息如下:

James Douglas - Hello world! (星期六13:15)

不幸的是,注销消息如下所示:

詹姆斯道格拉斯 - 已离开聊天会话(星期六13:26)

我将如何使注销消息看起来像这样? 詹姆斯道格拉斯离开了聊天会议

(大概是编辑这两个)

 $('#chatbox').append('<div><p><b>'+v.name+'</b> - <span>'+v.text+'</span><span style="display: inline-block; float: right;"><small>('+v.timee+')</small></span></div>');

 $db->perform("insert into chat(name, text) values($1,$2)",$_SESSION['name'],' has left the chat session');

提前致谢!

1 个答案:

答案 0 :(得分:1)

我认为你的做法是错误的。您应该将文本消息与操作消息分开。操作消息可以是所有消息somebody joined/left/changed nickname etc。您可以在数据库中添加一个字段,如:

             time             |     name      |     text     | chat_id | type
------------------------------+---------------+--------------+---------+---------
 2017-03-25 13:15:02.70061+00 | James Douglas | Hello world! |     478 | text
------------------------------+---------------+--------------+---------+---------
 2017-03-25 13:15:12.70061+00 | James Douglas |           1  |     479 | action

然后有另一个表格,您可以将动作ID与各自的文本相关联,如:

    id    |    text
----------+-------------------------
    1     |   User left the channel
----------+-------------------------
    2     |   User joined the channel

因此,当您尝试打印行时,您可以为不同类型的文本使用不同的css类

  $('#chatbox').append('<div class="text-type-'+v.type+'"><p><b>'+v.name+'</b> - <span>'+v.text+'</span><span style="display: inline-block; float: right;"><small>('+v.timee+')</small></span></div>');