目前我正在制作一个由我定制的聊天插件。 这是我的聊天表的数据库结构
+----+----+----+------+------+------+-------+
| 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>';
}
这里的消息是逐个存储的。 在第一个查询中,我正在获取我输入的消息,在第二个用户输入的消息中。 所以任何人都可以告诉我如何以与创建时相同的顺序获取聊天。
答案 0 :(得分:0)
将您的查询更改为:
SELECT * FROM `j18h_user_chat`
WHERE (`fr` = '$nm' AND `to` = '$name') OR (`fr` = '$name' AND `to` = '$nm')
ORDER BY time
然后确定要添加到div中的类(left
或right
),这样的事情可能有效。 (注意:我在展示$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";
}