Ćwiczenia z... - Język PHP

Citation preview

.. v.V’.Vm/«■

Spis treści

W stęp..................................................................................................................................................... 7 Cel książki...................................................................................................................................... 8 Instalacja........................................................................................................................................ 9 1.

Podstawy języka P H P .............................................................................................................. 10 Ćwiczenie 1.1.Pierwszy skrypt................................................................................................... 10 Zadanie 1.1.1. Sporządzanie skryptu wyświetlającego powitania wraz zaktualną datą............................................................ 12 Zadanie 1.1.2. Rozbudowa skryptu z zadania 1.1.1 o wyświetlenie dodatkowegotekstu w dniu urodzin autora.........................13 Zadanie 1.1.3. Rozbudowa skryptu z zadania 1.1.2 o wyświetlenie dnia tygodnia w języku polskim..................................................14 Ćwiczenie 1.2. Jak wysłać e-mail?...........................................................................................16 Zadanie 1.2.1. Sporządzanie skryptu wyświetlającego formularz HTML służący do wysyłania wiadomości e-mail 17 Zadanie 1.2.2. Sporządzanie skryptu wysyłającego wiadomość e-mail na podstawie danych odebranych z formularza............... 18 Ćwiczenie 1.3. Ciasteczka w PHP............................................................................................19 Zadanie 1.3.1. Sporządzanie skryptu zapisującego oraz wyświetlającego plik cookie............................................................................ 19 Zadanie 1.3.2. Ustawienie licznika odwiedzin z wykorzystaniem plików cookie...................................................................... 21 Ćwiczenie 1.4. Obsługa plików w PHP...................................................................................22 Zadanie 1.4.1. Sporządzanie skryptu wyświetlającego aktualną datę i przypadające na nią imieniny...........................................25 Zadanie 1.4.2. Ustawienie licznika odwiedzin odpornego na odświeżanie strony................ *.......................................26 Ćwiczenie 1.5. Jak zorganizować interfejs aplikacji?........................................................... 26 Zadanie 1.5.1. Sporządzanie skryptu wyświetlającego imieniny w różnych oprawach graficznych...................................... 28 Ćwiczenie 1.6. Wyrażenia regularne (regexp).......................................................................32 Zadanie 1.6.1. Sprawdzenie poprawności kodu pocztowego za pomocą funkcji ereg...........................................................................36

Ćwiczenia z PHP

4

Spis treści

Zadanie 1.6.2. Sprawdzenie poprawności adresu e-mail za pomocą funkcji ereg i......................................................................... 38 Zadanie 1.6.3. Sprawdzenie poprawności numeru IP za pomocą funkcji ereg i......................................................................... 39 Zadanie 1.6.4. Dzielenie tekstu za pomocą funkcji sp lit......................... 40 Zadanie 1.6.5. Zamiana tekstu za pomocą funkcji ereg_replace............ 42 Ćwiczenie 1.7.

Operacje na ciągach znaków ........................................................................43 Zadanie 1.7.1. Konkatenacja stringów....................................................... 43 Zadanie 1.7.2. Zamiana liter na wielkie za pomocą funkcji strtoupper.. 45 Zadanie 1.7.3. Zamiana liter na małe za pomocą funkcji strtolower......46 Zadanie 1.7.4. Powielenie tekstu za pomocą funkcji str_repeat............. 46 Zadanie 1.7.5. Zamiana tekstu za pomocą funkcji str_replace................47 Zadanie 1.7.6. Sprawdzanie długości tekstu za pomocą funkcji strlen .. 48 Zadanie 1.7.7. Odwracanie tekstu za pomocą funkcji strrev...................49 Zadanie 1.7.8. Kopiowanie części tekstu za pomocą funkcji substr....... 50 Zadanie 1.7.9. Sprawdzanie pozycji fraz za pomocą funkcji strpos....... 52 Zadanie 1.7.10. Usuwanie znaczników i ukośników z tekstu za pomocą funkcji strip_tags i strip slashes......................................... 53 Zadanie 1.7.11. Dzielenie tekstuza pomocą funkcji explode...................... 55 Zadanie 1.7.12. Wymuszenie interpretacji kodu PHP za pomocą funkcji eval........................................................................... 56

5

Zadanie 2.2.3. Rozbudowa skryptu z zadania 2.2.2 o wyświetlenie wyników_zapytania SQL.................................................... 72 Ćwiczenie 2.3. Konstruowanie własnej biblioteki dostępu do danych M ySQ L................74 Zadanie 2.3.1. Wykonanie własnej klasy reprezentującej bazę danych MySQL................................................................................. 74 Zadanie 2.3.2. Rozbudowa klasy z zadania 2.3.1 o wykonywanie zapytań i obsługę błędów................................................... 76 Zadanie 2.3.3. Budowa klasy koordynującej wykonanie zapytań SQL.. 78 Zadanie 2.3.4. Budowa klasy CwDBReport odpowiedzialnej za prezentację wyników zapytań SQ L.............................. 85 Ćwiczenie 2.4.

3.

Dynamiczne formularze w P H P ................................................................... 89 Zadanie 2.4.1. Utworzenie własnej klasy generującej dowolny formularz..............................................................................90 Zadanie 2.4.2. Utworzenie klasy dynamicznego formularza danych (CwDBForm)........................................................................98 Zadanie 2.4.3. Aplikacja „Test” .......................................................... 100 Zadanie 2.4.4. Testowanie poprawności skryptów z zadania 2.4.3 t fL3

G rafika w P H P .........................................................................................................................117 Ćwiczenie 3.1.

Generowanie grafiki w PH P....................................................................... 120 Zadanie 3.1.1. Wygenerowanie wypełnionego prostokąta.......................120

2.

Dostęp do baz danych w PHP i model obiektow y..............................................................58 Ćwiczenie 2.1.

Ćwiczenie 2.2.

PHPMyAdmin................................................................................................58 Zadanie 2.1.1. Utworzenie bazy danych oraz tabeli za pomocą narzędzia PHPMyAdmin....................................................59 Zadanie 2.1.2. Dodawanie, edycja i usuwanie rekordów w tabeli za pomocą PHPMyAdmin..................................................63 Zadanie 2.1.3. Utworzenie zapytania zwracającego określone kolum ny................................................................................66 Zadanie 2.1.4. Utworzenie zapytania zawierającego funkcję SUBSTRING....................................................................... 66 Zadanie 2.1.5. Utworzenie zapytania wybierającego zestaw rekordów spełniających określony w arunek......................................67 Zadanie 2.1.6. Utworzenie zapytania ze złożonym warunkiem logicznym............................................................................. 68 Zadanie 2.1.7. Utworzenie zapytania zawierającego funkcję agregującą..................................... 68 Zadanie 2.1.8. Uszeregowanie zestawu zwracanych rekordów według określonego klucza.............................................................. 70 Jak łączyć się z bazą danych z poziomu skryptu PHP?................................. 71 Zadanie 2.2.1. Utworzenie skryptu łączącego się ze wskazaną bazą danych...................................................................................71 Zadanie 2.2.2. Rozbudowa skryptu z zadania 2.2.1 o wysyłanie zapytania SO L................................... 72

Ćwiczenie 3.2.

Grafika w PHP

a bazy danych.........................................................122

Zadanie 3.2.1. Utworzenie pliku konfiguracyjnego (config.php) ............123 Zadanie 3.2.2. Utworzenie struktury tabeli do przechowywania zdjęć w bazie danych...................................................................124 Zadanie 3.2.3. Utworzenie wyświetlarki do zdjęć(foto.php) .................. 124 Zadanie 3.2.4. Utworzenie warstwy prezentacji - plik szablon, inc.php...................................................................126 Zadanie 3.2.5. Utworzenie modułu głównego albumu............................. 128 4.

Zaawansowane techniki program ow ania............................................................................ 132 Ćwiczenie 4.1.

PHP i X M L..............................................................................................

132

Zadanie 4.1.1. Utworzenie XML-owego dokumentu opisującego zestawienie wydatków................................ i....................133 Zadanie 4.1.2. Utworzenie klasy obsługi XML - xm lTree ,......135 Zadanie 4.1.3. Rozbudowa klasy z zadania 4.1.2 o możliwość zapisu i odczytu kodu XML z pliku.............................................140 Zadanie 4.1.4. Generowanie XML z bazy danych.....................................144 Ćwiczenie 4.2.

PHP i sesje....................... V........................................................................

145

Zadanie 4.2.1. Sporządzanie skryptu wyświetlającego aktualny identyfikator sesji ............................................................ '146 Zadanie 4.2.2. Utworzenie skryptu zapamiętującego informacje w ramach sesji..................................................................... 147

Ćwiczenia z PHP

6

Ćwiczenie 4.3.

5.

Wstęp

Rozbudowa aplikacji „Testy” .................. ...................................................149 Zadanie 4.3.1. Utworzenie obsługi rejestracji i logowania użytkowników....................................................................149

PHP w sieci.............................................................................................................................. 155 Zasoby polskojęzyczne.............................................................................................................155 Strony zagraniczne.................................................................................................................... 156

Język PHP (ang. Personal H om e Pages lub Hypertext Preprocessor) robi ostatnio zaw rotną karierę. Lawinowo powiększa się liczba jego użytkowników. Podstaw ow ym i zaletam i tego języka są prostota składni, specjalizacja w kierunku obsługi dynam icz­ nych stron W W W oraz wym ieniony tutaj na końcu, lecz zapew ne przez wielu uw zględniany na początku fakt, że jest to projekt typu open source (czyli otwarty kod), co oznacza, że kod źródłowy jest dostępny dla każdego, kto m a ochotę się z nim zapo­ znać. Sam zaś interpreter PHP jest programem rozprowadzanym nieodpłatnie. Aby zrozum ieć jak funkcjonuje PHP i w jaki sposób tego typu narzędzia zm ie­ niły sposób funkcjonow ania Internetu, musimy cofnąć się do zam ierzchłych czasów, gdy globalna sieć znajdowała się jeszcze w powijakach, a funkcjonujące w niej doku­ m enty miały charakter plików statycznych. Znaczącym krokiem w rozw oju Internetu było opracowanie kodu H TM L (ang. H iper Text Markup Language). D okum ent H TM L zaw iera specjalne znaczniki, zw ane czasem tagami, definiujące sposób prezen­ tacji jego zawartości. Przeglądarka W W W (taka jak Internet Explorer czy N etscape N avigator) pobiera w skazany dokument z serwera W W W i interpretuje zawarte w nim znaczniki HTM L odpowiednio formatując prezentację. Jeśli na przykład oznaczym y pew ną część tekstu dokumentu znacznikami (...), to zaznaczony w ten spo­ sób fragm ent zostanie wyświetlony przez przeglądarkę pogrubioną czcionką. Za po­ m ocą znaczników m ożna także definiować odnośniki do innych plików HTM L, dzięki czem u przeglądanie nawet bardzo skomplikowanych struktur dokum entów staje się łatw e i przyjemne. Dzięki kodowi H TM L przeglądający m ógł więc poruszać się sw o­ bodnie i dynam icznie po dokumentach zgrom adzonych na serwerze W W W . Sam e dokum enty H TM L miały jednak nadal charakter statyczny - były to zw ykłe pliki tekstow e składowane na dysku serwera internetowego. W raz z upływem czasu prze­ stało to wystarczać. Pojaw iła się potrzeba zapew nienia użytkow nikow i choćby m i­ nim um interaktywności. Użytkow nik chciał mieć na przykład m ożliw ość w yszukania interesującej go inform acji nie poprzez żm udne klikanie kolejnych łączy (odnośni­ ków), ale poprzez proste wpisanie szukanej frazy. Taką funkcjonalność zapew nić m o­ gła jedynie zm iana podejścia do pojęcia dokumentu HTM L. Jeśli zaw artość serw era W W W m iała stać się bardziej zmienna, interaktywna, dokum enty na nim składow ane nie mogły już zawierać w sobie statycznego kodu HTML. Stały się one raczej progra­ mami (skryptam i), które generowały potrzebny kod H TM L niejako „w locie”, na podstaw ie inform acji wpisanych przez użytkownika i przesłanych do serw era W W W przez przeglądarkę.

8

Ćwiczenia z PHP

T echnologie tego typu określone są term inem CGI (ang. Com m on G atew ay Inteiface). Serw er W W W otrzym ując żądanie pobrania dokum entu rozpoznaje po rozszerzeniu, jaki ma on charakter (np. rozszerzenie p h p oznacza, że je st to skrypt w języku PHP). N astępnie urucham iany jest odpow iedni interpreter. Skrypt jest w yko­ nyw any, a wytw orzony przezeń kod H TM L zostaje zwracany z pow rotem do przeglą­ darki. Proces ten w ygląda na dość skom plikow any, jest on jednak podstaw ą działania w iększości interaktyw nych stron w Internecie. W książce tej zapoznam y się z nim bardzo dokładnie. PH P pow stał w 1994 roku, kiedy to jego tw órca, Rasmus Lerdorf, zastosow ał w czesną wersję interpretera do śledzenia liczby odw iedzin swojej prywatnej strony W W W . D wa lata później Zeev Suraski i Andi G utmans przepisali PHP od podstaw. N apisany od now a interpreter otrzym ał num er wersji 3 (tzw. PHP3). Od tam tego czasu PH P rozw ija się bardzo szybko. D zięki temu, że je st to projekt typu otw artego (open source), w kład w jego rozwój może wnieść nieom al każdy. Statystyki prow adzone przez firm ę N etC raft pokazują, że PHP w ykorzystyw any jest obecnie na około 400 tysiącach serwerów W W W . W porów naniu z 200 tysiącam i w roku 1999 i 50 tysiącam i w roku 1997, obrazuje to gw ałtow ny w zrost popularności tej platform y. Skrypty napisane w języku PH P są połączeniem czystych stron H TM L z poleceniam i języka program ow ania ujętymi w wyróżnione bloki i w ykonyw anym i po stronie serw era W W W .

Wstęp

9

Instalacja N ajprostszym sposobem na szybką i bezproblem ow ą instalację potrzebnego śro­ dow iska na dom ow ym kom puterze dla właścicieli W indows jest ściągnięcie z sieci pakietu PH PTriad. Z aw iera on serw er W W W A pache, bazę danych M ySQ L oraz w ersję PHP przeznaczoną dla platform y W indows. W łaściciele innych system ów operacyjnych (takich jak Linux) znajdą opisy instalacji pod w ielom a adresam i w sieci lub w książce autorstwa Julie C. M eloni „PHP - Podręcznik tw orzenia stron W W W ” wydanej przez W ydaw nictw o Mikom. Pakiet PH PTriad m ożna znaleźć w sieci m iędzy innym i pod jednym z poniższych adresów: ftp : / / f t p 3 . r u . f r e e b s d . o r g / . 11/ sour cef orge/ phpt r i ad/ phptr i a d s e t u p l - 2 . z i p h t t p : / / d o w n ! o a d . s o u r c e f o r g e . n e t / p h p t r i a d / p h p t r i a d s e t u p l - 2 . zi p Jeśli chodzi o starsze wersje W indows, do popraw nego działania tego pakietu bę­ dzie nam potrzebna odpow iednia w ersja biblioteki W inSock: W inSock2. Z najdziem y ją w sieci pod adresami: f t p : / / f t p 3 . s e . f r e e b s d . o r g / p u b f / n i r / Hyper wave/ JVF/ W95ws2set up. exe f t p : / / f t p . s e a t a c m a l l . com/Di alUpNetworki ng/Wi ndows95/ W95ws2set up. exe

Cel książki „Ć w iczenia z PH P” są próbą zebrania najważniejszych zagadnień zw iązanych z program ow aniem w PH P w form ie serii ćw iczeń o rosnącym stopniu trudności. Czytelnik w m iarę lektury zapoznaje się z różnorodnym i aspektam i tw orzenia dyna­ m icznych stron internetow ych w tym języku. Począw szy od ćw iczeń ilustrujących podstaw ow e funkcje PHP, poprzez dostęp do baz danych, grafikę aż po zaaw ansow a­ ne techniki program ow ania w tym języku. Pod adresem www. php. w- si eci .pl została utw orzona specjalna strona dla czy­ telników tej książki. Znajdują się tam pliki źródłow e skryptów z poszczególnych ćwiczeń, w ersje instalacyjne potrzebnych program ów oraz zbiór w artościow ych odnośników do stron zw iązanych z PHP. W krótce postaram y się także uruchom ić na tych stronach specjalne forum w ym iany doświadczeń. W szelkie uwagi i kom entarze m ożna słać na adres php@w- si eci . pl - żaden c-m ail nie pozostanie bez odpowiedzi!

f t p : / / f t p . s d c c c . o r g / u 3 / c a t hye s q / W95ws2setup. exe M ożem y także skorzystać z wyszukiwarki plików FTP, www. f t pf i nd. com, w pi­ sując w95ws2. K olejna m odyfikacja, jaka będzie nam potrzebna po instalacji tego pakietu, to aktualizacja pliku php.ini w katalogu c:\apache\php (należy usunąć średnik blokujący pozycję e x t e n s i on=php_gd . dl i ) . W łączam y w ten sposób obsługę grafiki w PHP. W tym sam ym pliku m ożem y także ju ż teraz zm odyfikow ać ścieżkę przeszuki­ w ań PH P i nc l ude_path. D ołóżm y do niej katalogi, które w trakcie w ykonyw ania ćw iczeń okażą się przydatne: c:\apache\htdocs\cwphp4\lib, c:\apache\php\pear. W końcow ym efekcie linia ta będzie w yglądać następująco (W indows): i nclude_path="c:; \ apache\php\pear;\apache\htdocs\cwphp4\li b ; . ; \apache\ i n c l u d e s ; \ a p a c h e \ h t d o c s \ ; \ a pache\ ht docs \ phpmyadmi n" K opia odpow iednio zm odyfikowanego pliku p hp.ini znajduje się na dołączonej do książki dyskietce w katalogu php.

1.

Podstawy języka PHP

Podstawy języka PHP

Podając format daty możemy użyć następujących znaków specjalnych: •

Ćwiczenie 1.1. Pierwszy skrypt

D - dzień tygodnia w skróconym zapisie tekstowym, na przykład "Fri"



1 - dzień tygodnia w zapisie tekstowym, na przykład "M onday"



w - dzień tygodnia w postaci numerycznej od "0" (Niedziela) do "6" (Sobota)



z - dzień w roku od "0" do "365"



d - dzień m iesiąca w zapisie numerycznym od "01" do "31"

Wprowadzenie:



F - miesiąc w zapisie tekstowym np.: "January"

N a początek w ykonam y coś bardzo prostego. Będzie to kod PHP w yśw ietlający aktualną datę. Zanim jednak zaczniem y w ykonyw ać ćwiczenie, m usim y w yjaśnić sobie kilka używ anych w nim terminów:



M - miesiąc w skróconym zapisie tekstowym, na przykład "Jan"



m - miesiąc w zapisie numerycznym od "01" do "12"

Zm ienna je st identyfikatorem , do którego m ożem y zapisać dow olną wartość. W skryptach PHP nazwy zm iennych zawsze zaczynają się od znaku $. A by utw orzyć zm ienną, w ystarczy nadać jej wartość używ ając tzw. instrukcji przypisania: $a=5; / / pod z mi enną $a p o d s t a w i a my w a r t o ś ć c a ł k o w i t ą 5 $ b = ’ t e k s t ’ : / / pod z mi e nn ą $a p o d s t a wi a my t e k s t $c=$a+l; / / w z mi e nn ej $a z a p i s a l i ś m y 5. $c ot r z y ma w i ę c w a r t o ś ć / / 5+1 c z y l i 6

W poniższych ćwiczeniach będziem y bardzo często korzystać z m ożliw ości za­ m ieszczania w kodzie PHP dodatkowych kom entarzy, tak aby był on jak najbardziej zrozumiały. K om entarz jest fragmentem kodu pomijanym przez interpreter. M usim y oczyw iście odpow iednio ów opis zaznaczyć: •

II - interpreter pominie w szystko co znajdzie za tymi znakam i aż do końca linii



/* i */ - oznaczają odpow iednio początek i koniec kom entarza obejm ującego jedną lub więcej linii



dla kodu H TM L kom entarz zaznaczam y poprzez użycie znaczników < !— i —>.

K olejną kw estią w ym agającą w yjaśnienia są funkcje. W uproszczeniu m ożna je określić jako w ydzielone części algorytmu, opatrzone pewnym identyfikatorem (nazw ą funkcji). Do funkcji m ożem y przekazywać argumenty, a po ich w ykonaniu odebrać ich wartość. W tym ćw iczeniu będziem y korzystać z funkcji d a te , zw racają­ cej aktualną datę. F unkcja ta jest w budow ana w interpreter języka PHP. W kolejnych zadaniach będziem y definiow ać także własne funkcje (np. zadanie 1.1.3). Funkcja d ate przetwarza datę w postać tekstową. Jako pierwszy argument pobiera format, w którym ma być zwrócona data. Kolejny argument to data do przetworzenia. Jeśli nie w ymienimy tego argumentu, domyślnie zostanie wzięta aktualna data.

11



t - liczba dni w miesiącu od "28" do "31"



h - godzina, format 12-godzinowy od "01" do "12"



H - godzina, format 24-godzinowy od "00" do "23"



a - "am", czy "pm"



i - minuty, od "00" do "59"



s - sekundy od "00" do "59"



Y - rok w zapisie 4-cyfrowym, na przykład "2001"



y - rok w zapisie 2-cyfrowym, na przykład "01".

A - " A M " , czy "PM"

P rzy k ład : / / w zmi ennej $dat a otrzymamy nazwę dni a t ygodni a o r a z d z i e ń , mi e s i ą c / / i rok r o z d z i e l o n e kropkami: i d a t a ^ d a t e t ‘ 1 d. m. Y’ ); Aby wyświetlić tekst powitania oraz aktualną datę, posłużym y się instrukcją

echo. Instrukcja ta powoduje wysłanie określonego tekstu na standardow e wyjście. Tekst zamknięty w apostrofach nie jest dodatkowo interpretowany. Jeśli jest za­ mknięty cudzysłowem, wszystkie zawarte w nim nazwy zm iennych zostają podm ie­ nione na ich wartości. P rzy k ład : $a=’ Pi o t r e k ’ ; echo „Imi ę t o $a” ; / / z o s t a n i e wyświ et l ony t e k s t „I mi ę t o P i o t r e k ” ;

12

Z adanie 1.1.1. S p o rz ą d z a n ie sk ry p tu w y św ie tla ją c e g o p o w ita n ia w ra z z a k tu a ln ą d atą

Wykonanie: 1.

Zakładam y w katalogu apache/htdocs/cw php4/zadl 11 plik index.php. Zostanie on dom yślnie zinterpretow any, gdy użytkownik poda w oknie przeglądarki adres h tt p :/ /I ocalhost/cwphp4/zadlll.

2.

Jako jego zaw artość w pisujem y następujący kod PHP :

3.

Zapisujem y pierwszy skrypt i w oknie przeglądarki w yw ołujem y adres h t t p : / / 1 ocal h o s t / c w p h p 4 / z a d l l l . Powinno pojawić się pow itanie w raz z aktualną da­ tą (rys. 1.1).

13

Podstawy języka PHP

Ćwiczenia z PHP

W razie problemów należy sprawdzić, czy został uruchomiony serwer W W W Apache (wybieramy z menu Start->Pnograniy-»PHPTriad for Windows-*Start Apache).

Z ad an ie 1.1.2. R o z b u d o w a skry p tu z zad an ia 1.1.1 o w y św ietlen ie d o d atk o w e g o tek stu w d n iu u ro d z in au to ra A by spraw dzić, czy aktualna data jest datą urodzin autora, m usim y posłużyć się instrukcją w arunkow ą if. Pozw ala ona zm ieniać działanie program u w zależności od zachodzących warunków. Jej ogólna postać to: i f ( [ wa r u n e k ] ) C / / c i ą g i n s t r u k c j i wykonywany, gdy warunek j e s t s p e ł n i o n y 3 el se { / / c i ą g i n s t r u k c j i wykonywany, gdy warunek n i e j e s t s p e ł n i o n y 3 Za pom ocą tej instrukcji m ożem y dla przykładu porów nać dwie zm ienne. Aby to zrobić, trzeba użyć którejś z poniższych konstrukcji: •

$a==$b - spełniony, gdy $a i $b są rów ne



$a>$b —spełniony, gdy $a je st w iększe od $b



$a>=$b - spełniony, gdy $a jest większe lub rów ne $b



$a



135

Zaawansowane techniki programowania < p X x sl :value-of s e le c t = "/ /o p is / ty tu l" /X / p >

< / x s l :stylesheet>

4.

Ten dokument zapiszemy do pliku zad411 ¡wydatki.xsl.

5.

Pozostaje nam w dokumencie wydatki.xml (tuż pod )

< ? x m l - s t y l e s h e e t t y p e = " t e x t / x s l " h r e f “ " w y d a t k i .xsl "? >

6.

W piszem y teraz w przeglądarce adres localhost/cwphp4/zad411.

Podsumowanie: X M L/X SL nie jest przedmiotem tej książki. Jeśli chcem y zgłębić ten temat, na­ leży zajrzeć do dokumentacji znajdującej się w Internecie pod adresem h t t p : / / w w w . w3. or g/ XML . W dalszych zadaniach zajmiemy się natomiast problem em w ykorzysta­ nia X M L w PHP.

Z adanie 4.1.2. U tw orzenie klasy obsługi X M L - xm lTree Zastanów m y się jak w możliwie efektywny sposób da się odw zorow ać drzew ia­ stą strukturę w pam ięci komputera?

2.

Z apisujem y dokum ent do pliku zad411 ¡wydatki.xml.

Każde drzewo składa się z rozgałęzień pogrupowanych w węzły. W ęzeł począt­ kowy nazwiem y korzeniem (ang. root). Każdy następny w ęzeł musi zaw ierać infor­ mację o tym skąd wyrasta, czyli o swoim rodzicu (ang. parent), a także o swoich rozgałęzieniach, inaczej elementach (ang. items). Podstawowe operacje, jakie będą nam potrzebne, to dołożenie rozgałęzienia (insertltem), usunięcie rozgałęzienia (deleteltem) oraz pobranie kodu XM L dla danego węzła (getXML). Przyda się także m ożliw ość pobrania kopii podanego węzła (getCopy).

3.

Utw orzym y teraz odpow iedni dokum ent XSL, który przetw orzy nasze dane w w izualną form ę raportu.

Wykonanie:

< x s l : s t y l e s h e e t xmln s :x s l = " htt p :/ /w w w .w 3 .o r g/ 1999/X S L / T r a n s fo rm " v e r s i o n = " l . 0" > < x s l ¡output method="html"/ > < x s l : t e m p l ate match="/ ">

< T I T L E X x s l : val u e - o f se l e c t “ " / / o p i s / t y t u l " / > < / T I T L E >

< h 2 X xsl :value-of se le c t= "//o p is/o k re s"/X /h 2 >

1.

Odpow iednia definicja klasy węzła może wyglądać tak: