Algorytm do paginacji

0

Załóżmy, że mam 16 wyników w bazie i wyświetlam je po 4 na stronę. Linki wyglądają następująco:

index.php?start=1 // pierwsza strona
index.php?start=2 // druga strona
itd.

potrzebuje wymyślić algorytm matematyczny, który będę wciskał w zapytanie jako limit. Czyli do tego przykładu dla:

a) pierwszej strony:
LIMIT 0, 4;
b) drugiej strony:
LIMIT 4, 4;
c) trzeciej strony:
LIMIT 8, 4
d) czwartej strony (ostatniej bo 4 * 4 = 16, a wyzej napisalem, ze lacznie jest 16 wynikow):
LIMIT 16, 4

Akurat w tym przypadku najpierw musimy pomnożyć przez 4, potem już cały czas przez 2. Ale ja chcę to miec uniwersalne bo piszę funkcję, która będzie to obsługiwała na całej stronie, więc raz tych wyników będzie 1565 i po 4 na stronie, a raz 765 i 2 na stronie, dlatego ten algorytm musi być uniwersalny. Jakieś propozycje?

0
Limit (start-1)*maxRecords, maxRecords

Gdzie maxRecords to zmienna, w ktorej przechowujesz maksymalna liczbe rekordow na stronie. W Twoim przypadku maxRecords = 4.

Do tego oczywiscie jakis warunek, ktory sprawdzi czy zmienna start miesci sie w przedziale <1, ostatnia strona>

BTW: nie do konca wiem o co chodzi w tym pkt. "d" - moim zdaniem powinno tam byc LIMIT 12, 4

0

Tak, masz racje co do punktu d, mój błąd.
Dajcie mu pomógł, reputacje czy co tam bo dobrze prawi :d

0

Wygląda na to, że w algorytmie paginacji jest błąd.

Wstęp:
n - numer strony
k - indeks pierwszego postu na n'tej stronie
p - maksymalna ilość postów na stronę

Na n'tej stronie widać posty (k)..(k+p-1).
Na n+1'szej stronie widać posty zaczynające się od indeksu (k+p+1).
Post o indeksie k+p nie jest widoczny ani na n'tej ani na n+1'szej stronie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1