E-book details

PHP, MySQL i MVC. Tworzenie witryn WWW opartych na bazie danych

PHP, MySQL i MVC. Tworzenie witryn WWW opartych na bazie danych

Włodzimierz Gajda

Ebook
  • Model architektoniczny MVC
  • Szablony PHP i szablony Smarty
  • Wizualne projektowanie baz danych
  • Mapowanie relacyjno-obiektowe
  • Oprogramowanie Propel oraz Doctrine
  • Formaty TXT, XML oraz XLS

Duża część popularnych serwisów internetowych dostępnych obecnie w sieci działa w oparciu o relacyjne bazy danych i język PHP. Tandem ten stał się już niemal standardem w dziedzinie tworzenia rozbudowanych, dynamicznych witryn i aplikacji WWW zarówno w przypadku wielkich przedsiębiorstw, jak i hobbystów pragnących dzielić się swoimi doświadczeniami za pośrednictwem internetu. PHP i MySQL doskonale nadają się do praktycznej realizacji wzorca architektonicznego MVC, ułatwiającego opracowywanie nawet najbardziej złożonych projektów. Dzięki odseparowaniu poszczególnych komponentów aplikacji i podzieleniu jej na mniejsze elementy funkcjonalne tworzona witryna jest znacznie wygodniejsza w zarządzaniu i modyfikacji niż serwisy oparte na innych wzorcach.

Wzorzec architektoniczny MVC — choć opracowany z myślą o uproszczeniu życia programistom i twórcom witryn WWW — początkowo bardzo trudno zrozumieć, a postęp w dziedzinie tworzenia stron internetowych wymusza ciągłe dostosowywanie się do panujących na rynku trendów i stałe odświeżanie wiedzy na ten temat. Pomocą posłuży tu odpowiednia książka — z pewnością może nią być "PHP, MySQL i MVC. Tworzenie witryn WWW opartych na bazie danych ". W przystępny sposób prezentuje ona podstawy zastosowania architektury MVC, pokazuje wykorzystanie dwóch najważniejszych rozwiązań do mapowania obiektowo-relacyjnego, podsuwa techniki tworzenia funkcjonalnych interfejsów użytkownika aplikacji WWW oraz proponuje stosowanie różnych formatów do przechowywania danych. Poszczególne zagadnienia ilustrowane są przykładami i praktycznymi projektami, dzięki czemu łatwiej zrozumieć opisywane techniki i wykorzystać je w swoich aplikacjach. Zdobytą wiedzę pomagają utrwalić liczne ćwiczenia do samodzielnego wykonania.

  • Podstawy użycia wzorca MVC
  • Moduły, akcje, widoki, szablony PHP i szablony Smarty
  • Reguły translacji przyjaznych adresów URL
  • Używanie baz danych w projektach WWW
  • Wizualne projektowanie baz danych i mapowanie relacyjno-obiektowe
  • Wykorzystanie oprogramowania Propel oraz Doctrine
  • Metody zwiększania funkcjonalności interfejsów aplikacji internetowych
  • Stronicowanie wyników i przewijanie rekordów
  • Chmura tagów
  • Korzystanie z formatów TXT, XML, XLS
  • Odczyt plików i wypełnianie bazy danych
  • Pliki skompresowane i osadzanie danych binarnych w plikach XML

Poznaj w praktyce nowoczesne metody
tworzenia zaawansowanych aplikacji WWW!

Wszystkie projekty omówione w książce umieszczono na płycie dołączonej do książki. Każdy z projektów jest dostępny jako kompletne, działające rozwiązanie, dokładnie przetestowane.

Wstęp (13)

Część I: Akcje, widoki, translacje adresów URL i bazy danych, czyli podstawy użycia MVC (15)

Rozdział 1. Hello world - pierwsza aplikacja korzystająca z MVC (17)

  • Projekt 1.1. Hello world! (18)
    • Krok pierwszy: utworzenie modułu main (19)
    • Krok drugi: utworzenie akcji hello w module main (19)
    • Krok trzeci: utworzenie układu witryny WWW (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, .js (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 Turnia (36)
    • Oglądanie strony błędu oraz nagłówka HTTP (38)

Rozdział 4. Zmienne i widoki (41)

  • Projekt 4.1. Data i godzina - szablon PHP (42)
  • Projekt 4.2. Data i godzina - szablon Smarty (45)
  • Projekt 4.3. Ojciec i syn - szablon PHP (47)
  • Projekt 4.4. Ojciec i syn - szablony Smarty (49)
  • Projekt 4.5. Stefan Żeromski: Zmierzch - szablon PHP (50)
  • Projekt 4.6. Stefan Żeromski: Zmierzch - szablony Smarty (53)
  • Projekt 4.7. Kolory CSS (54)
  • Projekt 4.8. Kolory CSS - szablony Smarty (56)

Rozdział 5. Pre- i postprzetwarzanie (59)

  • Projekt 5.1. Fraszki (60)
  • Projekt 5.2. Fraszki - szablony Smarty (68)

Rozdział 6. Translacja adresów URL (71)

  • Projekt 6.1. Kolę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 wyjściowych (80)
  • Konwersja adresów URL przy użyciu funkcji pomocniczych (81)
  • Implementacja funkcji pomocniczych w postaci wtyczek Smarty (82)
  • Kilka zmiennych w adresach URL (83)
  • Projekt 6.2. Ligi piłkarskie (84)
    • Zmienne $path_prefix oraz ###PATH_PREFIX### (92)

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 YML (101)
  • db-frame-tool (101)
  • Propel - generowanie klas dostępu do bazy (102)
  • ORM Propel - pierwsze kroki (104)
    • Zestawienie wygenerowanych klas oraz najważniejszych metod (104)
    • Podstawy użycia klas wygenerowanych przez Propel (105)
  • Doctrine - generowanie klas dostępu do bazy (106)
  • ORM Doctrine - pierwsze kroki (107)
    • Zestawienie wygenerowanych klas oraz najważniejszych metod (107)
    • Podstawy użycia klas wygenerowanych przez Doctrine (108)
  • Projekt 7.1. Tatry (szablony PHP, Propel) (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 tekstowego (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 tekstowego (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ł 8. Czego powinieneś nauczyć się z części pierwszej? (123)

Część II: Operowanie klasami wygenerowanymi przez Propel oraz Doctrine (129)

Rozdział 9. Wybieranie wszystkich rekordów z tabeli w zadanym porządku (131)

  • Propel - sortowanie rekordów (132)
  • Doctrine - sortowanie rekordów (134)
  • Projekt 9.1. Słownik (Propel, PHP) (134)
    • Krok pierwszy: projekt bazy danych (135)
    • Krok drugi: generowanie klas dostępu do bazy danych (135)
    • Krok trzeci: tworzenie pustej bazy danych (137)
    • Krok czwarty: wypełnianie bazy danych na podstawie pliku tekstowego (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, PHP) (141)
    • Krok pierwszy: projekt bazy danych (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 tekstowego (142)
    • Krok piąty: zrzut wypełnionej bazy danych (142)
    • Krok szósty: aplikacja prezentująca zawartość bazy danych (143)

Rozdział 10. Wybieranie pojedynczego rekordu (145)

  • Propel (145)
  • Doctrine (147)
  • Projekt 10.1. Treny (Propel, PHP) (147)
    • Identyfikacja trenu wewnątrz akcji tren/show (151)
  • Projekt 10.2. Treny (Doctrine, PHP) (153)

Rozdział 11. Relacje 1:n (157)

  • Metody generowane przez Propel dla relacji 1:n (158)
  • Doctrine i relacje 1:n (160)
  • Projekt 11.1. Kontynenty, państwa, miasta (Propel, PHP) (162)
    • Przygotowanie bazy danych (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, PHP) (184)
    • Przygotowanie bazy danych (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 napis (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, PHP) (208)
    • Rozszerzanie funkcjonalności klas wygenerowanych przez Doctrine (209)
    • Wstawianie rekordów do bazy danych (211)
    • Aplikacja (212)

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 WWW (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, PHP) (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ł 15. Akcje list i show, czyli publikowanie zawartości bazy danych w postaci witryny WWW (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ł 16. Czego powinieneś nauczyć się z części drugiej? (243)

Część III: Zwiększanie funkcjonalności interfejsu aplikacji internetowej (245)

Rozdział 17. Kontekstowe hiperłącza do stron ze szczegółowymi informacjami (247)

  • Projekt 17.1. Angaże (szablony PHP, Propel) (248)
    • Unikatowość kolumny slug (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ł 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 WWW (285)

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 URL (304)
    • Tabela zdjęć wykonana bez użycia tabel HTML (305)
    • Wskaźniki następny/poprzedni do przewijania zdjęć i kategorii (306)
    • Efekt rollover ze wskaźnikiem wybranej opcji (307)
    • Fotografie podążające za wskaźnikiem myszki (307)
    • Wskaźnik breadcrumbs (310)

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 ? (332)
    • Automatyczne generowanie identyfikatorów slug dla rekordów o zdublowanych tytułach (333)
    • Klasa Pager (335)
    • Widok wskaźnika stronicowania (343)
    • Prezentacja rekordów poddanych stronicowaniu (345)
    • Kontekstowe stronicowanie rekordów (348)

Rozdział 22. Alfabet (351)

  • Projekt 22.1. Imiona (351)
    • Wybieranie alfabetu liter (352)
  • Komponent wyświetlający alfabet (353)
    • Prezentacja liter rozpoczynających się od wybranej litery na stronie WWW (354)
    • Umieszczanie kontrolki z listą liter w szablonie layout.html (355)

Rozdział 23. Chmura tagów (357)

  • Projekt 23.1. Katalog Open Clipart (358)
    • Wypełnianie bazy danych (360)
    • Waga słów kluczowych (363)
    • Aplikacja (365)

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ł 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 SimpleXML (387)
    • Tworzenie obiektu SimpleXMLElement (388)
    • Dostęp do węzłów drzewa (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 XPath (395)
  • Przykładowe dokumenty XML dostępne w internecie (395)
    • Kursy walut (395)
    • Książki wydawnictwa Helion (397)
  • Projekt 26.1. Turniej Czterech Skoczni (398)
    • Aplikacja (400)

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 pliku (409)
  • Konwersja pliku tekstowego do formatu XML (409)
  • Dane w formacie XML opisujące witrynę WWW (410)
    • Mapa witryny: sitemap.xml (410)
    • Kanał RSS (411)
  • Projekt 27.1. Kursy walut (412)
    • Ustalanie adresów dokumentów XML z kursami walut (412)
    • Projekt bazy danych (413)
    • Wypełnianie bazy danych rekordami (413)
    • Aplikacja (415)
    • Kanał RSS (415)
    • Mapa witryny (416)
    • Wykresy kursów walut (418)

Rozdział 28. XML_Serializer, XML_Unserializer - dwukierunkowe transformacje tablic w XML (423)

  • XML_Serializer (423)
    • Konwersja tablicy w kod XML (423)
    • Tablica asocjacyjna (424)
    • Opcje (425)
    • Tablica opcji (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 mecze.txt (432)
  • Projekt 28.3. Konwersja pliku tcs.txt (434)
  • Klasa XML_Unserializer (436)
    • Podstawowe użycie (436)
    • Odczyt pliku (437)
    • Parsing atrybutów (437)
  • Konwersja formatu XML (439)
  • Projekt 28.4. Konwersja jeden-w-wiele (439)
  • Projekt 28.5. Konwersja wiele-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ł 29. Arkusze kalkulacyjne MS Excel XLS (449)

  • Odczyt pliku XLS (449)
    • Odczyt kilku arkuszy (451)
  • Tworzenie pliku XLS (452)
  • Wysyłanie arkusza do przeglądarki (453)
    • Konwersja pliku tekstowego do formatu XLS (453)
  • Konwersja pliku XLS do formatu tekstowego (454)
  • Projekt 29.1. Generowanie danych autokomisu (455)
  • Projekt 29.2. Autokomis (460)
    • Wypełnianie bazy danych rekordami (460)
    • Aplikacja (465)

Rozdział 30. Konwersja plików z danymi (467)

  • Format danych tekstowych (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ę HTML (486)

Rozdział 31. Skompresowane dokumenty XML zawierające dane binarne (489)

  • Kodowanie base64 (490)
  • Dekodowanie base64 (490)
  • Kompresja danych (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 WWW (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)

zz

Wstęp (13)

Część I: Akcje, widoki, translacje adresów URL i bazy danych, czyli podstawy użycia MVC (15)

Rozdział 1. Hello world - pierwsza aplikacja korzystająca z MVC (17)

  • Projekt 1.1. Hello world! (18)
    • Krok pierwszy: utworzenie modułu main (19)
    • Krok drugi: utworzenie akcji hello w module main (19)
    • Krok trzeci: utworzenie układu witryny WWW (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, .js (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 Turnia (36)
    • Oglądanie strony błędu oraz nagłówka HTTP (38)

Rozdział 4. Zmienne i widoki (41)

  • Projekt 4.1. Data i godzina - szablon PHP (42)
  • Projekt 4.2. Data i godzina - szablon Smarty (45)
  • Projekt 4.3. Ojciec i syn - szablon PHP (47)
  • Projekt 4.4. Ojciec i syn - szablony Smarty (49)
  • Projekt 4.5. Stefan Żeromski: Zmierzch - szablon PHP (50)
  • Projekt 4.6. Stefan Żeromski: Zmierzch - szablony Smarty (53)
  • Projekt 4.7. Kolory CSS (54)
  • Projekt 4.8. Kolory CSS - szablony Smarty (56)

Rozdział 5. Pre- i postprzetwarzanie (59)

  • Projekt 5.1. Fraszki (60)
  • Projekt 5.2. Fraszki - szablony Smarty (68)

Rozdział 6. Translacja adresów URL (71)

  • Projekt 6.1. Kolę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 wyjściowych (80)
  • Konwersja adresów URL przy użyciu funkcji pomocniczych (81)
  • Implementacja funkcji pomocniczych w postaci wtyczek Smarty (82)
  • Kilka zmiennych w adresach URL (83)
  • Projekt 6.2. Ligi piłkarskie (84)
    • Zmienne $path_prefix oraz ###PATH_PREFIX### (92)

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 YML (101)
  • db-frame-tool (101)
  • Propel - generowanie klas dostępu do bazy (102)
  • ORM Propel - pierwsze kroki (104)
    • Zestawienie wygenerowanych klas oraz najważniejszych metod (104)
    • Podstawy użycia klas wygenerowanych przez Propel (105)
  • Doctrine - generowanie klas dostępu do bazy (106)
  • ORM Doctrine - pierwsze kroki (107)
    • Zestawienie wygenerowanych klas oraz najważniejszych metod (107)
    • Podstawy użycia klas wygenerowanych przez Doctrine (108)
  • Projekt 7.1. Tatry (szablony PHP, Propel) (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 tekstowego (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 tekstowego (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ł 8. Czego powinieneś nauczyć się z części pierwszej? (123)

Część II: Operowanie klasami wygenerowanymi przez Propel oraz Doctrine (129)

Rozdział 9. Wybieranie wszystkich rekordów z tabeli w zadanym porządku (131)

  • Propel - sortowanie rekordów (132)
  • Doctrine - sortowanie rekordów (134)
  • Projekt 9.1. Słownik (Propel, PHP) (134)
    • Krok pierwszy: projekt bazy danych (135)
    • Krok drugi: generowanie klas dostępu do bazy danych (135)
    • Krok trzeci: tworzenie pustej bazy danych (137)
    • Krok czwarty: wypełnianie bazy danych na podstawie pliku tekstowego (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, PHP) (141)
    • Krok pierwszy: projekt bazy danych (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 tekstowego (142)
    • Krok piąty: zrzut wypełnionej bazy danych (142)
    • Krok szósty: aplikacja prezentująca zawartość bazy danych (143)

Rozdział 10. Wybieranie pojedynczego rekordu (145)

  • Propel (145)
  • Doctrine (147)
  • Projekt 10.1. Treny (Propel, PHP) (147)
    • Identyfikacja trenu wewnątrz akcji tren/show (151)
  • Projekt 10.2. Treny (Doctrine, PHP) (153)

Rozdział 11. Relacje 1:n (157)

  • Metody generowane przez Propel dla relacji 1:n (158)
  • Doctrine i relacje 1:n (160)
  • Projekt 11.1. Kontynenty, państwa, miasta (Propel, PHP) (162)
    • Przygotowanie bazy danych (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, PHP) (184)
    • Przygotowanie bazy danych (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 napis (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, PHP) (208)
    • Rozszerzanie funkcjonalności klas wygenerowanych przez Doctrine (209)
    • Wstawianie rekordów do bazy danych (211)
    • Aplikacja (212)

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 WWW (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, PHP) (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ł 15. Akcje list i show, czyli publikowanie zawartości bazy danych w postaci witryny WWW (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ł 16. Czego powinieneś nauczyć się z części drugiej? (243)

Część III: Zwiększanie funkcjonalności interfejsu aplikacji internetowej (245)

Rozdział 17. Kontekstowe hiperłącza do stron ze szczegółowymi informacjami (247)

  • Projekt 17.1. Angaże (szablony PHP, Propel) (248)
    • Unikatowość kolumny slug (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ł 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 WWW (285)

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 URL (304)
    • Tabela zdjęć wykonana bez użycia tabel HTML (305)
    • Wskaźniki następny/poprzedni do przewijania zdjęć i kategorii (306)
    • Efekt rollover ze wskaźnikiem wybranej opcji (307)
    • Fotografie podążające za wskaźnikiem myszki (307)
    • Wskaźnik breadcrumbs (310)

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 ? (332)
    • Automatyczne generowanie identyfikatorów slug dla rekordów o zdublowanych tytułach (333)
    • Klasa Pager (335)
    • Widok wskaźnika stronicowania (343)
    • Prezentacja rekordów poddanych stronicowaniu (345)
    • Kontekstowe stronicowanie rekordów (348)

Rozdział 22. Alfabet (351)

  • Projekt 22.1. Imiona (351)
    • Wybieranie alfabetu liter (352)
  • Komponent wyświetlający alfabet (353)
    • Prezentacja liter rozpoczynających się od wybranej litery na stronie WWW (354)
    • Umieszczanie kontrolki z listą liter w szablonie layout.html (355)

Rozdział 23. Chmura tagów (357)

  • Projekt 23.1. Katalog Open Clipart (358)
    • Wypełnianie bazy danych (360)
    • Waga słów kluczowych (363)
    • Aplikacja (365)

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ł 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 SimpleXML (387)
    • Tworzenie obiektu SimpleXMLElement (388)
    • Dostęp do węzłów drzewa (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 XPath (395)
  • Przykładowe dokumenty XML dostępne w internecie (395)
    • Kursy walut (395)
    • Książki wydawnictwa Helion (397)
  • Projekt 26.1. Turniej Czterech Skoczni (398)
    • Aplikacja (400)

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 pliku (409)
  • Konwersja pliku tekstowego do formatu XML (409)
  • Dane w formacie XML opisujące witrynę WWW (410)
    • Mapa witryny: sitemap.xml (410)
    • Kanał RSS (411)
  • Projekt 27.1. Kursy walut (412)
    • Ustalanie adresów dokumentów XML z kursami walut (412)
    • Projekt bazy danych (413)
    • Wypełnianie bazy danych rekordami (413)
    • Aplikacja (415)
    • Kanał RSS (415)
    • Mapa witryny (416)
    • Wykresy kursów walut (418)

Rozdział 28. XML_Serializer, XML_Unserializer - dwukierunkowe transformacje tablic w XML (423)

  • XML_Serializer (423)
    • Konwersja tablicy w kod XML (423)
    • Tablica asocjacyjna (424)
    • Opcje (425)
    • Tablica opcji (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 mecze.txt (432)
  • Projekt 28.3. Konwersja pliku tcs.txt (434)
  • Klasa XML_Unserializer (436)
    • Podstawowe użycie (436)
    • Odczyt pliku (437)
    • Parsing atrybutów (437)
  • Konwersja formatu XML (439)
  • Projekt 28.4. Konwersja jeden-w-wiele (439)
  • Projekt 28.5. Konwersja wiele-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ł 29. Arkusze kalkulacyjne MS Excel XLS (449)

  • Odczyt pliku XLS (449)
    • Odczyt kilku arkuszy (451)
  • Tworzenie pliku XLS (452)
  • Wysyłanie arkusza do przeglądarki (453)
    • Konwersja pliku tekstowego do formatu XLS (453)
  • Konwersja pliku XLS do formatu tekstowego (454)
  • Projekt 29.1. Generowanie danych autokomisu (455)
  • Projekt 29.2. Autokomis (460)
    • Wypełnianie bazy danych rekordami (460)
    • Aplikacja (465)

Rozdział 30. Konwersja plików z danymi (467)

  • Format danych tekstowych (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ę HTML (486)

Rozdział 31. Skompresowane dokumenty XML zawierające dane binarne (489)

  • Kodowanie base64 (490)
  • Dekodowanie base64 (490)
  • Kompresja danych (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 WWW (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)

  • Title: PHP, MySQL i MVC. Tworzenie witryn WWW opartych na bazie danych
  • Author: Włodzimierz Gajda
  • ISBN: 978-83-283-2409-1, 9788328324091
  • Date of issue: 2015-11-24
  • Format: Ebook
  • Item ID: aplphp
  • Publisher: Helion