PHP i MySQL Dla kazdego Wydanie II phmdk2


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ądz 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 znalezć pod adresem:
ftp://ftp.helion.pl/przyklady/phmdk2.zip
ISBN: 978-83-246-4797-2
Copyright © Helion 2013
Printed in Poland.
" Kup książkę " Księgarnia internetowa
" Poleć książkę " Lubię to! Nasza społeczność
" Oceń książkę
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
Poleć książkę
Kup książkę
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
Poleć książkę
Kup książkę
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
Poleć książkę
Kup książkę
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
Poleć książkę
Kup książkę
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
Poleć książkę
Kup książkę
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
Poleć książkę
Kup książkę
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
Poleć książkę
Kup książkę
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
Poleć książkę
Kup książkę
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,
Poleć książkę
Kup książkę
118 Cz 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
$kolory = array("czerwony", "zielony", "niebieski");
echo "kolory[0] = $kolory[0]
";
echo "kolory[1] = $kolory[1]
";
echo "kolory[2] = $kolory[2]
";
?>
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
$kolory = array("czerwony", "zielony", "niebieski");
for($i = 0; $i < 3; $i++){
echo "kolory[$i] = $kolory[$i]
";
}
?>
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");
Poleć książkę
Kup książkę
Rozdzia 4. 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
$kolory[0] = "czerwony";
$kolory[1] = "zielony";
$kolory[2] = "niebieski";
echo "Pierwotna zawarto tablicy:
";
for($i = 0; $i < 3; $i++){
$kolor = $kolory[$i];
echo "kolory[$i] = $kolor
";
}
$kolory[0] = " ó ty";
$kolory[1] = "fioletowy";
$kolory[2] = "czarny";
echo "
Zawarto tablicy po zmianach:
";
for($i = 0; $i < 3; $i++){
$kolor = $kolory[$i];
echo "kolory[$i] = $kolor
";
}
?>
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.
Poleć książkę
Kup książkę
120 Cz 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
$kolory = array
(
"kolor1" => "czerwony",
"kolor2" => "zielony",
"kolor3" => "niebieski"
);
echo "Zawarto tablicy:
";
echo "kolory['kolor1'] = ";
echo $kolory['kolor1'];
Poleć książkę
Kup książkę
Rozdzia 4. Tablice 121
echo "
kolory['kolor2'] = ";
echo $kolory['kolor2'];
echo "
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
$kolory['kolor1'] = "czerwony";
$kolory['kolor2'] = "zielony";
$kolory['kolor3'] = "niebieski";
echo "Zawarto tablicy:
";
echo "kolory['kolor1'] = ";
echo $kolory['kolor1'];
echo "
kolory['kolor2'] = ";
echo $kolory['kolor2'];
Poleć książkę
Kup książkę
122 Cz I Skrypty PHP  dynamiczne generowanie stron internetowych
echo "
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
$kolory['kolor1'] = "czerwony";
$kolory['kolor2'] = "zielony";
$kolory['kolor3'] = "niebieski";
echo "Zawarto tablicy:
";
foreach($kolory as $kolor){
echo $kolor;
echo "
";
}
?>
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
$kolory['kolor1'] = "czerwony";
$kolory['kolor2'] = "zielony";
$kolory['kolor3'] = "niebieski";
echo "Zawarto tablicy:
";
foreach($kolory as $klucz => $kolor){
echo "kolory['$klucz'] = $kolor";
echo "
";
Poleć książkę
Kup książkę
Rozdzia 4. 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
$kolory['kolor1'] = "czerwony";
$kolory['kolor2'] = "zielony";
$kolory['kolor3'] = "niebieski";
echo "Zawarto tablicy po utworzeniu:
";
foreach($kolory as $klucz => $kolor){
echo "kolory['$klucz'] = $kolor";
echo "
";
}
$kolory['kolor1'] = " ó ty";
$kolory['kolor2'] = "fioletowy";
$kolory['kolor3'] = "czarny";
echo "
Zawarto tablicy po modyfikacji:
";
foreach($kolory as $klucz => $kolor){
echo "kolory['$klucz'] = $kolor";
echo "
";
}
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.
Poleć książkę
Kup książkę
124 Cz 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.
Poleć książkę
Kup książkę
Rozdzia 4. 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
$tablica = array
(
array(1, 2, 3),
array(4, 5, 6)
);
echo "tablica[0][0] = " . $tablica[0][0] . "
";
echo "tablica[0][1] = " . $tablica[0][1] . "
";
echo "tablica[0][2] = " . $tablica[0][2] . "
";
echo "tablica[1][0] = " . $tablica[1][0] . "
";
echo "tablica[1][1] = " . $tablica[1][1] . "
";
echo "tablica[1][2] = " . $tablica[1][2] . "
";
?>
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.
Poleć książkę
Kup książkę
126 Cz I Skrypty PHP  dynamiczne generowanie stron internetowych
Listing 4.10. Wykorzystanie p tli for do odczytu tablicy
$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 "
";
}
echo "
";
}
?>
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.
Poleć książkę
Kup książkę
Rozdzia 4. Tablice 127
Rysunek 4.8.
Schematyczna
struktura tablicy
trójwymiarowej
Listing 4.11. Skrypt obs uguj cy tablic trójwymiarow
$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
";
foreach($regal as $ksiazka){
$autor = $ksiazka['Autor'];
$tytu = $ksiazka['Tytu '];
Poleć książkę
Kup książkę
128 Cz I Skrypty PHP  dynamiczne generowanie stron internetowych
$numer = $ksiazka['Numer'];
echo "$autor | $tytu | $numer";
echo "
";
}
echo "
";
}
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
Poleć książkę
Kup książkę
Rozdzia 4. Tablice 129
Tablice nieregularne
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
wierszu znajduje si taka sama liczba komórek (czyli struktur podobnych do prezento-
wanej na rysunku 4.6). Nic nie stoi na przeszkodzie, aby stworzy struktur trójk tn
(rysunek 4.10 A) lub te ca kiem nieregularn (rysunek 4.10 B). Przygotowywanie
takich struktur wymaga jednak wi cej pracy ni w przypadku tablic regularnych, gdy
przewa nie ka dy wiersz trzeba tu tworzy oddzielnie.
Rysunek 4.10.
Przyk ady
nieregularnych tablic
wielowymiarowych
Jak tworzy tego typu struktury? Wiadomo ju , e tablice wielowymiarowe to tak
naprawd tablice tablic jednowymiarowych. A zatem tablica dwuwymiarowa to tablica
jednowymiarowa zawieraj ca szereg tablic jednowymiarowych, tablica trójwymiarowa
to tablica jednowymiarowa zawieraj ca w sobie tablice dwuwymiarowe itd. Spróbujmy
zatem stworzy struktur widoczn na rysunku 4.10 B, wype nion warto ciami od
1 do 10, i wy wietli jej zawarto w przegl darce. To zadanie realizuje kod widoczny
na listingu 4.12.
Listing 4.12. Tworzenie tablicy nieregularnej
$tablica = array
(
array(1, 2, 3, 4),
array(5, 6),
array(7),
array(8, 9, 10)
);
foreach($tablica as $tab){
foreach($tab as $val){
echo "$val ";
}
echo "
";
}
?>
Posta skryptu nie powinna by adnym zaskoczeniem. Sposób tworzenia tablicy jest
analogiczny do przedstawionego w poprzednich przyk adach, z t ró nic e tym razem
tablice sk adowe maj ró ne wielko ci. Pierwsza zawiera cztery komórki, druga 
dwie, trzecia  jedn , a czwarta  trzy. Sposób odczytywania zawarto ci jest równie
podobny jak w przyk adzie z listingu 4.11, a nawet nieco prostszy. P tla zewn trzna
odczytuje kolejne komórki tablicy $tablica. Ka da z tych komórek zawiera kolejn
Poleć książkę
Kup książkę
130 Cz I Skrypty PHP  dynamiczne generowanie stron internetowych
tablic o pewnej liczbie elementów, które odczytywane s za pomoc wewn trznej
p tli foreach. Tym samym po uruchomieniu skryptu zobaczymy taki widok jak na
rysunku 4.11.
Rysunek 4.11.
Zawarto tablicy
nieregularnej
z przyk adu 4.12
Operacje na tablicach
Sortowanie tablic klasycznych
Jedn z operacji cz sto wykonywanych na tablicach jest sortowanie, czyli ustawienie
elementów w okre lonym porz dku. PHP oferuje kilka wbudowanych funkcji sortuj -
cych. Zobaczmy, w jaki sposób mo na z nich korzysta . Funkcj podstawow jest
sort. Dzia a ona zarówno na warto ciach liczbowych, jak i na ci gach znaków. Jako
argument jej wywo ania nale y poda nazw tablicy. Spójrzmy na listing 4.13. Zawiera
on kod sortuj cy dwie ró ne tablice.
Listing 4.13. Sortowanie za pomoc funkcji sort
$tab1 = array(5, 7, 3, 1, 8, 2, 0, 4, 9, 6);
$tab2 = array('jeden', 'dwa', 'trzy', 'cztery', 'pi ');
echo "Zawarto tablic przed sortowaniem:
";
foreach($tab1 as $val){
echo "$val ";
}
echo "
";
foreach($tab2 as $val){
echo "$val ";
}
sort($tab1);
sort($tab2);
echo "

Zawarto tablic po sortowaniu:
";
foreach($tab1 as $val){
echo "$val ";
}
echo "
";
foreach($tab2 as $val){
Poleć książkę
Kup książkę
Rozdzia 4. Tablice 131
echo "$val ";
}
?>
Efekt wykonania skryptu zosta przedstawiony na rysunku 4.12. Jak wida , obie tablice
zosta y poprawnie posortowane. Oczywi cie w przypadku tablicy $tab1 sortowane by y
liczby, wi c warto ci zosta y ustawione od najmniejszej do najwi kszej, natomiast
w przypadku tablicy $tab2 sortowane by y ci gi znaków, a zatem s owa zosta y usta-
wione w porz dku alfabetycznym. Co jednak zrobi w sytuacji, gdyby trzeba by o
wykona sortowanie odwrotne, czyli np. ustawi warto ci z tablicy $tab1 od najwi kszej
do najmniejszej? Nie ma z tym najmniejszego problemu. Wystarczy u y funkcji rsort
(z ang. reverse sort), która wykona to zadanie.
Rysunek 4.12.
Efekt sortowania
tablic
Wi cej problemów przysporzy sytuacja, w której konieczne b dzie ustawienie elemen-
tów tablicy w specyficznej kolejno ci, odmiennej od standardowego porz dku. Do
wyboru s wtedy dwie drogi. Trzeba albo samodzielnie napisa ca funkcj wyko-
nuj c sortowanie, albo te wykorzysta specjaln wersj funkcji sortuj cej  usort 
w po czeniu z funkcj porównuj c dwa elementy. Schematyczne wywo anie takiej
funkcji ma posta :
usort($tablica, 'nazwa_funkcji')
gdzie $tablica to nazwa tablicy, której elementy b d sortowane, a nazwa_funkcji to
nazwa funkcji dokonuj cej porównania dwóch elementów. Ta ostatnia funkcja b dzie
otrzymywa a dwa elementy sortowanej tablicy w postaci argumentów, musi natomiast
zwraca :
warto mniejsz od zera, je li pierwszy argument jest mniejszy od drugiego;
warto wi ksz od zera, je li pierwszy argument jest wi kszy od drugiego;
warto równ zero, je li pierwszy argument jest równy drugiemu.
Zobaczmy, jak to dzia a na konkretnym przyk adzie. Powstanie skrypt, który zawarto
tablicy przechowuj cej liczby ca kowite b dzie sortowa w taki sposób, e najpierw
umieszczone b d warto ci podzielne przez dwa (od najmniejszej do najwi kszej),
a dopiero po nich warto ci niepodzielne przez dwa  równie od najmniejszej do naj-
wi kszej. To zadanie realizuje kod z listingu 4.14.
Poleć książkę
Kup książkę
132 Cz I Skrypty PHP  dynamiczne generowanie stron internetowych
Listing 4.14. Realizacja niestandardowego sortowania
function sortuj($e1, $e2)
{
if($e1 % 2 == 0){
if($e2 % 2 == 0){
return $e1 - $e2;
}
else{
return -1;
}
}
else{
if($e2 % 2 == 0){
return 1;
}
else{
return $e1 - $e2;
}
}
}
$tab1 = array(5, 7, 3, 1, 8, 2, 0, 4, 9, 6);
echo "Zawarto tablicy przed sortowaniem:
";
foreach($tab1 as $val){
echo("$val ");
}
echo "
";
usort($tab1, 'sortuj');
echo "Zawarto tablicy po sortowaniu:
";
foreach($tab1 as $val){
echo "$val ";
}
?>
Tablica jest tworzona w standardowy sposób i jej pocz tkowa zawarto jest wy wie-
tlana na ekranie. Nast pnie wywo ywana jest funkcja usort, która wykonuje operacj
sortowania, a potem zawarto posortowanej tablicy jest ponownie wy wietlana na
ekranie. Tym samym w przegl darce uka e si obraz widoczny na rysunku 4.13. Jak
wida , uk ad liczb jest zgodny z za o eniami  najpierw umieszczone s liczby podzielne
przez dwa (od najmniejszej do najwi kszej), a za nimi liczby niepodzielne przez dwa
(równie od najmniejszej do najwi kszej). Za takie uporz dkowanie elementów tablicy
odpowiada kombinacja funkcji usort i sortuj.
Funkcja usort realizuje algorytm sortowania typu QuickSort. Poniewa sortowanie
ma odbywa si wed ug niestandardowych zasad, trzeba tej funkcji dostarczy dodat-
kow funkcj , która b dzie porównywa a dwa dowolne elementy tablicy tab1. T
funkcj jest sortuj. Przy porównywaniu dwóch dowolnych elementów tablicy tab1
mo liwe s cztery ró ne sytuacje:
Poleć książkę
Kup książkę
Rozdzia 4. Tablice 133
Rysunek 4.13.
Efekt
niestandardowego
sortowania
1. Pierwszy argument jest podzielny przez dwa (e1 % 2 równe 0) i drugi argument
jest równie podzielny przez dwa (e2 % 2 równe 0). W takiej sytuacji nale y
zwróci warto mniejsz od zera, je li pierwszy argument jest mniejszy; warto
wi ksz od zera, je li drugi argument jest mniejszy; lub warto 0, je li argumenty
s równe. Zapewnia to instrukcja return $e1 - $e2;.
2. Pierwszy argument jest podzielny przez dwa (e1 % 2 równe 0), natomiast drugi
argument nie jest podzielny przez dwa (e2 % 2 ró ne od 0). W takiej sytuacji
argument pierwszy zawsze powinien znale si przed argumentem drugim,
a zatem nale y zwróci warto mniejsz od zera. Zapewnia to instrukcja
return -1;.
3. Pierwszy argument nie jest podzielny przez dwa (e1 % 2 ró ne od 0), a drugi
argument jest podzielny przez dwa (e2 % 2 równe 0). W takiej sytuacji argument
pierwszy zawsze powinien znale si za argumentem drugim, a zatem nale y
zwróci warto wi ksz od zera. Zapewnia to instrukcja return 1;.
4. Pierwszy argument nie jest podzielny przez dwa (e1 % 2 ró ne od 0) i drugi
argument równie nie jest podzielny przez dwa (e2 % 2 ró ne od 0). W takiej
sytuacji nale y zwróci warto mniejsz od zera, je li pierwszy argument jest
mniejszy; warto wi ksz od zera, je li drugi argument jest mniejszy; oraz
warto 0, je li argumenty s równe. Zapewnia to instrukcja return $e1 - $e2;.
Sortowanie tablic asocjacyjnych
W przypadku tablic asocjacyjnych nie mo na u y zwyk ej funkcji sort, gdy spo-
woduje ona utrat kluczy. atwo si o tym przekona , uruchamiaj c skrypt widoczny na
listingu 4.15. Zosta a w nim utworzona tablica $tab zawieraj ca cztery klucze z przypi-
sanymi warto ciami ca kowitymi. Tablica ta zosta a nast pnie posortowana za pomoc
funkcji sort. Zawarto przed sortowaniem i po nim zosta a wy wietlona za pomoc
p tli foreach i instrukcji echo. Jak wida na rysunku 4.14, efekt takiego dzia ania nie
jest zadowalaj cy. Co prawda warto ci zosta y posortowane, ale jednocze nie zosta y
utracone nazwy indeksów.
Listing 4.15. U ycie funkcji sort do sortowania tablicy asocjacyjnej
$tab = array
(
'indeks1' => 5,
'indeks9' => 1,
Poleć książkę
Kup książkę
134 Cz I Skrypty PHP  dynamiczne generowanie stron internetowych
'indeks3' => 8,
'indeks5' => 2
);
echo "Zawarto tablicy przed sortowaniem:
";
foreach($tab as $key => $val){
echo "tab['$key'] = $val";
echo "
";
}
sort($tab);
echo "
Zawarto tablicy po sortowaniu:
";
foreach($tab as $key => $val){
echo "tab['$key'] = $val";
echo "
";
}
?>
Rysunek 4.14.
Utrata nazw indeksów
po nieprawid owym
sortowaniu tablicy
asocjacyjnej
Aby zatem posortowa tablic asocjacyjn , trzeba u y innych funkcji, a mianowicie:
asort i ksort. Pierwsza z nich sortuje tablic wzgl dem warto ci poszczególnych kluczy,
natomiast druga wzgl dem samych kluczy. Oznacza to, e je li w skrypcie z listingu 4.15
zamieni si funkcj sort na asort, po sortowaniu kolejno b dzie nast puj ca:
tab['indeks9'] = 1
tab['indeks5'] = 2
tab['indeks1'] = 5
tab['indeks3'] = 8
Natomiast po zamianie funkcji sort na ksort uzyska si wynik:
tab['indeks1'] = 5
tab['indeks3'] = 8
tab['indeks5'] = 2
tab['indeks9'] = 1
Poleć książkę
Kup książkę
Rozdzia 4. Tablice 135
Sortowanie mo e si odbywa równie w porz dku odwrotnym, czyli od warto ci naj-
wi kszej do najmniejszej. S u do tego celu funkcje arsort (sortowanie wzgl dem
warto ci) i krsort (sortowanie wzgl dem kluczy).
Implozja i eksplozja
Bardzo ciekawymi i (jak si oka e przy realizacji praktycznych projektów) u ytecz-
nymi funkcjami s implode i explode (st d te powy szy podtytu ). Pierwsza powo-
duje zwrócenie wszystkich elementów tablicy rozdzielonych znakami separatora jako
ci gu znaków. Wywo anie ma schematyczn posta :
implode(separator, tablica)
Je li na przyk ad istnieje tablica $arr o postaci:
$arr = array('jeden', 'dwa', 'trzy');
to wykonanie instrukcji:
echo implode(', ', $arr);
spowoduje wy wietlenie ci gu znaków:
jeden, dwa, trzy
Podobnie, efektem dzia ania instrukcji:
echo implode('_', $arr);
b dzie ci g:
jeden_dwa_trzy
Funkcja explode (jak sama nazwa wskazuje) dzia a odwrotnie ni implode. Tworzy
wi c tablic sk adaj c si z fragmentów ci gu znaków wydzielonych przez znaki sepa-
ratora. Jej wywo anie ma ogóln posta :
explode(separator, ci g[, ile]);
Je li na przyk ad istnieje ci g $str w postaci:
$str = 'jeden, dwa, trzy, cztery';
to wykonanie instrukcji:
$arr = explode(', ', $str);
spowoduje powstanie tablicy o nast puj cych elementach:
Array
(
[0] => jeden
[1] => dwa
[2] => trzy
[3] => cztery
)
Poleć książkę
Kup książkę
136 Cz I Skrypty PHP  dynamiczne generowanie stron internetowych
Gdy opcjonalny argument ile ma warto dodatni , wskazuje maksymaln liczb
elementów tablicy wynikowej. Ostatni element b dzie zawiera pozosta cz ci gu.
Je eli zatem istnieje taki ci g $str jak podany wy ej, efektem wykonania instrukcji:
$arr = explode(', ', $str, 3);
b dzie tablica:
Array
(
[0] => jeden
[1] => dwa
[2] => trzy, cztery
)
Je li argument ile ma warto ujemn , okre la, ile elementów nale y usun z ko ca
tablicy wynikowej. Przyk adowo dla zdefiniowanego wy ej ci gu $str efektem dzia a-
nia instrukcji:
$arr = explode(', ', $str, -2);
b dzie tablica:
Array
(
[0] => jeden
[1] => dwa
)
Operacje na elementach tablic
Zmiana kolejno ci elementów
Je li chcemy odwróci kolejno elementów w tablicy, czyli spowodowa , aby pierwszy
sta si ostatnim, drugi przedostatnim itd., mo emy zastosowa funkcj array_reverse.
Jako argument tej funkcji nale y przekaza nazw tablicy. Tablica ze zmienion kolej-
no ci elementów zostanie zwrócona jako wynik dzia ania funkcji, a zawarto orygi-
nalnej tablicy nie zostanie naruszona. Sposób dzia ania funkcji array_reverse zobra-
zowano w przyk adzie widocznym na listingu 4.16.
Listing 4.16. Odwrócenie kolejno ci elementów tablicy
$tab1 = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
$tab2 = array_reverse($tab1);
echo "Zawarto tablicy tab1:
";
foreach($tab1 as $val){
echo("$val ");
}
echo "
Zawarto tablicy tab2:
";
foreach($tab2 as $val){
Poleć książkę
Kup książkę
Rozdzia 4. Tablice 137
echo "$val ";
}
?>
Poruszanie si po tablicy
Ka da tablica w PHP ma wewn trzny wska nik wskazuj cy jej bie cy element. Po
utworzeniu tablicy wska nik ten jest ustawiony na pierwszy element. Podczas wyko-
nywania operacji na elementach tablicy jego po o enie mo e si zmienia . Istniej
funkcje, które wykorzystuj go do w asnych potrzeb, istnieje równie mo liwo bezpo-
redniej manipulacji pozycj wska nika. Jedn z takich funkcji jest each. Jej zadaniem
jest pobranie aktualnego elementu tablicy i przesuni cie wska nika o jedno miejsce
w przód. Je eli wska nik znajdzie si na ko cu tablicy, wywo anie each powoduje
zwrócenie warto ci false. Takie dzia anie funkcji each umo liwia zastosowanie jej
w p tli while przetwarzaj cej elementy tablicy. Nale y jedynie pami ta , e wynikiem
dzia ania each jest w rzeczywisto ci czteroelementowa tablica (!) zawieraj ca cztery
klucze: 0, 1, key, value, gdzie 0 i key przechowuj pobrany klucz (indeks), a 1 i value
odpowiadaj c mu warto . Zobrazowano to w przyk adzie z listingu 4.17.
Listing 4.17. U ycie funkcji each do odczytu elementów tablicy
$tab = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
while($val = each($tab)){
echo "val[0] = $val[0] | ";
echo "val[1] = $val[1] | ";
echo "val['key'] = $val[key] | ";
echo "val['value'] = $val[value] ";
echo "
";
}
?>
Funkcje, które pozwalaj na bezpo redni modyfikacj wewn trznego wska nika
tablicy, to:
reset  resetuje wska nik tablicy, ustawiaj c go na pierwszym elemencie.
Funkcja jednocze nie zwraca warto pierwszego elementu.
next  przesuwa wska nik tablicy na nast pny element i zwraca warto tego
elementu. Je li aktualn pozycj wska nika tablicy jest jej ostatni element, funkcja
zwraca warto false.
prev  przesuwa wska nik tablicy na poprzedni element (w stosunku do
pozycji bie cej) i zwraca warto tego elementu. Je li aktualn pozycj
wska nika tablicy jest jej pierwszy element, funkcja zwraca warto false.
end  ustawia wska nik tablicy na jej ostatnim elemencie i zwraca warto
tego elementu.
Oprócz wymienionych wy ej funkcji modyfikuj cych wewn trzny wska nik istniej
równie dwie funkcje, które pobieraj aktualny element tablicy. S to: current i pos.
Poleć książkę
Kup książkę
138 Cz I Skrypty PHP  dynamiczne generowanie stron internetowych
Przyk ady wykorzystania tego typu konstrukcji j zyka zosta y zaprezentowane na
listingu 4.18. Efekt dzia ania skryptu jest natomiast przedstawiony na rysunku 4.15.
Listing 4.18. Wykorzystanie funkcji operuj cych na wewn trznym wska niku tablicy
$tab = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
$val = end($tab);
echo "Wynik dzia ania end(\$tab): $val
";
prev($tab);
prev($tab);
$val = current($tab);
echo "Po dwukrotnym wykonaniu prev(\$tab) ";
echo "aktualnym elementem jest: $val
";
$val = reset($tab);
echo "Po wykonaniu reset(\$tab) aktualnym elementem jest: $val
";
next($tab);
next($tab);
$val = current($tab);
echo "Po dwukrotnym wykonaniu next(\$tab) ";
echo "aktualnym elementem jest: $val
";
echo "Wynik dzia ania p tli while wykonuj cej funkcj next: ";
while($val = next($tab)){
echo "$val ";
}
end($tab);
echo "
Wynik dzia ania p tli while wykonuj cej funkcj prev: ";
while($val = prev($tab)){
echo "$val ";
}
?>
Rysunek 4.15.
Efekt dzia ania
skryptu
wykorzystuj cego
funkcje operuj ce
na wska niku
tablicy
Poleć książkę
Kup książkę
Rozdzia 4. Tablice 139
Na pocz tku skryptu powsta a tablica $tab zawieraj ca 10 kolejnych liczb ca kowitych.
Nast pnie zosta a wykonana operacja end($tab), a jej wynik  przypisany zmiennej
$val. Warto ci tej zmiennej sta a si wi c warto znajduj ca si w ostatniej komórce
tablicy, czyli 10. W kolejnym kroku zosta y wykonane dwie operacje prev($tab), co
oznacza, e wewn trzny wska nik tablicy zosta przesuni ty o dwie pozycje do ty u.
Przekonujemy si o tym, pobieraj c aktualny element tablicy ($val = current($tab);)
i wy wietlaj c go w przegl darce za pomoc instrukcji echo.
Kolejny krok to wykonanie funkcji reset, która przesuwa wska nik na pocz tek tablicy
(a zatem aktualnym elementem staje si komórka o indeksie 0). Po wykonaniu funkcji
reset dwukrotnie wykonywana jest funkcja next, czyli wska nik jest przesuwany
o dwie pozycje do przodu i wskazuje na trzeci element (o indeksie 2). Dalej w kodzie
zosta a umieszczona p tla while przegl daj ca kolejne elementy tablicy. Wykorzystuje
ona fakt, e funkcja next przesuwa wska nik o jedno miejsce i zwraca warto wska-
zanego elementu. W przypadku gdy wska nik zostanie przesuni ty za ostatni element,
funkcja zwraca warto false, co jest warunkiem zako czenia p tli.
Poniewa po ostatnim wykonaniu funkcji next wska nik tablicy zosta przesuni ty za
ostatni element, po zako czeniu p tli jest wykonywana funkcja end, która przesuwa
go z powrotem na ostatni element. Dzi ki temu mo e poprawnie zadzia a kolejna
p tla while, która wykonuje seri funkcji prev, przesuwaj cych wska nik tablicy do ty u,
za ka dym wywo aniem o jedn pozycj . Gdy wska nik znajdzie si przed pierwszym
elementem, wywo anie funkcji prev zwróci warto false i tym samym p tla zako czy
dzia anie.
Dodawanie i pobieranie elementów
W PHP istniej wbudowane funkcje, które pozwalaj na dodawanie i usuwanie elemen-
tów z pocz tku i z ko ca tablicy. S to: array_pop, array_shift, array_put i array_
unshift. Funkcja array_pop pobiera element znajduj cy si na ko cu tablicy i zwraca
jego warto . Tym samym tablica zostaje skrócona o ostatni element. Schematycznie
operacja taka ma posta :
$zmienna = array_pop($tablica);
Podobne zadanie wykonuje array_shift, ale z t ró nic e usuwany jest pierwszy
element. Je eli tablica by a indeksowana numerycznie, wówczas wszystkie elementy
zostan przenumerowane, czyli indeks ka dego z nich zmniejszy si o jeden.
Funkcja array_push dzia a odwrotnie ni array_pop. Dodaje ona elementy przekazane
w postaci argumentów na ko cu tablicy. Schematycznie operacj t mo na przedsta-
wi jako:
array_push($tablica, element1, element2,..., elementN);
Funkcja zwraca warto okre laj c liczb elementów w powi kszonej tablicy. Podobnie
jak array_push dzia a array_unshift  dodaje ona okre lon liczb elementów na
pocz tku tablicy. Je li tablica by a indeksowana numerycznie, zostanie ona równie odpo-
wiednio przenumerowana. Wywo anie funkcji array_unshift ma schematyczn posta :
Poleć książkę
Kup książkę
140 Cz I Skrypty PHP  dynamiczne generowanie stron internetowych
array_unshift($tablica, element1, element2,..., elementN);
Sposób wykorzystania wymienionych funkcji w dzia aj cym skrypcie zobrazowano
w kodzie widocznym na listingu 4.19. Efekt jego dzia ania zosta natomiast zaprezen-
towany na rysunku 4.16.
Listing 4.19. Ilustracja dzia ania funkcji modyfikuj cych zawarto tablicy
$tab = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
echo "Pierwotna zawarto tablicy: ";
foreach($tab as $val){
echo "$val ";
}
$val = array_pop($tab);
echo("
Wynik pierwszej operacji pop: $val
");
$val = array_pop($tab);
echo "Wynik drugiej operacji pop: $val
";
echo "Aktualna zawarto tablicy: ";
foreach($tab as $val){
echo "$val ";
}
$val = array_shift($tab);
echo "
Wynik pierwszej operacji shift: $val
";
$val = array_shift($tab);
echo "Wynik drugiej operacji shift: $val
";
echo "Aktualna zawarto tablicy: ";
foreach($tab as $val){
echo "$val ";
}
array_push($tab, 1, 2);
echo "
Zawarto tablicy po operacji push: ";
foreach($tab as $val){
echo "$val ";
}
array_unshift($tab, 9, 10);
echo "
Zawarto tablicy po operacji unshift: ";
foreach($tab as $val){
echo "$val ";
}
?>
W skrypcie tworzona jest tablica $tab, która pocz tkowo zawiera uporz dkowane rosn -
co warto ci od 1 do 10. Wykonanie dwóch operacji array_pop($tab); powoduje usu-
ni cie dwóch ostatnich warto ci, a zatem pozostaj komórki z warto ciami od 1 do 8.
Nast pnie s wykonywane dwie operacje array_shift($tab);, które usuwaj dwie
pierwsze komórki; tym samym w tablicy pozostaj warto ci od 3 do 8. Nale y zwróci
uwag , e przenumerowaniu uleg y równie indeksy komórek. Warto 3 znajduje si
Poleć książkę
Kup książkę
Rozdzia 4. Tablice 141
Rysunek 4.16.
Efekt dzia ania
skryptu z listingu 4.19
obecnie pod indeksem 0, warto 4 pod indeksem 1 itd. Kolejn wykonywan ope-
racj jest array_push($tab, 1, 2);, która powoduje dodanie na ko cu tablicy dwóch
komórek, pierwszej o warto ci 1 i drugiej o warto ci 2. Operacja array_unshift($tab,
9, 10); powoduje natomiast dodanie na pocz tku tablicy dwóch komórek, pierwszej
o warto ci 9 i drugiej o warto ci 10. Ostatecznie tablica zawiera zatem ci g warto ci
9, 10, 3, 4, 5, 6, 7 8, 1, 2, tak jak jest to widoczne na rysunku 4.16.
Liczba elementów tablicy
W wielu przypadkach bardzo przydaje si ustalenie rozmiaru tablicy, czyli stwierdzenie,
ile zawiera ona elementów. W PHP wykorzystywana jest w tym celu funkcja count
(zamiast count mo na równie u y sizeof, która jest aliasem dla count). Je li zatem
zostanie wykonany kod:
$tab = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
$rozmiar = count($tab);
w zmiennej $rozmiar zostanie zapisana warto 10.
Nieco bardziej z o on czynno ci jest stwierdzenie, ile razy dana warto wyst puje
w tablicy. W PHP istnieje specjalna funkcja, która wykonuje to zadanie: ar-
ray_count_values. Zwraca ona tablic asocjacyjn , której kluczami s warto ci tablicy
oryginalnej, natomiast warto ciami kluczy jest liczba wyst pie tych warto ci w tabli-
cy oryginalnej. Najlepiej zobaczy , jak to dzia a, zapoznaj c si z konkretnym przyk a-
dem przedstawionym na listingu 4.20. Efekt jego dzia ania zosta zaprezentowany na
rysunku 4.17.
Listing 4.20. Ilustracja dzia ania funkcji array_count_values
$tab = array(1, 2, 5, 1, 5, 1, 5, 1, 8, 2);
$values = array_count_values($tab);
foreach($values as $key => $val){
echo "[$key] => $val
";
}
?>
Poleć książkę
Kup książkę
142 Cz I Skrypty PHP  dynamiczne generowanie stron internetowych
Rysunek 4.17.
Efekt dzia ania funkcji
array_count_values
W skrypcie zosta a utworzona tablica $tab zawieraj ca zbiór liczb. Wykonanie funkcji
array_count_values spowodowa o zwrócenie tablicy asocjacyjnej, której zawarto
zosta a wy wietlona w przegl darce. Wida wyra nie, e warto 1 w oryginalnej tablicy
wyst puje cztery razy, warto 2  dwa razy, warto 5  trzy razy, a warto 8 
jeden raz.
Poleć książkę
Kup książkę
Skorowidz
cookies, 265
A
CSS, 482
adres czas wa no ci cookie, 268
IP, 491 cz administracyjna serwisu, 517, 595
lokalny, 21, 170
agregacja danych, 363
D
aktualizacja zawarto ci koszyka, 636
algorytm QuickSort, 132 dane z formularza rejestracyjnego, 618
aplikacja ApacheMonitor, 20 definicja formularza, 169
argumenty deklaracja tablicy, 118
domy lne, 113 deskryptor, 236
funkcji, 105 destruktory, 153
konstruktorów, 152 diagram tabel i relacji, 391, 393
atrybut dodawanie
AUTO_INCREMENT, 332 elementów do tablicy, 139
INDEX, 332 ksi ek do koszyka, 630
NOT NULL, 332 nowych u ytkowników, 535
PRIMARY KEY, 332 rekordów do bazy, 443
atrybuty kolumny, 332 wiadomo ci, 571
autoryzacja, 455 wiersza danych, 443, 446
domy lne kodowanie znaków, 449
dost p do
B
cz ci administracyjnej, 595
bia e znaki, 195 danych z formularza, 171
blok sk adowych, 158, 161
case, 596, 637
chronionych, 161
switch, 596 klasy, 146
blokada zapisu do pliku, 249 prywatnych, 161
b d publicznych, 161
krytyczny, fatal error, 163 dziedziczenie, 153, 154
logowania, LOGIN_FAILED, 503 dzielenie ci gów znaków, 210
serwera, SERVER_ERROR, 503
b dny identyfikator, 539
E
b dy logiczne skryptu, 166
edycja
konta u ytkownika, 537
C
koszyka, 634
ci g formatuj cy, 201 u ytkowników, 544
ci gi znaków, 193 elementy formularza, 170
Poleć książkę
Kup książkę
646 PHP i MySQL. Dla ka dego
fseek, 247
F
ftell, 247
filtrowanie danych, 619
func_num_args, 115
formatowanie ci gu, 199
fwrite, 243
formularz, 170
get_browser, 489
ankiety, 254
getAllUsersOnline, 493
do dodawania danych, 573
getCounter, 250
do edycji danych, 572
getcwd, 228
do odszukiwania wiadomo ci, 579
getdate, 215
HTML, 439
getDirSize, 230
logowania, 260, 282, 468, 610
getQueryResultAsTableRows, 486
rejestracyjny, 469, 614
getRegUsersOnline, 492
umo liwiaj cy oddanie g osu, 255
getShortStats, 494
wyboru zakresu, 505
gettype, 51
wys aj cy opinie, 244
gmdate, 216
wyszukiwania ksi ek, 621
header, 180, 463
funkcja
implode, 135, 210
addStatRecord, 490
in_array, 184
addToDBTable, 441
initDB, 485
argumenty, 441
intval, 74, 441
array_count_values, 141
is_file, 229
array_pop, 139
isset, 172, 184
array_push, 139
krsort, 135
array_reverse, 136
LIKE, 348
array_shift, 139
listDir, 233
array_unshift, 139
localtime, 217
arsort, 135
ltrim, 196
chdir, 228
microtime, 218
checkdate, 212
mkdir, 227
checkFileName, 184
mktime, 218
checkPass, 261, 281, 457, 463
move_uploaded_file, 178, 179
closedir, 223
mysql_query, 422
count, 141
mysqli_fetch_all, 422
crypt, 460
mysqli_fetch_array, 422
current, 137
mysqli_fetch_assoc, 422
Date, 213
mysqli_character_set_name, 451
DATE_SUB, 492
mysqli_connect, 415, 417
delDir, 231
mysqli_fetch_field, 422
disk_free_space, 230
mysqli_fetch_field_direct, 422
disk_total_space, 230
mysqli_fetch_fields, 422
end, 137
mysqli_fetch_object, 422
explode, 135, 210
mysqli_fetch_row, 422
feof, 241
mysqli_free_result, 422
fgetc, 240
mysqli_query, 437
fgets, 237, 239
funkcja next, 137
file_exists, 184, 228
nl2br, 197, 238
file_get_contents, 242, 245
NOT LIKE, 348
file_put_contents, 243
opendir, 223, 234
filesize, 180, 229, 230
pos, 137
filter_input, 577, 619
prev, 137
flock, 248
print, 199
fopen, 235, 236
printf, 199, 204
fpassthru, 242
printList, 189
fread, 180, 241
readdir, 185, 223
Poleć książkę
Kup książkę
Skorowidz 647
readfile, 242 statystyczne, 367
rejestruj, 475 zamieniaj ce podci gi, 208
reset, 137 zmieniaj ce wielko liter, 198
rewind, 248 zwracanie warto ci, 107
rmdir, 228
rtrim, 196
G
scandir, 225
generowanie
send, 190
listy odno ników, 263
session_destroy, 273
listy plików, 185
session_start, 272, 463, 474
statystyk, 505
setcookie, 265
g ówna cz serwisu, 495
argumenty, 265
GMT, Greenwich Mean Time, 216
setlocale, 197
graficzny licznik odwiedzin, 252
settype, 74
grupowanie, 363
show, 256
danych, 372
sort, 130, 133
wyników zapyta , 367
sortuj, 132
sprintf, 228, 258
str_ireplace, 208
H
str_replace, 208, 234
hash, 459
strcasecmp, 204
hierarchia wyj tków, 167
strcmp, 204
historia odwiedzin, 489
strftime, 218
strip_tags, 245
stripos, 206
I
strlen, 457
identyfikacja
strnatcasecmp, 204
przegl darki, 488
strnatcmp, 204
rekordów, 308
strncasecmp, 204
identyfikator
strncmp, 204
ksi ki, 642
strpos, 206
po czenia z baz , 452
strripos, 206
u ytkownika, 490, 575, 579
strtok, 210
wartsw, 482
strtotime, 221
wpisu, 491
strtr, 208
zamówienia, 642, 644
substr, 211
zasobów, 422
substr_replace, 210
IIS, Internet Information Services, 17
SUM, 409
iloczyn logiczny, 62
time, 221
implementacja sesji, 276
trim, 196
indeksy, 374, 402
urlencode, 234
informacje
usersAdmin, 530
atomowe, 306
usort, 131, 205
nadmiarowe, 305
utf8_decode, 458
o pliku, 177, 180, 228
vote, 258
o zamówieniu, 643
funkcje, 104
statystyczne, 373
agreguj ce, 364
instalacja
agreguj ce w z czeniach, 370
MySQL, 290
argumenty, 105
PHP, 17, 23, 25
kontroluj ce typ zmiennych, 50
serwera Apache, 20
konwersji, 73
instancja, 145
odczytuj ce dane, 422
instrukcja
przeszukuj ce ci gi, 206
ALTER TABLE, 379
sklepu, 604
break, 88, 101
skrótu, 459
Poleć książkę
Kup książkę
648 PHP i MySQL. Dla ka dego
instrukcja
K
continue, 103
CREATE, 339 katalog php/tmp, 235
CREATE INDEX, 376 klasa, 144
CREATE TABLE, 331, 341 Basket, 629
DELETE, 353, 385 Exception, 163
echo, 148, 199 LogicException, 166
globals, 110
MyDB, 554
if, 98
mysqli, 429
if...else, 77, 99
NewsAdmin, 568, 584
if...else if, 99
Portal, 484, 491
include, 36, 457
PortalAdmin, 517, 518, 520
INSERT, 338, 385
Registration, 614, 620
INSERT INTO, 337
RuntimeException, 166
new Exception(), 165
SubscriptionsAdmin, 595, 597
parent::show(), 158
User, 562
REPLACE, 354
UsersAdmin, 517, 530
REPLACE INTO, 594
klasy
require, 37, 148
bazowa, 154
return, 107
potomna, 154, 156
SELECT, 341, 342
zawieraj ca konstruktor, 151
switch, 85, 87, 88, 99, 520, 589
klauzula
throw, 163
default, 179
try& catch, 164
DISTINCT, 602
tworz ca tabel , 383, 480
FROM, 384
Autorzy, 395
GROUP BY, 409
AutorzyPseudonimy, 400
HAVING, 369
Klienci, 396
LIMIT, 351
Ksiazki, 394
ORDER BY, 342
KsiazkiAutorzy, 395
WHERE, 351, 352
KsiazkiZamowienia, 398
klient mysql, 322
Opinie, 398
klucz  warto , 120
Recenzje, 399
klucz, 300
Wydawnictwa, 396
g ówny, 305
Zamowienia, 397
obcy, 305, 377, 379
UPDATE, 351, 385
kod
instrukcje
b du, 165
warunkowe, 77, 98
formularza HTML, 170, 172
warunkowe zagnie d one, 80
kodowanie
integracja koszyka ze sklepem, 637
znaków, 319, 449, 451
interakcja serwera WWW i przegl darki, 31
znaków specjalnych, 45
interfejs
kody
obiektowy, 418, 430
formatuj ce dla printf, 200
obiektowy mysqli, 443
powrotów, 585
PDO, 447
komenda
proceduralny, 415
cmd, 19
runas, 19
J
komentarz
j zyk blokowy, 40
DCL, 324 jednowierszowy, 40
DDL, 323 jednowierszowy uniksowy, 41
DML, 323
komunikat, 165
SEQUEL, 323
o nieprawid owym indeksie, 426
Poleć książkę
Kup książkę
Skorowidz 649
konfiguracja fetch_all, 430
MySQL, 293 fetch_array, 430, 432
PHP, 27, 414 fetch_assoc, 430
sesji, 273 fetch_field_direct, 430
koniec linii, 196
fetch_fields, 487
konstruktory, 151
fetch_row, 503
klas bazowych, 159
fetchAll, 433
konwersja, 75
fetchColumn, 433
ko czenie
fetchObject, 433
po czenia z baz danych, 416, 418
GET, 170
pracy serwera, 298
getAllUsersOnline, 491, 494
sesji, 273
getCode, 164
getMessage, 164
L
getEmailsList, 600
getFile, 164
liczba
getFullStats, 507, 512
argumentów, 115
getHeaderMenu, 564
u ytkowników, 491
getLine, 164
zamówionych egzemplarzy, 635
getMessage, 421
licznik
getNews, 555
graficzny, 252
getNewsHeaders, 555
odwiedzin, 250, 271
getNewsList, 555, 558
tekstowy, 250
getPagination, 534
lista
getRegUsersOnline, 491, 494
adresów e-mail, 596
getQuerySingleResult, 485, 491, 533, 542, 576
plików, 182, 187
getShortStats, 491
subskrypcji, 591, 598
getSubscriptions, 591
wiadomo ci, 571, 583
getUserInfo, 497
logiczna alternatywa wykluczaj ca, 62
initDB, 495, 522
logowanie, 262, 280, 460, 609
lokalizacja skryptu, 169 login, 501, 522, 524, 590, 611
logout, 504, 522, 525
modify, 636

modifyBasket, 638
czenie
newsAdmin, 565, 566
ci gów znaków, 210
POST, 174
a cuchów, 194
query, 429, 443
z baz danych, 415, 418
quote, 448
z serwerem MySQL, 308, 310
real_escape_string, 458, 477
registerUser, 616, 618, 621
M
saveOrder, 640, 643
saveSubscriptions, 593
mechanizm sesji, 272
searchNews, 567
metoda
searchUser, 546, 548
addStatRecord, 496
show, 149, 157, 632
addToBasekt, 638
showBasket, 637
character_set_name, 451
showBookDetails, 627
checkout, 639
showEditForm, 538, 567, 573
checkNewsEditRights, 575
showId, 156
deleteNews, 567, 584
showList, 531, 567, 598
deleteUser, 549, 584
showNews, 556
editNews, 576
showRegistrationForm, 616, 620
editUser, 540, 542
showSearchForm, 545, 548, 567, 579
execute, 445
showSearchResult, 622, 625
fetch
argumenty, 433 subscriptionsAdmin, 596, 597
Poleć książkę
Kup książkę
650 PHP i MySQL. Dla ka dego
metoda kodów powrotów, 585
updateStatRecord, 504 koszyka, 629
usersAdmin, 522, 528, 543, 550 logowania, 497, 522
metoday, methods, 143
MySQL w PHP, 414
wyszukuj ca wiadomo ci, 580
PDO, 415
klasy Basket, 629
plików, 235
klasy Portal, 484, 555, 620
po cze z bazami, 414
modyfikacja
serwera, 25
bazy danych, 516
sesji, 272
metody login, 611
subskrypcji, 589
pliku index.php, 563
tabel, 331
pliku portal_admin.php, 562
wyj tków, 165
stylów CSS, 553
zamówie , 638
tabel, 335
odbieranie plików, download, 179
tabeli Klienci, 604
odbieranie praw, 316
tablicy, 123
odczyt
modyfikator
ca ego pliku, 242
AUTO_INCREMENT, 336
danych, 237, 430
UNSIGNED, 324
danych z formularza, 175
ZEROFILL, 324
danych z tabeli przy u yciu PDO, 434
modyfikatory dost pu, access modifiers, 160
danych z tablicy asocjacyjnej, 436
MySQL, 289
danych za pomoc p tli for, 436
instalacja w Linuksie, 294
elementów tablicy, 137
instalacja w Windows, 290
okre lonej liczby bajtów, 241
konfiguracja, 293, 295
tablicy, 126
warto ci cookie, 268
N
wierszy tekstu, 237
zawarto ci katalogu, 223
nadawanie uprawnie , 311
zawarto ci pliku, 237, 240
nag ówek
zawarto ci tabeli, 423
Content-Disposition, 180
znak po znaku, 240
Content-Length, 180
odwo anie do sk adowych klasy, 149
Content-Type, 180
ograniczenie ze wzgl du na klucze obce, 378
headerMainDiv, 607
okno
Location, 190
Mened era pakietów, 24
serwisu, 555
monitora us ugi Apache, 20
Set-Cookie, 265
OOP, Object Oriented Programming, 143
User-Agent, 488
opcja
nawi zywanie po czenia z baz , 420
file_uploads, 176
nazwy u ytkowników, 314
LIKE, 319
negacja logiczna, 63
post_max_size, 176
opcje konfiguracyjne sesji, 273
O
operacje w bazie danych, 604
obiekt, 143 operator
$basket, 644 +, 72, 194
$db_obj, 458
++, 57
$dbo, 432, 487
+=, 65
$portal, 526, 596
->, 146
$sa, 597
IN, 349
MyDB, 616
indeksowania tablic, 66
obliczenie wielko ci katalogu, 230
kontroli b dów, 67
obs uga
kontroli typów, 69
bazy za pomoc mysqli, 418
konwersji typów, 69
bazy za pomoc PDO, 420
a cuchowy, 63
Poleć książkę
Kup książkę
Skorowidz 651
czenia tablic, 66 plik
new, 145 404.html, 190
NOT IN, 349 adminLogin Form.php, 522
rozdzielania wyra e , 70 bad_login.html, 457
tworzenia obiektów, 70 basket.php, 629
warunkowy, 67, 85 browscap.ini, 489
wykonania polecenia zewn trznego, 68 downloads.txt, 189
zakresu ::, 158 editUserForm.php, 536
operatory, 55 error_server.html, 457
arytmetyczne, 55 form.html, 270
bitowe, 59 form.php, 279
dekrementacji, 56 httpd.conf, 22
inkrementacji, 56 index1.html, 457
logiczne, 61 index.php, 26, 517, 620
logiczne w MySQL, 347 instalatora MSI, 21
porównywania tablic, 67 links.txt, 264
przypisania, 64, 65 login.html, 455
relacyjne, 63 login.php, 455
relacyjne w MySQL, 346 loginForm.php, 499, 610
tablicowe, 66 main.php, 270, 463, 606
otwieranie pliku, 235 my.ini, 321
mydb.php, 554
new_user_form.php, 469
P
newsAdminMenu.php, 565
pakiety PHP, 21 newsEditForm.php, 573
parametr orderNoLoginInfoDiv.php, 640
$limit, 559 passwords.txt, 279
$pass, 262 php.ini, 22, 176
$timeout, 492 php_pdo_mysql.dll, 415
action, 169, 497, 498, 519 php5apache2_2.dll, 22, 29
blokowanie, 248 portal.php, 485, 501
flagi, 244 portal_admin.php, 518
href, 556 searchForm.php, 622
newsId, 574 searchUserForm.php, 544
obiekt, 312 statTable.php, 512
page, 531 subscriptionsAdminMenu.php, 596
prawa, 312 usersAdminMenu.php, 528
sk d, 247 pliki
tryb, 236 .php, 22
Typ, 493 konfiguracyjne serwera, 22
wtd, 528
pobieranie
parametry danych, 425, 560
po czenia z baz , 455 danych z tabeli, 341, 344
znacznika form, 176 danych z wielu tabel, 357
PDO, PHP Data Objects, 414, 432 liczby wierszy, 533
p tla listy adresów IP, 511
do& while, 95 listy u ytkowników, 511
for, 89 93, 100 selektywne danych, 345
foreach, 96, 100 statystyk przegl darek, 511
while, 93, 100 statystyk systemów, 511
p tle, 102 wyników zapyta , 426, 437, 510
PHP, 15 zawarto ci ca ej tabeli, 342
instalacja w Linuksie, 23 podzapytania
instalacja w Windows, 17 proste, 381
konfiguracja, 27, 414 skorelowane, 382
Poleć książkę
Kup książkę
652 PHP i MySQL. Dla ka dego
podzapytania
R
w instrukcjach, 385
w klauzuli FROM, 384
regu y porównywania znaków, 320
podzia wiersza, 196
rejestracja u ytkowników, 467, 614
pojedynczy wiersz, 617, 593
rejestrowanie
pola, fields, 143
MySQL, 294
pola wyboru, 592
u ytkownika, 618
pole error, 177
relacje, 301
pole klasy, 144
relacje mi dzy tabelami, 392
polecenia do modyfikowania tabeli, 335
relacyjne bazy danych, 289, 300
polecenie
rozpoczynanie sesji, 272
cmd.exe, 309
rzutowanie typów, 72
CREATE DATABASE, 310, 318
CREATE USER, 311
S
DESCRIBE, 334
DROP DATABASE, 310
schemat przetwarzania danych, 414
DROP TABLE, 337
sekcja body, 496
DROP USER, 317
serwer
GRANT, 311
Apache, 18
RENAME USER, 316
bazy danych, 297
REVOKE, 316
lokalny localhost, 171
SHOW COLLATION, 320
MySQL, 17
SHOW COLUMNS, 334
WWW, 17, 18
SHOW DATABASES, 318
sesja, 272
SHOW TABLES, 319
sk adnia
sudo, 25
systemctl, 24 alternatywna, 98
polskie litery, 449 heredoc, 46
po czenie z baz , 435
nowdoc, 46
porównywanie ci gów, 204
skrypt
porz dkowanie leksykograficzne, 204
dodaj cy wiersz, 437
poziom
dodaj cy wiersz danych, 444
bazy danych, database level, 312
download.php, 182, 186
globalny, global level, 312
form.php, 281, 461, 464
kolumny, column level, 312
generuj cy
tabeli, table level, 312
g ówn cz serwisu, 283
poziomy przywilejów, 312
list , 188
pozycja wska nika, 247
list odno ników, 263
prawo do edycji, 574
list plików, 185
prezentacja szczegó owych danych, 627
index.php, 461
priorytety operatorów, 71
index1.php, 284
procedura logowania, 280, 527
index2.php, 285
programowanie obiektowe, 143
kontynuuj cy sesj , 277
przechwytywanie wyj tków, 164
ko cz cy sesj , 278
przekazywanie argumentów, 112
licznika odwiedzin, 250
przez referencj , reference, 113
login.php, 279, 461, 500
przez warto , by value, 112
logout.php, 279, 461, 466, 501
przes anianie sk adowych, members overriding, 157
logowania, 459
przeszukiwanie ci gów, 206
main.php, 465
przetwarzanie dania, 413
przypadki case, 555 new_user.php, 472
przywilej, 561 obs uguj cy pole wyboru, 173
Administrator, 561
odbieraj cy dane, 246
Edycja news, 561
odbieraj cy dane z formularza, 440
Zarz dzanie u ytkownikami, 561
odbieraj cy plik, 178
PWS, Personal Web Server, 17
PHP weryfikuj cy dane, 455
Poleć książkę
Kup książkę
Skorowidz 653
przetwarzaj cy dane, 270 klasy Portal, 608
przetwarzaj cy dane z ankiety, 255 klasy Registration, 614
rozpoczynaj cy sesj , 276 styl
rozwi zuj cy równania kwadratowe, 81 obiektowy, 429, 432, 443, 445
testuj cy po czenie, 417 proceduralny, 421, 437
umo liwiaj cy nawigacj po katalogach, 232
style CSS, 483
umo liwiaj cy wylogowanie, 284
style formatuj ce tabel , 513
weryfikuj cy dane, 261
subskrypcja biuletynów, 593
wysy aj cy plik, 181 189
subskrypcje, 587
wy wietlaj cy napis, 30
suma logiczna, 62
wy wietlaj cy zawarto katalogu, 224
synchronizacja dost pu, 248
skrypty zewn trzne, 35
system news, 551
s owo kluczowe
system przywilejów, 561
array, 117
szkielet portalu, 482
construct, 151
destruct, 153

elseif, 79
extends, 153
cie ka dost pu do pliku, 29
function, 144
ledzenie
globals, 109
odwo a do podstron, 286
parent, 158
u ytkownika, 284
private, 161
rodowisko PHP, 21
protected, 161
public, 144, 161
T
this, 150
sortowana lista plików, 226
tabela
sortowanie, 130
Klienci, 603
ci gów, 205
News, 552
niestandardowe, 132
Stats, 480, 489
tablic, 131
Subskrypcje, 587
tablic asocjacyjnych, 133
Users, 458
w tabeli, 342
Uzytkownicy_Subskrypcje, 588
sól, salt, 459
tabele, 300
sposoby obs ugi baz MySQL, 448
tablica
spójno danych, 402
$_COOKIE, 268
sprawdzanie
$_FILES, 177
poprawno ci danych, 471
$_GET, 171
przywilejów, 317
$_POST, 175, 617
SQL, Structured Query Language, 323
$_SERVER, 488
sta a
$_SESSION, 275
INVALID_NEWS_ID, 575
$arr, 227
INVALID_USER_NAME, 476
$fieldsFromForm, 620
LOGIN_FAILED, 485
Klienci, 612
LOGIN_OK, 485
tablice, 117
SERVER_ERROR, 485
asocjacyjne, 120
sta e, 53
dwuwymiarowe, 125
predefiniowane, 54
jednowymiarowe, 124
w portal_admin.php, 521
nieregularne, 129
w skrypcie sklepu internetowego, 609
trójwymiarowe, 127
statystyki, 479, 505
wielowymiarowe, 124
statystyki odwiedzin, 507
testowanie
strona testowa serwera WWW, 26
dzia ania PHP, 26
struktura
instalacji Apache a i PHP, 23
bazy, 304
po czenia, 421
klasy Basket, 630
Poleć książkę
Kup książkę
654 PHP i MySQL. Dla ka dego
testowanie relacji
po czenia z baz , 417 421 jeden do jednego, 302
serwera WWW, 21, 25 jeden do wielu, 302
t czowe tablice, rainbow tables, 459 wiele do wielu, 302
tryb
tabel w MySQL, 375
MYSQLI_STORE_RESULT, 422
z cze , 359
MYSQLI_USE_RESULT, 422
zmiennoprzecinkowe, 326
przetwarzania zapyta , 422
tworzenie
U
baz, 308
baz przy u yciu serwera MySQL, 389
uprawnienia, privileges, 312
indeksów, 403
CREATE, 314
indeksów i kluczy obcych, 405
DELETE, 314
katalogów, 227
INSERT, 314
klas, 143
SELECT, 314
kluczy obcych, 403
UPDATE, 314
kont u ytkowników, 311
uruchamianie
obiektów, 145
serwera MySQL, 297, 298
obiektu klasy PDO, 420
serwera WWW, 19, 24
ogranicze , 377
ustawienia dla rodowiska
sklepu internetowego, 603
deweloperskiego, 23
sta ych, 54
produkcyjnego, 23
struktury portalu, 482
usuwanie
systemu news, 554
baz, 310
tabel, 304, 331, 358, 393
bia ych znaków, 195
tabel bazy, 401
cookie, 268
tablicy
danych, 353, 549
asocjacyjnej, 120, 121
elementów z tablicy, 139
dwuwymiarowej, 125
indeksu, 377
nieregularnej, 129
katalogów, 228
zmiennych, 48
kont u ytkowników, 317
typ
tabel, 337
array, 46
wiadomo ci, 584
boolean, 42, 75
zawarto ci katalogu, 231
float, 42, 76
znaczników HTML, 239, 245
integer, 42, 75
uwierzytelnianie, 278, 455
MIME, 180
uwierzytelnianie z wykorzystaniem sesji, 461
null, 47
object, 46
resource, 47 W
string, 43, 76
warstwa
typy
basketDiv, 634
BINARY i VARBINARY, 330
footerDiv, 496
BLOB, 330
g ówna, 519
BLOB i TEXT, 330
headerDiv, 519, 527, 564
ca kowitoliczbowe, 325
headerMainDiv, 589
CHAR i VARCHAR, 329
headerUserInfoDiv, 496
daty i czasu, 327
mainContentDiv, 496, 497, 498, 519, 607
ENUM i SET, 331
nag ówka, 519
liczbowe, 324
podk adowa, 519
a cuchowe, 329
registrationFormDiv, 617
podzapyta
rightSideDiv, 553, 555
proste, simple, 380
searchResultsDiv, 626
skorelowane, correlated, 380
z komunikatem, 608
proste, 86
Poleć książkę
Kup książkę
Skorowidz 655
warstwy u ytkowników, 544
formatuj ce formularz, 506 wiadomo ci, 579
HTML, 482 wy wietlenie
warto ci formularza logowania, 604
argumentu formularza rejestracyjnego, 604, 616
filtr, 577 formularza wyszukiwania, 604
typ_danych, 577 informacji, 604
egzemplarzy, 636
listy baz danych, 318
parametru
listy u ytkowników, 531
action, 497, 519
listy wiadomo ci, 568
flagi, 244
strony g ównej, 604
prawa, 312, 313
szczegó owych danych, 629
tryb, 236
wyników g osowania, 256
Typ, 493
zamówienia, 604
wtd, 528, 565
zawarto ci koszyka, 604, 632
zamówienia, 636
zawarto ci tabeli, 427
warto
zawarto ci tablicy, 118
FALSE, 347
wywo anie
FILE_APPEND, 244
funkcji implode, 442
FILE_USE_INCLUDE_PATH, 244
konstruktora, 153, 160
LOCK_EX, 244
metody editUser, 543
NULL, 339
skryptu index.php, 534
TRUE, 347
wywo ywanie klienta, 309
wczytywanie polece , 322
weryfikacja danych, 174, 246
Z
wiadomo ci, 552
widok listy wiadomo ci, 560
zamiana podci gów, 208
wielko liter, 197
zamykanie po czenia, 420
wiersze w tabelach, 392
zapis danych, 243
wi zy integralno ci, 402
zapisanie
w a ciwo ci, properties, 143
u ytkownika, 460
wprowadzanie danych, 269, 337, 439
zamówienia, 640
do bazy, 406
zapisywanie
do tabeli, 447
danych w pliku, 243
wskazanie this, 149
g osów, 258
wska nik pozycji w pliku, 247
uprawnie , 516
wska nik tablicy, 138
zapytanie
wstawianie wielu wierszy, 340
INSERT INTO, 442
wygl d
pobieraj ce dane, 431
formularza logowania, 500
z o one, 350
formularza rejestracyjnego, 615
zarz dzanie
strony administracyjnej, 523
ksi garni , 605
wyj tek typu PDOException, 448
subskrypcjami, 598
wyj tki, 162
zasady logowania, 459
wylogowanie, 494, 613
zasi g zmiennych, 108
wyniki wyszukiwania, 549
zawarto koszyka, 634, 635
wyra enia regularne, regular expressions, 476
zestaw znaków, character set, 320
wyra enia warunkowe, 84
zg aszanie wyj tków, 163
wysy anie
zliczanie u ytkowników, 492, 493
danych do skryptu, 506
z czenia, 357
plików, upload, 176, 180, 182
tabel, 359
wyszukiwanie, 623, 624
tabel News i Users, 557
danych, 621
trzech tabel, 372
pojedynczej wiadomo ci, 583
Poleć książkę
Kup książkę
656 PHP i MySQL. Dla ka dego
z czenie $tab, 210
INNER JOIN, 360 $timeout, 495
LEFT JOIN, 360, 599 $uploaddir, 179
RIGHT JOIN, 362 $userId, 592
zmiana $val, 464
domy lnej bazy danych, 417, 419 $wtd, 537, 539
katalogu bie cego, 228 GLOBALS, 109
kodowania znaków, 451 statRecordId, 504
nazw kolumn, 345 upload_max_filesize, 176
nazwy konta u ytkownika, 316 upload_tmp_dir, 176
zmienna zalogowany_adm, 527
$_COOKIE, 52 zmienne, 47, 108
$_ENV, 52 globalne, 109
$_FILES, 52 sesji, 275
$_GET, 52 superglobalne, 51
$_POST, 52 znacznik
$_REQUEST, 53 ?>, 32
$_SERVER, 52 $_SESSION, 53
, 196
$activeUsers, 510
, 482
$allVisits, 510
, 169
$browsersInfo, 510 , 252
$contents, 181
  • , 189
    $count, 252, 602 , 424, 617
    $datafile, 256 , 424, 486
    $fieldsNames, 620
    , 148, 424
    $dir, 225
    , 424
    $fd, 181