2

私は mysql/php プライベート メッセージング システムに取り組んでおり、使用する MYSQL コードに問題があります。ユーザー間の会話で送受信された最後のメッセージを取得したいと考えています。フェイスブックのこのページに「いいね!」https://www.facebook.com/messages/ . (これを言葉で説明するのは本当に簡単ではありません。)

メッセージ用の私のmysqlテーブルは次のようなものです:

`id`            -> unique ID, autoincremented
`message_from`  -> sender user ID 
`message_to`    -> receiver user ID 
`message`       -> message
`date_created`  
`ip`            
`status`        -> read or not read

頭の中でそれを行う方法が明確ではないため、表示する最初のスクリプトはありません。

4

6 に答える 6

2

これにより、各チャットの最新のメッセージが表示されます。各チャットは、message_from および message_to ID によって識別されます。

SELECT
*
FROM messages m1
WHERE date_created = (SELECT MAX(m2.date_created) FROM messages m2 WHERE m1.message_from = m2.message_from AND m1.message_to = m2.message_to)

特定のチャットが必要な場合は、

AND message_from = $yourUserId
AND message_to = $yourOtherUserId

申し訳ありませんが、これがあなたが探しているものではない場合、私はFacebookのリンクをクリックしません.

于 2012-06-04T12:44:50.633 に答える
1

最初に、すべての会話と最後に送信されたメッセージの日付を取得するクエリを作成します。会話は、送信者と受信者の一意の組み合わせとして定義されます。

SELECT message_from, message_to, MAX(date_created) AS max_date
FROM messages
WHERE message_from = :user OR message_to = :user
GROUP BY message_from, message_to

は、現在サインインしているユーザーの:user単なるプレースホルダーです。

会話内の最後のメッセージから実際のデータを取得するには、結果を元のテーブルに結合する必要があります。

SELECT message, date_created, status
FROM messages
JOIN (
    SELECT message_from, message_to, MAX(date_created) AS max_date
    FROM messages m
    WHERE message_from = :user OR message_to = :user
    GROUP BY message_from, message_to
) AS lm ON m.date_created=lm.max_date AND m.message_from=lm.message_from AND m.message_to=lm.message_to
于 2012-06-04T12:46:58.370 に答える
0

多分このようなもの:

SELECT
    *
FROM
    tblMessage
    JOIN(
            SELECT
                MAX(date_created) AS maxCreated,
                message_from
            FROM
                tblMessage
            GROUP BY
                message_from
        ) AS Latest
    ON tblMessage.date_created=Latest.maxCreated
    AND tblMessage.message_from=Latest.message_from
于 2012-06-04T12:38:03.857 に答える
0

これを使用できます

$recup_messages = mysqli_query($connection, SELECT * FROM messages WHERE 

(message_from = $yourUserId  AND message_to = $yourOtherUserId) OR (message_from = $yourUserId  AND message_to = $yourOtherUserId ) ") or die(mysqli_error($connection));

while($affichage = mysqli_fetch_assoc($recup_messages))
{
$message_from = $affichage['message_from'];

$message = $affichage['message'];

echo "From : $message_from <br> $message <br><br>";

}

これにより、Facebook のようにメッセージが次々と表示されます。次に、必要に応じてスタイルを設定し、日付やその他の情報を追加する必要があります

于 2015-01-24T05:15:13.477 に答える