双人聊天室

时间:2016-03-23 03:38:00

标签: php mysqli

我已经尝试了两天才能让它发挥作用。这是一个双人聊天室:user1和user2可以进入room1。没有人可以进入room1,除非他们是user1或user2。

截至目前,它仅显示user1的room1,但是当我从其他浏览器使用user2时,除非我执行user1,否则它不会显示room1。我希望两个用户都能看到room1。这是我的SQL SELECT:

抱歉,我是MySQL的新手,但基本上我创建了一个登录页面,user1和user2可以输入他们的用户名。一旦他们登录,它将显示room1信息。

$sql = "SELECT room FROM chat WHERE user1='$user1' AND user2='$user2' and room='$room1'";

$result = $conn->query($sql); 
 if ($result->num_rows > 0) { 
  while($row = $result->fetch_assoc()) { 
  $_SESSION['room'] =$row['room'];
 } 
} 

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

由于没有提供有关您的要求的大量信息,我假设您为两个用户创建了一个聊天室,这两个用户只能参加这个会议室。为此,您不应该使用此架构。

  

您需要在那里创建不同实体的不同表   关系。

这里有两个实体。

  1. 用户
  2. 他们之间有一种关系。

    1. 聊天室
    2. room_table(创建房间时插入)

              id          -room id
              name        -room name
              created_at  -time of creation
              status      -is this room is active or not
              etc
      

      user_table(用户创建时插入)

              id          -user id
              name        -user name
              password    -password
              created_at  -time of creation
              status      -is this user is active or not
              etc 
      

      chat_room(在房间内分配用户时插入)

              id          -user id
              room_id     -room_id//reference of room.id
              user1_id    -user_id//reference of user.id
              user2_id    -user_id//reference of user.id
              created_at  -time of creation
              status      -is this chat room is active or not
              etc 
      

      现在,对于任何用户,您都可以通过以下方式获取chat_room:

       select id from chat_room where room_id = '$room_id' and user1_id ='$user_id' or user2_id ='$user_id';
      

      希望这会对你和其他人有所帮助。我错了任何一个人纠正我。

      编辑:

      消息(发送消息时插入)

              id              -user id
              chat_room_id    -id of chat room//reference of chat_room.id
              user_id         -user_id//reference of user.id
              message_text         -text message
              created_at      -time of creation
              status          -is this chat room is active or not
              etc 
      

      现在,对于任何聊天室,您都可以通过以下方式获取消息:

      select message_text from messages where chat_room_id = 'id_you_got_from_above_query';