Pracując nad witryną, która wykorzystuje bazę danych, bardzo często staję przed koniecznością modyfikacji istniejących bądź dodania nowych rekordów. Bez namysłu sięgam wtedy po phpMyAdmin – aplikację, która w wygodny i intuicyjny sposób umożliwia edycję zawartości bazy danych. W artykule przedstawię technikę, jaką posługuję się podczas tworzenia nowych witryn oraz do udostępniania kodu skończonych projektów.
Witryny internetowe udostępniające informacje pobierane z bazy danych zazwyczaj mają interfejs, który pozwala na wprowadzanie oraz edycję zawartości. Wykorzystując formularze WWW administratorzy oraz redaktorzy serwisu dodają do bazy danych nowe informacje, modyfikują istniejące rekordy, czy wreszcie usuwają wpisy nieaktualne.
Dostęp do bazy danych jest ograniczony poprzez funkcjonalność formularzy w panelu administracyjnym, co z jednej strony gwarantuje zachowanie spójności danych, z drugiej zaś ułatwia ich wprowadzanie. Osoba edytująca treść ma do czynienia z listami rozwijanymi, polami wyboru i innymi jasno podpisanymi kontrolkami formularzy.
Jednak zanim doprowadzimy witrynę do takiego stanu czeka nas żmudny proces projektowania, implementacji, usuwania błędów oraz testowania – trzeba oprogramować formularze, przetestować zapytania SQL. (Mam tutaj na myśli witryny, które programujemy samodzielnie od początku, bez wykorzystania gotowych systemów CMS czy frameworków.) I tak błędne koło się zamyka: jak mam testować zapytania SQL, skoro baza danych jest pusta? Jak mogę sprawdzać działanie skryptów, skoro witryna nie zawiera żadnych danych?
Tutaj z pomocą przychodzi popularne narzędzie phpMyAdmin (http://www.phpmyadmin.net). Aplikacja ta jest napisana w języku PHP i służy do administracji bazami danych serwera MySQL. Umożliwia ona m.in. tworzenie, restrukturyzację oraz usuwanie baz danych, zarządzanie tabelami (usuwanie, dodawanie, restrukturyzację), wydawanie zapytań SQL, edycję rekordów, eksport bazy danych do kilku różnych formatów, a także – od wersji 2.7 – import danych.
Omówiona baza danych umożliwia przechowywanie informacji o filmach i ich twórcach. Strukturę bazy danych opracowałem na podstawie informacji publikowanych w czasopiśmie Film, katalogu Ekskluzywny katalog filmów DVD 2005, wydawanego przez firmę Credo, przewodnika Halliwell\’s Film and Video Guide 2003, witryny Warner Home Video oraz okładek kilku płyt DVD. Zaznaczam, że baza ta stanowi jedynie ilustrację omówionej techniki pracy i nie powinna być traktowana jako rozwiązanie wzorcowe.
Pracę nad bazą danych rozpoczynamy od zaprojektowania modelu. Wykorzystując aplikację DBDesigner4 opracowujemy schemat bazy danych.
{tlo_1}
Krok 1
W obszarze roboczym umieszczamy kolejne tabele, relacje, regiony oraz opisy tekstowe. Rozpoczynamy od tabel zawierających dane o filmach, autorach, dystrybutorach oraz wytwórniach filmowych.
{/tlo}
{tlo_0}
Krok 2
Następnie dodajemy tabele przechowujące fotografie, adresy WWW oraz informacje o nagrodach.
{/tlo}
{tlo_1}
Krok 3
Tak duża liczba tabel (siedemnaście) nie zmieści się w obszarze roboczym (bez pomniejszania widoku).
Zatem część tabel przesuwamy, wykorzystując do tego okno nawigacyjne oznaczone literą A. Gdy model bazy danych jest ukończony, generujemy skrypt SQL tworzący wszystkie tabele. Służy do tego przycisk B. W oknie dialogowym ustalamy właściwości skryptu SQL, po czym kopiujemy skrypt do schowka.
A – okno nawigacyjne
B – generowanie skryptu SQL tworzącego tabele
{/tlo}{tlo_0}
Krok 4
Teraz w edytorze tekstowym wklejamy wygenerowany skrypt. Na górze dodajemy instrukcje odpowiedzialne za usunięcie i ponowne utworzenie bazy danych, konwersję znaków oraz nadające uprawnienia odpowiednim użytkownikom:
DROP DATABASE IF EXISTS filmy;
CREATE DATABASE filmy;
USE filmy;
SET NAMES latin2;
GRANT SELECT ON *.* TO reader@localhost IDENTIFIED BY \'\';
po czym cały skrypt zapisujemy w pliku filmy.sql. Po wydaniu komendy:
c:\mysql\bin\mysql -uroot -palamakota < filmy.sql
baza danych zostanie utworzona. To kończy proces projektowania struktury oraz tworzenie pustej bazy danych.
{/tlo}
{tlo_1}
Krok 5
W pliku filmy-sql-tylko-struktura.zip znajdziemy skrypt SQL tworzący pustą bazę danych filmy o opisanej strukturze. Zanim przystąpimy do dodawania rekordów, musimy oczywiście utworzyć pustą bazę danych. W tym celu wystarczy uruchomić plik wsadowy .bat, zawarty w archiwum filmy-sql-tylko-struktura.zip.
Teraz przechodzimy do programu phpMyAdmin. Uruchamiamy przeglądarkę i odwiedzamy odpowiedni adres. Lista rozwijana umożliwia wybór bazy danych, z którą chcemy pracować. Jeśli baza danych nie została zainstalowana (czyli wykonanie pliku filmy-sql-tylko-struktura.bat nie powiodło się), to na liście rozwijanej nie pojawi się baza danych \"filmy\".
{/tlo}
{tlo_0}
Krok 6
Po rozwinięciu listy wybieramy bazę danych o nazwie \"filmy\".
{/tlo}
{tlo_1}
Krok 7
W ten sposób przejdziemy do okna prezentującego wszystkie tabele bazy danych \"filmy\". Menu pionowe z lewej strony umożliwia szybki wybór jednej z siedemnastu tabel zawartych w bazie, zaś menu poziome dotyczy operacji na całej bazie danych: przeglądanie struktury, wydawanie zapytań, wyszukiwanie czy eksport.
A - menu pionowe: wybór tabeli z bazy danych filmy
B - menu poziome: powrót na stronę główną aplikacji lub na stronę główną bazy danych filmy
C - menu kontekstowe
{/tlo}
{tlo_0}
Krok 8
Należy pamiętać, że poziome menu dostępne na górze witryny działa kontekstowo. W zależności od tego, czy wybraliśmy tabelę czy bazę danych zobaczymy różne opcje.
{/tlo}
{tlo_1}
Krok 9
Z pionowego menu wybieramy tabelę tpanstwa. Ujrzymy informacje dotyczące wybranej tabeli. Przycisk Dodaj służy do dodawania rekordów do tabeli.
{/tlo}
{tlo_0}
Krok 10
W oknie edycyjnym wprowadzamy pierwszy rekord. Flaga państwa jest zapisana w pliku graficznym. Plik ten dodajemy do bazy danych za pomocą przycisku Przeglądaj.
{/tlo}{tlo_1}
Krok 11
Po dodaniu kilku państw przechodzimy do okna wyświetlającego zawartość tabeli tpanstwa. W tym celu naciskamy przycisk Przeglądaj.
{/tlo}
{tlo_0}
Krok 12
Ikona Widok do wydruku dostępna u dołu strony umożliwi wydrukowanie zawartości tabeli w postaci czytelnej tabelki. Wydruk taki znacznie ułatwi wypełnianie szczególnie pól będących kluczami obcymi.
{/tlo}
{tlo_1}
Krok 13
Przechodzimy do wypełniania tabeli tosoby. Po wybraniu tabeli z menu pionowego przejdziemy do strony prezentującej strukturę tabeli.
{/tlo}
{tlo_0}
Krok 14
Po naciśnięciu przycisku Dodaj pojawi się edytor, za pomocą którego możemy dodać do tabeli kolejny rekord. Wprowadzamy dane nowej osoby. Uwaga na pole idtpanstwo, które jest kluczem obcym z tabeli tpanstwo. W polu tym należy wprowadzić identyfikator odpowiedniego państwa z tabeli tpanstwa. Identyfikator ten sprawdzamy na wydruku zawartości tabeli tpanstwa.
{/tlo}
{tlo_1}
Krok 15
Po dodaniu kilkunastu osób wyświetlamy zawartość tabeli tosoby. W przypadku popełnienia błędu możemy ponownie wrócić do edycji wybranego rekordu. Służą do tego ikony zawarte w drugiej i trzeciej kolumnie poniższej tabelki.
{/tlo}
{tlo_0}
Krok 16
Po naciśnięciu ikony Edytuj przejdziemy do edycji wybranego rekordu.
{/tlo}
{tlo_1}
Krok 17
Gdy zakończymy dodawanie osób, drukujemy zawartość całej tabeli tosoby. Identyfikatory osób są kluczami obcymi w tabeli tautor ustalającej autorów wybranego filmu.
{/tlo}{tlo_0}
Krok 18
W podobny sposób wypełniamy (przynajmniej w części) pozostałe tabele. Gdy baza danych zawiera już pewną ilość rekordów, przechodzimy do przygotowywania zapytań SQL. Wracamy do strony głównej tabeli filmy. Służy do tego odsyłacz oznaczony literą A.
Obszar oznaczony jako B zawiera ikony ułatwiające dodawanie, usuwanie oraz edycję rekordów w konkretnych tabelach. Przycisk C prowadzi do strony, za pomocą której wykonujemy zapytania SQL, zaś D - do strony wykonującej eksport bazy danych.
{/tlo}
{tlo_1}
Krok 19
Przechodzimy do formularza wysyłającego zapytania SQL. W polu tekstowym wprowadzamy treść zapytania:
{stala}SELECT imie, nazwisko FROM tosoby WHERE idtpanstwo = 1{/stala}
po czym naciskamy przycisk Wykonaj.
{/tlo}
{tlo_0}
Krok 20
Wyniki zwrócone przez bazę są prezentowane w postaci tabeli. Oprócz odpowiedzi, na ekranie pojawia się wykonane zapytanie, informacja o czasie przetwarzania oraz liczba zwróconych wierszy.
{/tlo}
{tlo_1}
Krok 21
Na koniec wykonujemy eksport bazy danych. Możemy wybrać tabele, których eksport dotyczy, ustalić format eksportu oraz opcje generowanych skryptów SQL.
{/tlo}
{tlo_0}
Krok 22
Po wykonaniu eksportu zawartość i struktura bazy danych zostają wyświetlone na ekranie lub zapisane w pliku tekstowym o rozszerzeniu .sql. Plik taki możemy oczywiście przeglądać i modyfikować dowolnym edytorem tekstowym.
W pliku filmy-sql-kompletny.zip został zapisany skrypt SQL tworzący bazę danych oraz wprowadzający do niej przykładowe rekordy.
Skrypt ten jest mieszanką ręcznie wprowadzonego kodu SQL (tworzenie i usuwanie bazy danych), instrukcji wygenerowanych przez program DBDesigner (tworzenie struktury bazy danych) oraz przez aplikację phpMyAdmin (dodawanie rekordów do bazy danych).
Skrypt tego typu możemy wykorzystać między innymi:
- jako kopię bezpieczeństwa bazy danych,
- do udostępnienia bazy danych,
- do przeniesienia bazy danych na inny serwer,
- w trakcie pracy nad witryną do wielokrotnego tworzenia bazy danych (błędnie działająca witryna może - w niektórych przypadkach - zniszczyć zawartość bazy danych; do odtworzenia bazy danych i jej zawartości wystarczy wówczas wykonanie pliku wsadowego).
Oczywiście podobną rolę może pełnić wygenerowany operacją Eksport skrypt aplikacji phpMyAdmin. W tak przygotowanym skrypcie wystarczy dodać instrukcje tworzenia i usuwania bazy danych (kod tworzący generowany przez DBDesignera nie jest konieczny: operacja Eksport umieszcza w skrypcie także instrukcje odpowiedzialne za tworzenie tabel).
{/tlo}