PHPでチャットサービスを作成しています。
formからDBにINSERTしてそのmessageをSELECTすることもできました。
あと、messageを送信した人のprofile画像をLINEのように表示したいとおもっています。
まず、現在の画面をお見せします。
次にPHPです。。
$sql = 'SELECT community_chat.* FROM community_chat INNER JOIN community ON community_chat.community_id = community.id AND community.id = \''.$_REQUEST['id'].'\' ORDER BY created DESC'; $stmt = $db->query($sql);
このSQLでmessageが取れます。
次にhtmlです。
<div id="chatting"><!--chattingエリアの開始--> <dl> <div> <?php foreach($stmt as $row) { $str = $row['created']; $dt = date('A H時i分', strtotime($str)); ?> <dt><img src="registrationimage/member_picture/<?php print(htmlspecialchars($row[''], ENT_QUOTES));?>" width="35" height="35"></dt> <div class="chat_Msg"> <dd><?php print(htmlspecialchars($rowpas['message'], ENT_QUOTES)); ?><span><?php print(htmlspecialchars($dt, ENT_QUOTES));?><span></dd> </div> <?php } ?> </div> </dl> </div><!--chattingエリアの終了-->
解説していきます。
まず、chattingエリアが画像でいう青いmessageが送信されているdivになります。
次に、dlのdtにユーザーのprofile画像を指定します。(現在は空白ですが)
最後にddにはmessageが入ります。
次にテーブル状況です。
チャットをする際にプロフィール画像と名前表示に関わる所だけいっていきます。
◎communityテーブル(コミュニティに入って会話する為のテーブル) id(autoincrement) ◎memberテーブル(ユーザー情報が格納されているテーブル) id name email password picture created modified ◎community_chatテーブル(どのユーザーの発言かをidで管理する) id message(送信しているテキスト) member_id community_id(communityテーブルのidとリレーションする) created modified
今はcommunity_chatテーブルのcommunity_idとcommunityテーブルのidでリレーションを組んでコミュニティのテキスト全てを取得しています。
それを、community_chatテーブルのcommunity_idとcommunityテーブルのidでリレーションを組んで更に、memberテーブルのidでリレーションを組んでmemberテーブルのnameとmemberテーブルのpictureを取得したいのですが、やり方がわかりません。
このような稚拙な質問ですが、回答していただけると嬉しいです。
情報として足らない所があったらどんどんいってください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/16 14:52
退会済みユーザー
2019/02/16 14:53