Widziałem Twój kod w innej odpowiedzi i zalecałbym użycie funkcji LIMIT w MySql zamiast przesuwania wartości. Przykład:
SELECT * FROM all_posts ORDER BY post_id DESC LIMIT '".(((int)$page)*5)."',5
To po prostu pobierze numer strony w żądaniu AJAX i automatycznie pobierze przesunięcie. To jedno spójne zapytanie, które działa niezależnie od ostatnich wyników na stronie. Wyślij coś takiego jak page=1 lub page=2 w kodzie jQuery. Można to zrobić na kilka różnych sposobów.
Najpierw policz liczbę elementów zbudowanych na stronie i podziel przez liczbę na stronie. To da numer strony.
Po drugie, możesz użyć jQuery i powiązać bieżący numer strony z treścią:
$(body).data('page', 1)
Zwiększ ją o jeden przy każdym załadowaniu strony.
Jest to naprawdę lepszy sposób, ponieważ używa jednego zapytania do wszystkich operacji i nie wymaga wielu informacji o danych znajdujących się już na stronie.
Jedyną rzeczą do zapamiętania jest to, że ta logika wymaga, aby pierwsze żądanie strony miało wartość 0, a nie 1. Dzieje się tak, ponieważ 1*5 da 5, z pominięciem pierwszych 5 wierszy. Jeśli jest to 0, przeliczy się na 0*5 i pominie pierwsze 0 wierszy (ponieważ 0*5 to 0).
Daj mi znać, jakie masz pytania!