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