我需要获取以前发送过消息的用户列表(MySQL)
Posted
技术标签:
【中文标题】我需要获取以前发送过消息的用户列表(MySQL)【英文标题】:I need to get the list of users who have previously been sent message (MySQL) 【发布时间】:2021-07-28 13:07:32 【问题描述】:我在做一个即时通讯网页,我已经组装了整个数据库并且做了整个页面100%的前端,我只需要做开始菜单... 因此,在开始菜单中,我只想向用户显示 ** 之前已向用户发送了一条消息 **,我还没有做到这一点,现在我正在显示 ** 所有注册用户的列表 ** .. 我正在展示的内容如下所示
PROFILE PHOTO 1 - User Nº1 - Last message sent - Status (Offline / Online)
PROFILE PHOTO 2 - User Nº2 - No messages have been sent - Status (Offline / Online)
PROFILE PHOTO 3 - User Nº3 - Last message sent - Status (Offline / Online)
PROFILE PHOTO 4 - User Nº4 - Last message sent - Status (Offline / Online)
当我想要显示的内容类似于以下内容时:
PROFILE PHOTO 1 - User Nº1 - Last message sent - Status (Offline / Online)
PROFILE PHOTO 3 - User Nº3 - Last message sent - Status (Offline / Online)
PROFILE PHOTO 4 - User Nº4 - Last message sent - Status (Offline / Online)
目前我的桌子设计如下:
> messages
msg_id | incoming_msg_id | incoming_msg_id | outgoing_msg_id | msg
> users
user_id | unique_id | fname | lname | email | password | img | status
澄清一下,incoming_msg_id 字段是接收消息的用户的 ID,outing_msg_id 是发送它的用户,在这种情况下与 users
表的 user_id 字段匹配。
目前我的代码如下,正如我告诉你的,它显示了我在下面留下的内容。
<?php
session_start();
include_once "config.php";
$outgoing_id = $_SESSION['unique_id'];
$sql = "SELECT * FROM users WHERE NOT unique_id = $outgoing_id ORDER BY user_id DESC";
$query = mysqli_query($conn, $sql);
$output = "";
if(mysqli_num_rows($query) == 0)
$output .= "No users are available to chat";
elseif(mysqli_num_rows($query) > 0)
include_once "data.php";
echo $output;
?>
PROFILE PHOTO 1 - User Nº1 - Last message sent - Status (Offline / Online)
PROFILE PHOTO 2 - User Nº2 - No messages have been sent - Status (Offline / Online)
PROFILE PHOTO 3 - User Nº3 - Last message sent - Status (Offline / Online)
PROFILE PHOTO 4 - User Nº4 - Last message sent - Status (Offline / Online)
最后我给你留两张我的板的真实和当前照片:
https://i.stack.imgur.com/lTqqn.png
https://i.stack.imgur.com/25I40.png
已编辑
【问题讨论】:
【参考方案1】:首先,您需要在表(消息)中获取字段 user_id。 稍后您可以加入此表并编写 select :
select * from users usr
join messages msg on msg.user_id = usr.user_id
where msg.incoming_msg_id is not null
稍后会显示所有发送消息的用户。
@更新
如果您说字段 outgoing_msg_id 是用户 ID,则选择将是这样的:
select DISTINCT usr.user_id,usr.fname,usr.lname from users usr
join messages msg on msg.outgoing_msg_id = usr.user_id
此选择将显示所有发送消息的用户。
@编辑 3
So your php code should be like :
<?php
session_start();
include_once "config.php";
$outgoing_id = $_SESSION['unique_id'];
$sql = "SELECT * FROM users WHERE NOT unique_id = $outgoing_id and unique_id in (select outgoing_msg_id from messages) ORDER BY user_id DESC";
$query = mysqli_query($conn, $sql);
$output = "";
if(mysqli_num_rows($query) == 0)
$output .= "No users are available to chat";
elseif(mysqli_num_rows($query) > 0)
include_once "data.php";
echo $output;
?>
【讨论】:
mysqli_num_rows() 期望参数 1 为 mysqli_result,route
中给出的布尔值
首先你需要编辑表信息,并添加新字段:user_id -> 与用户表中的user_id 相同。
这两个用户的user_id是什么?
不要这么认为,你需要检查我不知道你的数据库方案。但是从字段名来看,好像不是发消息的用户的id。如果您确定是发送消息的用户的 ID,我可以编辑我的答案并编写正确的选择
现在我有另一个问题,对于每条消息,每个发送消息的用户都向我显示该字段示例:用户 1 - LastMsg - ID // 用户 1 - LastMsg - ID // 用户 2 - LastMsg - ID // 用户 1 - LastMsg - ID以上是关于我需要获取以前发送过消息的用户列表(MySQL)的主要内容,如果未能解决你的问题,请参考以下文章