- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在获取两个用户之间的聊天消息,并希望以两种不同的颜色显示这些消息。
<?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 = user1
和 user_to = user2
用户 2 已登录,正在与用户 1 聊天。当他们插入聊天时,user_from = user2
和 user_to = user1
由于您希望这两个用户都能看到线程中的消息,因此您需要一个查询来查找从 user1 到 user2 以及从 user2 到 user1 的消息。
为了创建正确的查询,您应该做出以下假设:
$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/
我是一名优秀的程序员,十分优秀!