Masz dość przewijania długich list danych, które zaśmiecają stronę? Nie jesteś sam! Stronicowanie to jedno z podstawowych rozwiązań w świecie programowania webowego, które nie tylko ułatwia nawigację użytkownikom, ale także poprawia wydajność strony. Dziś pokażę Ci krok po kroku, jak napisać skrypt PHP do obsługi stronicowania, i to bez zbędnego zamieszania. Przygotuj się na solidną dawkę wiedzy!
Dlaczego stronicowanie jest ważne?
Wyobraź sobie sklep internetowy, który ma tysiące produktów. Jeśli spróbujesz wyświetlić je wszystkie na jednej stronie, szybko zauważysz kilka problemów:
- Długi czas ładowania strony – im więcej danych, tym wolniejsza strona.
- Złe doświadczenia użytkownika – nikt nie chce przewijać kilometrowej listy.
- Trudności w zarządzaniu danymi – strona staje się nieczytelna.
Stronicowanie pozwala podzielić dane na mniejsze części i wyświetlać je użytkownikowi w bardziej przystępny sposób.
Co potrzebujesz do stworzenia systemu stronicowania?
- PHP i MySQL – To podstawa naszego skryptu.
- Baza danych z danymi – Może to być lista produktów, artykułów czy użytkowników.
- Chęci do nauki – W końcu samodzielne tworzenie skryptu to zawsze dobra zabawa!
Jak działa stronicowanie?
Stronicowanie opiera się na kilku prostych krokach:
- Określenie liczby danych na stronę – Decydujemy, ile elementów chcemy wyświetlać (np. 10 produktów na stronę).
- Pobranie odpowiednich danych z bazy – Korzystamy z
LIMIT
iOFFSET
, aby wyświetlić tylko określoną część wyników. - Generowanie linków nawigacyjnych – Tworzymy przyciski „Następna” i „Poprzednia”, które pozwalają przechodzić między stronami.
Kod PHP do stronicowania
Przejdźmy do rzeczy! Poniżej znajdziesz pełen skrypt PHP do obsługi stronicowania:
Krok 1: Połączenie z bazą danych
Najpierw musimy połączyć się z bazą danych. Upewnij się, że masz już bazę danych i tabelę z danymi.
<?php // Dane logowania do bazy danych $host = "localhost"; $user = "root"; $password = ""; $database = "moja_baza"; // Połączenie z bazą $conn = new mysqli($host, $user, $password, $database); // Sprawdzenie połączenia if ($conn->connect_error) { die("Błąd połączenia: " . $conn->connect_error); } ?>
Krok 2: Pobranie danych z bazy z użyciem LIMIT i OFFSET
Musimy wiedzieć, która strona jest aktualnie przeglądana i ile danych ma się na niej znaleźć.
<?php // Ile rekordów na stronę? $records_per_page = 10; // Sprawdzenie, która strona jest aktualnie przeglądana $current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1; // Obliczenie, od którego rekordu zaczynamy $offset = ($current_page - 1) * $records_per_page; // Zapytanie SQL $sql = "SELECT * FROM produkty LIMIT $records_per_page OFFSET $offset"; $result = $conn->query($sql); // Wyświetlenie danych if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "<p>" . $row['nazwa_produktu'] . "</p>"; } } else { echo "Brak danych."; } ?>
Krok 3: Obliczanie liczby stron
Aby wygenerować linki nawigacyjne, musimy znać całkowitą liczbę rekordów w tabeli.
<?php // Pobranie całkowitej liczby rekordów $sql_count = "SELECT COUNT(*) AS total FROM produkty"; $result_count = $conn->query($sql_count); $total_records = $result_count->fetch_assoc()['total']; // Obliczenie liczby stron $total_pages = ceil($total_records / $records_per_page); ?>
Krok 4: Generowanie linków nawigacyjnych
Teraz możemy stworzyć linki do przechodzenia między stronami.
<?php // Generowanie linków stronicowania for ($i = 1; $i <= $total_pages; $i++) { echo "<a href='?page=$i'>$i</a> "; } // Linki "Poprzednia" i "Następna" if ($current_page > 1) { $prev_page = $current_page - 1; echo "<a href='?page=$prev_page'>Poprzednia</a> "; } if ($current_page < $total_pages) { $next_page = $current_page + 1; echo "<a href='?page=$next_page'>Następna</a>"; } ?>
Kompletny kod
Poniżej znajdziesz kompletny skrypt:
<?php // Połączenie z bazą $host = "localhost"; $user = "root"; $password = ""; $database = "moja_baza"; $conn = new mysqli($host, $user, $password, $database); if ($conn->connect_error) { die("Błąd połączenia: " . $conn->connect_error); } // Parametry stronicowania $records_per_page = 10; $current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1; $offset = ($current_page - 1) * $records_per_page; // Pobranie danych $sql = "SELECT * FROM produkty LIMIT $records_per_page OFFSET $offset"; $result = $conn->query($sql); // Wyświetlenie danych if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "<p>" . $row['nazwa_produktu'] . "</p>"; } } else { echo "Brak danych."; } // Liczba stron $sql_count = "SELECT COUNT(*) AS total FROM produkty"; $result_count = $conn->query($sql_count); $total_records = $result_count->fetch_assoc()['total']; $total_pages = ceil($total_records / $records_per_page); // Linki nawigacyjne for ($i = 1; $i <= $total_pages; $i++) { echo "<a href='?page=$i'>$i</a> "; } if ($current_page > 1) { $prev_page = $current_page - 1; echo "<a href='?page=$prev_page'>Poprzednia</a> "; } if ($current_page < $total_pages) { $next_page = $current_page + 1; echo "<a href='?page=$next_page'>Następna</a>"; } $conn->close(); ?>
Jak to działa?
- Podajesz liczbę rekordów na stronę – Dzięki temu możesz kontrolować, ile elementów się wyświetla.
- Zapytania SQL z
LIMIT
iOFFSET
– Pozwalają pobrać odpowiednią porcję danych z bazy. - Automatyczne linki nawigacyjne – Tworzysz dynamiczne odnośniki do innych stron.
Stronicowanie to coś, czego prędzej czy później będziesz potrzebować w swoich projektach. Ten skrypt PHP jest prosty i elastyczny – możesz go dostosować do swoich potrzeb.