FAQ  Szukaj  Użytkownicy  Grupy  Statystyki  Rejestracja  Zaloguj


Poprzedni temat :: Następny temat
[PHP i MySQL] Stronnicowanie
Autor Wiadomość
kodyrr 


Dołączył: 11 Sie 2008
Posty: 4
Skąd: Szczecin
Wysłany: 2008-08-12, 09:04   [PHP i MySQL] Stronnicowanie

Przedstawię jak zrobić podział na strony wyników pobranych z bazy danych:
Kod:
$perPage = 20;
if (is_numeric($_REQUEST['page'])) {
$page = (int) $_REQUEST['page'];
if ($page < 1) {
$page = 1;
}
} else {
$page = 1;
}
$start = ($page - 1) * $perPage;
$query = 'SELECT [fields] FROM [table] ' .
"WHERE [condition] LIMIT $start, $perPage";
$result = mysql_query($query);
while ($record = mysql_fetch_srray($result)) {
// wyswietlanie wpisow
}
$prev = $page - 1;
$next = $page + 1;
$prevLink = $_SERVER['PHP_SELF'] . '?page=' . $prev;
$nextLink = $_SERVER['PHP_SELF'] . '?page=' . $next;
echo "<p align='center'>",
"<a href='$prevLink'>";
"Previous Page</a> | ",
"<a href='$nextLink'>",
"Next Page</a></p>";

Oto jest cały kod. Wystarczy go wkleić i zmienić kilka drobnostek.

1. To odpowiada zailość wyświetlanych wyników:
Kod:
$perPage = 10;


2. Część odpowiadająca za odebranie numeru strony. Jeżeli nie ma nic, albo liczba jest ujemna to wtedy zawsze jest jeden.
Kod:
if (is_numeric($_REQUEST['page'])) {
$page = (int) $_REQUEST['page'];
if ($page < 1) {
$page = 1;
}
} else {
$page = 1;
}


3. To odpowiada za to, od którego wpisu będą pobierane rekordy z bazy danych. Poniżej wstawimy tą zmienną przy pobieraniu wpisów z bazy danych. W tym przypadku od numeru strony odejmujemy 1. Czyli gdy strona = 1, to mnożymy 0 razy ilość wyświetlanych rekordów czyli w tym przypadku 10. 0*10 = 0, czyli pobieramy wpisy od id=0. Gdy jesteśmy na stronie 2, wtedy równianie wygląda tak: (2 - 1) * 10 = 10, czyli pobieramy wpisy od id=10.
Kod:
$start = ($page - 1) * $perPage;


4. Pobieranie wpisów, z tabeli [table], pod jakimś warunkiem. To modyfikujemy do woli. natomiast dalsza część (LIMIT $start, $perPage) jest związana z poprzednią linijką. $start oznacza od którego wpisu zaczynamy pobieranie rekordów. $perPage oznacza ile rekordów pobieramy.
Dla page=2 pobieramy 10 wpisów od dziesiątego zaczynając. Czyli pobieramy wpis 11, 12, 13, 14...20.
Dalej mamy wyświetlanie wpisów. I to miejsce też modyfikujemy na swoje potrzeby.
Kod:
$query = 'SELECT [fields] FROM [table] ' . "WHERE [condition] LIMIT $start, $perPage";
$result = mysql_query($query);
while ($record = mysql_fetch_srray($result)) {
// wyswietlanie wpisow
}


5. Zmienne, dodające lub odejmujące 1 od aktualnej strony. Wykorzystywane przy odnośnikach, które są niżej:
Kod:
$prev = $page - 1;
$next = $page + 1;


6. gdzie $_SERVER['PHP_SELF'] to adres strony. Linki mogą wyglądać tak:
Kod:
$prevLink = $_SERVER['PHP_SELF'] . '?page=' . $prev;
$nextLink = $_SERVER['PHP_SELF'] . '?page=' . $next;


7. Na końcu adresu dostawiamy ?page= i tutaj odejmujemy lub dodajemy 1, przechodząc na stronę następną lub poprzednią. To zaś spowoduję zmianę wartości page na początku działania kodu i dzięki temu będziemy wyświetlali inną porcję wpisów:
Kod:
<a href=\"index.php?page=".$prev."\">Poprzednia</a>
<a href=\"index.php?page=".$next."\">Nastepna</a>
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Stronę monitoruje stat24 website monitoring service



Wymiana Linkiem
Forum Komputerowe | PcPlanet |Forum eKing.pl | Warez | www.warezik.eu | Forum GSM | Serwis SonyEricsson | Robert Kubica | Darmowe dzwonki i motywy | Sony Ericsson Forum | gsmfon.org - GSM | Aukcje EMAR
Strona wygenerowana w 0,21 sekundy. Zapytań do SQL: 11