ユーザー用のフィードを作成していますが、ページの読み込み時に呼び出される最初の2つの投稿より古いコンテンツを取得しようとしています。下にスクロールすると、最初の2つの結果のレコードが何度も何度も繰り返されています。私がする必要があるのは、last_idより古いデータを追加することだけです。これはJsonから完全に取得しています。古い投稿を追加すると返されたレコードが返されます
また、DESC LIMITが必要ですが、DESC LIMIT $ last_idをクエリに追加すると、JSON応答データがまったく取得されないため、取り除かなければなりませんでした。
AJAX機能
last_idがキャッチされ、第1スクロールに戻って私のPHPページへので、$ _POST [「last_id」]を送られた最後の挿入されたレコードに0から更新されますされています。 - テスト済み
<script>
var last_id = 0;
function loadAll() {
$.ajax({
url: 'commentedoncontent.php',
type: 'POST',
dataType: 'JSON',
data: { last_id: last_id},
success: function(data) {
$.each(data.posts, function(i, response) {
});
last_id = data.last_id;
}
})
}
</cript>
PHP
私の最後のIDは、JSONの罰金て来ています。しかし、私はこの面で何が起こっているのか分かりません。私はDESC順に結果を必要とDESCのLIMITます$ last_idと私のフィードを追加しようとしただけで完全に消え、何のJSON配列を
$last_id=(isset($_POST['last_id']) && $_POST['last_id'] > 1)
? $last_id = $_POST['last_id'] : $last_id = 0;
$user1_id=$_SESSION['id'];
$query = "SELECT *
FROM streamdata m
INNER JOIN streamdata_feedback t1
WHERE
m.streamitem_id=t1.feedback_streamid
AND
t1.feedback_userid=$user1_id
AND
t1.feedback_rating=1
ORDER BY t1.feedback_id DESC LIMIT 2,2 ";
$result = mysqli_query($mysqli, $query) or die('Error: ' .mysqli_error($mysqli));
$rowcount = mysqli_num_rows($result);
$json = array();
while ($row = mysqli_fetch_array($result)) {
$last_id = $row['streamitem_id'];
$json[] = array(
'streamitem_id' => $row['streamitem_id'],
'streamitem_content' => $row['streamitem_content'],
);
}
echo json_encode(array('posts' => $json, 'last_id' => $last_id));
を返されません、私は最高のJSONに新しい機能にそれを送り返さdata.last_idを使用しています別のPHPページで新しいクエリでm.streamitem_id < $last_id
のようなことをしていますか?
あなたがLIMITに2つの引数を渡す場合は、最初の引数は行数のオフセットであります最後のレコードのIDではなく、始まります。 IDは連続である必要はなく、逆順でレコードを返すので、last_idをLIMIT句に渡すことは実際にはあまり意味がありません。私はあなたがおそらくWHERE t1.feedback_id <$ last_id LIMITと言っている方が良いと思います。2. last_idがない場合は、その句をクエリから除外することができます。 – ADyson
Last_id = 0ならどうすればよいのでしょうか?それはゼロから始まり、最初の2つのレコードを取得してから、そこからlast_idが渡されます。 – Gateway