Połącz się z nami

Internet Maker

Dynamiczne strony WWW

Czyli sztuka budowania serwisów z wykorzystaniem PHP i MySQL. Wytłumaczymy, jak przygotować wygodne środowisko programistyczne i stworzyć prostą aplikację, korzystając z PHP oraz MySQL.

Na samym początku internet był po prostu niezmierzoną biblioteką tekstów, a zadaniem stron internetowych było proste umożliwienie wyświetlenia dokumentów. Dokumenty pozostawały zlinkowane ze sobą, aby informacje mogły być łatwo znalezione. Jednak zawartość stron nie ulegała zmianie. Internet jako taki był statyczny i każdy internauta odwiedzając te same serwisy widział dokładnie tę samą zawartość.

Dzisiaj internet wyewoluował – nie jest już dłużej zwykłym archiwum. Stał się dynamicznym, interaktywnym miejscem działania dla wszelakiego rodzaju serwisów – sklepów internetowych, wyszukiwarek, systemów forum lub serwisów finansowych oraz wielu innych.

Dynamicznie generowane strony wchodzą w interakcję z internautą. Formularze HTML pozwalają zbierać informacje, które następnie służą do wygenerowania kolejnej strony lub są składowane. Jeżeli dane mają być zapamiętywane, niemal niezbędny okazuje się dostęp do bazy danych.

Dla przykładu, większość sklepów zbudowana jest w oparciu o bazy danych z informacjami o produktach. Internauci wybierają rodzaj produktu, jakim są zainteresowani, a następnie serwer generuje wyłącznie informacje o wybranych produktach.

Warto zaznaczyć, że w najprostszych zastosowaniach zewnętrzną bazę danych może zastąpić system plików (dane mogą być składowane w plikach), nie jest to jednak wygodne, praktyczne ani szybkie. Taka metoda jest też dużo bardziej podatna na ewentualne błędy w czasie zapisywania i odczytu danych. Jest też bardziej czasochłonna.

Aktualnie najpopularniejszą technologią generowania dynamicznych stron WWW jest połączenie języka skryptowego PHP z systemem bazodanowym MySQL. PHP (http://www.php.net/usage.php) jest obecnie wykorzystywane w ponad 20 milionach domen internetowych. Natomiast MySQL to mała i szybka baza, napisana przede wszystkim dla potrzeb WWW. Najważniejsze cechy PHP/MySQL:

  • Oba są programami Open Source. Możesz ściągnąć i używać ich za darmo. Możesz również modyfikować ich kody źródłowe, dodając i zmieniając funkcjonalność, aby przygotować indywidualne środowisko skrojone na swoją miarę.
  • Są wieloplatformowe. Zarówno PHP, jak i MySQL możesz uruchomić na niemal każdym współczesnym systemie operacyjnym – Windows, Linux, Mac i na większości Unixów. Nie musisz więc dbać o przygotowanie specjalnego środowiska.
  • Są łatwe w użyciu. PHP oraz MySQL zostały zaprojektowane tak, aby były wygodne i łatwe. Szczególnie PHP zawiera mnóstwo specjalnych funkcji, które znacznie ułatwiają budowanie serwisów internetowych. Wyróżnia go to w stosunku do wielu innych języków programowania, w szczególności do C/C++, które nie zostały zoptymalizowane pod warunki internetowe. PHP jest też bardzo łatwe w nauce.

Bardzo ważne jest również to, że PHP oraz MySQL sprawnie działają razem. PHP zawiera wiele wbudowanych narzędzi, które ułatwiają pracę z MySQL-em.

Plac pod budowę twojej strony

Twoim pierwszym zadaniem jest zorganizowanie placu pod budowę nowego serwisu – czyli serwera. Możesz zdecydować się na własny lub go wynająć. Jeżeli wybierzesz własny serwer, będziesz musiał samodzielnie zadbać o zainstalowanie i administrację oprogramowania do obsługi stron internetowych (serwera HTTP). Możesz również rozważyć opcję wynajmu, czyli inaczej mówiąc – skorzystać z usług hostingowych. Wówczas firma hostingowa zajmie się wszystkim i zadba o właściwą konfigurację sprzętu. Tobie pozostanie już tylko wgrać stronę na serwer.

Niekiedy można również otrzymać hosting strony za darmo – niektóre serwisy oferują bezpłatne konta WWW dla webmasterów, również studenci mają często darmowy lub preferencyjny cenowo dostęp do serwerów uczelnianych. Niemal na pewno jednak takie darmowe systemy będą posiadały ograniczoną funkcjonalność i całkiem prawdopodobnym jest, że uruchomienie skryptów PHP może okazać się tam niemożliwe.

Zarówno stawianie własnego serwera, jak i korzystanie z hostingu mają swoje wady i zalety. Wynajęcie hostingu jest dużo prostsze. Nie musisz znać sztuki administrowania oprogramowaniem serwera internetowego. Wadą jest jednak ograniczona kontrola nad środowiskiem pracy – firma hostingowa przygotowała i skonfigurowała wszystko tak, jak z jej punktu widzenia jest najlepiej. Jeżeli posiadasz swój serwer, masz kontrolę nad wszystkim, ale z drugiej strony – musisz wiedzieć co robisz.

Wybór hostingu

Firma hostingowa zadba o przygotowanie wszystkiego, co potrzebujesz. Pozostanie ci już tylko przygotować i wgrać swój serwis. To najprostszy sposób na zaistnienie w sieci. Musisz jednak ostrożnie wybrać ofertę hostingową dla siebie, gdyż propozycje poszczególnych usługodawców znacząco się od siebie różnią. Najczęściej za hosting pobierana jest roczna opłata (niekiedy miesięczna, półroczna lub dwuletnia), uzależniona od wybranych parametrów usługi. Dla przykładu konto, w którym otrzymasz do swojej dyspozycji powierzchnię 100 MB, będzie w większości przypadków kosztować mniej niż konto o powierzchni 1 GB.

Jeżeli wpiszesz w Googlach hasło \”web hosting company\”, na całym świecie otrzymasz 126 milionów milionów odpowiedzi. Dla hasła \”hosting\” w samym tylko polskim internecie będzie to również sporo, bo około 8 milionów wyników. Trudno więc w ten sposób znaleźć dobrego dostawcę. Lepiej będzie zapytać o rekomendację znajomych. Gdy już posiadasz listę polecanych firm, możesz zacząć jej analizowanie w celu wybrania oferty najlepiej dopasowanej do twoich potrzeb.

W trakcie wyboru hostingu koniecznie zwróć uwagę na poniższe elementy:

  • Dostęp do PHP. Upewnij się, że serwer obsługuje PHP. Sprawdź również dostępną wersję. Obecnie najlepiej do tworzenia nowych serwisów wykorzystywać PHP5. Wielu dostawców hostingu wciąż jeszcze udostępnia jedynie PHP4. Idealną sytuacją jest, gdy dostępne są jednocześnie PHP4 oraz PHP5.
  • Dostęp do MySQL. Sprawdź czy oferta przewiduje dostęp do bazy danych MySQL. Niektóre firmy nie udostępniają tej bazy danych lub też pozwalają z niej korzystać jedynie w ramach droższych opcji hostingu. Większość jednak dostarcza MySQL-a w standardzie. Sprawdź również wersję. Nie powinna być niższa od MySQL 4.10.
  • Przestrzeń dyskowa. Zastanów się, jak wiele miejsca na swoją stronę będziesz potrzebować. Uwzględnij pliki stron, zdjęcia, materiały do pobrania oraz pliki multimedialne. Część z nich jest niekiedy dość sporych rozmiarów. Zastanów się też, jak pojemne konta pocztowe zamierzasz posiadać. Obecnie większość czołowych firm hostingowych udostępnia powierzchnie dyskowe rzędu kilku gigabajtów, a więc ten parametr nie jest już tak kluczowy jak dawniej.
  • Transfer (limit ruchu). Oznacza ilość ruchu z i do internetu, jaki może generować twoje konto. Jeżeli oczekujesz większej odwiedzalności twojego serwisu, powinieneś rozglądać się za większym transferem.
  • Poczta elektroniczna. Razem z hostingiem otrzymasz również dostęp do kont e-mail. Zdecyduj, ile i jak pojemnych skrzynek będziesz potrzebować.
  • Wsparcie techniczne. Najlepiej, jeżeli będziesz mógł z kimś porozmawiać na żywo. Niektórzy dostawcy usług hostingowych zapewniają tylko support przez e-mail. Tylko część z nich oferuje pełną obsługę klientów przez telefon – nieliczni nawet całodobowo. Kontakt przez pocztę elektroniczną może być wprawdzie nie mniej praktyczny niż telefon, pod warunkiem jednak że czas odpowiedzi jest krótki.

Wybierając dostawcę usług hostingowych, możesz skorzystać z raportu na temat rynku hostingu, który dostępny jest w naszym archiwum on line. Skrócony ranking publikowany jest także w każdym wydaniu magazynu Internet Maker.

Wybierz swoją domenę

Domena to podstawa twojej obecności w sieci. To nazwa, jaką użytkownicy będą wpisywać, by dotrzeć do twojej strony. W większości przypadków powinieneś bardzo mocno przemyśleć nazwę swojej domeny. Przy zakupie usług hostingowych otrzymasz pewien adres internetowy, najprawdopodobniej będzie to jednak tylko subdomena w domenie wybranego operatora. Zasadniczo twoja strona będzie wyglądać bardziej profesjonalnie, jeżeli zdecydujesz się zarejestrować i używać własnej domeny.

Sposób funkcjonowania serwera

Często używamy pojęcia \”odwiedzający\” lub \”gość serwisu\” w stosunku do każdej osoby zainteresowanej zobaczeniem twojej strony internetowej. Jednak bywają one zwodnicze – internauci stają się bowiem odwiedzającymi dopiero w chwili, gdy uda im się rzeczywiście obejrzeć stronę. A do tego jest wbrew pozorom dość długa droga – wiele jest ogniw w tym łańcuszku, a awaria któregokolwiek sprawi, że internauta nie dostanie się do serwisu.

Jak to wszystko działa? Początkowo internauta wysyła zapytanie o daną stronę, podając określony adres URL (domenę, katalog i nazwę pliku). Oprogramowanie na serwerze odbiera to zapytanie, przetwarza je i zwraca zawartość strony. Ta jest następnie wyświetlana w przeglądarce użytkownika. Oprogramowanie, które zajmuje się przetwarzaniem stron internetowych i wysyłaniem ich do użytkowników, nazywa się serwerem HTTP lub serwerem WWW.

Najpopularniejszym obecnie serwerem HTTP jest Apache. Jest on dostępny na licencji Open Source, możesz go bezpłatnie ściągnąć ze strony http://httpd.apache.org/. Wskazana strona jest bardzo rozbudowana, zawiera bogatą dokumentację pełnej funkcjonalności serwera Apache, wraz z instrukcją instalacji.

Wiemy już, że do działania serwisu potrzebny jest serwer – zarówno w rozumieniu fizycznym (komputer na którym będzie zainstalowane oprogramowanie serwera), jak i wirtualnym (zainstalowany Apache, PHP, MySQL i inne). To jednak nie wszystko czego potrzeba, aby zlokalizowane na serwerze strony internetowe były widoczne w sieci.

Nie mniej ważne jest odpowiednie połączenie z internetem. Naturalnie dostęp wdzwaniany (dial-up) nie spełni swojej roli ze względu na swój ulotny charakter. Również łącza szerokopasmowe do użytku domowego czy biurowego, takie jak Neostrada oraz Internet DSL, mogą okazać się zbyt powolne, by obsłużyć zapytania internautów z zadowalającą przepustowością. Dobry serwer wymaga profesjonalnych łączy o szybkości nie mniejszej niż kilka Mb/s. Dla serwisów o bardzo dużej odwiedzalności potrzebne mogą być jeszcze lepsze łącza. Profesjonalne firmy hostingowe posiadają łącza o przepustowościach rzędu kilkuset Mb/s i więcej – jest to duży atut w porównaniu z własnym serwerem stawianym w domu lub biurze.

Innym niezbędnym elementem w serwerowej układance jest system DNS (Domain Name Service). Zadaniem tego mechanizmu jest zamiana nazw domen na adres IP serwera, na którym znajduje się strona (np. z onet.pl na 213.180.130.200). Jest to konieczne, ponieważ zasadniczo internet działa właśnie w oparciu o adresy IP. Domeny są jedynie ułatwieniem dla nas – ludzi. Maszyny, zanim zaczną się ze sobą komunikować, muszą otrzymać odpowiedniki domeny w postaci adresu IP.

Aby więc twoja strona była dostępna pod wykupioną nazwą domenową, musisz posiadać dostęp do serwerów DNS (co najmniej dwóch), na których zostały te domeny odpowiednio skonfigurowane. W przypadku usług hostingowych serwery DNS zapewni operator. Gdy organizujesz serwer samodzielnie – będziesz musiał we własnym zakresie zadbać o ich uruchomienie i konfigurację. W przeciwnym razie internauci będą mogli dostać się do twojej strony jedynie za pomocą adresu IP. Ale możesz być pewien, że nikt go nie zapamięta.

Przewagą gotowych usług jest również profesjonalna obsługa. Codziennie w różnego rodzaju programach i narzędziach zainstalowanych na każdym serwerze wykrywa się wiele różnorakich luk bezpieczeństwa. Dobry usługodawca internetowy dba o stałe aktualizowanie oprogramowania serwera do najnowszych i najbardziej bezpiecznych wersji. W razie wystąpienia awarii jest też w stanie sprawnie ją usunąć.

W warunkach domowych lub biurowych odbywa się to zwykle z większym poślizgiem czasowym, a każda zbędna chwila przestoju serwera oznacza być może kosztowną utratę klientów. Prawdopodobnie więc wybór hostingu jest dużo lepszym wyjściem niż uruchamianie własnego serwera, tym bardziej że abonament za rozsądne usługi hostingowe rozpoczyna się już od około 100 zł wzwyż.

Środowisko pracy

Przystępując do budowy serwisu zorganizuj sobie strefę roboczą – lokalizację na serwerze, do której sam będziesz mieć swobodny dostęp, ale która pozostanie niedostępna publicznie. Wersja robocza serwisu musi być przecież widoczna dla ciebie, ale z drugiej strony – nie jest wskazane, by internauci oglądali niedokończony serwis, z licznymi błędami w kodzie czy niedociągnięciami w szacie graficznej. Najlepiej niech będzie to podkatalog o znanej tylko tobie nazwie. W razie potrzeby możesz również pomyśleć o zabezpieczeniu takiego katalogu hasłem – każdy dostawca usług hostingowych udostępnia taką funkcjonalność.

Również w przypadku późniejszych modyfikacji powinieneś rozważyć stworzenie kopii serwisu i dokonywanie wszelkich modyfikacji właśnie na tej kopii. Utrzymywanie dwóch wersji serwisu – właściwej i roboczej – jest dobrym pomysłem, gdyż pozwoli ci spokojnie pracować nad usprawnieniami oraz nową funkcjonalnością, bez martwienia się, że niedociągnięcia czy błędy uniemożliwią odwiedzającym dostęp do stron. Gdy żądane popawki zostaną wprowadzone, skopiuj wszystkie pliki do właściwej wersji.

Część webmasterów preferuje przeprowadzanie wszelkich prac webmasterskich lokalnie, na swoim własnym komputerze. W tym celu instalują na nim serwer Apache, PHP i MySQL. Dostępne są gotowe paczki ze skonfigurowanym i działającym środowiskiem pracy. Dla systemu Windows polecamy pakiety Krasnal Serv (http://coyote.olesno.pl/~pablo/krasnal/) oraz XAMPP (http://www.apachefriends.org/en/xampp.html). Po zainstalowaniu serwera lokalnie, dostęp do stron odbywa się najczęściej poprzez adres: {stala}http://localhost/{/stala}.

Zaletą takiego rozwiązania jest szybkość działania – ponieważ wszystko działa na twoim komputerze, nie ma potrzeby oczekiwania na przesłanie stron przez internet z właściwego serwera. Połączenie internetowe w ogóle nie będzie konieczne. Całość serwisu można opracować lokalnie, a dopiero po zakończeniu prac przesłać całość na serwer. Trzeba jednak pamiętać, aby wysyłając gotową wersję, pozmieniać ustawienia niektórych specyficznych parametrów. Dotyczy to m.in. adresu, loginu i hasła do bazy danych, które prawie na pewno będą się różnić lokalnie i na serwerze.

Aby prace nad serwisem przebiegały sprawniej, możesz również pomyśleć nad profesjonalnym edytorem PHP. Co prawda zarówno strony HTML, jak i skrypty napisane w PHP można wykonać w zwykłym Notatniku, jednak bardziej rozbudowany program może wiele działań usprawnić. Przede wszystkim bardzo wygodne jest kolorowanie składni – pozwala łatwo odróżnić gramatykę języka od funkcji, zmiennych czy też elementów kodu. Lepsze edytory posiadają również wbudowane generatory kodu i inne udogodnienia. Do wygodnej pracy polecamy następujące programy: uniwersalny Pajączek oraz specjalistyczne: dev-php, PHP Designer 2005, PHP Expert Editor, a także oficjalny – ZendStudio (http://www.zend.com/).

Przydadzą się również wizualne narzędzia do wygodnej pracy z bazą danych. Spotkasz programy dwojakiego rodzaju. Pierwszy to przede wszystkim popularny system PhpMyAdmin – zestaw skryptów napisanych w PHP, które pozwalają sterować zawartością bazy MySQL z poziomu przeglądarki internetowej. Niemal każdy dostawca usług hostingowych ten system udostępnia. Inny sposób zarządzania bazą to programy instalowane na własnym komputerze. Do tej ostatniej grupy można zaliczyć m.in. polski program Pomocnik MySQL czy SQLyog, a także MySQL Query Browser, opracowany przez autorów bazy MySQL.

Jak działa PHP i MySQL?

PHP to skryptowy język programowania, podobny do wielu innych języków skryptowych. PHP potrafi produkować tekst wyświetlany następnie w przeglądarce w postaci strony HTML, wykonywać pętle, organizować kod w funkcje i klasy.

Jako język skryptowy, kod źródłowy nie jest kompilowany. Zamiast tego stosowany jest interpreter, który wykonuje instukcje linijka po linijce \”w locie\”. W przypadku kompilacji znanej z języków typu C/C++ program jest najpierw przekształcany do kodu maszynowego zrozumiałego dla komputera i dopiero później uruchamiany.

Zastosowanie interpretera w PHP pozwala dużo łatwiej modyfikować zawartość programu bez potrzeby każdorazowej kompilacji, ale jest wolniejsze. Dostępne są wprawdzie rozszerzenia (np. eAccelerator), dzięki którym możliwe staje się przekształcenie kodu do postaci binarnej – szybszej w przetwarzaniu, wciąż jednak nie jest to pełna kompilacja.

PHP posiada ogromną ilość funkcji napisanych specjalnie z myślą o zastosowaniach internetowych. Przede wszystkim pozwala łatwo odczytywać dane wejściowe, przesyłane do skryptu za pomocą parametrów w adresie URL (metoda {stala}GET{/stala}) lub za pomocą standardowego formularza HTML (metoda {stala}POST{/stala}).

Dostępne są też wbudowane funkcje do sprawnej komunikacji z popularnymi bazami danych, w szczególności z MySQL. Sercem bazy danych MySQL jest serwer, który czeka na nadejście instrukcji sterujących bazą danych (zapisywanych w języku SQL). Gdy takie instrukcje nadejdą, są one przetwarzane, po czym zostaje do interpretera PHP odesłana odpowiedź z wynikiem wykonania polecenia i w razie potrzeby – zwracany jest również komunikat o błędzie.

Poszerz swoją wiedzę

Do nauki PHP i MySQL wykorzystuj przede wszystkim oficjalne manuale, gdyż stanowią one najlepsze źródło wiedzy na ten temat:

W internecie znajdziesz również liczne kursy i przewodniki dla początkujących – zwykle autorzy tłumaczą w nich także to, jak należy korzystać z bazy MySQL za pomocą PHP. Sprawdź poniższe serwisy:

PHP został zaprojektowany tak, aby był prosty w użyciu. Pomoc internetowa do PHP (http://www.php.net) zawiera tony przewodników po sposobie korzystania z PHP. Każda funkcja jest tu dokładnie opisana, zawarto w niej ponadto liczne przykłady – zarówno oficjalne, jak i często oryginalne pomysły nadesłane przez internautów. Oprócz tego istnieje mnóstwo książek i kursów poświęconych PHP. Tak naprawdę to bardzo prosty język – nawet laik zdoła go opanować.

Kod PHP przeplata się z kodem HTML. Serwer HTTP na podstawie rozszerzenia w nazwie pliku rozpoznaje skrypt PHP i oczekuje, że w jego wnętrzu mogą się znajdować instrukcję tego języka. Gdy kod PHP zostanie odnaleziony przez serwer, jest on w całości wysyłany do interpretera PHP i tam wykonywany. Następnie wynik działania takiego programu jest wstawiany w miejsce znalezienia danego fragmentu kodu PHP. Po zakończeniu przetwarzania, serwer HTTP wysyła tak wygenerowaną stronę do przeglądarki użytkownika.

Jeżeli webmaster korzysta z bazy danych MySQL, otrzymuje do dyspozycji szeroką paletę funkcji języka PHP umożliwiających wygodną komunikację z tą bazą danych. Instrukcje dla samej bazy musisz przygotować w języku SQL – uniwersalnym sposobie zapisu poleceń dla baz danych, zrozumiałym dla większości współczesnych systemów bazodanowych.

PHP napotykając odpowiednie funkcje sterujące bazą danych może nawiązać połączenie z bazą (funkcja {stala}mysqli_connect(){/stala} lub {stala}mysqli_pconnect(){/stala}), a następnie wysłać zapytanie SQL ({stala}mysqli_query(){/stala}). Po wykonaniu takiego zapytania, za pomocą licznych funkcji można przetwarzać odpowiedź (np. {stala}mysqli_fetch_array(){/stala}).

Szczegółowy opis funkcji sterujących jest dostępny w internetowej pomocy do PHP, natomiast przewodnik po składni SQL znajdziesz w manualu do MySQL-a, w sekcji SQL: http://dev.mysql.com/doc/refman/5.0/en/sql-syntax.html) lub w wyszukiwarce Google.

Poznaj SQL

Użycie SQL, zgodnie z jego nazwą, polega na zadawaniu zapytań do bazy danych. Zapytania można zaliczyć do jednego z dwóch rodzajów:

  • SQL DML (ang. Data Manipulation Language, czyli język manipulacji danymi),
  • SQL DDL (ang. Data Definition Language, czyli język definicji danych).

Instrukcje SQL w obrębie zapytań tradycyjnie zapisywane są wielkimi literami, jednak nie jest to wymóg.

1. DML

DML służy do operacji na danych – do ich umieszczania w bazie, kasowania, przeglądania, zmiany. Najważniejsze polecenia to:

  • {stala}SELECT{/stala} – pobranie z bazy danych,
  • {stala}INSERT{/stala} – umieszczenie danych w bazie,
  • {stala}UPDATE{/stala} – zmiana danych,
  • {stala}DELETE{/stala} – usunięcie danych z bazy.

Dane tekstowe podawane muszą być zawsze w formie ograniczonej znakami pojedynczego cudzysłowu (\’).

2. DDL

Natomiast dzięki DDL można operować na strukturach, w których te dane są przechowywane – czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy to:

  • {stala}CREATE{/stala} (np. {stala}CREATE TABLE{/stala}, {stala}CREATE DATABASE{/stala}) – utworzenie struktury bazy czy tabeli,
  • {stala}DROP{/stala} (np. {stala}DROP TABLE{/stala}, {stala}DROP DATABASE{/stala}) – całkowite usunięcie struktury,
  • {stala}ALTER{/stala} (np. {stala}ALTER TABLE ADD COLUMN{/stala}) – zmiana struktury (dodanie kolumny do tabeli, zmiana typu danych w kolumnie tabeli).

Tworzenie bazy danych

W ostatniej części artykułu wytłumaczymy, jak można stworzyć bardzo prostą aplikację, która będzie generować stronę WWW, korzystając z bazy danych. Zadaniem tego przykładu jest pokazanie PHP i MySQL-a w akcji. Nasz program wygeneruje listę klientów.

Wszystkie niezbędne informacje będą składowane w bazie danych, nazwanej CustomerDirectory. Wewnątrz niej zapisano tabelę Customer, której atrybutami (kolumnami) są imię, nazwisko oraz adres e-mail. W naszym prostym przykładzie dane do tabeli zostaną wprowadzone ręcznie, choć oczywiście w przypadku prawdziwej aplikacji należałoby zadbać o odpowiedni panel administracyjny.

Na początku musimy stworzyć bazę danych i wprowadzić do niej informacje o klientach. Zapytania do bazy danych będziesz mógł wykonywać za pomocą programów zainstalowanych na komputerze (prezentowanych wcześniej) lub za pomocą panelu PhpMyAdmin.

W obu przypadkach skorzystamy z funkcji ręcznego wpisywania polecenia SQL, choć oczywiście programy te potrafią ułatwić ten proces za pomocą graficznych narzędzi.W przypadku PhpMyAdmin odnajdź ikonkę oznaczoną literkami SQL – pozwoli ona wykonać twoje polecenia kierowane do bazy danych.

My w dalszej części artykułu zdecydowaliśmy się na oficjalny edytor SQL dla bazy MySQL- program MySQL Query Browser (do pobrania z http://dev.mysql.com/downloads/query-browser/1.1.html). Dostępne są wersje dla Windowsa, Maca i Linuksa. Instalacja przebiega szybko i sprawnie, a po jej zakończeniu możemy już rozpocząć komunikację z bazą. Uruchamiając program, zostaniesz najpierw zapytany o sposób połączenia z bazą (tu wpisujemy adres serwera, login i hasło).

Gdy już się zalogujesz – możesz wykonywać polecenia w języku SQL. Wprowadź więc następujące instrukcje w celu stworzenia bazy danych dla naszej przykładowej aplikacji.

CREATE DATABASE CustomerDirectory

Warto zaznaczyć, że powyższa instukcja zadziała tylko i wyłącznie wtedy, gdy dysponujesz prawami administracyjnymi do korzystania z bazy danych. W większości przypadków dotyczy to serwera instalowanego własnoręcznie (np. na własnym komputerze). W ramach usług hostingowych prawdopodobnie stworzenie nowej bazy danych w ten sposób nie powiedzie się – możesz ją założyć za pomocą dostarczonego panelu administracyjnego lub kontaktując się z usłogodawcą. Otrzymasz nazwę bazy, login i hasło, które będziesz wykorzystywać przy logowaniu do bazy. Kolejne instrukcje powinny już działać bez przeszkód.

CREATE TABLE Customer ( 
  Last_name   VARCHAR(30) NOT NULL, 
  First_name  VARCHAR(30), 
  Email       VARCHAR(50),
PRIMARY KEY (Last_name) )

Po wykonaniu tego polecenia powinniśmy otrzymać tabelę z kolumnami {stala}Last_name{/stala}, {stala}First_name{/stala} oraz {stala}Email{/stala}. Każda z nich jest typu tekstowego, pierwsze dwie pozwalają zmieścić maksymalnie 30 znaków, a ostatnia – 50 znaków. Ponadto {stala}Last_name{/stala} nie może być pusta, co oznacza, że przy dodawaniu wierszy do naszej tabeli MySQL zwróci błąd, jeżeli w komórce {stala}Last_name{/stala} nie będzie żadnych danych.

Jako klucz główny (ang. primary key) został ustawiony atrybut (kolumna) {stala}Last_name{/stala}. Klucz główny jest wykorzystywany między innymi do tworzenia indeksów (szybsze przeszukiwanie bazy), ale również do tworzenia powiązań (relacji) pomiędzy tabelami. By jednak uzyskać dostęp do relacyjnej funkcjonalności bazy MySQL, należy jako typ bazy danych podać InnoDB. Szczegółowo zostało to opisane w manualu do MySQL-a, a także w liczych książkach i poradnikach online.

Teraz dodamy dane do naszej bazy danych – pamiętaj, by wykonywać poniższe instrukcje pojedynczo, gdyż takie są wymagania bazy MySQL.

INSERT INTO Customer VALUES (\"Valade\", \"Janet\", janet@valade.com)
INSERT INTO Customer VALUES (\"Smith\", \"John\", john@hishouse.com)
INSERT INTO Customer VALUES (\"Lopez\", \"Sally\", slopez@herhouse.com)

Wypełnij bazę danych

…czyli jak to zrobić w programie MySQL Query Browser.

{tlo_1}

Krok 1: Stwórz bazę danych

Wpisz polecenie tworzące bazę danych, a następnie naciśnij zielony przycisk Execute, by je wykonać. Powinna zostać utworzona nowa baza o nazwie CustomerDirectory.

Jeżeli korzystasz z hostingu, prawdopodobnie operacja się nie powiedzie – skontaktuj się z twoim operatorem i poproś go uruchomienie dla ciebie nowej bazy danych. Gdy będziesz miał już własną bazę danych, wykonaj kolejną porcję instrukcji, tym razem tworząc tabelę.

{/tlo}
{tlo_0}

Krok 2: Wprowadź dane

Za pomocą instrukcji {stala}INSERT{/stala} dodawaj nowe dane do tabeli Customer – koniecznie pojedynczo. Tak długo jak długo będziesz wykonywał te instrukcje, do tabeli będą wprowadzane nowe wiersze. Każda taka instrukcja oznacza dodanie jednego nowego klienta.

{/tlo}
{tlo_1}

Krok 3: Sprawdź dane

Aby sprawdzić, czy dane zostały wprowadzone do tabeli poprawnie, wykonaj zapytanie {stala}SELECT * FROM Customer{/stala}, co spowoduje wyświetlenie wszystkich danych znajdujących się w tabeli. Wynik tego polecenia zostanie wyświetlony w głównym oknie programu.

{/tlo}

Tworzenie skryptu PHP

Aby przygotować działający skrypt PHP, stwórz zwykły plik tekstowy w dowolnym katalogu obsługiwanym przez serwer WWW. Plik możesz nazwać dowolnie, ale pamiętaj o nadaniu rozszerzenia rozpoznawanego przez serwer jako skrypt PHP. Najczęściej jest to po prostu rozszerzenie .php. Wielu dostawców hostingu pozwala wybrać, z której wersji języka PHP chcesz korzystać. Zastosowania rozszerzenia .php spowoduje najczęściej uruchomienie PHP4, natomiast rozszerzenia .php5 – interpretera najnowszej wersji PHP5. O szczegóły zapytaj firmę hostingową, z usług którejkorzystasz.

Pamiętaj też, że w większości przypadków plik index.php jest uruchamiany domyślnie dla katalogu. Oznacza to, że zamiast wpisywać {stala}http://twojadomena.pl/katalog/index.php{/stala} wystarczy, że wpiszesz {stala}http://twojadomena.pl/katalog/{/stala}. Jest to sytuacja analogiczna do pliku index.html w czystym HTML.

Gdy masz już stworzony plik tekstowy, możesz przystąpić do wypełniania go instrukcjami PHP. Poniższy kod PHP ma za zadanie odczytanie danych z bazy, a następnie proste wyświetlenie ich na stronie internetowej:


Lista klientów

\"; 
}
?>

W ramach funkcji {stala}mysqli_connect(){/stala} należy podać kolejno: adres serwera bazy danych, login do bazy, hasło oraz nazwę bazy, do której się logujemy. Część tych parametrów może być opcjonalna, co szczegółowo zostało opisane w manualu na stronach PHP.

Jeżeli korzystasz z PHP4 lub starszej, to pamiętaj, by we wszystkich funkcjach odpowiadających za komunikację z bazą zamienić przedrostek {stala}mysqli_{/stala} na {stala}mysql_{/stala}. W PHP5 dodano na końcu dodatkową literkę do przedrostka, co wiąże się z formalnym odseparowaniem modułu związanego z obsługą bazy danych MySQL od właściwego interpretera PHP. Nie oznacza to jednak żadnych poważniejszych zmian dla programisty, poza wspomnianą różnicą w prefiksach.

Przeanalizujmy tymczasem, jak zachowuje się nasz program. Wyświetli on całą zawartość tabeli Customer, uszeregowanej według nazwiska (takie bowiem jest zapytanie do bazy danych, które zapisaliśmy w zmiennej {stala}$query{/stala}). Na samym początku funkcja {stala}mysqli_connect(){/stala} wykonuje połączenie z bazą danych, a następnie {stala}mysqli_query{/stala} wysyła polecenie w języku SQL. Baza MySQL zwraca wynik z danymi, a ten jest tymczasowo zapisywany w tablicy {stala}$result{/stala}.

Teraz program musi odczytać dane z tej tymczasowej tablicy. Funkcja {stala}mysqli_fetch_array(){/stala} pobiera pojedynczy wiersz danych (czyli informację o kliencie) i zapisuje go w tablicy {stala}$row{/stala}. Teraz za pomocą polecenia echo wyświetlamy dane. Kropka służy do łączenia łańcuchów tekstu ze sobą. {stala}$row[0]{/stala} jest pierwszym elementem tabeli, czyli w naszym przypadku nazwiskiem.

Polecenie {stala}echo{/stala} następnie łączy nazwisko ze znakiem przecinka (łańcuchy tekstu wpisywane są na sztywno za pomocą znaków cudzysłowów lub apostrofów). W dalszej kolejności operacja złączania łańcuchów tekstu jest powtarzana aż do uzyskania całego wiersza tekstu. Na jego końcu jest wstawiany znacznik {html}
{/html}, który w HTML powoduje przejście do nowej linii.

Przykładowo wygenerowany wiersz może wyglądać tak: {stala}Valade, Janet: janet@valade.com{/stala}

Zauważ, że instukcja dotycząca wyświetlania wiersza danych (z tablicy {stala}$row{/stala}) jest wykonywana w pętli {stala}while{/stala}. Pętla ta będzie wykonywana tak długo, aż funkcja {stala}mysqli_fetch_array(){/stala} przestanie zwracać dane. W praktyce oznacza to, że pętla zostanie wykonana dla wszystkich wierszy zwróconych przez bazę danych.

Dbanie o przejrzystość kodu

W zaprezentowanym powyżej kodzie, blok instrukcji PHP został wpleciony we właściwy kod HTML, stosując we wnętrzu HTML-a tagi {html}{/html}. W przypadku tak prostych programów jak powyższy jest to wygodne, jednak w bardziej zaawansowanych aplikacjach takie wplatanie kodu PHP wewnątrz HTML będzie powodować bardzo duży bałagan. Dlatego należy tego unikać. Tagi PHP najlepiej wstawić na początku i końcu pliku (tak by cały plik stanowił zbiór instrukcji PHP), a kod HTML należy generować za pomocą instrukcji {stala}echo(){/stala}.

Oto przykład bardziej poprawnego zapisu tego samego programu:

Lista klientów\';
$cxn = mysqli_connect(\"localhost\", \"login\", \"haslo\", \"CustomerDirectory\");
$query = \"SELECT * FROM Customer ORDER BY Last_name\";
$result = mysqli_query ($cxn, $query);
while ($row = mysqli_fetch_array($result))
{ 
echo $row[0].\" \".$row[1].\":\".$row[2].\"
\"; } echo \'\'; ?>

W dalszym etapie modyfikacji naszego programu możesz pokusić się o skorzystanie z jednego z systemów obsługi szablonów (np. z popularnego Smarty – http://smarty.php.net/) i dokonać całkowitego wydzielenia kodu HTML do zewnętrznych plików szablonów. Znacznie ułatwia to późniejszą edycję kodu HTML, bez grzebania w kodzie PHP (np. gdy chcesz zmienić szatę graficzną, ale sam program powinien pozostać bez zmian). W przypadku tak prostej aplikacji jak nasza, stosowanie szablonów nie ma sensu, ale przy bardziej rozbudowanych programach warto o tym pomyśleć. Wymaga to poświęcenia paru chwil na zapoznanie się z mechanizmem Smarty lub jego odpowiednikiem, ale daje spore możliwości. Jest to jednak temat na odrębny artykuł.

Na zakończenie

Aplikacja, którą stworzyliśmy, jest bardzo prosta. Jej zadaniem było głównie pokazanie jak funkcjonuje dynamiczne generowanie stron z wykorzystaniem PHP oraz MySQL. W praktyce nasz program zawiera kilka nadmiernych uproszczeń, które nigdy nie powinny być stosowane w prawdziwych programach.

Po pierwsze, stworzona w bazie danych tabela posiada zdefiniowany atrybut {stala}Last_name{/stala} jako klucz główny. Jednak zgodnie z definicją klucza głównego musi on być unikatowy dla całej tabeli. A to oznacza, że gdy spróbujesz wprowadzić drugiego klienta o takim samym nazwisku, zostanie wygenerowany błąd.

Rozsądniejsze byłoby wprowadzenie klucza głównego składającego się z dwóch atrybutów – imienia i nazwiska (o ile nie przewidujemy, że te wartości razem będą się powtarzać). Alternatywnie można zdecydować się na wprowadzenie kolumny z numerem identyfikacyjnym ID, która byłaby kluczem głównym. Miałoby to tę dodatkową zaletę, że zmniejszyły się rozmiaru indeksu (wartość liczbowa zajmuje zwykle mniej pamięci od łańcucha tekstu). A to ważne, gdyż należy zawsze dążyć do tego, by klucze i indeksy miały jak najmniejszy rozmiar – to zapewni sprawniejsze przeszukiwanie bazy danych.

Innym problemem w naszym przykładzie jest to, że login i hasło do bazy danych są wpisane na stałe do pliku PHP za pomocą czystego tekstu. Tworzy to zagrożenie bezpieczeństwa – jeżeli ktoś zdoła odczytać zawartość skryptu PHP, to będzie znał login i hasło do bazy. Zamiast tego dane autoryzacyjne przechowuj w zewnętrznym skrypcie, umieszczonym poza przestrzenią dyskową dostępną z przeglądarki internetowej. Wszelkie kluczowe dane zawsze staraj się trzymać w plikach, których nie można odczytać wprost z przeglądarki internetowej.

Kliknij, by skomentować

Zostaw komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Popularne

home.pl tworzy nowy panel z użytkownikami

Newsy

Home.pl z nową ofertą hostingu

Newsy

Ogicom obsłuży hostingowych klientów Netii

Newsy

Po co web developerowi bazy danych?

Internet Maker

Połącz
Newsletter

Zapisz się do naszego newslettera i bądź na bieżąco!