PHP/phpMyAdmin
phpMyAdmin
edytujDotychczas wszystkie nasze bazy danych i tabele tworzyliśmy ręcznie z wiersza poleceń. Na dłuższą metę taka praca jest bardzo niewygodna i nieefektywna i nikt nie administruje w ten sposób bazami danych. Do tego celu wykorzystywane są specjalne, zaawansowane narzędzia, przestawiające całą strukturę w postaci graficznej oraz udostępniające narzędzia do np. importu czy eksportu zawartości. Jeśli tworzysz dynamiczne strony WWW, prędzej czy później spotkasz się z aplikacją phpMyAdmin, napisanym w PHP darmowym i niezwykle rozbudowanym menedżerem bazy danych MySQL wchodzącym w skład podstawowego wyposażenia niemal każdej szanującej się firmy hostingowej czy serwera WWW. Dzięki niemu możesz w parę minut skopiować stworzoną przez Ciebie na własnym komputerze bazę danych na właściwy serwer, a mnóstwo programistów wykorzystuje go do projektowania baz dla swych projektów WWW. W tym rozdziale nauczysz się podstaw pracy z phpMyAdminem.
Instalacja
edytujPrzebieg instalacji phpMyAdmina jest bardzo prosty:
- Wejdź na stronę [1] i pobierz z działu DOWNLOADS najnowszą dostępną wersję (obecnie: 4.2.6).
- phpMyAdmina nie będziemy instalować wraz z naszymi projektami, lecz do katalogu htdocs serwera Apache. Warto wprowadzić taki podział na swoim komputerze, aby oddzielić narzędzia od tworzonych przez nas stron. Rozpakuj zatem ściągnięte archiwum do katalogu (w zależności od systemu operacyjnego) : D:/Serwer/Apache2/htdocs , /usr/local/apache2/htdocs/ lub /etc ( dla Linuksa Ubuntu)
- Pojawi się tam katalog phpMyAdmin lub nieco dłuższy. Skróć go do zwykłego pma. W ten sposób aplikacja będzie dostępna z przeglądarki po wpisaniu adresu http://localhost/pma/ - dzięki temu szybciej się go wpisuje.
- Otwórz (lub utwórz w folderze głównym plik) config.inc.php. Jest to skrypt konfiguracyjny phpMyAdmina i możesz tu zmieniać wszystkie ustawienia.
- Odnajdź dyrektywę $cfg['PmaAbsoluteUri'] i wprowadź do niej pełen adres URL do aplikacji, np. http://localhost/pma.
- Pora na ustawienie połączenia z bazą. phpMyAdmin obsługuje zarówno automatyczną konfigurację, gdzie wszystkie wartości podane są w bazie, jak i ręczne logowanie z użyciem formularza WWW (rozwiązanie spotykane u firm hostingowych). My pracujemy u siebie w domu, dlatego wszystkie wartości wypełnimy w pliku konfiguracyjnym. Zmodyfikuj następujące dyrektywy:
- $cfg['Servers'][$i]['host'] - wpisz nazwę hosta, na jakim pracuje MySQL (przeważnie localhost).
- $cfg['Servers'][$i]['port'] - domyślnie MySQL pracuje na porcie 3306, ale jeśli masz inny, ustaw go tutaj.
- $cfg['Servers'][$i]['user'] - nazwa użytkownika MySQL (u nas: root), na którym będziemy pracować. Niepodanie tej wartości włączy konieczność ręcznego logowania się do phpMyAdmina.
- $cfg['Servers'][$i]['password'] - hasło podanego użytkownika.
- Zapisz skrypt i spróbuj uruchomić w przeglądarce http://localhost/pma. phpMyAdmin powinien automatycznie ustawić się do pracy w języku polskim (jeśli nie, otwórz jeszcze raz config.inc.php i zmień wartość dyrektywy $cfg['DefaultLang'] na pl-iso-8859-2). Jeśli otrzymasz komunikat błędu o niemożności nawiązania połączenia, musisz sprawdzić jego parametry w pliku config.inc.php.
Uruchomienie
edytujW przeglądarce otwórz :
http://localhost/pma
lub :
http://localhost/phpmyadmin/
jeśli nie skróciłeś katalogu.
Zaloguj się i program jest już gotowy do pracy.
Rzut okiem
edytujPo uruchomieniu ujrzysz ekran startowy phpMyAdmina. Podczas pracy okno przeglądarki podzielone jest na dwie części: po lewej znajduje się wąski i ciemny pasek. Domyślnie znajduje się w nim lista rozwijana, z której wybieramy interesującą nas bazę danych. Gdy ją wybierzemy, pod spodem wyświetli się również lista znajdujących się w niej tabel. Szersza i jaśniejsza część ekranu to część operacyjna - tu wykonujemy wszystkie operacje.
Ekran startowy zawiera różne informacje o stanie połączenia oraz daje dostęp do niektórych opcji. Po prawej stronie możemy zmienić motyw graficzny oraz język interfejsu, natomiast pośrodku ekranu znajdują się rzeczy bardziej powiązane z samym MySQL-em. Pod napisem Utwórz nową bazę danych widzimy dwa obiekty formularza. W pierwszy z nich wpisujemy nazwę, w drugi kodowanie i po kliknięciu na przycisk "Utwórz" stworzona zostanie nowa baza danych o takich parametrach. Poniżej mamy dostęp do różnych ekranów administracyjnych, np. listy procesów serwera czy edytora uprawnień.
Przejdźmy za pomocą części nawigacyjnej do naszej bazy produkty. Zarówno w części nawigacyjnej, jak i na ekranie roboczym pojawi nam się spis tabel, które już utworzyliśmy. W części roboczej dodatkowo widoczna jest belka nawigacyjna z następującymi elementami:
- Struktura - pokazuje listę tabel, czyli to, co właśnie oglądamy.
- SQL - ekran do tworzenia i wykonywania zapytań SQL.
- Szukaj - wyszukiwarka danych
- Zapytanie przez przykład - graficzny edytor zapytań dla nieznających języka SQL (wzorowany na edytorach dostępnych np. w Microsoft Access).
- Eksport - narzędzia eksportu bazy danych do pliku SQL lub innych.
- Import - narzędzia do importu bazy danych z pliku SQL. W starszych wersjach phpMyAdmina ekran ten był częścią ekranu SQL.
- Operacje - narzędzia administracyjne: zmiana nazwy bazy danych, kopiowanie, zmiana kodowania.
- Uprawnienia - pokazuje użytkowników uprawnionych do dostępu do wybranej bazy.
- Usuń - usuwa bazę danych.
Na właściwym serwerze WWW ilość zakładek może być ograniczona ze względu na brak uprawnień.
Pod listą tabel znajduje się niewielki formularz inicjujący edytor nowej tabeli. Niebawem z niego skorzystamy, lecz najpierw zapoznamy się jeszcze z widokiem pojedynczej tabeli. Możemy do niego przejść, wybierając nazwę z panelu nawigacyjnego lub klikając na drugą z ikonek w ekranie roboczym przy interesującej nas tabeli. Ujrzymy wtedy ekran podobny do tego przedstawionego na ilustracji 3.
Widok tabeli składa się ze szczegółowej listy wszystkich pól pokazującej informacje m.in. o ich typie czy o wartości domyślnej. Poniżej znajduje się prosty formularz umożliwiający dodanie nowych pól do tabeli, a jeszcze niżej informacje dodatkowe: spis indeksów, rozmiar danych w tabeli i statystyka rekordów. Zauważmy, że zmianie uległa belka nawigacyjna. Zniknęła opcja Zapytanie przez przykład, za to doszły dwie nowe:
- Przeglądaj - wyświetla zawartość tabeli. Jeżeli trzymasz w tabeli dużo rekordów, nie musisz się przejmować - wyniki są porcjowane.
- Wyczyść - czyści tabelę zapytaniem TRUNCATE (po uprzednim potwierdzeniu).
Dodatkowo niektóre zakładki zmieniają swoje działanie, np. opcja Eksport umożliwia teraz eksportowanie tylko aktualnej tabeli.
Tworzenie tabeli
edytujAby rozpocząć tworzenie nowej tabeli, przełączmy się na widok bazy danych. Pod listą tabel widoczny jest niewielki formularz zatytułowany "Utwórz nową tabelę". Wpisujemy w nim nazwę nowej tabeli oraz ilość pól, które zamierzamy do niego dodać. Jeśli się pomylisz, nie przejmuj się. Edytor będzie można łatwo powiększyć jeszcze w trakcie edycji, a ponadto można dodawać nowe pola do tabeli już po jej utworzeniu. Po kliknięciu na "Wykonaj" ukaże się rozbudowany edytor umożliwiający dokładne zdefiniowanie struktury. Oto omówienie poszczególnych kolumn:
- Nazwa - nazwa pola.
- Typ - z listy wybieramy typ danych, jakie mają być w nim przechowywane.
- Długość/wartości - dla pól VARCHAR czy CHAR podajemy tu maksymalną dozwoloną długość ciągu tekstowego. Dla liczb nie trzeba w sumie nic wpisywać, phpMyAdmin zaproponuje wtedy domyślne wartości, które usatysfakcjonują każdego. Dla pól ENUM oraz SET wpisujemy tu listę dozwolonych wartości ujętych w apostrofy i odseparowanych przecinkami.
- Metoda porównywania napisów - tylko dla pól VARCHAR, TEXT itp. - wybieramy tutaj, według jakiego kodowania mają być porównywane znajdujące się tu dane. Przykładowo, jeżeli zamierzasz stworzyć witrynę wykorzystującą kodowanie Unicode, musisz odnaleźć tu zbiór np. utf8_polish_ci.
- Atrybuty - dodatkowe atrybuty, np. dla liczb można wybrać atrybut UNSIGNED, co spowoduje, że będzie można przechowywać tu tylko liczby dodatnie, ale za to w dwukrotnie większym dozwolonym zakresie (przestrzeń zwolniona po wywaleniu części ujemnej).
- Null - czy pole może przyjmować wartości NULL.
- Domyślne - domyślna wartość tego pola w nowych rekordach.
- Dodatkowo - dla pola ID możemy tu wybrać atrybut AUTO_INCREMENT.
Kolejne cztery pola wyboru pozwalają zdefiniować rodzaj indeksu. Od lewej strony mamy:
- PRIMARY KEY - ustawić dla pola ID.
- INDEX - normalny indeks.
- UNIQUE - pole z unikalnymi wartościami (nie mogą się powtarzać w dwóch rekordach)
- --- - brak indeksu.
Pole pod ikonką "T" umożliwia stworzenie indeksu FULLTEXT ułatwiającego przeszukiwanie zawartości tekstów. Można go utworzyć tylko w tabelach MyISAM, a ponadto aby mieć z niego jakiś pożytek, trzeba umieć pisać odpowiednie zapytania wykorzystujące tzw. "fulltext searching".
Uwaga: zaznaczenie dla kilku pól pozycji INDEX nie spowoduje utworzenia kilku indeksów, tylko jeden indeks łączony! Dlatego jeśli zamierzasz stworzyć więcej indeksów, musisz to zrobić z pomocą dodatkowego edytora już po utworzeniu tabeli. Włączamy go w widoku tabeli w pozycji "Indeksy". Widoczny jest tam formularz zatytułowany "Utwórz indeks dla X kolumn". Po wybraniu liczby kolumn w indeksie, przejdziemy do szczegółowego widoku, gdzie możemy wybrać:
- Nazwę indeksu
- Jego rodzaj
- Określić pola mające wejść w jego skład.
Dalszą część formularza można zignorować. Pamiętajmy też o określeniu globalnego kodowania dla całej tabeli oraz wybraniu typu (domyślny w MySQL-u to mający większe możliwości InnoDB, ale na co dzień korzysta się głównie z wydajniejszego MyISAM).
Modyfikacja tabeli
edytujIstnieje możliwość modyfikacji struktury tabeli już po jej utworzeniu. Typowe operacje to:
- Dodawanie nowych pól: pod listą pól w widoku struktury tabeli znajduje się niewielki formularz, w którym określamy, ile kolumn chcemy dodać oraz w którym miejscu. Po kliknięciu na "Wykonaj" zostaniemy przeniesieni do identycznego edytora, jak w przypadku tworzenia tabeli.
- Modyfikacja już istniejących pól. Klikamy na ikonę ołówka przy interesującym nas polu lub zaznaczamy grupę pól i klikamy na ołówek pod spisem. Modyfikacja odbywa się w identycznym edytorze, jak w przypadku tworzenia tabeli.
- Usuwanie pól - za pomocą ikonki krzyżyka. Wcześniej musimy potwierdzić naszą chęć.
Zarządzanie rekordami
edytujW zakładce Przeglądaj możemy obejrzeć zawartość aktualnej tabeli. Na ekranie ukaże się lista wszystkich rekordów wraz z wartościami wszystkich pól. Jest ona porcjowana: naraz pokazywane jest tylko 30, a do następnych stron przełączamy się za pomocą strzałek. Ikonki przy każdym rekordzie umożliwiają edycję danych lub jego usunięcie. Analogiczna przeglądarka ukaże nam się, gdy za pomocą zakładki SQL wykonamy zapytanie SELECT lub inne generujące jakąś listę wyników.
Zarówno edycja, jak i dodawanie nowego rekordu odbywa się w specjalnym edytorze pokazanym na screenie. Formularz składa się z pięciu kolumn:
- Pole - nazwa pola
- Typ - informacja o typie możliwych do przechowania danych
- Funkcja - z tej listy możemy wybrać funkcję, przez jaką zostanie przepuszczona wartość wpisana w polu "Wartość". Uwaga: niektóre funkcje nie wymagają podawania żadnego dodatkowego parametru w tamtym polu (np. UNIX_TIMESTAMP() będący odpowiednikiem time() w PHP).
- Null - jeśli pole zezwala, możemy tutaj zaznaczyć, że wstawiamy wartość NULL.
- Wartość - dokładna wartość, jaką chcemy wstawić w wybrane pole.
Formularz dodawania umożliwia tworzenie do dwóch rekordów naraz. Uważaj, gdyż w przypadku tabel o dużej liczbie pól, phpMyAdmin wstawia co kilkanaście pasek z przyciskiem Wykonaj, jednak nie korzystaj z niego, lecz z przycisku znajdującego się pod całym formularzem. Inaczej zaakceptujesz tylko część wprowadzonych wartości, co może doprowadzić do nieprzewidywalnych zachowań.
Jeśli chcemy dodawać rekordy seryjnie, możemy z listy pod formularzem przy napisie "a następnie" wybrać "dodaj nowy rekord" zamiast "wróć". Spowoduje to, że po dodaniu rekordów z powrotem zostaniemy przeniesieni do formularza dodawania.
Import i eksport zawartości
edytujphpMyAdmin jest szczególnie lubiany przez programistów, gdyż najczęściej to za jego pomocą bazy danych przenoszone są z lokalnego komputera na właściwy serwer WWW. Służy do tego zakładka Eksport. Aby prawidłowo wyeksportować zawartość bazy danych, musimy wpierw spędzić chwilkę na konfiguracji:
- W ramce "Eksport" wybieramy interesujące nas tabele. Jeżeli eksportujemy całą bazę, możemy kliknąć na "Zaznacz wszystkie".
- Wybieramy format. Domyślnie phpMyAdmin zaproponuje eksport do pliku SQL, który jest niczym innym, jak listą zapytań CREATE TABLE oraz INSERT, które po uruchomieniu odtworzą dokładną kopię naszej bazy.
- W ramce "Opcje eksportu" zaznaczamy, co chcemy eksportować: samą strukturę, same dane, czy obie rzeczy naraz.
- Dodatkowo, phpMyAdmin umożliwia zachowanie kompatybilności ze starszymi wersjami bazy danych, a nawet innych serwerów DB! Jeśli stworzyłeś na MySQL 5.0 bazę danych, ale na serwerze jest MySQL 4.0, skorzystaj z listy "Kompatybilność eksportu SQL", a aplikacja wygeneruje zapytania dla wybranej przez Ciebie wersji serwera. Podobnie możesz postąpić, jeśli chcesz przenieść swoją bazę np. na PostgreSQL (dodajmy, że ten serwer DB także posiada swój "webowy" menedżer zwany oczywiście phpPgAdmin).
- Jeśli nie mamy ochoty, aby naszym monitorem zawładnęły zapytania SQL, zaznaczamy jeszcze opcję "Zapisz jako plik", co spowoduje, że generowany wynik będziemy mogli od razu ściągnąć na nasz komputer, zamiast wyświetlać jego zawartość w przeglądarce.
- Klikamy przycisk "Wykonaj".
Importowanie bazy danych odbywa się za pomocą zakładki Import. Wskazujemy w niej plik SQL na naszym dysku ze strukturą bazy, wybieramy kodowanie i klikamy "Wykonaj". Pamiętaj, że PHP ma limit wykonywania ograniczony do 30 sekund. Jeśli twój plik SQL ma naprawdę potężne rozmiary, będziesz mógł kontynuować później jego wgrywanie od wybranego zapytania (ramka "Import częściowy"). W starszych wersjach phpMyAdmina import odbywał się za pomocą zakładki SQL, ale według niemal identycznej procedury.
Zakończenie
edytujOd tej pory wszystkie bazy danych i tabele będziemy tworzyć już z użyciem phpMyAdmina. Dzięki temu narzędziu praca z bazami jest naprawdę przyjemna, i co ważniejsze, wygodna. phpMyAdmin stał się tak popularny, że na polu menedżerów dla bazy MySQL w zasadzie nie ma żadnej konkurencji, a twórcy menedżerów dla innych serwerów DB bardzo mocno się na nim wzorują (podobna nawigacja, układ menusów, formularze itd.):
- phpPgAdmin - menedżer dla baz PostgreSQL.
- SQLiteManager - menedżer dla baz SQLite.
W następnym rozdziale sprawdzimy nasze umiejętności w praktyce, tworząc system newsów oparty o MySQL.