php
  • if-statement
  • 2017-05-05 7 views 0 likes 
    0

    私は1つの会話でユーザーごとに異なるチャットバブルカラーを表示しようとしています。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 } ; 
    ?> 
    

    しかし、以前のステートメントが必要とされるものはかなりではありません。ユーザーは会話を通じて同じバブルを維持する必要があります。以下のクエリは正しいものの、動作しません。私が間違っていることは何ですか?あなたが後に使用する場合

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

    Becuaseとc.fromUserId = '$のloginid_session' OR c.toUserId = '$のloginid_session' を条件:

    <?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

    私はあなたの2番目の条件( 'elseif')は決して実行されないと思います –

    +0

    @ B.Desai:私は知っていますが、なぜですか? –

    +2

    あなたのクエリcondyionが 'c.fromUserId = '$ loginid_session' OR c.toUserId = '$ loginid_session''なので、これから最初の条件は常に真になります。 エキスパートアウトプットに関してより具体的になるでしょうか。 –

    答えて

    0

    は最初に、あなたは、SQLクエリを変更する必要がありますすべてのユーザーではなく、そのユーザーのすべてのクエリが来て、このクエリ結果によって2番目のステートメントが実行されることはありません。

    あなたは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

    私は知っていますが、なぜあなたの2番目のelse if文が動作していないのかを調べようとしていますが、そのクエリを使用すると2番目の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 } ; 
    ?> 
    
    関連する問題