2016-03-24 14 views
0

テーブル内に存在するすべての行を取得しようとしています。追加されたデータの行があるdivを更新した後ユーザーがページ上にいるのでテーブルに移動します(Convo全体が表示され、新しいメッセージが下部に追加されるWhatsappのようなもの)。データベースに新しい行があるときに自動更新div

これはこれまで私がAjaxを使ってきたことですが、私はこの段階からどこへ行くのか分かりません。現在のところ、最新のレコードのみが表示されます(2番目のファイルにタイムスタンプを手動で設定した場合)が、それ以前のレコードはすべてではありません。理想的には、2番目のファイルに時刻を投稿することで作業する必要があります。

私が望む機能を得るためにコードを変更するにはどうすればよいですか?

ディスプレイ(autoload.php)

var time = (new Date).getTime(); 
var interval = 1000; // 1000 = 1 second, 3000 = 3 seconds 
function doAjax() { 
    $.ajax({ 
      type: 'POST', 
      url: 'autoload2.php', 
      dataType: 'json', 
      data: 'time='+time, 
      success: function (data) { 
       $('.inner').append(data); 
      }, 
      complete: function (data) { 
       setTimeout(doAjax, interval); 
      } 
    }); 
} 
setTimeout(doAjax, interval); 

取得したデータ(autoload2.php)

$time = $_POST['time']; 
$results = mysql_query("SELECT post_name FROM posts WHERE postime > $time limit 1"); 
$row = mysql_fetch_assoc($results); 
$res = $row['post_name']; 
echo json_encode($res); 

注:動作しません上記の照会に使用されている時のみ、それがタイムスタンプでハードコードされているとき。

答えて

0

私はあなたの時間変数はPHPで

var interval = 1000; // 1000 = 1 second, 3000 = 3 seconds 
function doAjax() { 
    var time = (new Date).getTime(); 
    $.ajax({ 
     type: 'POST', 
     url: 'autoload2.php', 
     dataType: 'json', 
     data: 'time='+time 
    }).done(function(response){ 
     console.log(response); 
    }); 
} 

setInterval(doAjax, interval); 

を変更していないので、あなたの関数

var time = (new Date).getTime(); 

を移動する必要があると思う:

$data = Array('name' => 'name of last row'); 
header('Content-Type: application/json'); 
echo json_encode($data); 
+0

私は私を更新しましたあなたの提案がありますが、stデータの変化はありません。 – John

関連する問題