PHP, MySQL i MVC : tworzenie witryn WWW opartych na bazie

Transkrypt

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

Podobne dokumenty