簡體   English   中英

我需要獲取以前發送過消息的用戶列表(MySQL)

[英]I need to get the list of users who have previously been sent message (MySQL)

我在做一個即時通訊網頁,我已經組裝了整個數據庫,做了整個頁面的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,outgoing_msg_id 是發送消息的 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)

最后,我給你留下了我的板的兩張真實的和當前的照片:


已編輯


首先,您需要在表(消息)中獲取字段 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;
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM