Rozdział 13. ♦ Współpraca PHP i MySQL 369
Rozdział 13. ♦ Współpraca PHP i MySQL 369
Rysunek 13.5.
Błędne kodowanie polskich znaków spowodowało brak danych w kolumnie Tytuł
Plik Edycja Widok Przeje Zakładki Narzędzia Pontoę \3 ■ -v' - r§? 1 V @ | J http://localhostfindex.php Rozpocznij przygód.., CJ Aktualności
Id Tytuł Rok wydania [Cena J 1997...............“j29.90 j
2 1997 32.00
3 1994......................~p4~50;
:4 2000 18.50
sytuacji dojdzie wówczas, gdy w kodzie skryptu polskie znaki zostaną zapisane w innym kodowaniu niż w wynikach zapytania zwróconych przez serwer baz danych. Musimy więc zawsze pamiętać, aby kodowanie liter w skrypcie było takie samo, jak kodowanie wyników zapytania.
Zamiast stosowania do odczytu wyników pętli while można również użyć pętli for. Schemat postępowania w takim wypadku został przedstawiony na poprzednich stronach. W praktyce wyglądałoby to tak, jak na listingu 13.6. Fragment ten należy wstawić w odpowiednie miejsce do kodu z listingu 13.3. Do pobrania liczby wierszy zwróconych przez zapytanie — co jest nam potrzebne do skonstruowania warunku zakończenia pętli — służy fimkcja mysql_num_rows. Efekt działania kodu będzie taki sam jak w dwóch poprzednich przypadkach.
Listing 13.6. Wykorzystanie pętli for do pobrania wyników zapytania_
<?php
Jcount ■ mysql_nutn_rows(Jresult): for($i =0: $i < Jcount: Ji++){
Jrow = mysql_fetch_array(Jresult): echo("<tr>");
echo("<td>".$row[’Id'].”</td>"): echo("<td>".Jrow['Tytuł']."</td>"): echo(”<td>".$row['Rok wydania']."</td>"): echot”<td>”.$row['Cena']."</td>"): echo("</tr>");
}
Przedstawmy teraz nieco bardziej zaawansowany przykład, który będzie wyświetlał nie tylko zawartość czterech wybranych kolumn tablicy Książki, ale również pozwoli na sortowanie wyników względem wybranej kolumny. Indeks kolumny, względem której powinno być wykonywane sortowanie, będzie przekazywany do skryptu za pomocą metody GET, w parametrze o nazwie sortld. Sortowanie będzie mogło się odbywać względem kolumn o indeksach 0, 2, 4 i 6, czyli Id, Tytuł, Rok wydania lub Cena. Przyjmiemy, że jeżeli do skryptu nie zostanie przekazany parametr o nazwie sortld lub jego wartość będzie różna od 2, 4 lub 6, sortowanie odbędzie się względem kolumny o indeksie 0, czyli kolumny Id. Kod skryptu działającego w taki sposób został przedstawiony na listingu 13.7.