2017-05-15 4 views
-1

この簡単なチャットテーブルMySQLのクエリと同じユーザのために、すべての異なるメッセージを取得する

id| fromUserId| toUserId| message 

はのは、ダミーデータジョン(45)、ジェーン(46)とメアリー(47)を見てみましょう。ジョンがジェーンとメアリーの両方と同時にチャットをしたとします。

ジョン(45)は、ジェーンとの会話(46)を開始したので、データは次のようになります。第二のコンテキストで

id| fromUserId| toUserId| message 
1 | 45  | 46  | wassup? 

、メアリー(47)は、ジョン(45)

id| fromUserId| toUserId| message 
2 | 47  | 45  | wassup? 
との会話を開始しました

どのようにして2つの異なる会話をJohnに表示できますか?私は、このクエリを使用していますが、それは動作しません:

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

EDITを使用に

 <ul class="dropdown-menu" style="overflow-x: hidden;"> 
     <?php 
     $chatmsgQ="SELECT * FROM ve_chat c WHERE c.isActive='1' AND (c.fromUserId='$loginid_session' OR c.toUserId='$loginid_session') GROUP BY (c.fromUserId='$loginid_session' OR c.toUserId='$loginid_session')"; 
     $chatresultse= mysqli_query($db,$chatmsgQ); 
     while($chatboxes= mysqli_fetch_array($chatresultse)){;?> 
     <li style="font-size: small; "> 
     <a style='width: 100% !important;' href='' data-toggle='modal' data-target='#chatModal'> 
     Chat with <?=$chatresultuseres['ProfileName'];?> | <?=$rowChat[0];?> Msg (s) 
       </a> 
       </li> 
      <?php } ;?> 
    </ul> 
+0

「or」をグループ化し、クエリをパラメータ化し、何が起こるかを記述します。 '(c.fromUserId = '$ loginid_session' OR c.toUserId = '$ loginid_session')'となります。エラーが返され、間違ったレコードが返され、何も返されません。 – chris85

+0

@ chris85:ちょっとちょうど今、私は1人のユーザーと1つの会話を表示するだけです。 –

+0

フェッチをループしていますか? PHPの使用法をさらに追加できますか? – chris85

答えて

0

MySQLのクエリで括弧を使用し

例:

<?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);?> 
関連する問題