質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

0回答

1859閲覧

リアルタイムチャットでの入退室の通知についての質問です

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2016/03/12 07:08

現在リアルタイムチャットを作成中なのですが入退室時の通知について質問させていただきます。

下のような入退室中のユーザと退室したユーザーをそれぞれデータベースに格納し、
ajaxを使い変化があった時にだけphpからレスポンスを返すような形をとっていて、
phpからレスポンスを返す際に入室中のユーザーと退室したユーザーを同時に返すようにしているのですが
javascript側で入室中のユーザーと退室中ユーザーの振り分けの方法が思いつきません。
それともphp側で入室した時には入室したユーザーだけを返し
退室した時には退室したユーザーだけを返すと言った具合にphp側で振り分ければいいでしょうか

ゲロ吐くほど意味不な感じですがわかる方お願いします

php

1if (isset($_GET["state"])&&$_GET["state"]==="monitoring") { 2 //最後に入室したユーザーのidを取得 3 $sql=sprintf('SELECT m.* FROM chat_aoimembers mORDER BY m.id DESC LIMIT 1'); 4 $mems=mysqli_query($db,$sql)or die(mysqli_error($db)); 5 $mem=mysqli_fetch_assoc($mems); 6 $lastmem=$mem["id"]; 7 $newmem=$lastmem; 8 //最後にログアウトしたユーザーのidを取得 9 $sql2=sprintf('SELECT o.* FROM chat_aoioutmembers o ORDER BY o.out_id DESC LIMIT 1'); 10 $outmems=mysqli_query($db,$sql2)or die(mysqli_error($db)); 11 $outmem=mysqli_fetch_assoc($outmems); 12 $lastoutmem=$outmem["out_id"]; 13 $newoutmem=$lastoutmem; 14 //変化があるまで待機 15 while($newmem===$lastmem||$newoutmem===$lastoutmem){ 16 set_time_limit(0); 17 $sql=sprintf('SELECT m.* FROM chat_aoimembers m 18 ORDER BY m.id DESC LIMIT 1'); 19 $mems=mysqli_query($db,$sql)or die(mysqli_error($db)); 20 $mem=mysqli_fetch_assoc($mems); 21 $newmem=$mem["id"]; 22 23 $sql2=sprintf('SELECT o.* FROM chat_aoioutmembers o 24 ORDER BY o.out_id DESC LIMIT 1'); 25 $outmems=mysqli_query($db,$sql2)or die(mysqli_error($db)); 26 $outmem=mysqli_fetch_assoc($outmems); 27 $newoutmem=$outmem["out_id"]; 28 $i++; 29 session_write_close(); 30 sleep(1); 31 //もし変化があった場合レスポンスを返す 32 if ($newmem!==$lastmem||$newoutmem!==$lastoutmem||$i===30) { 33 $sql=sprintf('SELECT m.* FROM chat_aoimembers m 34 ORDER BY m.id DESC '); 35 $mems=mysqli_query($db,$sql) or die(mysqli_error($db)); 36 while($mem=mysqli_fetch_assoc($mems)){//入室中の全ユーザーを配列に格納 37 $member[]=array( 38 'postnum'=>5, 39 'membernum'=>$mem['id'], 40 'membername'=>$mem['name'], 41 'logintime'=>$mem['created'] 42 ); 43 } 44 45 $sql2=sprintf('SELECT o.* FROM 46 chat_aoioutmembers o ORDER BY o.out_id DESC LIMIT 1'); 47 $outmems=mysqli_query($db,$sql2)or die(mysqli_error($db)); 48 $outmem=mysqli_fetch_assoc($outmems); 49 //退室したユーザーを取得 50 $outmember[]=array('postnum' => 6, 51 'outnum'=>$outmem["out_id"], 52 'outmem' =>$outmem["out_name"] 53 ); 54 //上で取得した入室中のユーザー($member)と退室したユーザー($outmember)を配列に格納 55 $memstate[]=array('in'=>$member, 56 'out'=>$outmember); 57 header(' Content-type:application/json; charset=utf-8 ' ); 58 header(' X-Content-Type-Option:nosniff ' ); 59 echo json_encode( 60 $memstate,JSON_HEX_TAG | JSON_UNESCAPED_UNICODE | JSON_HEX_APOS | 61 JSON_HEX_QUOT | JSON_HEX_AMP 62 ); 63 break; 64 } 65 } 66 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shi_ue

2016/03/12 07:25

普通に文字列を変数に入れるときは、$sql="aaa" でいいですよ。
退会済みユーザー

退会済みユーザー

2016/03/12 11:20

助言ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問