我要做的是用户 - >管理员||管理员 - >用户)聊天系统。到目前为止我提出的内容看起来非常混乱,我通过SQLfiddle在select上尝试了JOIN
并且它没有那么好用。
希望有人有更好的主意,知道如何解决这个问题。
我的实时聊天PHP代码 - > http://pastebin.com/6z9ajCMW
我的数据库结构live_chat
和live_chat_admin
就在这里 - > http://sqlfiddle.com/#!2/ae70ec/26
并了解我正在尝试制作的内容。
答案 0 :(得分:1)
也许你应该尝试为每个聊天创建一个唯一的ID,这样你就可以更容易地进行回复。表格类似于这样的表格。
每次用户开始新聊天时,都会在chat_unique中插入新行。这将阻止其他用户加入聊天。
但是,每当有人发送新邮件时,您的网页都会重新加载。最好的方法是使用Ajax。
答案 1 :(得分:0)
你去吧
您只需要相应地管理员和您在表单中拥有的用户左右对齐,如下所示:
即,
echo '<div align="right">';
以
结尾echo '</div>';
代码:
<?php
echo '<div class="live_chat">';
$user = 'root';
$pass = '';
// admin chat
$conn = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sth = $conn->prepare("SELECT * FROM live_chat_admin WHERE receiver = :user_id");
$sth->bindValue(':user_id', '2', PDO::PARAM_INT);
$sth->execute();
foreach ($sth as $row) {
// Test message #1
echo '<div align="right">';
echo '<div class="admin_date">'.date('M j <b\\r/> H:i', strtotime($row['message_date'])).'</div>';
echo '<div class="admin_bubble">'.$row['message'].'</div>';
echo '<br /><br />';
echo '</div>';
}
$conn = NULL;
// user chat
#$conn = new PDO('mysql:host='. DB_HOST .';dbname='. DB_NAME . ';charset=utf8', DB_USER, DB_PASS);
#$conn = new PDO('mysql:host=127.0.0.1;dbname=test;charset=utf8', root);
$user = 'root';
$pass = '';
$conn = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sth = $conn->prepare("SELECT * FROM live_chat WHERE user_id = :user_id");
$sth->bindValue(':user_id', '2', PDO::PARAM_INT);
$sth->execute();
foreach ($sth as $row) {
// Test message #1
echo '<div class="user_date">'.date('M j <b\\r/> H:i', strtotime($row['message_date'])).'</div>';
echo '<div class="user_bubble">'.$row['message'].'</div>';
echo '<br /><br />';
}
$conn = NULL;
echo '</div>';
?>
因此,您的屏幕将如预期
答案 2 :(得分:0)
在@Eddy Ella的帮助下解决了我的问题。
我首先删除live_chat_admin
并将接收方移至live_chat
。
然后我使用CASE WHEN在用户之间切换到管理员。
结果,正如我想要的那样。
PHP:http://pastebin.com/GXJEK6u4
SQL:http://sqlfiddle.com/#!2/7081b/5
结果: