从mysql中获取聊天消息

时间:2017-11-10 16:09:47

标签: php css mysql stylesheet

我正在两个用户之间获取聊天消息,并希望以两种不同的颜色显示消息。

{{1}}

例如,登录的用户,他的消息应该是红色的,他正在检查的消息应该是紫色的。麻烦的是所有提取的消息都变红了。

1 个答案:

答案 0 :(得分:3)

此处的问题出现在$sql1的逻辑中,您说select * from chats where user_from='$_SESSION[name]' AND....

然后执行此检查:

if($row['user_from'] == $_SESSION['name'])
    $color = 'red';

该检查将始终为true,因为您实际上只是要求mysql为您提供登录用户user_from的所有聊天记录,现在您告诉程序将颜色设置为红色如果user_from是登录用户,它将永远是,因为这就是你要求的。

您应该重新构建处理颜色的if语句,因为现在您的逻辑对您正在尝试的操作没有任何意义。

修改

我不明白你是如何获得发送给用户的任何消息的,因为现在你的sql查询只是查看来自用户的消息(或者看起来似乎如此)。假设我是正确的,我建议您重新构建$sql1查询,以便将所有消息发送给登录用户,以及与$user_to通信的登录用户,因为我还假设您只想关注这两个用户之间的特定线程。

让我们假设这个新查询,你有两个用户聊天:

  • User1已登录,尝试与user2聊天。当他们将聊天插入数据库时​​,user_from = user1user_to = user2

  • User2已登录,与user1聊天。他们插入聊天时,user_from = user2user_to = user1

由于您希望这两个用户都能看到线程中的消息,因此您需要一个查询来查找从user1到user2以及从user2到user1的消息。

您应该做出以下假设才能创建正确的查询:

  • user_from 需要是登录用户或$user_to用户(他们正在聊天的用户),因为这是两个用户 线程)
  • user_to 也需要是这两个用户中的一个,因为它们是该帖子中唯一的用户。

您可以使用类似于此的查询在此线程中获取消息: select * from chats where user_from='$_SESSION[name]' OR user_from='$user_to' AND user_to='$_SESSION[name]' OR user_to='$user_to'

如果我对您的程序的假设是正确的,那么您可以集成我的逻辑和那个查询或者与它非常相似的查询应该适合您要完成的任务,只要您的所有其他代码都是正确的。

一旦您在两个用户之间正确检索消息,就应该像在问题中一样整合消息颜色,因为您的SQL查询正在弄乱if语句中的逻辑。