[ Podstawy MySQL'a (cz. 3) ]
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.
Mała rzecz, a cieszy ;-)
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.
Kasowanie baz 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");
Inny sposób na wyświetlenie zawartości bazy danych
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.
Informacje o tabeli
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)
Autor: