私は自分のサイトで一種のメールを作成しようとしています。
だから私は3つの列を含むテーブルを持っています.2つのintフィールド(from、to)とタイムスタンプ(送信日)を持つ(簡単にするために、しかし実際には)としましょう
私のページの一部にto
、同じ人宛てのすべてのメッセージをグループ化する group by を使用してメッセージのリストを表示します。
最終的には、メッセージをクリックしたときに会話全体を表示したいのですが、それは明らかではありません。
私はjquery ajaxを試してからiframeを試しましたが、それは良くありません。なぜなら、一方では何も返されず(ホワイトページ)、次に毎秒のリロードが良くないからです。
まず、リクエストの結果を表示したいと思います。
jquery callback でアプリケーションをどうするか分からないので、 callback を設定していません。最も簡単な方法は、php で処理を行い、ループを実行して、すべてを iframe に表示することだと思いました。
だから私はそれをjqueryに入れました
$( ".load_message" ).click(function() {
//On marque uniquement l'id de l'expediteur et du destinataire
// pour chercher les messages expédiés par A vers B ou inversement
var from = $(this).closest('tr').find('span.from').text();
var to = $(this).closest('tr').find('span.to').text();
$.ajax({
type: 'POST',
url: 'pages_ajax/fetch-messages.php',
data: { from: from, to: to},
dataType: "json"
});
});
setInterval(refreshIframe1, 1000);
function refreshIframe1() {
$("#messages")[0].src = $("#messages")[0].src;
}
そして私がこれを持っているphpページ:
<?php
session_start();
require_once("../../lib_php/librairie.php");
require_once("../../config/connexion.php");
//header('Content-Type: application/json; charset=utf8');
/**
* Fonction qui retourne une liste de messages
* @return int
*/
function fetchMessages() {
if (isset($_POST['from'])) {
$from = mysql_real_escape_string($_POST['from']);
$to = mysql_real_escape_string($_POST['to']);
$query = "SELECT `id`, `from`, `to`, `message`, `sent`, `read`, `direction`
FROM `cometchat`
WHERE `from` = {$from} || `from` = {$to} || `to` = {$to} || `to` = {$from}";
return $query;
} else {
return null;
}
}
if (isset($_POST['from'])) {
$liste_messages = fetchMessages();
if (!is_null($liste_messages)) {
$result_message = mysql_query($liste_messages);
while ($mess = mysql_fetch_assoc($result_message)):
?>
ici
<?php
endwhile;
}
}
?>
しかし、今のところ何も機能せず、phpMyAdmin でクエリのエコーを実行しているときにメッセージが返されません。リロード時にコンテキストが失われていると思います ($_POST 自体が失われています)
最初に会話全体を iframe または div に表示し、その間に新しい投稿があると自動的に更新された後、ページをリロードしない Facebook のメッセージング システムに少し似ています。
どんな助けでも大歓迎です。