X
Wtorek 08 Kwiecień 2025r. Godz 00:00:00      
Postów: 251      

Podstawy MySQL'a - cz.3

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)