2013-06-20 41 views
2

所以我有一个ajax聊天我一直在编程, 和一个命令系统。AJAX聊天 - 用户个人提醒(命令)

基本上,我希望系统在不使用任何命令并且只发布斜线('/')并且只能由发布它的用户查看时给予用户警报。

但我不确定如何使它工作。 这是我的负荷消息的方法,在聊天:

public function loadMessages($username) 
    { 
     $this->fetch = $this->pdo->prepare("SELECT * FROM messages ORDER BY date, time ASC LIMIT 30"); 
     $this->fetch->execute(); 

     while ($row = $this->fetch->fetch(PDO::FETCH_ASSOC)) 
     { 
      if ($row['isAlert'] == '1') 
      { 
       echo '<b>'.$row['date'].', '.$row['time'].' ['.$row['username'].']: </b><font color="red">'.$row['message'].'</font> <br />'; 
      } 
      else 
      { 
       echo '<b>'.$row['date'].', '.$row['time'].' ['.$row['username'].']: </b>'.$row['message'].' <br />'; 
      } 
     } 
    } 

你可以看到第一个if statement while循环,认为如果消息是一个全球性的警惕,如果是,则油漆红色。

但是,如何才能发出一条消息,只有被警告的用户才能看到?

任何想法?

+0

请问您的聊天系统有*收件人的概念*?也就是说,您的数据库模式是否可以专门向给定用户表示消息,还是假设每条消息都传递给每个用户?如果您希望能够执行单播消息传递(不管是从系统,错误消息还是从用户到用户的私人消息传递),您都需要一些方式来指定消息应发送给谁,而您的数据模型是这是最好的地方。 (例如,在MySQL数据库的情况下,您可以有一个包含用户名或ID的“收件人”列,或者用于广播的NULL。) –

+0

首先,''?真?第二,这应该可以在客户端完成(即检查输入是命令,检查它是否有效等)。尽管如此,这也不能让你检查服务器。 –

回答

0

在页面上有一个隐藏的div,然后使用JavaScript检查命令是否有效,如果不显示div

例如:

<div id="invalidChatCommand" style="display:none"> 
     <p> 
      The command you entered is invalid. 
     </p> 
<div> 

<script type="text/javascript"> 
    var chatCommand = document.getElementById("command").value; 
    if (chatCommand.length == 1 && chatCommand.substring(0, 1) == "/") { 
     // invalid input detected, show the div 
     var invalidCommand = document.getElementById("invalidChatCommand"); 
     invalidCommand.style.display = "block"; 
    } else { 
     // Send command to the server 
    } 
</script> 
+0

事情是,我需要它显示在聊天里面,并按日期和时间排序。 –

+0

@JonyKale - 而不是使用新的div,追加到现有的 –