Jacek | 2005-12-21 10:44:57
Powiem trochę o bazie MySQL na podstawie prostego modułu biblioteczki.
Uwaga! Przydatna jest znajomość podstaw PHP!
Zanim cokolwiek wykonamy, musimy utworzyć tabelę. Zwykle robimy to w panelu administracyjnym konta, używając graficznego skryptu phpMyAdmin. My jednak stworzymy ją ręcznie. Po zdobyciu informacji (nazwa serwera, użytkownik, hasło, baza) możemy przejść do konkretów.
<?php
mysql_connect('adres_bazy_danych', 'nazwa_użytkownika_bazy', 'hasło_użytkownika_bazy'); // Łączymy się z bazą
mysql_select_db('nazwa_bazy_danych'); // Wybieramy bazę, której będziemy używać
mysql_query('Wykonujemy polecenia SQL');
?>
W ten sposób łączymy się z bazą MySQL.
Tworzenie tabeli jest proste, używamy mnie/więcej takiej składni:
CREATE TABLE `nazwa_tabeli` ( `nazwa_pola` TYP_POLA, `pole2` TYP_POLA2 )
Nasza będzie jednak wyglądała trochę inaczej:
CREATE TABLE `ksiazki` ( `nazwa` VARCHAR(50), `autor` VARCHAR(50), `opis` TEXT )
Utworzyliśmy tabelę `ksiazki` z polami: `nazwa`, `autor` (dowolny tekst, max. 50 znaków) oraz `opis` (dowolny tekst; max. 65535 bajtów). Wszystkie typy dobrze opisano w artykule na home.pl
Dodawanie rekordów do tabeli również nie jest trudne. Składnia:
INSERT INTO `tabela` (`nazwa_pola_1`, `nazwa_pola_2`) VALUES ('wartość pola 1', 'wartość pola 2')
INSERT INTO `ksiazki` (`autor`, `nazwa`, `opis`) VALUES ('Dan Brołn', 'Cyfrowa Twierdza', 'NSA konstruuje superkomputer pozwalający złamać...');
INSERT INTO `ksiazki` (`autor`, `nazwa`, `opis`) VALUES ('Zbigniew Znienacki', 'Pan Samochodzik', 'To cykl książek opowiadających o peryferiach...');
Jak widać, wartości możemy podawać w innej kolejności, niż przy tworzeniu tabeli. Aktualnie całość wygląda tak:
________________________________________________ / autor | nazwa | opis \ +====================+==================+========+ | Dan Brołn | Cyfrowa Twierdza | NSA... | | Zbigniew Znienacki | Pan Samochodzik | To... | \________________________________________________/
Co bardziej uważni czytelnicy zapewne zauważyli, iż (celowo) błędnie napisałem nazwiska autorów. Zajmiemy się zatem zmienianiem rekordów:
UPDATE `tabela` SET `nazwa_pola`='wartość' WHERE `nazwa_pola_2`='wartość_pola_2'
UPDATE `ksiazki` SET `autor`='Dan Brown'
Po wykonaniu takiego zapytania nasza tabela będzie wyglądać w ten sposób:
________________________________________________ / autor | nazwa | opis \ +====================+==================+========+ | Dan Brown | Cyfrowa Twierdza | NSA... | | Dan Brown | Pan Samochodzik | To... | \________________________________________________/
I niestety nadal jest źle. Musimy więc sprecyzować, o co nam chodzi:
UPDATE `ksiazki` SET `autor`='Zbigniew Nienacki' WHERE `nazwa`='Pan Samochodzik'
Tłumaczenie: tam, gdzie nazwa książki to Pan Samochodzik, zmień pole autor na Zbigniew Nienacki
_______________________________________________ / autor | nazwa | opis \ +===================+==================+========+ | Dan Brown | Cyfrowa Twierdza | NSA... | | Zbigniew Nienacki | Pan Samochodzik | To... | \_______________________________________________/
Składnia:
SELECT `nazwy_pól` FROM `tabela`
I możemy spokojnie rozszeżyć ją o WHERE z poprzedniego rozdziału (używamy w ten sam sposób). Możemy także limitować ilość przekazywanych rekordów.
SELECT `nazwy_pól` FROM `tabela` LIMIT 5
Co spowoduje pokazanie 5 pierwszych wierszy. Ale to nie całe zastosowanie LIMIT.
SELECT `nazwy_pól` FROM `tabela` LIMIT 9, 5
Tu pobieramy 5 rekordów poczynając od dziesiątego (numeracja zaczyna się od 0!)
Tu, wreszcie, powracamy do PHP. Istnieje funkcja (nawet nie jedna), która z wyniku mysql_query potrafi wychwycić dane. Zwie się:
mysql_fetch_array()
Zwraca ona kolejno otrzymane wiersze (za każdym razem jeden). Praktyczne użycie:
<?php
mysql_connect('adres_bazy', 'użytkownik', 'hasło'); // Łączymy się
mysql_select_db('baza'); // Wybieramy bazę
$wynik = mysql_query('SELECT * FROM `ksiazki` WHERE `nazwa` LIKE 'Cy.rowa%'');
// Zwraca książki, których pole nazwa to Cy(dowolny znak)rowa(cokolwiek)
// Do rekordów odwołujemy się tak:
// $wynik_mysql_fetch_array['nazwa_pola_w_bazie']
// lub tak:
// $wynik_mysql_fetch_array[numer_kolejny_pola]
while($rzad = mysql_fetch_array($wynik)) {
echo 'Tytuł: '.$rzad['nazwa'].'<br>Autor: '.$rzad['autor'].'<br>Opis: '.$rzad['opis'].'<hr>';
}
?>
Tradycyjnie zaczynamy od składni:
DELETE FROM `tabela`
Podobnie jak SELECT i UPDATE możemy rozszeżyć o WHERE
Mam nadzieję, że jest to choć w części zrozumiałe. Jeśli jednak nie, napisz do mnie - postaram się wyjaśnić
© by Jacek Kowalski
Sponsor: Oxy.pl