gpt4 book ai didi

php - 从 mysql 中获取聊天消息

转载 作者:行者123 更新时间:2023-11-29 05:06:22 26 4
gpt4 key购买 nike

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

<?php
session_start();
?>
<html>
<head></head>
<body>
<?php
require("config.php");
$id = $_POST['id'];
$sql = "select * from users where id='$id'";
$res = mysqli_query($con, $sql);
$row = mysqli_fetch_array($res);
$user_to = $row['name'];
$sql1 = "select * from chats where user_from='$_SESSION[name]' AND user_to='$user_to' OR user_to='$_SESSION[name]' AND user_from='$user_to' order by id";
$res1 = mysqli_query($con, $sql1);
if(mysqli_num_rows($res1) > 0) {
while($row = mysqli_fetch_array($res1)) {
if($row['user_from'] == $_SESSION['name'])
$color = 'red';
else
$color = 'purple';
echo '<i><p style="font-family:arial;color:' . $color . ';font-size:15px;">' . $row['msg'] . '</p>';
}
} else
echo "No msgs <br />";
?>
</body>
</html>

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

最佳答案

此处的问题出在您使用 $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,因为我还假设您只想关注这两个用户之间的特定线程。

假设在这个新查询中,您有两个用户在聊天:

  • 用户 1 在他们这边登录,试图与用户 2 聊天。当他们将聊天记录插入数据库时​​,user_from = user1user_to = user2

  • 用户 2 已登录,正在与用户 1 聊天。当他们插入聊天时,user_from = user2user_to = user1

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

为了创建正确的查询,您应该做出以下假设:

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

您可以使用类似于此的查询在此线程中获取消息:从 user_from='$_SESSION[name]' OR user_from='$user_to' AND user_to='$_SESSION[name]' OR user_to='$user_to' 的聊天中选择 *

如果我对您的程序的假设是正确的,那么您可以整合我的逻辑,并且该查询或与其非常相似的查询应该能够很好地完成您想要完成的任务,只要您的所有其他代码都是正确的。

一旦你正确地检索了两个用户之间的消息,你应该像你在你的问题中那样整合消息颜色,因为你的 sql 查询是什么搞乱了你的 if 语句中的逻辑.

关于php - 从 mysql 中获取聊天消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47226906/

26 4 0
文章推荐: ios - 当 UI 元素包含在另一个 Nib 中时,如何使 UI 元素与同级(单独的 Nib )一样发挥良好作用?
文章推荐: java - 下载文件时获取附加文件内容的j​​sp源代码
文章推荐: java - Android 中的 SQLite : Foreign Keys and expected