webmaster webmastering webdesign

Jesteś tutaj: webmade.org >> kursy online >> kurs mysql >> Część 3

Porcjowanie wyników zapytania

autor: Piotr Kuźmiński, ostatnia modyfikacja: 2008-11-12

szukaj: porcjowanie wyników porcjowanie wyników kurs mysql kurs mysql

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

Zagadnienia poruszane w tej części kursu:

Chcesz zostać programistą?

Poznaj 6 kroków do efektywnej
nauki programowania!

 

valid XHTML
valid CSS
© 2004-2008 copyright by webmade.org