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

我假设第一列id设置为自动递增。使用 id=$userid 显示用户的最新活动

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

从这个查询中,我们将获得用户的最后一个活动。从该结果行中,您可以检查该活动是已发送消息还是已收到消息,并相应地显示文本。

如果您只是想显示收件箱消息,其中最近的消息在顶部使用

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

使用单个简单查询

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