[英]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: $dbid - open: $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: $dbid - open: $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.