Jesteś tutaj: webmade.org >> kursy online >> kurs mysql >> Część 3
autor: Piotr Kuźmiński, ostatnia modyfikacja: 2008-11-12
Często mamy od czynienia z sytuacją gdzie w tabeli znajduje się dużo danych - za dużo aby wyświetlić wszystkie na jednej stronie, wtedy musimy podzielić wyniki wyświetlania. Dzielimy wynik zapytania również za pomocą klauzuli LIMIT jednak w tym wypadku podajemy dwa argumenty wg schematu:
SELECT nazwa_pola FROM nazwa_tabeli LIMIT pozycja, ilosc
Pierwszy argument pozycja określa pozycje w zbiorze wyników zapytań. Drugi argument ilosc określa ilość wyświetlanych rekordów. Czyli jeśli jako pierwszy argument wstawimy 0 a jako drugi 10 to zapytanie zwróci dziesięć pierwszych rekordów, jeśli jako pierwszy argument podamy 10, a jako drugi 10 to zapytanie zwróci kolejne dziesięć wierszy itd. Kompletny przykład kodu PHP:
$strona = $_GET['s']; // Wynikow Na Strone $wns = 10; settype($strona, "integer"); $tresc_zapytania_max = 'SELECT `id` FROM `nba`'; $zapytanie_max = mysql_query($tresc_zapytania_max); // $r_max zawiera ilosc wszystkich rekordow w tabeli $r_max = mysql_num_rows($zapytanie_max); $tresc_zapytania = 'SELECT `nazwisko`, `punkty` FROM `nba` ORDER BY `nazwisko` LIMIT '.($strona*$wns).','.$wns; $zapytanie = mysql_query($tresc_zapytania); while ($wiersz = mysql_fetch_row($zapytanie)) { echo 'Gracz '.$wiersz[0].' zdobył '.$wiersz[1].' puntów(y).'; } $lStron = ceil($r_max/$wns); for ($i=0;$i<$lStron;$i++) echo ''.($i+1).'';
Tak jak wcześniej pisałem po LIMIT podajemy dwa argumenty gdzie pierwszy jest pozycją (w tym wypadku numerem strony) a drugi ilością pozycji wyświetlanych na stronie. Zmienna $wns przechowuje liczbę określającą ilość rekordów na stronie natomiast ciąg $strona*$wns oblicza pozycje wśród zbioru rekordów od której chcemy odliczać $wns rekordów.
Zmienna $lStron przechowuje ogólną liczbę stron, która jest wyliczana z zaokrąglenia w górę liczby rekordów w wybranym zbiorze przez liczbę rekordów na stronę. Pętla for ma za zadanie wyświetlić listę stron.
redakcja: Sposób pobierania ilości rekordów zaprezentowana w tym przykładzie nie jest najlepszym rozwiązaniem. Lepiej jest skorzystać z funkcji COUNT
Piotr Kuźmiński
szukaj: porcjowanie wyników kurs mysql
Zagadnienia poruszane w tej części kursu:
© 2004-2008 copyright by webmade.org