簡體   English   中英

用戶對用戶專用消息系統

[英]User to user Private Messaging System

以下鏈接是用戶收件箱的圖像。

在此處輸入圖片說明

我正在嘗試為一個接收來自其他用戶的消息的用戶創建收件箱。 我遇到的問題是,當userA向userB發送消息時,userB的收件箱會看到來自userA的消息。 但是,當用戶A向用戶B發送另一條消息時,用戶B會收到兩個新的用戶A消息。 例如:

userB的收件箱:

用戶新消息用戶新消息

我試圖避免使用兩個相同的用戶名,而只顯示一個。 我嘗試按發件人用戶名進行分組。 它可以工作,但是當userA向userB發送消息時,新消息不會顯示在收件箱中。 我已經為此工作了一段時間,似乎無法找到解決方案。 任何幫助,將不勝感激。 下面是我的用戶收件箱的源代碼。

<?php
error_reporting(0);
//error_reporting(E_ALL);
//ini_set('display_errors', 1);
session_start();
$username = $_SESSION['username'];
$userid = $_SESSION['userid'];
?>
<!doctype html>
<html>
    <head>
        <title>Inbox</title>
        <style>
            body{
                background-color: silver;
            }
            #ustatus{
                color: green;
                margin: 0 auto;
                width: 750px;
            }
            #container{
                border: 1px solid black;
                width: 750px;
                margin: 0 auto;
            }
            #container #content{
                margin-top: 20px;
                color: green;
            }
        </style>
    </head>
    <body>
        <div id='ustatus'><b><?php echo "<a href='./members.php'>" . $username . "        </a>"; ?></b></div>
        <div id='container'>
            <div id='content'>
                <?php
                $getid = $_GET['id'];
                $getmsgid = $_GET['msgid'];
                require_once("./connect.php");

                /* $query = mysqli_query($con, "SELECT messages.id, messages.msg_id, messages.sender_id, messages.sender_user, messages.message, messages.open FROM messages INNER JOIN read_messages WHERE messages.receiver_id='".$userid."' AND read_messages.receiver_id='".$userid."'");
                  $read_msg_query = mysqli_query($con, "SELECT messages.id, messages.msg_id, messages.sender_id, messages.sender_user, messages.message, messages.open FROM messages INNER JOIN read_messages WHERE messages.receiver_id='".$userid."' AND read_messages.receiver_id='".$userid."' GROUP BY messages.sender_id, read_messages.sender_id"); */

                $query = mysqli_query($con, "SELECT * FROM messages WHERE (LEAST (sender_id, receiver_id), GREATEST(sender_id, receiver_id)) IN (SELECT LEAST(sender_id, receiver_id) x, GREATEST(sender_id, receiver_id) y FROM messages GROUP BY x, y) AND '$userid' IN (receiver_id) ORDER BY id DESC")or die(mysqli_error($con));

                $numrows = mysqli_num_rows($query);
                if ($numrows > 0) {
                    while ($row = mysqli_fetch_assoc($query)) {
                        $dbid = $row['id'];
                        $dbmsgid = $row['msg_id'];
                        $dbsenderUser = $row['sender_user'];
                        $dbmessage = $row['message'];
                        $dbfromid = $row['sender_id'];
                        $dbopen = $row['open'];

                        if ($dbopen == 0) {
                            $open = "<div style='background-color: white;'>
                                         <a href='./display_msg.php?msgid=$dbmsgid&id=$dbid'><b>" . $dbsenderUser . "</b></a><span style='margin-left: 200px;'>NEW</span>

                                         <div style='clear: both;'></div>
                                         </div>id:&nbsp;$dbid - open:&nbsp;$dbopen
                                          <hr />";
                        } else {
                            $open = "<div style='background-color: silver;'>
                                         <a href='./display_msg.php?msgid=$dbmsgid&id=$dbid'><b>" . $dbsenderUser . "</b></a>

                                         <div style='clear: both;'></div>
                                         </div>id:&nbsp;$dbid - open:&nbsp;$dbopen
                                         <hr />";
                        }

                        echo $open;
                    }//end of while loop.
                } else
                    echo "YOU DO NOT HAVE ANY MESSAGES AT THE MOMENT.";
                ?>
            </div>
        </div>
    </body>
</html>

嘗試添加到SQL查詢LIMIT 1

 $query = mysqli_query($con, "SELECT * FROM messages WHERE (LEAST (sender_id, receiver_id), GREATEST(sender_id, receiver_id)) IN (SELECT LEAST(sender_id, receiver_id) x, GREATEST(sender_id, receiver_id) y FROM messages GROUP BY x, y) AND '$userid' IN (receiver_id) ORDER BY id DESC LIMIT 1")or die(mysqli_error($con) );

暫無
暫無

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

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