J2ME, Android. Aplikacje dla urządzeń mobilnych.
ASP.NET  DOKUMENTACJA  FLASH  J2EE SERVLET JSP  J2ME MOBILE  JAVASCRIPT  OPROGRAMOWANIE  PHP  SERWER  SQL  TRENDY  WYSZUKIWARKI  XML 

Porcjowanie wyników zapytania

W związku z często pojawiającymi się na forum pytaniami o porcjowanie wyników
zapytania postanowiłem napisać krótki tekścik, który powinien wszystko wyjaśnić
i rozwiać wszelkie wątpliwości.

Porcjowanie wyników zapytania

 
 spis treści:
Porcjowanie wyników zapytania1. Porcjowanie wyników zapytania
2. Porcjowanie wyników zapytania
Mamy tabelkę, powiedzmy własną kolekcje mp3. Teraz chcemy na naszej stronie
domowej udostępnić ją odwiedzającym. Jest tylko jeden problem. Mamy kilkaset
utworów i tak wielka strona strasznie długo się ładuje. Postanawiamy więc
podzielić kolekcje na podstrony. Cofnijmy się jednak trochę i zróbmy to
normalnie, czyli wszystko na jednej stronie. Zrobilibyśmy to mniej więcej tak:

<?
$result=mysql_db_query("naszabaza","SELECT tytul, autor, plyta, rok FROM
empecze");
while ($row=mysql_fetch_array($result)) {
echo $row[tytul].$row[autor].$row[plyta].$row[rok];
}
?>

Dodając oczywiście jakieś formatowanie tekstu, może jakieś ładne tabelki itp.
Spróbujmy teraz zrobić to samo, ale będziemy wyświetlać tylko część wyników.
Zmodyfikujemy tylko zapytanie:

SELECT tytul, autor, plyta, rok FROM empecze LIMIT 0,10;

Co oznacza ten magiczny LIMIT? LIMIT 0,10 powoduje, że zapytanie zwróci tylko
dziesięć kolejnych wierszy zaczynając od zerowego (czyli pierwszego).
Czy komuś już coś świta? :) Taaaaaaak żeby porcjować te wyniki, wystarczy
odpowiednio modyfikować wartości parametrów LIMIT'a :)
Genialne w swej prostocie.

Przejdźmy do konkretów. Czego potrzebujemy? Napewno jakiejś zmiennej, która
określałaby którą porcję (stronę) oglądamy. Nazwijmy ją $page. Określmy sobie
też zmienną z ilością wyników na jednej podstronie. Ją nazwiemy $ile (wiem, że
głupio).
Musimy teraz obliczyć na którym wierszu zaczyna się np strona piąta, abyśmy
mogli przekazać do LIMIT'a od którego wiersza ma zacząć. No to jest dosyć
proste, mnożymy numer strony przez ilość wyników, które mają być wyświetlane na
jednej podstronie i jush :)
Nasze zapytanie wygląda więc teraz tak:

SELECT tytul, autor, plyta, rok FROM empecze LIMIT ($page*$ile),$ile;

a w php zrobilibyśmy to tak:

$result=mysql_db_query("naszabaza","SELECT tytul, autor, plyta, rok FROM empecze
LIMIT ".($page*$ile).",$ile");

No już prawie jesteśmy u celu :) Teraz pozostało nam tylko dorobić nawigację po
naszym archiwum muzycznym.
Zrobimy przyciski następny/poprzedni i listę podstron a'la wyszukiwarki :)

Na dobry początek musimy wiedzieć ile w ogóle będzie podstron. W tym celu
sprawdzamy ile mamy utworów w naszej bazie:

list($wszystkich)=mysql_fetch_row(mysql_db_query("naszabaza","SELECT count(*)
FROM empecze"));

Oczywiście w ten sposób nie powinno się programować :)
Teraz wyliczamy ile będzie podstron, dzielimy ilość utworów przez rozmiar porcji
i zaokrąglamy w góre:

$podstron=ceil($wszystkich/$ile);

Nooo ślicznie :)
Przycisk "poprzednia strona":

if ($page>0) echo "<a href=skrypt.php?page=".($page-1).">Poprzednia</a>"; else
echo "Poprzednia";

Czyli w skrócie... jeśli to nie jest pierwsza strona (liczymy od zera) to zrób
link do poprzedniej strony ($page-1) w przeciwnym wypadku napisz tylko
Poprzednia (nie link).

Teraz robimy listę stron, lub jak kto woli porcji:

for ($i=1; $i<=$podstron; $i++) {
if ($i==$page-1) echo "$i"; else echo "<a href=skrypt.php?page=$i> $i
</a>";
}

Pamiętajmy o tym, że wewnętrznie liczymy od zera!, ale na ekranie pokazujemy od
jedynki.
I znowu w skrócie... robimy pętle od 1 do ilości podstron, którą to wyliczyliśmy
troszkę wcześniej. Sprawdzamy czy przypadkiem aktualnie nie jesteśmy na tej
podstronie, jeśli tak to piszemy ją normalnie, a jeśli nie to robimy link do
danej podstrony. Chyba trochę zamotałem.....

Teraz czas na przycisk "następna strona". Robimy go w zasadzie prawie tak samo
jak przycisk "poprzednia strona":

if ($page<$podstron) echo "<a href=skrypt.php?page=".($page+1).">Następna</a>";
else echo "Następna";

No to już koniec naszej opowieści... wszystko zrobione. Warto byłoby tylko
oprawić to jakoś ładnie w html. Nawigacje w jakaś ramkę zamknąć itp... Ale to
możecie potraktować jako zadanie domowe :))
strona 1 2 następna      Autor: peewee
Polska - Atrakcje turystyczne: Muzeum Greckich Instrumentów Muzycznych na weekend
Zobacz również:
XML (1)   Technologia J2EE (1)   Java i bazy danych   Kartki Internetowe   Apache + Tomcat   PHP, MySQL i własna wyszukiwarka   Bezpieczne uploadowanie plików  

Masz problem ze swoją komórką? Zapytaj, przeczytaj opinie o telefonie:
LG G1600   Sagem myC5-3   Motorola E1000   Trium Cosmo   Alcatel OT557   i-mate K-JAM   Samsung A777   Benefon TWIG Discovery Pro   palmOne Treo 270   LG LX150  



(C) 2000-2010 webdeveloper.pl  |  Napisz do nas