聊天系统foreach动态

时间:2015-02-22 02:38:59

标签: php mysql database mysqli

我要做的是用户 - >管理员||管理员 - >用户)聊天系统。到目前为止我提出的内容看起来非常混乱,我通过SQLfiddle在select上尝试了JOIN并且它没有那么好用。

希望有人有更好的主意,知道如何解决这个问题。

我的实时聊天PHP代码 - > http://pastebin.com/6z9ajCMW

我的数据库结构live_chatlive_chat_admin就在这里 - > http://sqlfiddle.com/#!2/ae70ec/26

并了解我正在尝试制作的内容。

Image

3 个答案:

答案 0 :(得分:1)

也许你应该尝试为每个聊天创建一个唯一的ID,这样你就可以更容易地进行回复。表格类似于这样的表格。 Tables

每次用户开始新聊天时,都会在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>';

?>

因此,您的屏幕将如预期enter image description here

答案 2 :(得分:0)

在@Eddy Ella的帮助下解决了我的问题。

我首先删除live_chat_admin并将接收方移至live_chat。 然后我使用CASE WHEN在用户之间切换到管理员。

结果,正如我想要的那样。

PHP:http://pastebin.com/GXJEK6u4

SQL:http://sqlfiddle.com/#!2/7081b/5

结果:

enter image description here