Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00031 005174 15188658 na godz. na dobę w sumie
PHP i MySQL. Dla każdego. Wydanie II - książka
PHP i MySQL. Dla każdego. Wydanie II - książka
Autor: Liczba stron: 656
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-4797-2 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> bazy danych >> mysql - programowanie
Porównaj ceny (książka, ebook, audiobook).

Dołącz do grona twórców dynamicznych serwisów WWW - poznaj najbardziej popularne technologie w branży!

PHP i MySQL są w świecie nowoczesnych, dynamicznych serwisów nierozłączne niemal jak Bonnie i Clyde, jednak w przeciwieństwie do pary słynnych przestępców mają przed sobą wspaniałą przyszłość. To właśnie dzięki tym dwóm technologiom funkcjonuje większość rozbudowanych witryn internetowych, na nich też opiera się działanie wielu najbardziej popularnych systemów zarządzania treścią. Nic w tym dziwnego, bo duet składający się z PHP i MySQL-a zapewnia ogromne możliwości, dużą elastyczność i wysoką stabilność pracy. Ponadto wystarczy znaleźć odpowiednie źródło wiedzy, by łatwo i szybko poznać obydwa te rozwiązania oraz opanować sposoby stosowania ich w praktyce.

Źródłem takim jest książka 'PHP i MySQL. Dla każdego. Wydanie II' . Dzięki niej początkujący twórcy serwisów bez kompleksów mogą wkroczyć w świat nowoczesnych technologii internetowych i nauczyć się sprawnie używać bezpłatnych narzędzi do pisania, testowania czy wdrażania aplikacji WWW, a bardziej zaawansowani - usystematyzować i rozszerzyć posiadaną wiedzę. Podręcznik krok po kroku prezentuje sposoby instalacji i konfiguracji środowiska pracy, omawia składnię i możliwości języka PHP, a także wskazuje, jak poprawnie projektować i tworzyć bazy danych działające w oparciu o mechanizm MySQL. Z książki dowiesz się, jak posługiwać się językiem SQL oraz jak połączyć możliwości PHP i MySQL-a, a ponadto jak za ich pomocą tworzyć praktyczne serwisy WWW.

Obowiązkowa pozycja w biblioteczce każdego początkującego twórcy serwisów WWW.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Redaktor prowadzący: Ewelina Burska Projekt okładki: Maciej Pasek Materiały graficzne na okładce zostały wykorzystane za zgodą Shutterstock. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie?phmdk2 Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Materiały do książki można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/phmdk2.zip ISBN: 978-83-246-4797-2 Copyright © Helion 2013 Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treĈci Wstöp ............................................................................................ 11 CzöĈè I Skrypty PHP — dynamiczne generowanie stron internetowych ..................................................... 13 Rozdziaä 1. Podstawy ....................................................................................... 15 Czym jest PHP? .............................................................................................................. 15 Krótka historia PHP ........................................................................................................ 16 NiezbĊdne narzĊdzia ....................................................................................................... 16 Instalacja w systemie Windows ...................................................................................... 17 Serwer WWW ....................................................................................................... 18 ĝrodowisko PHP ................................................................................................... 21 Testowanie instalacji ............................................................................................. 23 Instalacja w Linuksie ...................................................................................................... 23 Instalacja przy uĪyciu pakietów ............................................................................ 23 Konfiguracja PHP ........................................................................................................... 27 Typowe problemy ........................................................................................................... 27 Brak poáączenia z serwerem .................................................................................. 27 Serwer nie dziaáa po instalacji PHP ....................................................................... 28 Serwer dziaáa, ale nie obsáuguje PHP .................................................................... 29 Pierwszy skrypt .............................................................................................................. 30 Jak to dziaáa? .................................................................................................................. 31 Rozdziaä 2. Znaczniki, zmienne i typy danych .................................................... 33 Umieszczanie skryptów w kodzie HTML ...................................................................... 33 Znaczniki kanoniczne (klasyczne) ........................................................................ 33 Znaczniki skryptów HTML ................................................................................... 34 Znaczniki typu SGML ........................................................................................... 34 Znaczniki typu ASP .............................................................................................. 34 Proste wyĞwietlanie danych ............................................................................................ 35 Skrypty zewnĊtrzne ........................................................................................................ 35 Instrukcja include .................................................................................................. 36 Instrukcja require .................................................................................................. 37 WiĊcej o doáączaniu plików .................................................................................. 38 Komentarze w skryptach ................................................................................................ 39 Komentarz blokowy .............................................................................................. 40 Komentarz jednowierszowy .................................................................................. 40 Komentarz jednowierszowy uniksowy .................................................................. 41 4 PHP i MySQL. Dla kaĔdego Typy danych ................................................................................................................... 41 Typy skalarne ........................................................................................................ 42 Typy záoĪone ......................................................................................................... 46 Typy specjalne ...................................................................................................... 47 Zmienne .......................................................................................................................... 47 Zmienne w PHP .................................................................................................... 47 Tworzenie zmiennych ........................................................................................... 48 Jak wykryü typ zmiennej? ..................................................................................... 49 Zmienne superglobalne ......................................................................................... 51 Staáe ................................................................................................................................ 53 Staáe w PHP .......................................................................................................... 53 Staáe predefiniowane ............................................................................................. 54 Operatory ........................................................................................................................ 55 Operatory arytmetyczne ........................................................................................ 55 Operatory inkrementacji i dekrementacji .............................................................. 56 Operatory bitowe ................................................................................................... 59 Operatory logiczne ................................................................................................ 61 Operatory relacyjne ............................................................................................... 63 Operator áaĔcuchowy ............................................................................................ 63 Operatory przypisania ........................................................................................... 64 Operatory tablicowe .............................................................................................. 66 Pozostaáe operatory ............................................................................................... 67 Priorytety operatorów ............................................................................................ 70 Konwersje typów ............................................................................................................ 70 Zmiana typu zmiennej ........................................................................................... 70 Rzutowanie typów ................................................................................................. 72 Funkcje konwersji ................................................................................................. 73 Zasady konwersji .................................................................................................. 75 Rozdziaä 3. Instrukcje sterujñce i funkcje ......................................................... 77 Instrukcje warunkowe ..................................................................................................... 77 Instrukcja if…else ................................................................................................. 77 Instrukcja if…else if .............................................................................................. 78 ZagnieĪdĪanie instrukcji warunkowych ................................................................ 80 WyraĪenia warunkowe ................................................................................................... 84 Operator warunkowy ...................................................................................................... 85 Instrukcja wyboru Switch ............................................................................................... 85 PĊtle ................................................................................................................................ 89 PĊtla typu for ......................................................................................................... 89 PĊtla typu while ..................................................................................................... 93 PĊtla typu do…while ............................................................................................. 95 PĊtla typu foreach .................................................................................................. 96 Skáadnia alternatywna ..................................................................................................... 98 Instrukcje warunkowe ........................................................................................... 98 Instrukcja switch ................................................................................................... 99 PĊtle ..................................................................................................................... 100 Instrukcje break i continue ............................................................................................ 101 Instrukcja break ................................................................................................... 101 Instrukcja continue .............................................................................................. 103 Funkcje ......................................................................................................................... 104 Budowa funkcji ................................................................................................... 104 Argumenty funkcji .............................................................................................. 105 Zwracanie wartoĞci ............................................................................................. 107 ZasiĊg zmiennych ................................................................................................ 108 Argumenty funkcji raz jeszcze ............................................................................ 112 Spis treĈci 5 Rozdziaä 4. Tablice ........................................................................................ 117 Rodzaje tablic w PHP ................................................................................................... 117 Tablice zwykáe .................................................................................................... 117 Tablice asocjacyjne ............................................................................................. 120 Tablice wielowymiarowe ............................................................................................. 124 Tworzenie tablic wielowymiarowych ................................................................. 124 Tablice nieregularne ............................................................................................ 129 Operacje na tablicach .................................................................................................... 130 Sortowanie tablic klasycznych ............................................................................ 130 Sortowanie tablic asocjacyjnych ......................................................................... 133 Implozja i eksplozja ............................................................................................ 135 Operacje na elementach tablic ...................................................................................... 136 Zmiana kolejnoĞci elementów ............................................................................. 136 Poruszanie siĊ po tablicy ..................................................................................... 137 Dodawanie i pobieranie elementów .................................................................... 139 Liczba elementów tablicy ............................................................................................. 141 Rozdziaä 5. Programowanie zorientowane obiektowo ....................................... 143 Podstawy programowania obiektowego ....................................................................... 143 Tworzenie klas .................................................................................................... 143 Tworzenie obiektów ............................................................................................ 145 Odwoáania do skáadowych .................................................................................. 146 Wskazanie this .................................................................................................... 149 Konstruktory i destruktory ............................................................................................ 150 Budowa konstruktora .......................................................................................... 150 Argumenty konstruktorów .................................................................................. 152 Destruktory .......................................................................................................... 153 Dziedziczenie ............................................................................................................... 153 Czym jest dziedziczenie? .................................................................................... 153 Przesáanianie skáadowych .................................................................................... 157 Konstruktory klas bazowych ............................................................................... 159 Modyfikatory dostĊpu ................................................................................................... 160 Wyjątki ......................................................................................................................... 162 Zgáaszanie wyjątków ........................................................................................... 163 Przechwytywanie wyjątków ................................................................................ 164 Obsáuga kilku wyjątków ...................................................................................... 165 Rozdziaä 6. Przetwarzanie danych z przeglñdarki ............................................. 169 Metoda GET ................................................................................................................. 170 Metoda POST ............................................................................................................... 174 Wysyáanie plików (upload) ........................................................................................... 176 Odbieranie plików (download) ..................................................................................... 179 Wysáanie pojedynczego pliku ............................................................................. 180 Wysyáanie pliku wybieranego z listy ................................................................... 181 Automatyczne generowanie listy plików ............................................................ 184 Lista plików przechowywana w pliku tekstowym ............................................... 187 Rozdziaä 7. Ciñgi znaków, data i czas ............................................................. 193 Ciągi znaków ................................................................................................................ 193 Formatowanie ciągów ......................................................................................... 195 Porównywanie ciągów ........................................................................................ 204 Przeszukiwanie ciągów ....................................................................................... 206 Przetwarzanie ciągów .......................................................................................... 208 6 PHP i MySQL. Dla kaĔdego Data i czas .................................................................................................................... 212 Funkcja checkdate ............................................................................................... 212 Funkcja date ........................................................................................................ 213 Funkcja getdate ................................................................................................... 215 Funkcja gmdate ................................................................................................... 216 Funkcja localtime ................................................................................................ 217 Funkcja microtime .............................................................................................. 218 Funkcja mktime ................................................................................................... 218 Funkcja strftime .................................................................................................. 218 Funkcja strtotime ................................................................................................. 221 Funkcja time ........................................................................................................ 221 Rozdziaä 8. System plików ............................................................................. 223 Obsáuga struktury plików i katalogów .......................................................................... 223 Odczyt zawartoĞci katalogu ................................................................................. 223 Tworzenie i usuwanie katalogów ........................................................................ 227 Zmiana katalogu bieĪącego ................................................................................. 228 Odczytywanie informacji o plikach ..................................................................... 228 Miejsce na dysku ................................................................................................. 230 Usuwanie zawartoĞci katalogu ............................................................................ 231 Nawigacja po katalogach ..................................................................................... 232 Obsáuga plików ............................................................................................................. 235 Otwieranie i zamykanie plików ........................................................................... 235 Odczyt danych ..................................................................................................... 237 Zapis danych ....................................................................................................... 243 Poruszanie siĊ po danych w pliku ....................................................................... 247 Synchronizacja dostĊpu ....................................................................................... 248 Wykorzystanie plików do przechowywania danych ..................................................... 249 Zwykáy licznik tekstowy ..................................................................................... 250 Licznik graficzny ................................................................................................ 252 Gáosowanie .......................................................................................................... 254 Prosty system logowania ..................................................................................... 260 Generowanie listy odnoĞników ........................................................................... 263 Rozdziaä 9. Cookies i sesje ............................................................................ 265 Krótko o cookies ........................................................................................................... 265 Zapis i odczyt cookies .................................................................................................. 265 Jak zapisaü cookie? ............................................................................................. 265 Jak odczytaü cookie? ........................................................................................... 268 Jak usunąü cookie? .............................................................................................. 268 Korzystanie z cookies ................................................................................................... 269 Mechanizm sesji ........................................................................................................... 271 Obsáuga sesji ................................................................................................................. 272 Rozpoczynanie sesji ............................................................................................ 272 KoĔczenie sesji .................................................................................................... 273 Konfiguracja sesji ................................................................................................ 273 Zmienne sesji ...................................................................................................... 275 Implementacja sesji ...................................................................................................... 276 Uwierzytelnianie z wykorzystaniem mechanizmu sesji ...................................... 278 ĝledzenie uĪytkownika ........................................................................................ 284 Spis treĈci 7 CzöĈè II Tworzenie baz danych w MySQL .................................. 287 Rozdziaä 10. Podstawy MySQL ......................................................................... 289 Czym jest MySQL? ...................................................................................................... 289 Instalacja i konfiguracja ................................................................................................ 289 Instalacja w systemie Windows ........................................................................... 290 Konfiguracja w systemie Windows ..................................................................... 293 Instalacja w systemie Linux ................................................................................ 294 Zarządzanie serwerem .................................................................................................. 297 Uruchamianie serwera ......................................................................................... 297 KoĔczenie pracy serwera ..................................................................................... 298 Koncepcja relacyjnych baz danych ............................................................................... 300 Tabele .................................................................................................................. 300 Klucze ................................................................................................................. 300 Relacje ................................................................................................................. 301 Jak projektowaü tabele bazy? ....................................................................................... 304 OkreĞlenie celu .................................................................................................... 304 Duplikowanie danych (informacje nadmiarowe) ................................................ 305 Informacje atomowe ............................................................................................ 306 Puste pola ............................................................................................................ 307 Jednoznaczna identyfikacja rekordów ................................................................. 308 Tworzenie i usuwanie baz ............................................................................................ 308 àączenie z serwerem ........................................................................................... 308 Tworzenie i usuwanie baz ................................................................................... 310 Zarządzanie kontami uĪytkowników ............................................................................ 311 Tworzenie kont uĪytkowników ........................................................................... 311 Nadawanie uprawnieĔ ......................................................................................... 311 Nazwy uĪytkowników ......................................................................................... 314 Odbieranie praw .................................................................................................. 316 Zmiana nazwy konta uĪytkownika ...................................................................... 316 Usuwanie kont uĪytkowników ............................................................................ 317 Sprawdzanie przywilejów ................................................................................... 317 Inne czynnoĞci zarządzające ......................................................................................... 318 Praca z wieloma bazami ...................................................................................... 318 Pobieranie listy baz i tabel ................................................................................... 318 Kodowanie znaków ............................................................................................. 319 Wczytywanie poleceĔ z plików zewnĊtrznych .................................................... 322 Rozdziaä 11. Podstawy SQL .............................................................................. 323 Czym jest SQL? ............................................................................................................ 323 Typy danych w kolumnach ........................................................................................... 324 Typy liczbowe ..................................................................................................... 324 Typy daty i czasu ................................................................................................ 327 Typy áaĔcuchowe ................................................................................................ 329 Obsáuga tabel ................................................................................................................ 331 Tworzenie tabel ................................................................................................... 331 Pobranie struktury tabeli ..................................................................................... 334 Modyfikacja tabel ................................................................................................ 335 Usuwanie tabel .................................................................................................... 337 Zapytania wprowadzające dane .................................................................................... 337 Pierwsza postaü instrukcji INSERT .................................................................... 338 Druga postaü instrukcji INSERT ......................................................................... 339 Wstawianie wielu wierszy ................................................................................... 340 8 PHP i MySQL. Dla kaĔdego Zapytania pobierające dane .......................................................................................... 341 Pobieranie zawartoĞci caáej tabeli ....................................................................... 342 Sortowanie wyników ........................................................................................... 342 Pobieranie zawartoĞci wybranych kolumn .......................................................... 344 Zmiana nazw kolumn w wynikach zapytania ...................................................... 345 Selektywne pobieranie danych ............................................................................ 345 Ograniczanie liczby wierszy w wynikach zapytania ........................................... 351 Zapytania modyfikujące dane ....................................................................................... 351 Zapytania usuwające dane ............................................................................................ 353 Wstawianie specjalne ................................................................................................... 354 Rozdziaä 12. Wiöcej o SQL ............................................................................... 357 Pobieranie danych z wielu tabel ................................................................................... 357 Záączenia ............................................................................................................. 357 Typy záączeĔ ....................................................................................................... 359 Agregacja (grupowanie) danych ................................................................................... 363 Funkcje statystyczne ........................................................................................... 363 Grupowanie wyników zapytaĔ ............................................................................ 367 Warunki grupowania ........................................................................................... 369 Funkcje agregujące w záączeniach ...................................................................... 370 Typy tabel ..................................................................................................................... 374 Indeksy ......................................................................................................................... 374 WiĊzy integralnoĞci — klucze obce ............................................................................. 377 Tworzenie ograniczeĔ ......................................................................................... 377 Dodawanie i usuwanie ograniczeĔ w istniejących tabelach ................................ 379 Podzapytania ................................................................................................................ 380 Podzapytania proste ............................................................................................ 381 Podzapytania skorelowane .................................................................................. 382 Podzapytania w klauzuli FROM ......................................................................... 384 Podzapytania w instrukcjach INSERT, UPDATE, DELETE .............................. 385 Rozdziaä 13. Tworzenie bazy w praktyce ........................................................... 389 ZaáoĪenia ...................................................................................................................... 389 Diagramy tabel ............................................................................................................. 390 Tworzenie tabel ............................................................................................................ 393 Indeksy i wiĊzy integralnoĞci ....................................................................................... 402 Baza w praktyce ........................................................................................................... 406 Rozdziaä 14. Wspóäpraca PHP i MySQL ............................................................. 413 Konfiguracja PHP ......................................................................................................... 414 Obsáuga bazy za pomocą mysqli (interfejs proceduralny) ............................................ 415 àączenie z bazą danych ....................................................................................... 415 KoĔczenie poáączenia z bazą danych .................................................................. 416 Zmiana domyĞlnej bazy danych .......................................................................... 417 Testowanie poáączenia z bazą ............................................................................. 417 Obsáuga bazy za pomocą mysqli (interfejs obiektowy) ................................................ 418 àączenie z bazą danych ....................................................................................... 418 KoĔczenie poáączenia z bazą danych .................................................................. 418 Zmiana domyĞlnej bazy danych .......................................................................... 419 Testowanie poáączenia z bazą ............................................................................. 419 Obsáuga bazy za pomocą PDO ..................................................................................... 420 Nawiązywanie poáączenia ................................................................................... 420 Zamykanie poáączenia ......................................................................................... 420 Testowanie poáączenia z bazą ............................................................................. 421 Spis treĈci 9 Wykonywanie zapytaĔ pobierających dane .................................................................. 421 Styl proceduralny — mysqli ................................................................................ 421 Styl obiektowy — mysqli .................................................................................... 429 Styl obiektowy — PDO ....................................................................................... 432 Zapytania typu INSERT, UPDATE, DELETE ............................................................. 437 Styl proceduralny — mysqli ................................................................................ 437 Styl obiektowy — mysqli .................................................................................... 443 Styl obiektowy — PDO ....................................................................................... 445 Wybór sposobu obsáugi ................................................................................................ 448 Problem polskich liter ................................................................................................... 449 CzöĈè III PHP i MySQL w praktyce ............................................ 453 Rozdziaä 15. Autoryzacje .................................................................................. 455 Proste uwierzytelnianie ................................................................................................. 455 Zasady logowania ......................................................................................................... 459 Uwierzytelnianie z wykorzystaniem sesji ..................................................................... 461 Rejestracja nowych uĪytkowników .............................................................................. 467 Rozdziaä 16. Generowanie statystyk w portalu .................................................. 479 WstĊpne zaáoĪenia i struktura danych ........................................................................... 479 Struktura portalu ........................................................................................................... 481 Funkcje pomocnicze ..................................................................................................... 484 Jak rozpoznaü przeglądarkĊ i system operacyjny? ........................................................ 488 Zapisywanie historii odwiedzin .................................................................................... 489 Liczba uĪytkowników na stronie .................................................................................. 491 CzĊĞü gáówna ................................................................................................................ 494 Obsáuga logowania ....................................................................................................... 497 Generowanie statystyk .................................................................................................. 505 Rozdziaä 17. Zarzñdzanie kontami uĔytkowników .............................................. 515 Modyfikacja bazy danych ............................................................................................. 516 Struktura czĊĞci administracyjnej ................................................................................. 517 Obsáuga logowania ....................................................................................................... 522 Sterowanie skryptem zarządzania ................................................................................. 527 WyĞwietlanie listy uĪytkowników ................................................................................ 531 Dodawanie i modyfikacje rekordów ............................................................................. 535 Wyszukiwanie uĪytkowników ...................................................................................... 544 Usuwanie danych .......................................................................................................... 549 Rozdziaä 18. System news ............................................................................... 551 Ogólna struktura serwisu i bazy danych ....................................................................... 552 Newsy w czĊĞci frontowej ............................................................................................ 554 Rozbudowa systemu przywilejów ................................................................................ 561 Zarządzanie nowoĞciami w czĊĞci administracyjnej ..................................................... 565 WyĞwietlanie listy wiadomoĞci .................................................................................... 568 Dodawanie i edycja wiadomoĞci .................................................................................. 571 Wyszukiwanie wiadomoĞci .......................................................................................... 579 Usuwanie wiadomoĞci i kody powrotów ...................................................................... 584 Rozdziaä 19. Subskrypcje ................................................................................. 587 Struktura bazy danych .................................................................................................. 587 Subskrypcje w czĊĞci frontowej ................................................................................... 589 Struktura czĊĞci administracyjnej ................................................................................. 595 Moduá zarządzania subskrypcjami ................................................................................ 598 10 PHP i MySQL. Dla kaĔdego Rozdziaä 20. Tworzenie sklepu internetowego ................................................... 603 Gáówna czĊĞü serwisu ................................................................................................... 603 Logowanie i wylogowanie ............................................................................................ 609 Rejestracja nowych uĪytkowników .............................................................................. 614 Wyszukiwanie danych .................................................................................................. 621 Prezentacja szczegóáowych danych ksiąĪki .................................................................. 627 Obsáuga koszyka ........................................................................................................... 629 Struktura koszyka ................................................................................................ 629 Dodawanie ksiąĪek do koszyka ........................................................................... 630 WyĞwietlanie zawartoĞci ..................................................................................... 632 Modyfikacja ........................................................................................................ 636 Integracja koszyka ze sklepem ............................................................................ 637 Obsáuga zamówieĔ ....................................................................................................... 638 Podsumowanie zamówienia ................................................................................ 639 Zapisanie zamówienia w systemie ...................................................................... 640 Skorowidz .................................................................................... 645 Rozdziaä 4. Tablice Rodzaje tablic w PHP Tablice to wystĊpujące w wiĊkszoĞci jĊzyków programowania struktury, pozwalające na przechowywanie zbioru danych okreĞlonego typu. TablicĊ moĪna sobie wyobraziü jako wektor elementów, taki jak zaprezentowany na rysunku 4.1. ZawartoĞcią pojedyn- czej komórki tablicy moĪe byü wartoĞü dowolnego typu danych (inaczej niĪ w kla- sycznych jĊzykach programowania). W PHP dostĊpne są dwa rodzaje tablic: klasyczne (indeksowane numerycznie) oraz asocjacyjne. DostĊp do poszczególnych danych zawar- tych w tablicy uzyskuje siĊ poprzez podanie indeksu (inaczej klucza), pod którym dana wartoĞü zostaáa zapisana. Rysunek 4.1. Struktura typowej tablicy Tablice zwykäe Aby utworzyü prostą tablicĊ indeksowaną numerycznie, naleĪy uĪyü sáowa kluczo- wego array w schematycznej postaci: $tablica = array(wartoħè1, wartoħè2,..., wartoħèN); gdzie: tablica to nazwa zmiennej tablicowej, dziĊki której bĊdzie moĪna siĊ do tej tablicy odwoáywaü, natomiast wartoħè1, wartoħè2 itd. to wartoĞci kolejnych komórek. W przypadku duĪej liczby wartoĞci w celu zwiĊkszenia czytelnoĞci moĪna równieĪ zastosowaü zapis w postaci: $tablica = array ( wartoħè1, wartoħè2, 118 CzöĈè I i Skrypty PHP — dynamiczne generowanie stron internetowych ..., wartoħèN ); Zobaczmy, jak to bĊdzie wyglądaü w praktyce. Zobrazowano to w skrypcie widocz- nym na listingu 4.1. Listing 4.1. Deklaracja prostej tablicy ?php $kolory = array( czerwony , zielony , niebieski ); echo kolory[0] = $kolory[0] br / ; echo kolory[1] = $kolory[1] br / ; echo kolory[2] = $kolory[2] br / ; ? Powstaáa tutaj tablica $kolory, której kolejnym komórkom zostaáy przypisane ciągi znaków okreĞlające kolory: czerwony, zielony i niebieski. Aby uzyskaü dostĊp do wartoĞci zapisanej w danej komórce, naleĪy podaü jej numer (indeks) w nawiasie kwadratowym wystĊpującym za nazwą tablicy. NaleĪy przy tym pamiĊtaü, Īe indek- sowanie tablicy zaczyna siĊ od zera, co oznacza, iĪ indeksem pierwszej komórki jest 0, a NIE 1. Aby zatem odczytaü zawartoĞü pierwszej komórki, piszemy $kolory[0], dru- giej komórki — $kolory[1], a trzeciej komórki — $kolory[2]. DziĊki temu po uru- chomieniu skryptu na ekranie ukaĪe siĊ widok przedstawiony na rysunku 4.2. Rysunek 4.2. WyĞwietlenie zawartoĞci tablicy kolory Do odczytu zawartoĞci tablicy moĪna wykorzystaü równieĪ pĊtle. Są one przydatne w szczególnoĞci wtedy, gdy tablica ma duĪe rozmiary. Na listingu 4.2 zostaá przedsta- wiony skrypt realizujący takie samo zadanie jak skrypt z listingu 4.1 (czyli utworzenie tablicy i wyĞwietlenie jej zawartoĞci), który wykorzystuje jednak pĊtlĊ typu for. Listing 4.2. Wykorzystanie pĊtli for do wyĞwietlenia zawartoĞci tablicy ?php $kolory = array( czerwony , zielony , niebieski ); for($i = 0; $i 3; $i++){ echo kolory[$i] = $kolory[$i] br / ; } ? Tablica moĪe zostaü równieĪ utworzona poprzez bezpoĞrednie przypisywanie wartoĞci jej komórkom. Przykáadowo zamiast pisaü: $kolory = array( czerwony , zielony , niebieski ); Rozdziaä 4. i Tablice 119 moĪna wykorzystaü seriĊ instrukcji w postaci: $kolory[0] = czerwony ; $kolory[1] = zielony ; $kolory[2] = niebieski ; W ten sam sposób moĪna równieĪ zmieniaü zawartoĞü poszczególnych komórek. Taką technikĊ zobrazowano w skrypcie przedstawionym na listingu 4.3. Listing 4.3. Modyfikacja komórek tablicy ?php $kolory[0] = czerwony ; $kolory[1] = zielony ; $kolory[2] = niebieski ; echo Pierwotna zawartoħè tablicy: br / ; for($i = 0; $i 3; $i++){ $kolor = $kolory[$i]; echo kolory[$i] = $kolor br / ; } $kolory[0] = ľóđty ; $kolory[1] = fioletowy ; $kolory[2] = czarny ; echo br / Zawartoħè tablicy po zmianach: br / ; for($i = 0; $i 3; $i++){ $kolor = $kolory[$i]; echo kolory[$i] = $kolor br / ; } ? W pierwszej czĊĞci skryptu powstaáa tablica kolory, której kolejnym indeksom przy- pisane zostaáy wartoĞci czerwony, zielony i niebieski. ĝciĞlej rzecz ujmując, tablica powstaáa po wykonaniu instrukcji $kolory[0] = czerwony ;. Po napotkaniu tej instruk- cji i stwierdzeniu, Īe w skrypcie nie ma tablicy o nazwie $kolory, PHP tworzy ją, a nastĊpnie komórce o indeksie 0 przypisuje wartoĞü z prawej strony operatora przy- pisania =. NastĊpne dwie instrukcje to nic innego jak utworzenie kolejnych dwóch komórek w tablicy $kolory i przypisanie im wskazanych wartoĞci. Po przeprowadze- niu wymienionych operacji wykonywana jest pĊtla for, która wyĞwietla zawartoĞü caáej tablicy w przeglądarce. Za pĊtlą znajduje siĊ instrukcja $kolory[0] = ľóđty ;. PoniewaĪ istnieje juĪ tablica $kolory, instrukcja ta powoduje przypisanie komórce o indeksie 0 ciągu znaków ľóđty. W tym momencie zostaje równieĪ utracona poprzednia zawartoĞü tej komórki, czyli ciąg czerwony. Podobnie dziaáają dwie kolejne instrukcje. Zamieniają wystĊpujące w tablicy wartoĞci z komórek 1 i 2 na ciągi znaków fioletowy i czarny. Po przeprowa- dzeniu tych operacji jest wykonywana druga pĊtla for, która wysyáa do przeglądarki aktualną zawartoĞü tablicy. Tym samym po wykonaniu skryptu na ekranie pojawi siĊ widok zaprezentowany na rysunku 4.3. 120 CzöĈè I i Skrypty PHP — dynamiczne generowanie stron internetowych Rysunek 4.3. Ilustracja dziaáania skryptu z listingu 4.3 Tablice asocjacyjne Oprócz tablic indeksowanych numerycznie istnieją w PHP równieĪ tablice asocja- cyjne. W tablicach tego typu kaĪdemu indeksowi moĪna nadaü unikalną nazwĊ, czyli zamiast indeksów 0, 1, 2 itd. mogą wystĊpowaü indeksy: kolor, autor, procesor itp. NajczĊĞciej teĪ zamiast terminu indeks stosuje siĊ inny termin, a mianowicie klucz. Mówimy zatem, Īe w tablicy asocjacyjnej wystĊpują pary klucz – wartoĞü, w których kaĪdy klucz jednoznacznie identyfikuje przypisaną mu wartoĞü. TablicĊ tego typu tworzy siĊ (podobnie jak w przypadku tablic klasycznych indeksowanych numerycz- nie) za pomocą sáowa kluczowego array, konstrukcja ta ma jednak nieco inną postaü. Schematycznie wygląda to nastĊpująco: array ( klucz1 = wartoħè1, klucz2 = wartoħè2, ... kluczn = wartoħèn ); Na listingu 4.4 zostaá przedstawiony krótki skrypt, w którym pokazano, w jaki sposób utworzyü tablicĊ asocjacyjną i odczytaü zapisane w niej wartoĞci. Listing 4.4. Utworzenie tablicy asocjacyjnej ?php $kolory = array ( kolor1 = czerwony , kolor2 = zielony , kolor3 = niebieski ); echo Zawartoħè tablicy: br / ; echo kolory[ kolor1 ] = ; echo $kolory[ kolor1 ]; Rozdziaä 4. i Tablice 121 echo br / kolory[ kolor2 ] = ; echo $kolory[ kolor2 ]; echo br / kolory[ kolor3 ] = ; echo $kolory[ kolor3 ]; ? W skrypcie zostaáa utworzona tablica $kolory, która zawiera trzy klucze o nazwach: kolor1, kolor2 i kolor3. Kluczowi kolor1 zostaá przypisany ciąg znaków czerwony, kluczowi kolor2 — ciąg znaków zielony, a kluczowi kolor3 — ciąg znaków niebieski. DziĊki temu po zastosowaniu konstrukcji w schematycznej postaci: nazwa_tablicy[ nazwa_klucza ] otrzymujemy wartoĞü odpowiadającą danemu kluczowi. Ta konstrukcja zostaáa uĪyta do wyĞwietlenia zawartoĞci poszczególnych kluczy tablicy w przeglądarce. Instrukcja echo $kolory[ kolor1 ]; wyĞwietla zawartoĞü klucza kolor1, instrukcja echo $kolory ´[ kolor2 ] — klucza kolor2, a instrukcja echo $kolory[ kolor3 ] — klucza kolor3. Tym samym na ekranie zobaczymy widok zaprezentowany na rysunku 4.4. Rysunek 4.4. Efekt dziaáania skryptu z listingu 4.4 Drugim ze sposobów tworzenia tablicy asocjacyjnej jest uĪycie skáadni z nawiasem kwadratowym, podobnie jak miaáo to miejsce w przypadku tablic indeksowanych nume- rycznie. Schematycznie taka konstrukcja ma postaü: nazwa_tablicy[ nazwa_klucza ] = wartoħè_klucza; Na listingu 4.5 zostaá przedstawiony skrypt, który realizuje takie samo zadanie jak skrypt 4.4, czyli utworzenie tablicy asocjacyjnej i wyĞwietlenie jej zawartoĞci, ale wykorzystuje zaprezentowaną powyĪej skáadniĊ. Listing 4.5. Drugi sposób tworzenia tablic asocjacyjnych ?php $kolory[ kolor1 ] = czerwony ; $kolory[ kolor2 ] = zielony ; $kolory[ kolor3 ] = niebieski ; echo Zawartoħè tablicy: br / ; echo kolory[ kolor1 ] = ; echo $kolory[ kolor1 ]; echo br / kolory[ kolor2 ] = ; echo $kolory[ kolor2 ]; 122 CzöĈè I i Skrypty PHP — dynamiczne generowanie stron internetowych echo br / kolory[ kolor3 ] = ; echo $kolory[ kolor3 ]; ? Pierwsza instrukcja tego skryptu powoduje utworzenie tablicy asocjacyjnej $kolory oraz umieszczenie w niej klucza o nazwie kolor1, powiązanego z ciągiem znaków czerwony. Kolejne dwie instrukcje powodują umieszczenie w istniejącej juĪ tablicy dwóch kolejnych kluczy: kolor2 i kolor3 oraz przypisanie do nich odpowiadających im wartoĞci. ZawartoĞü poszczególnych kluczy tak utworzonej tablicy jest nastĊpnie wysyáana do przeglądarki za pomocą serii instrukcji echo. Do odczytu tablic asocjacyjnych moĪna, podobnie jak w przypadku tablic klasycznych, uĪyü pĊtli. Nie moĪe byü to jednak pĊtla typu for, gdyĪ nie zdoáa ona stwierdziü, jakie są wartoĞci kluczy. Dlatego teĪ tablice asocjacyjne są obsáugiwane przez pĊtle typu foreach (por. rozdziaá 3, sekcja „PĊtla typu foreach”). Taka pĊtla potrafi pobraü kolejne wartoĞci kluczy. Jak to zrobiü, zobrazowano w skrypcie z listingu 4.6. Listing 4.6. Wykorzystanie pĊtli typu foreach ?php $kolory[ kolor1 ] = czerwony ; $kolory[ kolor2 ] = zielony ; $kolory[ kolor3 ] = niebieski ; echo Zawartoħè tablicy: br / ; foreach($kolory as $kolor){ echo $kolor; echo br / ; } ? Konstrukcja tego typu pĊtli oznacza, Īe w kaĪdym jej przebiegu pod zmienną $kolor bĊdzie podstawiana wartoĞü kolejnego klucza. A zatem zmienna $kolor w pierwszym przebiegu pĊtli bĊdzie zawieraáa ciąg znaków czerwony, w drugim przebiegu — ciąg znaków zielony, a w trzecim przebiegu — ciąg znaków niebieski. W momencie gdy zostaną odczytane wartoĞci wszystkich kluczy, pĊtla zakoĔczy dziaáanie. W ten sposób uzyskamy jednak jedynie wartoĞci kluczy, nie zaĞ nazwy kluczy. JeĞli równieĪ ta infor- macja jest potrzebna, trzeba zastosowaü drugą wersjĊ pĊtli foreach. Przykáad tej kon- strukcji zostaá zaprezentowany na listingu 4.7. Listing 4.7. Inna wersja pĊtli foreach ?php $kolory[ kolor1 ] = czerwony ; $kolory[ kolor2 ] = zielony ; $kolory[ kolor3 ] = niebieski ; echo Zawartoħè tablicy: br / ; foreach($kolory as $klucz = $kolor){ echo kolory[ $klucz ] = $kolor ; echo br / ; Rozdziaä 4. i Tablice } ? 123 Tym razem w kaĪdym przebiegu pĊtli pod zmienną $klucz podstawiana jest nazwa kolejnego klucza, a pod zmienną $kolor — wartoĞü przypisana temu kluczowi. DziĊki temu za pomocą instrukcji echo moĪna wysáaü do przeglądarki wszystkie istotne infor- macje o zawartoĞci tablicy. Efekt dziaáania kodu bĊdzie taki sam jak skryptu z listingu 4.4 (rysunek 4.4). Modyfikacji zawartoĞci tablic asocjacyjnych dokonuje siĊ tak samo jak zmian w przy- padku tablic klasycznych. OczywiĞcie zamiast indeksów numerycznych trzeba zasto- sowaü wartoĞci kluczy. Aby zatem przypisaü nową wartoĞü juĪ istniejącemu kluczowi, trzeba skorzystaü z konstrukcji, której schematyczna postaü jest nastĊpująca: nazwa_tablicy[ nazwa_klucza ] = wartoħè; Na listingu 4.8 pokazany zostaá przykáadowy skrypt, który wykonuje modyfikacjĊ zawartoĞci tablicy asocjacyjnej $kolory. Listing 4.8. Modyfikacja zawartoĞci tablicy asocjacyjnej ?php $kolory[ kolor1 ] = czerwony ; $kolory[ kolor2 ] = zielony ; $kolory[ kolor3 ] = niebieski ; echo Zawartoħè tablicy po utworzeniu: br / ; foreach($kolory as $klucz = $kolor){ echo kolory[ $klucz ] = $kolor ; echo br / ; } $kolory[ kolor1 ] = ľóđty ; $kolory[ kolor2 ] = fioletowy ; $kolory[ kolor3 ] = czarny ; echo br / Zawartoħè tablicy po modyfikacji: br / ; foreach($kolory as $klucz = $kolor){ echo kolory[ $klucz ] = $kolor ; echo br / ; } Tablica $kolory jest tu tworzona analogicznie jak w poprzednim przykáadzie. Tak samo jest równieĪ wyĞwietlana jej pierwotna zawartoĞü. Kluczowi kolor1 zostaá przypisany ciąg znaków czerwony, kluczowi kolor2 — ciąg znaków zielony, a kluczowi kolor3 — ciąg znaków niebieski. Po wykonaniu pĊtli foreach, która wyĞwietla te dane na ekranie, wykonywana jest instrukcja $kolory[ kolor1 ] = ľóđty ;. PoniewaĪ tablica $kolory juĪ istnieje i jest w niej zawarty klucz kolor1, nastĊpuje modyfikacja przypi- sanej do niego wartoĞci z czerwony na ľóđty. Analogiczne operacje wykonywane są z wartoĞciami kluczy kolor2 i kolor3. Po wykonaniu tych modyfikacji zawartoĞü tablicy jest ponownie wysyáana do przeglądarki. Tym samym po uruchomieniu skryptu na ekra- nie pojawi siĊ widok zaprezentowany na rysunku 4.5. 124 CzöĈè I i Skrypty PHP — dynamiczne generowanie stron internetowych Rysunek 4.5. ZawartoĞü tablicy zostaáa zmodyfikowana Tablice wielowymiarowe Do tej pory omawiane byáy tablice jednowymiarowe, czyli takie, które są wektorami elementów, o strukturze przedstawionej na rysunku 4.1. Aby odczytaü dane z pojedyn- czej komórki, wystarczyáo podaü jej indeks lub w przypadku tablic asocjacyjnych — nazwĊ klucza. PHP umoĪliwia jednak budowanie bardziej skomplikowanych struktur — tablic wielowymiarowych. Przykáadowa struktura prostej tablicy dwuwymiarowej zostaáa przedstawiona na rysunku 4.6. Jak widaü, aby otrzymaü wartoĞü danej komórki, trzeba znaü dwie liczby okreĞlające jej poáoĪenie: numer rzĊdu i numer kolumny. Na przykáad komórka zawierająca wartoħè 8 znajduje siĊ w rzĊdzie o indeksie 1 i kolum- nie o indeksie 2. Rysunek 4.6. Struktura przykáadowej tablicy dwuwymiarowej Tworzenie tablic wielowymiarowych Do tworzenia tablic wielowymiarowych w PHP wykorzystuje siĊ fakt, Īe pojedyncza komórka zwykáej tablicy jednowymiarowej moĪe zawieraü dane dowolnego typu, a zatem równieĪ inną tablicĊ. Wynika z tego, Īe tablica dwuwymiarowa to nic innego jak tablica jednowymiarowa, w której komórkach zawarte zostaáy inne tablice jednowymiarowe. Rozdziaä 4. i Tablice 125 Spróbujmy wykonaü prosty przykáad. Na listingu 4.9 zostaá zaprezentowany kod two- rzący tablicĊ dwuwymiarową, w której komórkach zostaáy zawarte kolejne liczby od 1 do 6, a nastĊpnie wyĞwietlający jej zawartoĞü na ekranie. Listing 4.9. Tworzenie tablicy dwuwymiarowej ?php $tablica = array ( array(1, 2, 3), array(4, 5, 6) ); echo tablica[0][0] = . $tablica[0][0] . br / ; echo tablica[0][1] = . $tablica[0][1] . br / ; echo tablica[0][2] = . $tablica[0][2] . br / ; echo tablica[1][0] = . $tablica[1][0] . br / ; echo tablica[1][1] = . $tablica[1][1] . br / ; echo tablica[1][2] = . $tablica[1][2] . br / ; ? Konstrukcja tworząca tablicĊ $tablica dokáadnie odzwierciedla sposób, w jaki ona powstaje. W pierwszej komórce (o indeksie 0) zostaáa umieszczona tablica trójelemen- towa zawierająca liczby 1, 2, 3, natomiast w komórce drugiej (o indeksie 1) zostaáa umieszczona tablica (równieĪ trójelementowa) zawierająca liczby 4, 5, 6. Powstaáa wiĊc w ten sposób struktura o dwóch rzĊdach i trzech kolumnach. DostĊp do poszczegól- nych komórek wymaga zatem podania numeru wiersza i kolumny, co schematycznie wygląda nastĊpująco: $tablica[wiersz][kolumna] Ten sposób odwoáywania siĊ do komórek tablicy jest wykorzystywany (w instruk- cjach echo) do wyĞwietlenia wszystkich zawartych w niej wartoĞci w przeglądarce (rysunek 4.7). Rysunek 4.7. WyĞwietlenie zawartoĞci tablicy dwuwymiarowej Do odczytu zawartoĞci takiej tablicy moĪna równieĪ wykorzystaü dwie zagnieĪdĪone pĊtle for. Taki sposób jest szczególnie przydatny wówczas, gdy tablica ma duĪą liczbĊ wierszy i kolumn. W kodzie z listingu 4.10 zobrazowano, jak wykonaü takie zadanie dla tablicy powstaáej w poprzednim przykáadzie. 126 CzöĈè I i Skrypty PHP — dynamiczne generowanie stron internetowych Listing 4.10. Wykorzystanie pĊtli for do odczytu tablicy ?php $tablica = array ( array(1, 2, 3), array(4, 5, 6) ); for($i = 0; $i 2; $i++){ for($j = 0; $j 3; $j++){ $wart = $tablica[$i][$j]; echo tablica[$i][$j] = $wart ; echo br / ; } echo br / ; } ? ZewnĊtrzna pĊtla for (ze zmienną iteracyjną $i) kontroluje numer aktualnie odczyty- wanego wiersza tablicy, natomiast wewnĊtrzna pĊtla for (ze zmienną iteracyjną $j) kontroluje numer aktualnie odczytywanej kolumny tablicy. WartoĞci kolejnych komórek są po odczytaniu zapisywane w zmiennej pomocniczej $wart, która jest nastĊpnie wyko- rzystywana jako parametr w instrukcji echo. Tablice wielowymiarowe nie muszą byü indeksowane numerycznie — mogą byü równieĪ strukturami asocjacyjnymi. KaĪdemu indeksowi moĪna przypisaü jego wáa- sną nazwĊ. Spróbujmy wiĊc utworzyü i taką tablicĊ. ZaáóĪmy, Īe mają byü w niej przechowywane dane dotyczące ksiąĪek w bibliotece. Pojedynczy wiersz bĊdzie prze- chowywaá dane dotyczące tytuáu, autora i numeru katalogowego. Podstawowa tablica bĊdzie mogáa przechowywaü wiele takich wierszy, a wiĊc opisywaü wiele ksiąĪek. Jej struktura bĊdzie zatem nastĊpująca: $tablica = array( array( Autor = Autor1 , Tytuđ = Tytuđ1 , Numer = Numer1 ), array( Autor = Autor2 , Tytuđ = Tytuđ2 , Numer = Numer2 ), array( Autor = Autor3 , Tytuđ = Tytuđ3 , Numer = Numer3 ) ); W ten sposób otrzymalibyĞmy sam zbiór ksiąĪek. KsiąĪki w bibliotece zazwyczaj stoją jednak na regaáach. MoĪna by wiĊc wprowadziü dodatkową tablicĊ opisującą regaáy. Jej zawartoĞcią byáyby tablice opisujące ksiąĪki. Powstaáaby w ten sposób struktura trójwymiarowa, schematycznie przedstawiona na rysunku 4.8. Spróbujmy zbudowaü taką tablicĊ, wprowadzając do niej przykáadowe dane, a nastĊpnie wyĞwietlmy jej zawar- toĞü na ekranie. To zadanie realizuje skrypt widoczny na listingu 4.11. Rozdziaä 4. i Tablice Rysunek 4.8. Schematyczna struktura tablicy trójwymiarowej Listing 4.11. Skrypt obsáugujący tablicĊ trójwymiarową 127 ?php $biblioteka = array( regađ1 = array ( array( Autor = Marcin Lis , Tytuđ = PHP5. Praktyczny kurs , Numer = 123 ), array( Autor = Marcin Lis , Tytuđ = Tworzenie stron WWW. Praktyczny kurs , Numer = 234 ), array( Autor = Marcin Lis , Tytuđ = JavaScript. Praktyczny kurs , Numer = 345 ) ), regađ2 = array ( array( Autor = Orson Scott Card , Tytuđ = Gra Endera , Numer = 321 ), array( Autor = Orson Scott Card , Tytuđ = Cieē Endera , Numer = 432 ), array( Autor = Orson Scott Card , Tytuđ = Mistrz Pieħni , Numer = 543 ) ), regađ3 = array ( array( Autor = Alex Kava , Tytuđ = Zđo Konieczne , Numer = 213 ), array( Autor = Kathy Reichs , Tytuđ = Pogrzebane Tajemnice , Numer = 324 ), array( Autor = Harlan Coben , Tytuđ = Nie mów nikomu , Numer = 435 ) ) ); foreach($biblioteka as $regal_nazwa = $regal){ echo Regađ: $regal_nazwa br / ; foreach($regal as $ksiazka){ $autor = $ksiazka[ Autor ]; $tytuđ = $ksiazka[ Tytuđ ]; 128 CzöĈè I i Skrypty PHP — dynamiczne generowanie stron internetowych $numer = $ksiazka[ Numer ]; echo $autor | $tytuđ | $numer ; echo br / ; } echo br / ; } W kodzie zostaáa umieszczona gáówna tablica o nazwie $biblioteka. Zawiera ona trzy klucze o nazwach regađ1, regađ2 i regađ3. Pod kaĪdym kluczem znajdują siĊ kolejne tablice, które zawierają informacje opisujące ksiąĪki w danym regale. KaĪda taka tablica skáada siĊ z serii tablic jednowymiarowych o kluczach Autor, Tytuđ i Numer. Razem tworzy to peány opis ksiąĪek w bibliotece. PoniewaĪ rĊczne pobieranie danych w celu wyĞwietlenia caáej zawartoĞci tablicy $biblioteka byáoby bardzo niewygodne i czaso- cháonne, do ich prezentacji zostaáy wykorzystane dwie zagnieĪdĪone pĊtle foreach. PĊtla zewnĊtrzna odczytuje zawartoĞü kluczy tablicy gáównej $biblioteka. Pod zmienną $regal_nazwa podstawiane są nazwy odczytanych kluczy, natomiast pod zmienną $regal — ich zawartoĞü. ZawartoĞcią kaĪdego klucza jest tablica zawierająca spis ksiąĪek z danego regaáu, a zatem do jej odczytania wykorzystywana jest wewnĊtrzna pĊtla foreach. PĊtla ta odczytuje zawartoĞü kolejnych komórek tablicy $regal, pod- stawiając je pod zmienną $ksiazka. ZawartoĞü tej zmiennej jest po prostu tablicą jed- nowymiarową, która opisuje pojedynczą ksiąĪkĊ. Indeksami tej tablicy są wiĊc: Autor, Tytuđ i Numer. Dane te są odczytywane, zapisywane w zmiennych pomocniczych i wysy- áane do przeglądarki za pomocą instrukcji echo. Ostatecznie na ekranie zobaczymy zawartoĞü caáej biblioteki z podziaáem na regaáy, tak jak zostaáo to przedstawione na rysunku 4.9. Rysunek 4.9. Efekt dziaáania skryptu z listingu 4.11 Rozdziaä 4. i Tablice Tablice nieregularne 129 Tablice wielowymiarowe wcale nie muszą mieü takich regularnie prostokątnych ksztaá- tów jak dotychczas prezentowane. Prostokątnych, to znaczy takich, gdzie w kaĪdym wier
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

PHP i MySQL. Dla każdego. Wydanie II
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: