0

jQuery、PHP / MySQLを使って「omegle.com」のようなランダムチャットシステムを開発しましたが、サイトを改善したいと思っています。現段階では、新しいメッセージを表示するためのリクエストをPHPファイルに送信します。jQueryコードは以下のとおりです

function load_msg(){

   $.ajax({
        url: 'show_msg.php',
        success: function(result){
            $("#wait").css("display","none");  
            $("#chat_canvas").html(result);
        }
    });

}

setInterval("load_msg()",3000);

しかし、すべてのメッセージが表示されるので、新しいメッセージだけを表示できるようにしたいのですが、その方法がわかりませんでした。

私は例を挙げています、

テキストエリア「Helloxyz」に書き込んだとします。メッセージ「Helloxyz」をphpファイルに送信し、phpファイルはそれをデータベースに保存します。次に、このメッセージはphpファイルにリクエストを送信することで表示され、結果を返します。その結果、「Helloxyz」と表示されます。これで結構です。しかし、「How are u?」を送信すると、「Helloxyz」と「Howareu?」の両方が読み込まれます。「Helloxyz」をもう一度ロードしたくありません。以前にロードされています。まだロードされていない新しいメッセージのみをロードしたい。どうやってやるの???

私の貧弱な英語をお詫びします、英語は私の母国語ではありません。

4

3 に答える 3

2

最後に表示されたメッセージまたはIDのタイムスタンプを送信できます。jsonを使用してクエリを書き直します。

于 2012-11-11T18:33:40.993 に答える
1

メッセージがまだ表示されているかどうかを(ブール値で)指定する別の列をテーブルに追加できます。たとえば、2番目のPHPファイルがメッセージの取得を要求すると、クライアントに送信したばかりの列ごとにその列を1(1 =表示)に設定し、すでに1に設定されているすべての列を無視できます。

詳細に説明すると、すべての条件が満たされているデータベース内のその行を更新するこのようなクエリがある場合があります(正しいクライアントに表示されていることを確認するため)。その後、影響を受けるすべての行を取得して、ページに返すことができます(Javascriptによって取得され、クライアントに表示されます)。

UPDATE `table` SET `displayed` = 1 WHERE /* search terms here */

重要な部分は、影響を受けるすべてのものを取得することです。できれば、PDOまたはを使用しmysqliます。

于 2012-11-11T18:28:49.453 に答える
1

limit 0,1現在のクエリを入力することもでき ます

于 2012-11-11T18:36:52.987 に答える