PHP, MySQL i MVC. Tworzenie witryn WWW opartych na bazie danych (2).pdf

(10946 KB) Pobierz
> W t o d z i m i e r z
Gaj da
P
H
P
,
M
y
S
O
L
i
M
V
C
I
Tworzenie w itryn WWW
opartych na bazie danych
Helion
_ JL_®
Spis treści
W stęp...........................................................................................................13
Część I
Rozdział 1.
Akcje, widoki, translacje adresów URL i bazy danych,
czyli podstawy użycia MVC .....................................................15
Hello world — pierwsza aplikacja korzystająca z MVC ........................ 17
Projekt 1.1. Hello world! .........................................................................................................18
Krok pierwszy: utworzenie modułu m a in ....................................................................... 19
Krok drugi: utworzenie akcji hello w module main ......................................................19
Krok trzeci: utworzenie układu witryny W W W ............................................................20
Krok czwarty: reguła translacji adresu pierwszy-projekt.html
na wykonanie akcji main/hello .....................................................................................20
Krok piąty: skrypt index.php........................................................................................... 21
Pliki, które należy utworzyć ............................................................................................ 22
Uruchomienie projektu..................................................................................................... 23
Przebieg wykonania ......................................................................................................... 24
Rozdział 2.
Dołączanie zewnętrznych zasobów .css, .jpg, . j s ...................................27
Projekt 2.1. Wlazł kotek na schody.........................................................................................28
Analiza ścieżek zawartych w kodzie HTML ........................................................................31
Rozdział 3.
Błędy 404 .................................
35
Projekt 3.1. Żółta T urnia......................................................................................................... 36
Oglądanie strony błędu oraz nagłówka H T T P ............................................................... 38
Rozdział 4.
Zmienne i widoki........................................................................................41
Projekt 4.1.
Projekt 4.2.
Projekt 4.3.
Projekt 4.4.
Projekt 4.5.
Projekt 4.6.
Projekt 4.7.
Projekt 4.8.
Data i godzina — szablon PHP .........................................................................42
Data i godzina — szablon S m arty .................................................................... 45
Ojciec i syn — szablon PHP ............................................................................. 47
Ojciec i syn — szablony Smarty ...................................................................... 49
Stefan Żeromski:
Zmierzch
— szablonPHP .................................................... 50
Stefan Żeromski:
Zmierzch
— szablonySmarty .............................................. 53
Kolory CSS ......................................................................................................... 54
Kolory CSS — szablony S m arty.......................................................................56
Rozdział 5.
Pre- i postprzetwarzanie ........................................................................... 59
Projekt 5.1. F raszki.................................................................................................................. 60
Projekt 5.2. Fraszki — szablony Smarty .............................................................................. 68
6
PHP, MySQL i MVC. Tworzenie witryn WWW opartych na bazie danych
Spis treści
7
Rozdział 6. Translacja adresów URL .....
71
Projekt 6.1. K olędy ..................................................................................................................73
Analiza różnych rodzajów adresów URL .............................................................................77
Dwukierunkowość konwersji adresów ................................................................................. 78
Konwersje adresów w generowanych stronach WWW ...................................................... 79
Włączanie i wyłączanie translacji w yjściow ych.................................................................. 80
Konwersja adresów URL przy użyciu funkcji pom ocniczych........................................... 81
Implementacja funkcji pomocniczych w postaci wtyczek Sm arty.....................................82
Kilka zmiennych w adresach URL ........................................................................................83
Projekt 6.2. Ligi piłkarskie .....................................................................................................84
Zmienne $path_prefix oraz ###PATHJPREFIX###....................................................92
Krok trzeci: tworzenie pustej bazy danych...................................................................137
Krok czwarty: wypełnianie bazy danych na podstawie pliku tekstow ego................137
Krok piąty: zrzut wypełnionej bazy danych .................................................................138
Krok szósty: aplikacja prezentująca zawartość bazy danych..................................... 138
Projekt 9.2. Słownik (Doctrine, P H P ).................................................................................. 141
Krok pierwszy: projekt bazy d an y ch .............................................................................141
Krok drugi: generowanie klas dostępu do bazy danych.................................................. 141
Krok trzeci: tworzenie pustej bazy danych...................................................................142
Krok czwarty: wypełnianie bazy danych na podstawie pliku tekstow ego................142
Krok piąty: zrzut wypełnionej bazy danych .................................................................142
Krok szósty: aplikacja prezentująca zawartość bazy danych..................................... 143
Rozdział 7. Bazy danych................................................................................................ 95
Wizualne projektowanie bazy danych .................................................................................. 95
Oprogramowanie ORM .......................................................................................................... 99
Konwersja pliku .mwb do formatu Propel XML ............................................................... 100
Konwersja pliku .mwb do formatu Doctrine Y M L ............................................................101
db-fram e-tool...........................
101
Propel — generowanie klas dostępu do bazy .....................................................................102
ORM Propel — pierwsze kroki ........................................................................................... 104
Zestawienie wygenerowanych klas oraz najważniejszych m etod..............................104
Podstawy użycia klas wygenerowanych przez P ro p e l................................................105
Doctrine — generowanie klas dostępu do b a z y ................................................................. 106
ORM Doctrine — pierwsze k ro k i........................................................................................ 107
Zestawienie wygenerowanych klas oraz najważniejszych m etod..............................107
Podstawy użycia klas wygenerowanych przez Doctrine ............................................108
Projekt 7.1. Tatry (szablony PHP, P ropel)..........................................................................109
Krok pierwszy: projekt bazy danych ............................................................................ 110
Krok drugi: generowanie klas dostępu do bazy danych .............................................110
Krok trzeci: tworzenie pustej bazy danych .................................................................. 110
Krok czwarty: wypełnianie bazy danych na podstawie pliku tekstow ego............... 110
Krok piąty: zrzut wypełnionej bazy danych ................................................................ 113
Krok szósty: aplikacja prezentująca zawartość bazy danych.....................................114
Projekt 7.2. Tatry (szablony PHP, Doctrine) ......................................................................116
Krok pierwszy: projekt bazy danych ............................................................................ 116
Krok drugi: generowanie klas dostępu do bazy danych .............................................116
Krok trzeci: tworzenie pustej bazy danych.................................................................. 117
Krok czwarty: wypełnianie bazy danych na podstawie pliku tekstow ego................117
Krok piąty: zrzut wypełnionej bazy danych ................................................................ 118
Krok szósty: aplikacja prezentująca zawartość bazy danych..................................... 118
Projekt 7.3. Tatry (szablony Smarty, Propel)......................................................................119
Projekt 7.4. Tatry (szablony Smarty, Doctrine) ................................................................. 120
Rozdział 10. Wybieranie pojedynczego rekordu ......................................................... 145
Propel ...................................................................................................................................... 145
D octrine...................................................................................................................................147
Projekt 10.1.
Treny
(Propel, PHP) ....................................................................................... 147
Identyfikacja trenu wewnątrz akcji tren/show ............................................................. 151
Projekt 10.2.
Treny
(Doctrine, P H P ).................................................................................... 153
Rozdział 11. Relacje l:n .........
157
Metody generowane przez Propel dla relacji l : n ............................................................... 158
Doctrine i relacje l:n .............................................................................................................160
Projekt 11.1. Kontynenty, państwa, miasta (Propel, PHP) ............................................... 162
Przygotowanie bazy d anych...........................................................................................163
Aplikacja .......................................................................................................................... 167
Projekt 11.2. Kontynenty, państwa, miasta (Doctrine, PHP) ............................................173
Rozszerzanie właściwości klas generowanych przez Doctrine ................................. 174
Wstawianie rekordów ..................................................................................................... 176
Aplikacja .......................................................................................................................... 178
Rozdział 12. Relacje n:m .............................................................................................. 181
Metody generowane przez Propel dla relacji n :m .............................................................. 182
Doctrine i relacje n:m ............................................................................................................183
Projekt 12.1. Filmy (Propel, P H P )....................................................................................... 184
Przygotowanie bazy d anych ...........................................................................................184
Aplikacja ..........................................................................................................................187
Projekt 12.2. Filmy (Doctrine, PHP) ...................................................................................189
Propel. Sortowanie rekordów stojących w relacji n :m .......................................................192
Projekt 12.3. Filmy (Propel, PHP, sortowanie)...................................................................192
Doctrine. Sortowanie rekordów stojących w relacji n:m .................................................. 193
Projekt 12.4. Filmy (Doctrine, PHP, sortowanie) .............................................................. 194
Rozdział 13. Zagadnienia dodatkowe dotyczące warstw M oraz V ........................... 197
Czyszczenie zawartości bazy danych ..................................................................................197
Konwersja obiektu w n ap is................................................................................................... 198
Konwersje toArray(), fromArray() ...................................................................................... 198
Warunkowe wstawianie nieistniejących obiektów ............................................................200
Wielokrotne wykorzystanie widoku ....................................................................................201
Projekt 13.1. Aparaty foto (Propel, PHP) ........................................................................... 202
Warstwa M ...................................................................................................................... 202
Wypełnianie bazy danych ............................................................................................. 205
Aplikacja ..........................................................................................................................206
Projekt 13.2. Aparaty foto (Doctrine, P H P )........................................................................208
Rozszerzanie funkcjonalności klas wygenerowanych przez D octrine......................209
Wstawianie rekordów do bazy dan y ch .........................................................................211
Aplikacja ..........................................................................................................................212
Rozdział 8. Czego powinieneś nauczyć się z części pierwszej? ...........
123
Część II
Operowanie klasami wygenerowanymi przez Propel
oraz Doctrme ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
131
Propel — sortowanie rekordów ........................................................................................... 132
Doctrine — sortowanie rekordów ........................................................................................ 134
Projekt 9.1. Słownik (Propel, PHP) ..................................................................................... 134
Krok pierwszy: projekt bazy d an y ch ............................................................................ 135
Krok drugi: generowanie klas dostępu do bazy danych.................................................. 135
Rozdział 9. Wybieranie wszystkich rekordów z tabeli wzadanym porządku
8
PHP, MySQL i MVC. Tworzenie witryn WWW opartych na bazie danych
Spis treści
9
Rozdział 14. Zapisywanie w bazie danych obrazów i plików binarnych ..................215
Zapisywanie w bazie danych zdjęć JPG .............................................................................215
Prezentowanie zdjęć JPG zapisanych w bazie danych na stronie W W W .......................216
Zapisywanie w bazie danych dowolnych plików binarnych............................................ 218
Wysyłanie danych binarnych z bazy do przeglądarki....................................................... 220
Projekt 14.1. NotH (Propel, P H P )........................................................................................221
Skrypt wstaw.php ........................................................................................................... 223
Aplikacja ......................................................................................................................... 224
Tytuły stron .....................................................................................................................225
Rozwijane menu pionowe ............................................................................................. 226
Wartości atrybutów href oraz src w tekstach zapisanych w bazie danych............... 227
Projekt 14.2. NotH (Doctrine, PHP) ................................................................................... 229
Skrypt wstaw.php ........................................................................................................... 230
Aplikacja ......................................................................................................................... 230
Rozdział 20. Sortowanie tabel .......................................................................................311
Projekt 20.1. Piłka nożna — sezon 2002/2003 .................................................................. 312
Wielokrotne klucze obce z tej samej tabeli ................................................................. 314
Sortowanie złączeń dla wielokrotnych kluczy............................................................. 314
Wypełnianie bazy danych ..............................................................................................317
Zarys aplikacji .................................................................................................................320
Implementacja sortowalnych tabelek HTML .............................................................. 320
Rozdział 21. Stronicowanie ........................................................................................... 331
Projekt 21.1. 33 13 ................................................................................................................. 332
/
Automatyczne generowanie identyfikatorów slug dla rekordów
o zdublowanych tytułach ............................................................................................ 333
Klasa P ager...................................................................................................................... 335
Widok wskaźnika stronicowania...................................................................................343
Prezentacja rekordów poddanych stronicowaniu.........................................................345
Kontekstowe stronicowanie rekordów .........................................................................348
Rozdział 15. Akcje list i show, czyli publikowanie zawartości bazy danych
w postaci witryny W W W ......................................................................... 233
Projekt 15.1. Czcionki projektów CSS Zen Garden (Propel, PHP) ................................ 234
Aplikacja ......................................................................................................................... 235
Menu główne witryny oraz tytuły podstron.................................................................240
Rozdział 22. Alfabet........................................................................................................ 351
Projekt 22.1. Imiona ..............................................................................................................351
Wybieranie alfabetu lite r ................................................................................................352
Komponent wyświetlający alfabet....................................................................................... 353
Prezentacja liter rozpoczynających się od wybranej litery na stronie W W W
354
Umieszczanie kontrolki z listą liter w szablonie layout.html ....................................355
Rozdział 16. Czego powinieneś nauczyć się z części drugiej? .................................243
Część III
Zwiększanie funkcjonalności interfejsu
aplikacji internetowej .......................................................... 245
Projekt 17.1. Angaże (szablony PHP, Propel) ................................................................... 248
Unikatowość kolumny s lu g ........................................................................................... 248
Pliki tekstowe o bardziej złożonej strukturze ..............................................................250
Rozszerzenia warstwy M ............................................................................................... 251
Filtry konwertujące generowany kod HTML ..............................................................260
Aplikacja ......................................................................................................................... 261
Hiperłącza kontekstowe ................................................................................................ 263
Menu kontekstowe ......................................................................................................... 264
Rozdział 23. Chmura tagów .......................................................................................... 357
Projekt 23.1. Katalog Open Clipart .....................................................................................358
Wypełnianie bazy danych ............................................................................................. 360
Waga słów kluczow ych..................................................................................................363
Aplikacja ..........................................................................................................................365
Rozdział 17. Kontekstowe hiperłącza do stron ze szczegółowymi informacjami .. 247
Rozdział 24. Spis treści ................................................................................................. 371
Projekt 24.1. Artykuły ...........................................................................................................372
Wypełnianie bazy danych rekordami ........................................................................... 373
Funkcje odpowiedzialne za odczytywanie i usuwanie fragmentów kodu HTML ..... 376
Funkcje odpowiedzialne za tworzenie spisu treści ..................................................... 378
Kolorowanie składni ...................................................................................................... 380
Aplikacja ..........................................................................................................................381
Rozdział 18. Następny, poprzedni, czyli przewijanie zawartości witryny WWW .... 267
Projekt 18.1. PHP. Praktyczne projekty.............................................................................. 269
Ograniczenia kluczy obcych..........................................................................................270
Wstępne opracowanie aplikacji .....................................................................................271
Implementacja hiperłączy następny/poprzedni........................................................... 276
Hiperłącza link zawarte w nagłówku strony W W W ...................................................285
Rozdział 25. Czego powinieneś nauczyć się z części trzeciej? .................................383
Część IV Formaty danych .................................................................. 385
Rozdział 26. Podstawy przetwarzania dokumentów XML w PHP ............................. 387
Klasa SimpleXM L................................................................................................................. 387
Tworzenie obiektu SimpleXMLElement......................................................................388
Dostęp do węzłów drzew a..............................................................................................389
Lista identycznych elementów ......................................................................................390
Dostęp do atrybutów ...................................................................................................... 391
Przetwarzanie wszystkich elementów i ich atrybutów ...............................................391
Wielokrotne zagnieżdżenia ........................................................................................... 392
Język X P ath ..................................................................................................................... 395
Przykładowe dokumenty XML dostępne w intemecie ..................................................... 395
Kursy walut ..................................................................................................................... 395
Książki wydawnictwa H elion........................................................................................ 397
Projekt 26.1. Turniej Czterech Skoczni .............................................................................. 398
Aplikacja ..........................................................................................................................400
Rozdział 19. Wskaźnik położenia................................................................................. 287
Projekt 19.1. Kolekcja płyt DVD z fotografiami ...............................................................288
Rozszerzanie klas dostępu do bazy danych ................................................................. 291
Wypełnianie bazy danych rekordami ...........................................................................295
Aplikacja ..........................................................................................................................302
Translacje adresów stosujących cztery zmienne U R L ................................................304
Tabela zdjęć wykonana bez użycia tabel H T M L ........................................................ 305
Wskaźniki następny/poprzedni do przewijania zdjęć i kategorii.............................. 306
Efekt rollover ze wskaźnikiem wybranej o p cji............................................................307
Fotografie podążające za wskaźnikiem m y szk i...........................................................307
Wskaźnik breadcrumbs ..................................................................................................310
10
PHP, MySQL i MVC. Tworzenie witryn WWW opartych na bazie danych
Spis treści
11
Rozdział 27. Generowanie dokumentów XML w PHP ................................................403
Statyczne pliki XML ............................................................................................................ 403
Generowanie dokumentu XML w PHP ..............................................................................405
Echo — drukowanie kodu XML .........................................................................................406
Generowanie XML na podstawie tablicy ...........................................................................407
Generowanie XML na podstawie pliku tekstowego ......................................................... 408
Zapisywanie kodu XML do p lik u ....................................................................................... 409
Konwersja pliku tekstowego do formatu XML .................................................................409
Dane w formacie XML opisujące witrynę W W W ............................................................ 410
Mapa witryny: sitem ap.xm l...........................................................................................410
Kanał RSS ....................................................................................................................... 411
Projekt 27.1. Kursy w a lu t.................................................................................................... 412
Ustalanie adresów dokumentów XML z kursami w a lu t............................................ 412
Projekt bazy danych .......................................................................................................413
Wypełnianie bazy danych rekordami ...........................................................................413
Aplikacja ......................................................................................................................... 415
Kanał RSS ....................................................................................................................... 415
Mapa witryny ..................................................................................................................416
Wykresy kursów w a lu t.................................................................................................. 418
Wysyłanie arkusza do przeglądarki .....................................................................................453
Konwersja pliku tekstowego do formatu XLS ............................................................453
Konwersja pliku XLS do formatu tekstow ego................................................................... 454
Projekt 29.1. Generowanie danych autokomisu................................................................. 455
Projekt 29.2. A utokom is....................................................................................................... 460
Wypełnianie bazy danych rekordami ...........................................................................460
Aplikacja ..........................................................................................................................465
Rozdział 30. Konwersja plików z danymi .................................................................. 467
Format danych tekstow ych...................................................................................................467
Format danych XML ............................................................................................................ 469
Format danych XLS ..............................................................................................................470
Projekt 30.1. Konwersja formatu TXT do formatu XML ................................................470
Projekt 30.2. Konwersja formatu TXT do formatu XLS ................................................ 474
Projekt 30.3. Konwersja formatu XML do formatu TXT .................................................476
Projekt 30.4. Konwersja formatu XML do formatu XLS .................................................477
Projekt 30.5. Konwersja formatu XLS do formatu TXT ................................................ 478
Projekt 30.6. Konwersja formatu XLS do formatu XML ................................................480
Projekt 30.7. Zestawienia artykułów „Magazynu INTERNET” ......................................480
Aplikacja ..........................................................................................................................483
Akcja list prezentująca sortowalną i stronicowaną tabelkę HTML ..........................484
Akcja show prezentująca sortowalną i stronicowaną tabelkę H T M L .......................486
Rozdział 28. XML_Serializer, XMLJJnserializer
— dwukierunkowe transformacje tablic w XML ................................423
XM L_Serializer.....................................................................................................................423
Konwersja tablicy w kod XML .................................................................................... 423
Tablica asocjacyjna ........................................................................................................424
Opcje ................................................................................................................................425
Tablica o p c ji....................................................................................................................426
Jednowymiarowa tablica indeksowana........................................................................ 426
Wielowymiarowe tablice indeksowane ....................................................................... 427
Atrybuty .......................................................................................................................... 428
Wybiórcze stosowanie atrybutów ................................................................................. 429
Przekształcenia............................................................................................................... 430
XML_Serializer — przykłady ............................................................................................ 431
Projekt 28.1. Konwersja pliku nobel.txt ............................................................................431
Projekt 28.2. Konwersja pliku m ecze.txt............................................................................432
Projekt 28.3. Konwersja pliku tc s.tx t.................................................................................. 434
Klasa X M L JJnserializer......................................................................................................436
Podstawowe użycie ........................................................................................................ 436
Odczyt p lik u ....................................................................................................................437
Parsing atrybutów ........................................................................................................... 437
Konwersja formatu XML .....................................................................................................439
Projekt 28.4. Konwersja jeden-w -w iele..............................................................................439
Projekt 28.5. Konwersja w iele-w-jeden..............................................................................440
Projekt 28.6. Klasyfikacja zwierząt .................................................................................... 441
Wypełnianie bazy danych rekordami ...........................................................................442
Moduły i akcje aplikacji ................................................................................................ 443
Akcja main/drzewo ........................................................................................................444
Kanał RSS ....................................................................................................................... 444
Generowanie statycznego dokumentu sitemap.xml....................................................447
Rozdział 31. Skompresowane dokumenty XML zawierające dane binarne
489
Kodowanie base64 .................................................................................................................490
Dekodowanie base64 ............................................................................................................ 490
Kompresja d an y ch .................................................................................................................491
Dekompresja danych ............................................................................................................ 492
Projekt 31.1. Format danych systemu do publikowania artykułów .................................493
Umieszczanie ilustracji, listingów, ramek i tabel w treści artykułu.......................... 495
Projekt 31.2. Konwersja artykułu z formatu tekstowego do spakowanego pliku
XML .................................................................................................................................... 495
Projekt 31.3. System publikacji artykułów w postaci witryny W W W ............................ 498
Baza danych .................................................................................................................... 499
Propel i dostęp tylko do wybranych kolumn tabeli .................................................... 499
Wypełnianie bazy danych ............................................................................................. 501
Aplikacja ..........................................................................................................................508
Rozdział 32. Czego powinieneś nauczyć się z części czwartej? ..............................511
Skorowidz ..................................................................................................513
Rozdział 29. Arkusze kalkulacyjne MS Excel XLS .................................................... 449
Odczyt pliku X L S ..................................................................................................................449
Odczyt kilku arkuszy......................................................................................................451
Tworzenie pliku XLS ........................................................................................................... 452
Zgłoś jeśli naruszono regulamin