Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
PHP i MySQL.
Wprowadzenie
Autorzy: Michele Davis, Jon Phillips
Tumaczenie: Radosaw Meryk
ISBN: 83-246-0679-3
Tytu oryginau: Learning PHP and MySQL
Format: B5, stron: 352
Przedmowa ................................................................................................................................7
1. Dynamiczna tre na stronach WWW ..........................................................................11
Miejsce technologii PHP i MySQL w procesie tworzenia aplikacji internetowych
Komponenty aplikacji PHP
Integracja wielu rde informacji
danie danych ze strony WWW
Pytania do rozdziau 1.
11
13
16
20
22
2. Instalacja .......................................................................................................................23
Tworzenie aplikacji w trybie lokalnym
Praca zdalna
Pytania do rozdziau 2.
23
34
37
39
42
57
59
61
67
73
78
5. Funkcje ...........................................................................................................................79
Wywoywanie funkcji
Definiowanie funkcji
Programowanie obiektowe
Pytania do rozdziau 5.
80
82
88
97
6. Tablice ............................................................................................................................99
Podstawowe informacje o tablicach
Pytania do rozdziau 6.
99
110
112
121
129
131
134
138
143
156
159
160
169
174
177
193
197
199
208
212
221
222
Spis treci
223
226
226
229
234
235
239
240
241
244
248
255
258
259
267
273
275
279
282
285
287
308
311
316
316
317
318
Spis treci
ROZDZIA 1.
Mona wyrni dwa rodzaje stron WWW: statyczne i dynamiczne. W statycznych witrynach
jest tekst zawierajcy hipercza, a czasami take ekran logowania, ale poza logowaniem uytkownik nie musi wykonywa adnych dodatkowych dziaa. Przykadem statycznej witryny
moe by serwis http://www.startribune.com, w ktrym jedyn interakcj z uytkownikiem jest
konieczno rejestracji w celu przegldania artykuw. Z kolei witryna http://www.amazon.com
jest przykadem dynamicznej witryny WWW. Dane o zamwieniach s rejestrowane, a kiedy
uytkownik odwiedza stron, witryna Amazon poleca okrelone pozycje na podstawie historii jego zakupw. Mwic inaczej, sowo dynamiczne oznacza, e komunikacja uytkownika
z witryn nie ogranicza si do czytania stron witryna zwraca informacje w odpowiedzi na
dziaania uytkownika.
Jeszcze kilka lat temu tworzenie dynamicznych stron WWW wymagao pisania kodu o duej
objtoci w jzykach C lub Perlu, a nastpnie wywoywania i wykonywania tych programw
z poziomu procesu okrelanego jako Common Gateway Interface (CGI). Konieczno tworzenia
plikw wykonywalnych nie brzmi zachcajco, podobnie jak nauka nowego, skomplikowanego
jzyka. Na szczcie dziki jzykowi PHP i bazie danych MySQL tworzenie dynamicznych
witryn WWW jest dzi prostsze, atwiejsze i szybsze.
pisania programu w jzyku PHP, nie musimy na nowo odkrywa koa, tak jak w przypadku
korzystania z jzykw kompilowanych, na przykad C.
Chocia PHP doskonale nadaje si do generowania stron WWW, nie jest baz danych. Programici PHP zazwyczaj korzystaj z bazy danych MySQL, ktrej rol mona porwna do kancelisty rejestrujcego informacje wprowadzane przez uytkownikw. MySQL automatyzuje wikszo popularnych czynnoci zwizanych z zapamitywaniem i odczytywaniem specyficznych
informacji uytkownikw na podstawie podanych kryteriw.
Na przykad w witrynie Amazon, w bazie danych MySQL mog by zapisane rekomendacje serwisu wraz z informacjami o poprzednich zamwieniach.
Do bazy danych MySQL jest atwy dostp z poziomu kodu PHP. Technologie te czsto wykorzystywane s razem ze wzgldu na ich bezproblemowe dziaanie. Dodatkow korzyci jest fakt
dziaania PHP i MySQL w komputerach rnych typw oraz pod kontrol rnych systemw
operacyjnych, midzy innymi Mac OS X, Windows i Linux.
12
Narodziny PHP
Inspiracj do powstania jzyka PHP bya potrzeba tworzenia i utrzymywania witryn WWW
zawierajcych dynamiczn tre i dziaajcych w architekturze klient-serwer. W 1994 roku Rasmus Lerdorf dla wasnego uytku stworzy zbir skryptw open source w Perlu. Ostatecznie
skrypty te przepisano na jzyk C, co dao pocztek jzykowi PHP. Do 1998 roku wydano
PHP w wersji 3.x. System przeksztaci si w narzdzie do tworzenia aplikacji internetowych,
zdolne do konkurencji z takimi produktami, jak ASP (ang. Active Server Pages) firmy Microsoft
czy te JSP (ang. Java Server Pages) firmy Sun.
Komponenty aplikacji PHP
13
Prawdziwa sia jzyka PHP polega na jego prostocie w poczeniu z duymi moliwociami.
Wielk zalet jest rwnie fakt, i jest to jzyk interpretowany, a nie kompilator.
Jzyki kompilowane tworz binarne pliki wykonywalne (.exe), natomiast jzyki interpretowane bezporednio przetwarzaj kod rdowy i nie tworz oddzielnych plikw.
Jzyk PHP jest dostpny dla wszystkich najpopularniejszych systemw operacyjnych. Jest atwy
do nauki, co czyni z niego idealne narzdzie dla osb stawiajcych pierwsze kroki w programowaniu aplikacji internetowych. Mona rwnie skorzysta z pracy innych programistw
wchodzcych w skad spoecznoci PHP, dziki czemu tworzenie aplikacji internetowych staje
si atwiejsze dla kadego. Twrcy jzyka PHP opracowali infrastruktur, ktra umoliwia
dowiadczonym programistom jzyka C rozszerzanie moliwoci jzyka PHP. Dziki temu jzyk
PHP integruje si z wieloma zaawansowanymi technologiami, takimi jak XML, XSL oraz COM
firmy Microsoft. Do integracji tych technologii wykorzystuje si PHP w wersji 5.0.
Narodziny Apache
Apache jest serwerem WWW, ktry przeksztaca dania serwera na wynikowe strony WWW
oraz potrafi przetwarza kod PHP. PHP jest jedynie jzykiem programowania, zatem bez dziaajcego na zapleczu serwera WWW uytkownicy nie mieliby moliwoci dotarcia do stron zawierajcych kod w jzyku PHP.
Apache nie jest jedynym dostpnym serwerem WWW. Innym popularnym serwerem WWW jest
IIS (ang. Internet Information Services), dostarczany wraz z systemem Windows 2000 i wszystkimi
nowszymi wersjami systemu Windows. Rnica pomidzy systemem Apache a IIS w wikszoci sprowadza si do osobistych preferencji, cho system Apache ma niewtpliw przewag
pod tym wzgldem, e jest darmowy, daje dostp do penego kodu rdowego i nie ma ogranicze w licencji. Obecnie najnowsza wersja serwera Apache ma numer 2.0. Serwer IIS atwiej
integruje si z Active Directory najnowszym systemem uwierzytelniania firmy Microsoft,
ale w wikszoci dotyczy to wewntrznych witryn WWW dziaajcych w firmach.
Wedug ankiety w serwisie Netcraft serwer Apache od kwietnia 1996 roku jest najpopularniejszym serwerem WWW w internecie.
Poniewa serwery WWW takie jak Apache i IIS zaprojektowano tak, by serwoway strony na
podstawie plikw HTML, musz one zapewnia sposb przetwarzania kodu w jzyku PHP.
W serwerze Apache wykorzystuje si mechanizm moduw, ktry umoliwia adowanie rozszerze do funkcji podstawowych. W serwerze IIS wykorzystano podobny mechanizm okrelany
jako ISAPI. Obie te technologie pozwalaj na szybsze przetwarzanie kodu PHP w porwnaniu
ze starszym sposobem polegajcym na wywoywaniu procesu PHP jako osobnego pliku wykonywalnego za kadym razem, kiedy serwer WWW zada strony zawierajcej kod PHP. Sposb konfiguracji moduw Apache omwimy w rozdziale 2.
14
Narodziny MySQL
Baz danych MySQL opracowano w latach dziewidziesitych jako odpowied na rosnce potrzeby powstania narzdzia do inteligentnego zarzdzania informacjami. Pierwsi twrcy bazy
danych MySQL starali si speni swoje potrzeby w zakresie baz danych za pomoc niewielkiej i prostej bazy danych mSQL. Kiedy stao si jasne, e baza danych mSQL nie jest w stanie
rozwiza wszystkich problemw, ktre napotkali, opracowali bardziej rozbudowan baz
danych, ktra przeksztacia si w MySQL.
Baza danych MySQL obsuguje kilka rnych mechanizmw obsugi baz danych (ang. database engine). Mechanizm obsugi baz danych determinuje sposb, w jaki MySQL obsuguje zapisywanie danych oraz wykonywanie zapyta o dane. Z tego wzgldu kady mechanizm obsugi
baz danych charakteryzuje si innym zestawem wasnoci oraz silnych i sabych stron. Z czasem
dostpne mechanizmy baz danych staj si coraz bardziej zaawansowane i dziaaj szybciej.
W tabeli 1.1 wyszczeglniono numery wersji bazy danych MySQL wraz z ulepszeniami, ktre
w nich wprowadzono.
Tabela 1.1. Gwne wersje bazy danych MySQL
Wersja
Wasnoci
3.23
Dodano mechanizm obsugi bazy danych MyISAM, ktry sta si mechanizmem domylnym.
Mechanizm ten pozwala na wydajn obsug danych o duej objtoci. Wprowadzono mechanizm obsugi bazy danych
InnoDB zapewniajcy bezpieczne przetwarzanie bazy danych oraz obsug obcych kluczy. Obce klucze zapewniaj
jawne okrelenie zwizkw pomidzy tabelami na poziomie bazy danych.
4.0
Wprowadzono obsug unii w zapytaniach. Unie umoliwiaj scalanie wynikw dwch zapyta w jeden. Wprowadzono
moliwo dokonywania zmian w konfiguracji bez koniecznoci ponownego uruchamiania bazy danych.
4.01
Dodano polecenie help do klienta pomocy. Wprowadzono obsug widokw bez nazwy, okrelanych take jako
podzapytania. Widoki bez nazwy pozwalaj na traktowanie zapytania tak, jak osobnej tabeli.
5.0
Wprowadzono wyzwalacze, procedury skadowane (ang. stored procedures) oraz kursory. Wyzwalacze umoliwiaj
wykonywanie kodu przez serwer bazy danych w momencie zajcia zdarzenia wyzwalajcego, takiego jak wprowadzanie
danych do tabeli. Procedury skadowane umoliwiaj definiowanie i wykonywanie programw w obrbie bazy danych.
Kursory umoliwiaj uruchamianie w bazie danych kodu dla kadego wiersza speniajcego warunki zapytania.
5.1
Wprowadzono obsug ogranicze i partycjonowania. Ograniczenia wykorzystuje si w celu zdefiniowania regu, zgodnie
z ktrymi mona dodawa bd modyfikowa wiersze w bazie danych. Partycjonowanie wykorzystuje si w celu
podzielenia fizycznej lokalizacji duych tabel na podstawie okrelonej reguy. Partycjonowanie powszechnie stosuje
si w celu zwikszenia wydajnoci duych tabel, takich jak dane historyczne.
15
Bieca wersja produkcyjna bazy danych MySQL to najnowsze dostpne wydanie o numerze
5.0x. Wydajno serwera bazy danych MySQL 5.0 mona porwna do znacznie droszych
korporacyjnych systemw baz danych, takich jak Oracle, Informix, DB2 (IBM) czy te SQL
Server (Microsoft). Twrcy bazy danych MySQL osignli wydajno na tym poziomie dziki
wykorzystaniu talentw wielu programistw oprogramowania typu open source, a take testowaniu systemu przez spoeczno uytkownikw. W przypadku zada obsugi baz danych
oglnego przeznaczenia domylny mechanizm obsugi bazy danych MyISAM doskonale
spenia swoj rol.
Najnowsze zaawansowane wasnoci wprowadzone w MySQL 5.1 nie s rwnie stabilne, jak wasnoci wprowadzone we wczeniejszych wersjach. Biec stabiln wersj
oglnego przeznaczenia jest MySQL 5.0. Dla wybranej wersji gwnej zawsze naley
pobiera najnowsze wydanie (oznaczone najwyszym trzecim czonem numeru wersji).
Takie wydanie zawiera najwicej poprawionych bdw okrelonej wersji.
Wielk zalet serwera Apache jest jego zdolno do dziaania w systemach operacyjnych innych
ni Windows. Dziaanie w rnych systemach operacyjnych wie si z problemem zgodnoci,
ktry omwimy w kolejnym punkcie.
Zgodno
Przegldarki WWW takie jak Firefox, Netscape i Internet Explorer przetwarzaj kod HTML,
zatem nie ma dla nich znaczenia, w jakim systemie operacyjnym pracuje serwer WWW. Systemy Apache, PHP i MySQL obsuguj wiele systemw operacyjnych. Dziki temu ich uytkownicy nie s skazani na korzystanie z okrelonego systemu operacyjnego ani po stronie serwera, ani po stronie klienta. Chocia nie trzeba zbytnio si martwi problemami zgodnoci
oprogramowania, naley si przyzwyczai do wystpowania rnych formatw plikw i wielu
wersji jzykowych.
Nie przejmujmy si, jeli niektre fragmenty kodu na listingu 1.1 s niezrozumiae. Wane,
jeli zwrcimy uwag, e w kodzie wystpuj instrukcje PHP, kod dostpu do bazy danych oraz
cze do arkusza stylw.
Szablony PHP
W celu uproszczenia obsugi witryn skadajcych si z wielu rnych stron o podobnym
wygldzie nagwek i stopk kadej ze stron mona zdefiniowa w osobnym pliku i wczy
do kodu kadej ze stron. Dziki temu zmiany w nagwku bd stopce mog by wykonywane w jednym miejscu i powoduj automatyczn zmian wygldu stopki (nagwka) na
wszystkich stronach. W ten sposb programici nie musz modyfikowa z osobna kadej ze
stron witryny WWW.
Programici PHP nauczyli si, e oddzielenie kodu PHP od kodu HTML uatwia prac zarwno
im samym, jak i uytkownikom, ktrzy potrafi modyfikowa kod HTML, ale niezbyt dobrze
17
rozumiej kod PHP. Dziki utworzeniu osobnych plikw szablonw zawierajcych zmienne-wypeniacze dla dynamicznych danych mona oddzieli znaczniki HTML od kodu PHP.
Przykad pliku szablonu zamieszczono na listingu 1.2.
Listing 1.2. Szablon PHP
<html>
<head>
<title>Moje ksiki</title>
</head>
<body>
<p>Ulubione ksiki:</p>
<p>
Tytu: {$title}<br />
Autor: {$author}
</p>
</body>
</html>
Kiedy interpreter PHP przetworzy stron, zmienne-wypeniacze zostan zastpione ich wartociami, tak jak pokazano na listingu 1.3.
Listing 1.3. Wynikowy kod HTML po podstawieniu wartoci za zmienne szablonu i przetworzeniu kodu
przez interpreter PHP
<html>
<head>
<title>Moje ksiki</title>
</head>
<body>
<p>Ulubione ksiki:</p>
<p>
Tytu: Java. Almanach<br />
Autor: Flanagan
</p>
</body>
</html>
Chocia dodalimy kolejny plik, wynikowy kod HTML sta si czytelniejszy, a kod PHP mniej
zamiecony nadmiarowym kodem HTML. Projektant witryny, ktry nie zna jzyka PHP, moe
zmodyfikowa wygld strony, nie obawiajc si o to, e uszkodzi kod PHP.
Ostatni z rodzajw informacji, jakie omwimy, rwnie powsta w efekcie denia do oddzielenia stylw prezentacji, takich jak kolory i odstpy, od zasadniczej treci.
18
Kod rozpoczynajcy si od znacznika style to kod CSS. Efekt wywietlenia powyszego dokumentu w przegldarce pokazano na rysunku 1.1.
Rysunek 1.1. Efekt wywietlenia strony skadajcej si z kodu CSS i HTML w przegldarce
Chocia w pokazanym przykadzie kod CSS umiecilimy wewntrz pliku HTML, rwnie dobrze
mona by go byo zapisa w osobnym pliku. Ten sposb wykorzystano na listingu 1.1, gdzie
kod CSS pochodzi z pliku user_admin.css.
Oczywicie do rde informacji wywietlanych na stronach WWW trzeba zaliczy take pliki
zawierajce standardowy kod HTML.
Wicej informacji na temat CSS mona znale w ksice Erica Meyera CSS. Kaskadowe
arkusze stylw. Przewodnik encyklopedyczny (Helion 2001).
19
Pierwszy <znacznik> oznacza pocztek pary, natomiast ostatni </znacznik> oznacza jej koniec.
Par znacznikw okrela si jako element. Dowolna tre w obrbie elementu podlega reguom
obowizujcym dla tego elementu. W poprzednim przykadzie tekst Naucz si korzystania z arkuszy stylw CSS w swoich witrynach WWW! by zapisany wewntrz elementu h3.
<h3>Naucz si korzystania z arkuszy stylw CSS w swoich witrynach WWW!</h3>
Dobr praktyk (wymagan w jzyku XHTML) jest dokadne zagniedanie znacznikw, dziki
czemu elementy maj dobrze zdefiniowane granice. Naley pamita o umieszczaniu znacznikw kocowych elementw i unika nakadania si znacznikw na siebie. (Na przykad zamiast kodu w postaci <b>pogrubienie <i>pogrubiona kursywa</b> kursywa</i> naley stosowa kod w postaci <b>pogrubienie <i>pogrubiona kursywa</i></b> <i>kursywa</i>).
Rysunek 1.2. Kiedy uytkownik wpisze adres URL i wcinie Enter, za kulisami wykonywanych jest szereg
czynnoci w celu obsuenia dania
20
3. Program na serwerze WWW okrelany jako proces serwera WWW pobiera danie strony
directory.html i poszukuje tego pliku.
4. Serwer WWW odczytuje plik directory.html ze swojego twardego dysku.
5. Serwer WWW zwraca zawarto pliku directory.html do przegldarki.
6. Przegldarka wykorzystuje zbir znacznikw HTML odebrany z serwera WWW w celu
wygenerowania strony WWW na ekranie komputera uytkownika.
Plik HTML o nazwie directory.html (ktrego danie zilustrowano na rysunku 1.2) okrela si
jako statyczn stron WWW. Strona jest statyczna, poniewa wszyscy uytkownicy, ktrzy
zadaj strony directory.html, otrzymuj dokadnie tak sam stron.
Dodanie do zestawu programw obsugujcych dania interpretera jzyka PHP i bazy danych
MySQL umoliwia personalizacj zwracanych stron. Na rysunku 1.3 pokazano dodatkowe
operacje w cigu zdarze zachodzcych na serwerze WWW w przypadku zastosowania PHP
i MySQL.
Rysunek 1.3. Wsppraca interpretera PHP, bazy danych MySQL i serwera WWW podczas obsugi
dania strony
21
9. Interpreter PHP uzupenia wynik przetwarzania kodu PHP o dane z bazy danych i zwraca
wyniki do procesu serwera WWW.
10. Serwer WWW zwraca wyniki do przegldarki uytkownika w postaci kodu HTML.
11. Przegldarka WWW uytkownika interpretuje odebrany kod HTML w celu wygenerowania
strony na ekranie komputera uytkownika.
Moe si wydawa, e wymienionych czynnoci jest duo, wszystkie one s jednak wykonywane automatycznie za kadym razem, kiedy uytkownik zada strony WWW zawierajcej
kod PHP.
Podczas tworzenia dynamicznych stron WWW wykorzystuje si rnorodne zmienne i komponenty serwera. Wszystkie one maj istotne znaczenie dla uzyskania atrakcyjnej i atwej w obsudze witryny WWW. Nadszed czas, aby zainstalowa trzy gwne czci potrzebne do praktycznego tworzenia dynamicznych stron. Mowa o Apache, PHP i MySQL.
Pytania do rozdziau 1.
Pytanie 1.1. Jakie trzy komponenty s potrzebne do tworzenia dynamicznych stron WWW?
Pytanie 1.2. Jaki mechanizm wykorzystuje serwer Apache do adowania rozszerze?
Pytanie 1.3. Jaka jest bieca stabilna wersja PHP?
Pytanie 1.4. Co oznacza cig SQL w nazwie MySQL?
Pytanie 1.5. Do czego su ostroktne nawiasy (< >)?
Pytanie 1.6. Jakie zadanie spenia interpreter PHP?
Odpowiedzi na te pytania mona znale w Dodatku.
22