2017-05-05 70 views
0

我想在一个谈话显示每个用户不同的聊天气泡的颜色。如果Else语句显示错误的div

这工作:

<?php 
    $chatmsgQ="SELECT * FROM ve_chat c 
       WHERE c.isActive='1' AND c.fromUserId='$loginid_session' 
       OR c.toUserId='$loginid_session'"; 
    $chatmsgresult= mysqli_query($db,$chatmsgQ); 
    while($chatmsg= mysqli_fetch_array($chatmsgresult)){;?> 

     <?php if($chatmsg['fromUserId']==$loginid_session):?> 
     <!-- user one --> 
    <p class='bubble pull-left'><?=$chatmsg['message'];?></p> 

    <?php elseif($chatmsg['fromUserId']!=$loginid_session):?> 
     <!-- user two--> 
    <p class='bubbleother pull-right'><?=$chatmsg['message'];?></p> 
    <?php endif;?> 
    <?php } ; 
?> 

但此前的说法是不是需要相当的东西。用户需要在对话中保持相同的泡泡。下面的查询是正确的,但不起作用。我做错了什么?

<?php 
    $chatmsgQ="SELECT * FROM ve_chat c 
    WHERE c.isActive='1' AND c.fromUserId='$loginid_session' 
    OR c.toUserId='$loginid_session'"; 
    $chatmsgresult= mysqli_query($db,$chatmsgQ); 
    while($chatmsg= mysqli_fetch_array($chatmsgresult)){;?> 

     <?php if($chatmsg['fromUserId']==$loginid_session OR $chatmsg['toUserId']==$loginid_session):?> 
     <!-- user one --> 
    <p class='bubble pull-left'><?=$chatmsg['message'];?></p> 

    <?php elseif($chatmsg['fromUserId']!=$loginid_session OR $chatmsg['toUserId']!=$loginid_session):?> 
    <!-- user two--> 
    <p class='bubbleother pull-right'><?=$chatmsg['message'];?></p> 
    <?php endif;?> 
    <?php } ; 
?> 
+0

从你的代码我认为你的第二个条件('elseif')永远不会执行 –

+0

@ B.Desai:我知道但是为什么? –

+2

因为在查询condyion是'c.fromUserId =“$ loginid_session” OR c.toUserId ='$ loginid_session''所以从这个第一个条件始终成为现实。 请问你更多soecific你exoected输出 –

回答

0

首先,您需要更改SQL查询:如果你使用后

 $chatmsgQ="SELECT * FROM ve_chat c 
    WHERE c.isActive='1'"; 

监守和条件c.fromUserId = '$ loginid_session' OR c.toUserId = '$ loginid_session'那么所有的查询都来自该用户,而不是所有的用户,然后通过这个查询结果它将永远不会执行第二条语句。

能否请您尝试没有ELSEIF条件:

<?php 
$chatmsgQ="SELECT * FROM ve_chat c 
WHERE c.isActive='1' AND c.fromUserId='$loginid_session' 
OR c.toUserId='$loginid_session'"; 
$chatmsgresult= mysqli_query($db,$chatmsgQ); 
while($chatmsg= mysqli_fetch_array($chatmsgresult)){;?> 

     <?php if($chatmsg['fromUserId']==$loginid_session OR $chatmsg['toUserId']==$loginid_session):?> 
     <!-- user one --> 
<p class='bubble pull-left'><?=$chatmsg['message'];?></p> 

<?php else:?> 
    <!-- user two--> 
<p class='bubbleother pull-right'><?=$chatmsg['message'];?></p> 
    <?php endif;?> 
    <?php } ;?> 
+0

但是如果我有200个用户在同一时间聊天,我需要知道谁与谁聊天。 –

+0

我知道,但我已经尽力找出为什么你的第二个else if语句可没有工作,我发现,如果你使用的查询,然后你的第二个else if语句可没有执行过,因为你只是获取查询结果仅供用户,并非所有用户。如果你问我什么是逻辑,如果你想知道谁与谁聊天,那么我看到你从那个查询中获取数据,然后使用查询结果user_id,user_name,然后我认为你可以找出答案。 – rowmoin

0

原来我一直有解决方案......对于奇怪的原因,我第一次运行下面的代码它给不同的结果,但随后尝试后多次它的工作。

<?php 
    $chatmsgQ="SELECT * FROM ve_chat c 
       WHERE c.isActive='1' AND c.fromUserId='$loginid_session' 
       OR c.toUserId='$loginid_session'"; 
    $chatmsgresult= mysqli_query($db,$chatmsgQ); 
    while($chatmsg= mysqli_fetch_array($chatmsgresult)){;?> 

     <?php if($chatmsg['fromUserId']==$loginid_session):?> 
     <!-- user one --> 
    <p class='bubble pull-left'><?=$chatmsg['message'];?></p> 

    <?php elseif($chatmsg['fromUserId']!=$loginid_session):?> 
     <!-- user two--> 
    <p class='bubbleother pull-right'><?=$chatmsg['message'];?></p> 
    <?php endif;?> 
    <?php } ; 
?>