需要按顺序从数据库中获取聊天

时间:2016-01-14 13:04:16

标签: php wordpress

目前我正在制作一个由我定制的聊天插件。 这是我的聊天表的数据库结构

+----+----+----+------+------+------+-------+
| ID | FR | TO | TEXT | TIME | FLAG | EMAIL |
+----+----+----+------+------+------+-------+

现在我需要使用ajax来获取聊天,但它不是按照创建它的顺序获取。 这是我的代码:

$query = "SELECT * FROM `j18h_user_chat` WHERE `fr` = '$nm' AND `to` = '$name' ORDER BY time";
$query2 = "SELECT * FROM $table WHERE `fr` = '$name' AND `to` = '$nm' ORDER BY time";

$abc = $wpdb->get_results($query);
$abc2 = $wpdb->get_results($query2);

echo "<div class='log'><div class='lef'>";

foreach ($abc as $key )
{
    echo '<div class="ui-chatbox-msg left" style="display: block; max-width: 285px;"><b><img class="usr" src="'.$key->email.'">  </b><span>'.$key->text.'</span></div>';
}

echo "</div><div class='rig'>";

foreach ($abc2 as $key2 )
{
    echo '<div class="ui-chatbox-msg right" style="display: block; max-width: 285px;"><b><img class="usr" src="'.$key2->email.'">  </b><span>'.$key2->text.'</span></div>';
}

这里的消息是逐个存储的。 在第一个查询中,我正在获取我输入的消息,在第二个用户输入的消息中。 所以任何人都可以告诉我如何以与创建时相同的顺序获取聊天。

1 个答案:

答案 0 :(得分:0)

将您的查询更改为:

SELECT * FROM `j18h_user_chat` 
WHERE (`fr` = '$nm' AND `to` = '$name') OR (`fr` = '$name' AND `to` = '$nm')
ORDER BY time

然后确定要添加到div中的类(leftright),这样的事情可能有效。 (注意:我在展示$nm下的是当前用户)

foreach($abc as $key)
{
    echo '<div class="ui-chatbox-msg '. leftOrRight($key->fr, $nm) .'" style="display: block; max-width: 285px;"><b><img class="usr" src="'.$key->email.'">  </b><span>'.$key->text.'</span></div>';
}

function leftOrRight($from, $currentUser)
{
    return ($from == $currentUser) ? "left" : "right";
}