2

テーブルメッセージがあり、最新のメッセージを表示したいと思います。ユーザー 1 がログインしている場合、これを実行したいと思います。たとえば、ユーザー 1 がユーザー 2 にメッセージを送信し、次にユーザー 2 がユーザー 1 にメッセージを送信した場合、ユーザー 1 に最新のメッセージを表示したいと思います。したがって、それはユーザー 2 によって送信されたものになります。私のテーブルには次のものがあります。

id |  id_from|id_to|text 
1     1       2     abc     
2     2       1     dif      
3     3       1     jsd      

したがって、ユーザー 1、ID 2 および 3 に表示する必要があります。

私はこれを試します:どうもありがとう!

   $consulta=mysql_query("select * from messages where id_from='".$id."' or id_to='".$id."'  ");
while($filas=mysql_fetch_array($consulta)){
    $id=$filas['id'];
    $id_to=$filas['id_to'];
    $status=$filas['status'];
    $text=$filas['text'];
    $time=$filas['time'];
    echo "lo primero: ";

$consulta2=mysql_query("select * from messages where id_from='".$id."' or id_to='".$id."' ");
    while($filas2=mysql_fetch_array($consulta2)){
        echo "es ";
        $id2=$filas2['id'];
        $id_to2=$filas2['id_to'];
        $status2=$filas2['status'];
        $text2=$filas2['text'];
        $time2=$filas2['time'];
        echo "es ";
        echo $id2;
            if($id_from==$id_from2 and $id_to==$id_to2 and $id2>$id){ 
                $id=$id2;           
                echo "el mas grande ";
                echo $id;
            }
    }
    echo $id;
    echo " ";
    //Almaceno en un vector los mensajes a mostrar
    $result  = array ( "'".$id."'");
4

2 に答える 2

0

単一の単純なクエリを使用する

SELECT * FROM mytable WHERE id_from != 1 AND id_to = 1
于 2013-01-02T06:43:44.583 に答える
0

最初の列IDが自動インクリメントに設定されていると仮定します。id=$userid を使用するユーザーの最新のアクティビティを表示するには

SELECT * 
FROM  `messages` 
WHERE  `id_from` =  '$userid' ||  `id_to` =  '$userid'
ORDER BY  `id` DESC 
LIMIT 1

このクエリから、ユーザーの最後のアクティビティを 1 つ取得します。その結果の行から、アクティビティが送信されたメッセージなのか受信されたメッセージなのかを確認し、それに応じてテキストを表示できます。

最新のメッセージを一番上に表示するだけの場合は、

    SELECT * 
    FROM  `messages` 
    WHERE  `id_to` =  '$userid'
    ORDER BY  `id` DESC 
于 2013-01-02T07:23:50.413 に答える