|
Podczas poprzednich lekcji przekazywałem wam skrupulatnie moje podstawowe informacje. Teraz już bez problemu posługujecie się MySLQ'em, jednak jest jeszcze kilka komend, które musicie poznać, a o których zapomniałem wspomnieć poprzednio. Podczas poprzedniej lekcji przy rozszerzaniu naszej wyszukiwarki zapomniałem wspomnieć o jednej rzeczy. Chodzi tutaj o wyświetlanie ilości znalezionych rekordów, można to zrobić na około tj. za pomocą wyrażeń SQL przeszukiwać i za każdym razem, kiedy coś znajdzie drukować to na stronie i zliczać. Potem na samym dole strony wyświetlić ile rekordów znaleziono. Można także, najpierw osobno zliczać, później wydrukować na górze strony, potem jeszcze raz przeszukiwać i dopiero wtedy drukować właściwą zawartość strony, jednak w ten sposób za bardzo zajmujemy serwer. Jest o wiele prostsza i przyjemniejsza metoda, a do serwer nie będzie nadużywany. Komenda 'mysql_num_rows' służy do zwracania ilości pól znajdujących się we wskazanym zbiorze wyników, stosujemy ją według następującego schematu: $zapytanie = "SELECT nazwy_pol FROM nazwa_tabeli WHERE warunek"; $wykonaj = mysql_query($zaptanie); $znaleziono = mysql_num_rows($wykonaj); Po wykonaniu tej operacji zmienna '$znaleziono' będzie zawierać ilość wyszukiwanych elementów. Teraz możesz wydrukować na górze strony ile razy znaleziono poszukiwane wyrażenie, a potem znalezione elementy. Przykład: $zapytanie = "SELECT * FROM nba WHERE imie LIKE \"%a%\" ORDER BY DESC"; $wykonaj = mysql_query($zaptanie); $znaleziono = mysql_num_rows($wykonaj); if ($znaleziono == "0") { print "Nie znaleziono żadnego zawodnika z literą 'a' w imieniu"; } else { print "Znaleziono $znaleziono zawodników z literą 'a' w imieniu.<br><br>"; } while ($row = mysql_fetch_array($dzialaj)) { print "Imie zwodnika: <b>".$row['imie']." </b><br>Lata gry: <b>".$row['imie']." </b>"; }
Przy okazji pokazałem, co zrobić żeby pokazywał się napis informujący o braku szukanych rekordów. Po wykonaniu tych kilku linijek powinna nam się ukazać piękna lista z zawodnikami, których imię zawiera literę 'a' lub komunikat o braku takich zawodników w bazie danych. Czasami zdarzy się tak, że zrezygnujemy nie tylko z kilku informacji zawartych w danej bazie, ale z całej bazy, wtedy kasujemy ją przy użyciu komendy mysql_drop_db. Robimy to w następujący sposób: mysql_drop_db (nazwa_bazy) W odniesieniu do naszego przykładu, skasowanie całej bazy danych z zawodnikami wyglądałoby tak: mysql_drob_db ("zawodnicy"); Jak na razie poznaliście tylko jedną metodę wydobywania informacji z bazy danych - za pomocą komendy 'mysql_fetch_arry', druga metoda , którą za chwile poznacie jest prawie taka sama. Komenda 'mysql_fetch_row' różni się tym od 'mysql_fetch_arry', że wyniki przedstawiane są w postaci tablicy indeksowanej liczbami (nie nazwami pól z bazy danych!). Rozpatrzmy przykład: $zapytanie = "SELECT * FROM nba"; $dzialaj=mysql_query($zapytanie); while ($pole = mysql_fetch_row($dzialaj)) { print "$pole[1], "; }
W ten sposób zostaną wyświetlone imiona wszystkich zawodników oddzielone od siebie przecinkami. Przypominam tylko, że imiona zawodników były drugim polem w naszej bazie danych. Jeśli mamy dostęp do jakiejś tabeli, którą nie my stworzyliśmy to zapewne chcemy cos o niej wiedzieć np. nazwy kolumn czy jaka jest maksymalna długość znaków w danym polu. Nazwy pól możemy wydobyć za pomocą komendy 'mysql_field_name' wg schematu: mysql_field_name(id_wyników, indeks_pola) Rozpatrzmy to na przykładzie: $zapytanie = "SELECT * FROM nba"; $dzialaj=mysql_query($zapytanie); $n_pola = mysql_field_name($dzialaj, 0);
Po wykonaniu tej operacji zmienna $n_pola będzie zawierać nazwę pierwszego pola (indeks 0) w tym przypadku zmienna zwróci wartość 'id' (takie jest pierwsze pole w tabeli nba). Maksymalną ilość znaków danego pola wyciągamy komendą 'mysql_field_len' według następującego schematu: mysql_field_len(id_wyników, indeks_pola) Przykład: $zapytanie = "SELECT * FROM nba"; $dzialaj=mysql_query($zapytanie); $d_pola = mysql_field_len($dzialaj, 0);
Zmienna '$d_pola' będzie zawierać liczbę '10', ponieważ pierwsze pole 'id' ograniczyliśmy długością 10 znaków. Nazwę tabeli, z której pochodzi wskazane pole możemy uzyskać korzystając z komendę ' mysql_field_table' w następujący sposób: mysql_field_table(id_wyników, indeks_pola) Przykład: $zapytanie = "SELECT * FROM nba"; $dzialaj=mysql_query($zapytanie); $n_tabeli = mysql_field_table($dzialaj, 0); Zmienna '$n_tabeli' zwróci 'nba' czyli nazwę tabeli, z której pochodzi pole o indeksie zerowym. Aby dowiedzieć się, jakiego typu jest dane pole trzeba użyć komendy 'mysql_field_type' analogicznie jak poprzednie komendy tego typu: mysql_field_type(id_wyników, indeks_pola) Informacje o tabeli Inny sposób na wyświetlenie zawartości bazy danych Kasowanie baz danych Mała rzecz, a cieszy ;-)
|