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 | 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
| ||||||||||||