Paginacja (stronicowanie)

Kiedy mamy do wyświetlania dość dużą liczbę danych (rekordów), nie możemy „wypisać” ich jeden po drugim gdyż taka strona internetowa będzie bardzo długo się wczytywać, a co najważniejsze będzie ciężko po niej poruszać. W końcu nikomu nie jest przyjemnie przewijać w dół przez 20 minut okno przeglądarki, żeby dojść do ostatniego wpisu. Właśnie tutaj z rozwiązaniem przychodzi paginacja – czyli stronicowanie.

Funkcja, którą zaprezentowałem poniżej wyświetla odnośniki do czterech stron w tył, oraz czterech stron w przód licząc od bieżącej i dodatkowo na bokach linki do pierwszej i ostatniej strony. Dzięki czemu kod jest przystosowany nawet do obsługi kilku tysięcy rekordów.

Poniższy kod umieszczamy na samym początku skryptu:

Następnie do zmiennej $query, przypisujemy początek naszej kwerendy SQL służącej do pobierania danych które chcemy podzielić na strony (UWAGA: Nie podajmy tutaj klauzuli LIMIT). Przykład:

Ten kod, wstawiamy po zapytaniu do bazy, które pobiera rekordy do stronicowania:

Zmienna $dbc, zawiera oczywiście dane dostępu do bazy danych.

Funkcja generate_page_links odpowiedzialna za wygenerowanie linków do stronicowania:

Teraz w dowolnym miejscu możemy wyświetlić odnośniki do stron (należy tylko pamiętać, że kod musi znajdować się w takiej kolejności w dokumencie, w jakiej został przedstawiony w tym artykule):

, , , ,

  • dybik

    Bardzo słabo wytłumaczone, a w całej treści wielki chaos …
    Przykład: „Ten kod, wstawiamy po zapytaniu do bazy, które pobiera rekordy do stronicowania (w tym zapytaniu nie wpisujemy klauzuli LIMIT – zrobimy to później):” a poniżej jest LIMIT … porażka.

    • „Przykład: „Ten kod, wstawiamy po zapytaniu do bazy, które pobiera rekordy do stronicowania (w tym zapytaniu nie wpisujemy klauzuli LIMIT – zrobimy to później):” a poniżej jest LIMIT … porażka.”

      Chodzi o to, że ten fragment wstawiamy po zapytaniu do bazy danych pobierającym dane i w tym zapytaniu nie dajemy klauzuli LIMIT.

      Jak czegoś nie rozumiesz, to mogę Ci wytłumaczyć ;-)

  • Obik

    cześć, 2 poprawki

    $data = myqli_query($dbc, $query);
    powinno być:
    $data = mysqli_query($dbc, $query);

    mysqli_query($dbc, $query);
    powinno być:
    $result=mysqli_query($dbc, $query);

    Pozdr.

    • Dzięki za wyłapanie literówek ;) Poprawione.