Podstawy PHP. Wstęp. Zmienne

Podobne dokumenty
Lekcja 7 Tablice. Definiowanie tablicy

PHP. PHP: Hypertext Preprocessor. mgr inż. Remigiusz Pokrzywiński

Umieszczanie kodu. kod skryptu

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Sieci komputerowe i bazy danych. Wykład nr 5 PHP. Wprowadzenie

PHP: bloki kodu, tablice, obiekty i formularze

Elementem tablicy może być każdy typ zmiennej (z innymi tablicami i obiektami włącznie). Tablica dwuwymiarowa, zawiera dwa indeksy, np.

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

APLIKACJE INTERNETOWE 5 PHP W P R O W A D Z E N I E D O P R O G R A M O W A N I A

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Należy ściągnąć oprogramowanie Apache na platformę

Co to jest PHP

SSK - Techniki Internetowe

Systemy internetowe Wykład 3 PHP

Programowanie PHP. Temat 1. Przygotowanie środowiska, prezentacja możliwości PHP

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Michał Bielecki, KNI 'BIOS'

echo $tablica[2]; // Wyświetlony zostanie napis "Wpis numer 2";

Podstawy JavaScript ćwiczenia

1 Podstawy c++ w pigułce.

Obiektowe bazy danych

Bazy Danych i Usługi Sieciowe

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Komunikacja między klientem, a skryptem PHP, oraz operacje na plikach

ZMIENNE. Podstawy PHP

Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft );

Podstawy programowania skrót z wykładów:

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Oczywiście plik musi mieć rozszerzenie *.php

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

1 Podstawy c++ w pigułce.

Wykład 03 JavaScript. Michał Drabik

Część 4 życie programu

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

Instrukcje dołączania plików

Języki skryptowe - PHP. Podstawy PHP. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Programowanie internetowe

Projektowanie stron WWW

I - Microsoft Visual Studio C++

Zajęcia 4 - Wprowadzenie do Javascript

Podstawy Programowania Podstawowa składnia języka C++

Krótki kurs JavaScript

Laboratorium 1 Wprowadzenie do PHP

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Rys.2.1. Drzewo modelu DOM [1]

Dane - pobieranie, przekazywanie i przechowywanie. dr Beata Kuźmińska-Sołśnia

14. POZOSTAŁE CIEKAWE FUNKCJE

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Podstawy i języki programowania

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Wprowadzenie do Scilab: podstawy języka Scilab

Metody numeryczne Laboratorium 2

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

do drukowania tekstu służy funkcja echo <?php echo "hello world!";?> jeżeli użyjemy jej kilka razy: <?php

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

FORMULARZE. G. Przęczek

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

PHP i MySQL dla każdego / Marcin Lis. Wyd. 3. Gliwice, cop Spis treści

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

Języki skryptowe w programie Plans

Aplikacje WWW - laboratorium

Przedmiot: Programowanie usług internetowych - Delphi Przygotował: K. Strzałkowski Rok V. Semestr IX. Wydział ZiMK

Aplikacje internetowe - laboratorium

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Pętla for. Wynik działania programu:

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Wykład 6: PHP: praca z bazą danych MySQL, cz.2

Internetowe bazy danych

Programowanie w języku Python. Grażyna Koba

Zmienne i stałe w PHP

Autor: Joanna Karwowska

2 Przygotował: mgr inż. Maciej Lasota

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Technologie sieciowe Sprawozdanie z labolatorium. Lista 5

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Ćwiczenie: JavaScript Cookies (3x45 minut)

Programowanie strukturalne i obiektowe

Pascal - wprowadzenie

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Podstawy programowania w języku C i C++

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

XML extensible Markup Language. część 5

Bazy danych i strony WWW

Transkrypt:

Podstawy PHP Wstęp PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych. Jego składnia jest bardzo podobna do popularnych języków programowania C/C++, lecz jest bardzo uproszczona programista PHP zazwyczaj nie musi przejmować się poprawnością typów zmiennych, przydzielaniem dla nich pamięci itp. Dodatkowo wbudowana obsługa wielu popularnych baz danych ułatwia twórcy operacje na tych bazach. Dzięki połączeniu z biblioteką GD możliwe jest także dynamiczne tworzenie obrazków GIF (starsze wersje GD) lub PNG (nowsze wersje). Aby plik był rozpoznany przez serwer WWW jako skrypt PHP musi on mieć odpowiednie rozszerzenie. Rozszerzenia te można zdefiniować w konfiguracji serwera WWW, ale zazwyczaj jest to.php3 (dla PHP w wersji 3),.php lub php4 (dla PHP w wersji 4) i.phtml (dla PHP w wersji starszej niż 3). Po nadaniu plikowi takiego rozszerzenia serwer będzie wiedział, że plik ten nie jest przeznaczony do bezpośredniego wyświetlenia (jak w przypadku plików HTML), ale że najpierw trzeba go przepuścić przez parser PHP. Jeśli zwykłemu plikowi HTML nadamy rozszerzenie.php, to zostanie on prawidłowo wyświetlony, mimo że nie jest to skrypt PHP. Dzieje się tak dlatego, że parser PHP przetwarzając stronę ma 2 tryby pracy: HTML, gdzie cała treść jest wyświetlana, bez przetwarzania, i PHP, gdzie treść jest traktowana jako skrypt do przetworzenia. Do określenia w pliku co jest kodem HTML a co PHP służą specjalne znaczniki. Początkowo parser jest w trybie HTML. Aby przejść do trybu PHP można użyć jednego z czterech znaczników: 1 <? echo ("to jest najprostsza metoda, podobna do SGML'a"); 2 echo("jeśli serwujesz pliki XML, użyj tej metody"); 3 <script language="php"> echo ("niektóre edytory (np. FrontPage) nie lubią przetwarzania instrukcji"); </script> 4 <% echo ("Możesz też użyć metody podobnej do tej z ASP"); %> <%= $variable; # To jest skrót dla "<% echo " %> Przykład 1. Wyświetlenie Hello Word : echo 'Hello World!'; Po wejściu na tę stronę z przeglądarki WWW w okienku powinno być widać tylko napis Hello World! (bez cudzysłowów). Jedna uwaga: polecenie echo nie wysyła znaku końca linii, więc jeśli chcesz, aby po ciągu znaków (albo w którymkolwiek miejscu tego ciągu) kończyła się linia, w tym miejscu trzeba wstawić \n. Parser PHP podczas wykonywania skryptu sprawdza jego poprawność. Jeśli coś się nie zgadza, zostaniemy o tym poinformowani. Skrypt będzie jednak wykonany do miejsca, w którym pojawił się błąd. Najczęściej są to błędy składniowe brak średnika na końcu linii, niedomkniętych nawiasach (bardzo częsty błąd przy złożonych instrukcjach warunkowych), cudzysłowach lub nawiasach klamrowych kończących blok danych (przy instrukcjach warunkowych, pętlach). Błędy przy braku zamykających nawiasów klamrowych łatwo można rozpoznać, ponieważ numer linii zawierającej błąd jest o jeden większa od liczby linii w pliku. Zmienne W języku PHP zmienne oznacza się za pomocą znaku dolara ( $ ) przed identyfikatorem. Obsługa zmiennych w PHP jest uproszczona do minimum. Zmienna jest inicjalizowana (to znaczy rezerwowany jest dla niej pewien obszar w pamięci) przy pierwszym jej użyciu. Nazwy zmiennych muszą zaczynać się od litery (dużej lub małej) lub underscore (dolna kreska _ ) a dalej mogą się składać z dowolnej ilości liter, cyfr i znaków o kodzie ASCII powyżej 127. Przy nazwach zmiennych

respektowana jest wielkość znaków zmienne $Test i $test to dwie różne zmienne. Oto przykład przypisywania wartości zmiennym i wykorzystanie ich w poleceniu echo. Przykład 2: $nazwa = 1; // Zmiennej "nazwa" przypisywana jest wartość liczbowa 1 $druga_nazwa = "Tekst"; /* Zmiennej "druga_nazwa" przypisany jest ciąg znaków "Tekst" */ $trzecia_nazwa = $nazwa; // Zmiennej "trzecia_nazwa" przypisywana echo "To jest $druga_nazwa"; // Powinien wyświetlić się napis "To jest Tekst" echo '$druga_nazwa'; // Powinien wyświetlić się napis "$druga_nazwa" echo $nazwa; // Powinna wyświetlić się cyfra 1 Parametr dla polecenia echo można podawać zarówno w cudzysłowach jak i apostrofach. Jednak te parametry nie są sobie równoznaczne. W przypadku cudzysłowów zmienne zawarte między nimi są zamieniane na ich wartość, a w przypadku apostrofów zmienna pozostaje swoją nazwą. Typy zmiennych: liczby całkowite (integer) liczby rzeczywiste (double) ciągi (string) tablice (array) obiekty (object) Dodatkowo PHP potrafi konwertować zmienne całkowite zapisane w różnych formatach liczbowych. Przykład 3 $blah = "0"; // $blah jest ciągiem (ASCII 48) $blah++; // $blah jest ciągiem "1" (ASCII 49) $blah += 1; // $blah jest teraz wartością całkowitą (2) $blah = $foo + 1.3; // $blah jest wartością rzeczywistą (1.3) $blah = 5 + "10 Malutkich Świnek"; // $blah jest wartością całkowitą (15) $blah = 5 + "10 Małych Świń"; // $blah jest wartością całkowitą (15) Przykład 4. Rzutowanie typów danych: $liczba_calkowita = 10; $liczba_rzeczywista = (real) $liczba_calkowita; (int), (integer) rzutuj do typu całkowitego (real), (double), (float) rzutuj do typu rzeczywistego (string) rzutuj do ciągu (array) rzutuj do tablicy (object) rzutuj do obiektu Drugim sposobem, trwałym, jest użycie funkcji settype. Funkcja ta pobiera 2 argumenty. Pierwszym jest nazwa zmiennej do ustalenia typu, a drugim ciąg określający nowy typ zmiennej. W każdym skrypcie PHP dostępne jest kilka zmiennych, których wartość jest ustalana na podstawie zmiennych środowiskowych serwera WWW. Dostępne są jak zwykłe zmienne ze znakiem dolara przed nazwą. GATEWAY_INTERFACE -Informacja o specyfikacji CGI używanej przez serwer, np. CGI/1.1. SERVER_NAME - Nazwa hosta serwera na którym skrypt jest uruchamiany. Jeśli skrypt pracuje na wirtualnym hoście, to zmienna przyjmie jako wartość nazwę wirtualnego hosta. SERVER_SOFTWARE - Ciąg identyfikujący serwera podawany przy odpowiadaniu na zapytania.

SERVER_PROTOCOL - Nazwa i numer wersji protokołu za pomocą którego wysłano zapytanie o stronę, np. HTTP/1.0 ; REQUEST_METHOD - Metoda zapytania użyta do uzyskania dostępu do strony, np. GET, HEAD, POST, PUT. QUERY_STRING - Ciąg zapytania (jeśli takowy istnieje) za pomocą którego połączono się ze stroną. DOCUMENT_ROOT - Katalog główny drzewa dokumentów spod którego skrypt jest wykonywany jest to ustawienie z pliku konfiguracyjnego serwera. HTTP_ACCEPT - Nagłówek z aktualnego zapytania, jeśli taki istnieje. HTTP_ACCEPT_CHARSET - Zawartość nagłówka Accept-Charset z aktualnego zapytania, jeśli taki istnieje, np. iso-8859-1,*,utf-8. HTTP_ENCODING - Zawartość nagłówka Accept-Encoding z aktualnego zapytania, jeśli taki istnieje, np. gzip. HTTP_ACCEPT_LANGUAGE - Zawartość nagłówka Accept-Language z aktualnego zapytania, jeśli taki istnieje, np. en. HTTP_CONNECTION - Zawartość nagłówka Connection z aktualnego zapytania, jeśli taki istnieje, np. Keep-Alive. HTTP_HOST - Zawartość nagłówka Host z aktualnego zapytania, jeśli taki istnieje. HTTP_REFERER - Adres strony (jeśli taka była), która wskazała przeglądarkę do tej strony. Wartość ta jest ustawiana przez przeglądarkę nie wszystkie to robią. HTTP_USER_AGENT - Zawartość nagłówka User-Agent z zapytania, jeśli taki istnieje. Jest to ciąg informujący o przeglądarce która została użyta do obejrzenia bieżącej strony, np. Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Można użyć funkcji get_browser() aby dopasować funkcjonalność strony do przeglądarki użytkownika. REMOTE_ADDR - Adres IP z którego użytkownik połączył się z serwerem. REMOTE_PORT - Port używany do komunikacji pomiędzy użytkownikiem a serwerem. SCRIPT_FILENAME - Ścieżka do aktualnie wykonywanego skryptu. SERVER_ADMIN - Wartość podana dla opcji SERVER_ADMIN w konfiguracji serwera WWW. Jeśli skrypt działa na wirtualnym serwerze, to będzie to wartość podana dla tego wirtualnego serwera. SERVER_PORT - Port na serwerze którego użyto do połączenia. Dla normalnych połączeń będzie to 80. SERVER_SIGNATURE - Ciąg zawierający wersję i nazwę wirtualnego hosta który jest dodawany do stron generowanych przez serwer. SCRIPT_NAME - Zawiera ścieżkę do aktualnie wykonywanego pliku. Jest to przydatne do skyptów, które muszą wskazywać samego siebie. REQUEST_URI - URI który został podany aby uzyskać dostęp do tej strony. Zmienne ustawiane przez PHP Argv - Tablica argumentów przkazywanych do skryptu. Jeśli skrypt jest uruchamiany z linii poleceń, to zmienna ta daję dostęp do argumentów w stylu języka C. Jeśli jest wywołany przez metodę GET, to zmienna ta zawierać będzie ciąg parametrów (query string). Argc - Zawiera liczbę parametrów podanych podanych do skryptu w linii poleceń (jeśli skrypt został wywołany z linii poleceń). PHP_SELF - Nazwa pliku aktualnie wykonywanego skryptu, względna do katalogu głównego dokumentów. Ta zmienna jest niedostępna jeśli PHP jest uruchamiany z linii poleceń. HTTP_COOKIE_VARS - Tablica asocjacjna zmiennych przekazanych do skryptu przez HTTP cookies. Dostępna tylko jeśli włączone zostało śledzenie zmiennych przez ustawienie w konfiguracji PHP opcji track_vars lub komendą _track_vars.

HTTP_GET_VARS - Tablica asocjacjna zmiennych przekazanych do skryptu przez metodę GET. Dostępna tylko jeśli włączone zostało śledzenie zmiennych przez ustawienie w konfiguracji PHP opcji track_vars lub komendą _track_vars. HTTP_POST_VARS - Tablica asocjacjna zmiennych przekazanych do skryptu przez metodę POST. Dostępna tylko jeśli włączone zostało śledzenie zmiennych przez ustawienie w konfiguracji PHP opcji track_vars lub komendą _track_vars. Przykład 5. Definiowanie stałych: define("stala", "Hello world."); echo STALA; // Wyświetla "Hello world." Operatory Operacja przypisania: Przykład Nazwa Wynik $a + $b Dodawanie Suma $a i $b. $a $b Odejmowanie Różnica $a i $b. $a * $b Mnożenie Iloczyn $a i $b. $a / $b Dzielenie Iloraz $a i $b (bez reszty). $a % $b Modulo Reszta z dzielenia $a przez $b. $nazwa = $inna_nazwa = $trzecia_nazwa = 5; Operacje bitowe Przykład Wynik $a += 2 Do zmiennej $a dodane zostanie 2 $a -= 2 Od zmiennej $a odjęte zostanie 2 $a *= 2 Zmienna $a zostanie pomnożona przez 2 $a /= 2 Zmienna $a dodane podzielona przez 2 $a %= 2 Zmienna $a przyjmie wartość reszty z dzielenia $a przez 2 $a.= dalszy ciąg Do zmiennej $a na końcu dodany zostanie ciąg dalszy ciąg Przykład Nazwa Wynik $a & $b AND Ustawiane są bity które są ustawione w obu zmiennych. $a $b OR Ustawiane są bity, które są ustawione w jednej lub drugiej zmiennej. $a ^ $b XOR Ustawiane są bity, które są ustawione w jednej lub drugiej zmiennej, ale nie w obu. ~ $a NOT Inwerter ustawiane są bity które nie są ustawione w zmiennej $a i odwrotnie. $a << $b Przesunięcie w lewo Przesuń bity z $a $b-razy w lewo (każdy krok oznacza pomnożenie przez 2) $a >> $b Przesunięcie w prawo Operatory porównania Przesuń bity z $a $b-razy w prawo (każdy krok oznacza podzielenie przez 2) Przykład Nazwa Wynik $a == $b Równy Prawda jeśli $a jest równe $b. $a === Identyczny Prawda jeśli $a jest równe $b i są tego samego typu. (tylko PHP4)

$b $a!= $b Nie równe Prawda jeśli $a nie jest równe $b. $a!== $b Nie identyczny Prawda jeśli $a nie jest równe $b lub nie są tego samego typu. (tylko PHP4) $a < $b Mniejsze Prawda jeśli $a jest mniejsze niż $b. $a > $b Większe Prawda jeśli $a jest większe niż $b. $a <= $b Mniejsze lub Prawda jeśli $a jest mniejsze lub równe $b. równe $a >= $b Większe lub równe Prawda jeśli $a jest większe lub równe $b. Operator kontroli błedów Operator kontroli błędów ( @ ) powoduje, że wyrażenie przed którym postawiono ten znak nie spowoduje wyświetlenia się jakiegokolwiek błędu lub ostrzeżenia. Przykład 6: /* Jeden z najczęstszych błędów SQL (za dużo o jeden apostrof) */ $res = @mysql_query ("select nazwa, kod from 'lista") or die ("Zapytanie się nie powiodło: błąd to '$php_errormsg'"); Inkrementacja i dekrementacja: Operatory logiczne Przykład Nazwa Wynik ++$a Preinkrementacja Zwiększa $a o jeden, a następnie zwraca $a. $a++ Postinkrementacja Zwraca $a, a następnie zwiększa $a o jeden. $a Predekrementacja Zmniejsza $a o jeden, po czym zwraca $a. $a Postdekrementacja Zwraca $a, po czym zmniejsza $a o jeden. Przykład Nazwa Wynik $a && $b AND Prawda, jeśli $a i $b są prawdą $a $b OR Prawda, jeśli $a lub $b są prawdą! $a NOT Prawda, jeśli $a nie jest prawdą Operator ciągu (. kropka) służy do łączenia kilku ciągów w jedną całość. Przykład 7: $zmienna1 = "Wartość zmiennej 'zmienna2' to"; $zmienna2 = 5; echo $zmienna1." ".$zmienna2; Instrukcje Instrukcja Składnia Przykład Instrukcja warunkowa IF if(wyrażenie_warunkowe) instrukcja wykonywana jeśli spełniony zostanie warunek elseif(inne_wyrażenie_warunk owe) instrukcja wykonywana jeśli spełniony zostanie drugi warunek, a pierwszy nie else instrukcja wykonywana jeśli nie zostanie spełniony $a = 2; $b = 5; $c = 1; if($a > $b) echo "$a jest większe od $b"; elseif ($b > $c) echo "$b jest większe od $c"; else echo "$c jest większe od $a i $b"; if($a)

Pętla FOR Pętla WHILE Pętla DO WHILE SWITCH żaden z warunków for( inicjalizacja zmiennych ; sprawdzenie warunku ; modyfikacja zmiennych) blok wyrażeń for( $x = 1; $x <= 10; $x++ ) echo $x."<br>"; do instrukcje while( warunek ); switch($zmienna) case 'wartość1': instrukcje case 'wartość2': instrukcje default: instrukcje echo "Zmienna $a ma wartość większą od zera"; for( $x = 1; $x <= 10; $x++ ) echo $x."<br>"; $x=1; while($x <= 10) echo $x."<br>"; $x++; $x=1; do echo $x."<br>"; $x++; while($x <= 10); $i = 3; switch($i) case 0: case 1: case 2: case 3: echo "Zmienna $i jest mniejsza bądź równa od trzech\n"; case 4: echo "Zmienna $i jest równa cztery\n"; default: echo "Zmienna $i jest większa od czterech\n"; Przerwanie pętli Przykład 11: for($x = 1; $x<=100; $x++) if($x % 2!= 0) continue; //tu przerywamy I przechodzimy to następnego kroku pętli echo $x." "; Przykład 12: for($x = 0; $x<10; $x++) if($x%2==0) echo $x." "; if($nazwa == "Test1") //całkowite wyjście z pętli

Przekazywanie danych między stronami Formularze Jeśli użytkownik musi podać jakieś dane (np. w celu dodania ich do bazy danych), to jedyną metodą jest pobranie ich ze standardowego formularza HTML. W większości języków programowania należy używać dodatkowych bibliotek aby uzyskać dostęp do danych przesyłanych z formularza. W PHP zostało to maksymalnie uproszczone. Wszystkie dane z formularza trafiają do odpowiednich tablic asocjacyjnych o nazwach kluczy takich, jak nazwy pól formularza. Jeśli w konfiguracji PHP włączona zostanie opcja register_globals (jest ona domyślnie wyłączona od wersji 4.2.0), to stworzone zostaną od razu zmienne o nazwach takich jak nazwy pól formularza. Są dwie metody przekazywania parametrów do innych stron: metoda GET i metoda POST. Metody GET używa się kiedy parametrów jest niewiele. Dzieje się tak ponieważ parametry przekazuje się za pomocą adresu URL (np. http://www.cos.pl/strona.php?parametr1=wartość1&parametr2=wartość2), którego długość jest ograniczona. Należy też pamiętać że parametry są widoczne w pasku adresu przeglądarki, więc tej metody nie należy używać jeśli przekazywane są np. hasła. Metoda POST do przekazywania parametrów wykorzystuje nagłówek zapytania wystarczy wiedzieć, że metoda ta umożliwia przekazywanie dużo większych parametrów, a także że parametrów nie widać w pasku przeglądarki. Dane przesłane metodą GET trafiają do tablicy $_GET (lub $HTTP_GET_VARS w wersjach starszych niż 4.1.0) a dane z metody POST to tablicy $_POST (lub $HTTP_POST_VARS). Tablice $_GET i $_POST są superglobalne. Oznacza to, że są widoczne w każdym miejscu kodu PHP bez konieczności użycia składni globals. Przykład 13 Plik jeden.html <html> <head> <title> Test formularza </title> </head> <body> <form action="dwa.php" method="get"> Imię: <input type=text name="imie"/><br/> Nazwisko: <input type=text name="nazwisko"/><br/> Proszę o fakturę do zamówienia: <input type=checkbox name="faktura"/><br/> Chcę zamówić:<br/> <input type=radio name=zamow value="kola"/>coca-colę<br> <input type=radio name=zamow value="fanta"/>fantę<br> <input type=radio name=zamow value="sprite"/>sprite'a<br> <input type=submit value="wyślij"/> </form> </body> </html> Plik dwa.php <html> <head> <title> Wyniki </title> </head> <body> Imię: echo $_GET['imie']<br>

Nazwisko: echo $_GET['nazwisko']<br> Faktura: echo ($_GET['faktura'] == 'on'? 'Tak' : 'Nie')<br> Zamówienie: switch($_get['zamow']) case "kola": echo "Coca-cola"; case "fanta": echo "Fanta"; case "sprite": echo "Sprite"; </body> </html> Ładowanie plików Często zachodzi też potrzeba przekazania jakiegoś pliku na serwer, na przykład dodając zdjęcie do galerii. Plik przesyła się korzystając z pola formularza typu file. Należy pamiętać o tym, że w tagu otwierającym formularz musi znaleźć się parametr ENCTYPE= multipart/form-data a formularz musi być wysyłany metodą POST. Na stronie do której został wysłany formularz dostępna będzie wielowymiarowa tablica asocjacyjna $_FILES ($HTTP_POST_FILES w starszych wersjach PHP), której pierwszym wymiarem będą pola typu file z formularza (klucze są nazwami tych pól), a w drugim informacje o przesłanym pliku. Informacje o przesłanym pliku: tmp_name - nazwa tego pliku na serwerze wraz ze ścieżką; używając tego pola można uzyskać dostęp do przesłanego pliku name - nazwa pliku jaką posiadał u użytkownika type - typ MIME pliku, np. text/plain lub image/gif; informacja ta jest dostępna tylko jeśli przeglądarka klienta dostarczyła takiej informacji. size - wielkość pliku w bajtach Przykład 14: plik1.html: <html> <body> <form action="plik2.php" method="post" ENCTYPE="multipart/form-data"> <input type="file" name="plik"/><br/> <input type="submit" value="wyślij plik"/> </form> </body> </html> plik2.php: $max_rozmiar = 1024*1024; if (is_uploaded_file($_files['plik']['tmp_name'])) if ($_FILES['plik']['size'] > $max_rozmiar) echo 'Błąd! Plik jest za duży!'; else echo 'Odebrano plik. Początkowa nazwa: '.$_FILES['plik']['name']; echo '<br/>'; if (isset($_files['plik']['type'])) echo 'Typ: '.$_FILES['plik']['type'].'<br/>'; move_uploaded_file($_files['plik']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].'/foto/'.$_FILES['plik']['name']);

else echo 'Błąd przy przesyłaniu danych!'; Odnośniki Istnieje możliwość przekazywania niedużej liczby parametrów za pomocą zwykłych odnośników dostępnych w języku HTML. W takim przypadku wykorzystuje się metodę GET: <a href= strona.php?imie=franek&nazwisko=kowalski >Kliknij tu</a> Tablice Tablice są bardzo specyficznym typem zmiennych są to, najprościej mówiąc, zmienne zawierające w sobie uporządkowany zbiór zmiennych. Do zmiennych tych uzyskuje się dostęp przez liczbę w nawiasie kwadratowym podane bezpośrednio po nazwie zmiennej tablicy. Liczba ta to tak zwany indeks numer kolejny zmiennej w tablicy. Tak samo przypisuje się wartość do tablicy. Przykład 15: $tablica[0] = "Wpis numer 0"; $tablice[1] = "Wpis numer 1"; $tablica[2] = "Wpis numer 2"; echo $tablica[2]; // Wyświetlony zostanie napis "Wpis numer 2"; Aby po prostu dodać kolejny wpis na końcu tabeli wystarczy przy przypisywaniu wartości nie wpisywać indeksu do nawiasów kwadratowych. Jeśli w ten sposób dodawane są wpisy do nowej tablicy, to pierwszy wpis ma indeks 0. Indeks można też podawać ze zmiennej, z innej tablicy czy funkcji z dowolnego wyrażenia zwracającego wartość. Przykład 16: $tab1[] = 1; $tab1[] = 0; $tab1[] = 3; $tab1[] = 2; $tab2[] = "Pierwszy"; $tab2[] = "Drugi"; $tab2[] = "Trzeci"; $tab2[] = "Czwarty"; echo $tab2[$tab1[2]]; Tablice asocjacyjne W PHP występuje też inny rodzaj tablic, tak zwane tablice asocjacyjne (zwane też czasem haszami hash table). Są to tablice, w których zamiast indeksów liczbowych używa się identyfikatorów znakowych (kluczy): Przykład 17: $tablica["imie"] = "Jan"; $tablica["nazwisko"] = "Kowalski"; $tablica["adres"] = "Polna 1"; echo $tablica["imie"]." ".$tablica["nazwisko"].", ul. ".$tablica["adres"]."n"; Przeglądanie tablicy gdy nie znamy jest wielkości (liczby elementów) wtedy można skorzystać z funkcji count( $nazwa_tablicy ). Zwraca ona ilość elementów w tablicy podanej jako parametr. Przykład 18:

$tbl[] = 1; $tbl[] = 2; $tbl[] = 3; $tbl[] = 4; $tbl[] = 5; for( $x = 0, $cnt = count($tbl); $x < $cnt; $x++ ) echo $tbl[$x]; Przeglądanie tablicy asocjacyjnej. Przykład 19: $tablica["imie"] = "Jan"; $tablica["nazwisko"] = "Kowalski"; $tablica["adres"] = "Polna 1"; while( list($klucz, $wartosc) = each($tablica) ) echo "$klucz => $wartosc<br>"; Sortowanie tablic PHP ofertuje cały zestaw funkcji służących do sortowania tablic. Są to: asort() - sortuje tablice asocjacyjne zachowując przypisanie kluczy do wartości arsort() - sortuje w odwrotnej kolejności tablice asocjacyjne zachowując przypisanie kluczy do wartości. Funkcja prawie identyczna jak poprzednia, tyle że dane sortowane są od tyłu ksort() - sortuje tablice asocjacyjne według kluczy. rsort() - sortuje zwykłe tablice (nie asocjacyjne) w odwróconej kolejności sort() - sortuje zwykłe tablice (nie asocjacyjne) w kolejności alfabetycznej uasort() - funkcja sortująca tablice asocjacyjne za pomocą zdefiniowanej przez użytkownika funkcji porównującej elementy (nazwa funkcji jest podawana za pomocą drugiego parametru) usort() - funkcja sortująca zwykłe tablice za pomocą funkcji zdefiniowanej przez użytkownika uksort() - funkcja sortująca tablice asocjacyjne według klucza za pomocą funkcji zdefiniowanej przez użytkownika. Tworzenie ciągów z tablic i odwrotnie Przykład 20 (wykorzystanie średnika jako rozdzielenia danych): $dane = "12/11/2000;19:23:33;Netscape Navigator;192.168.1.1"; $tablica = explode(";", $dane); Jest także rozszerzona wersja funkcji explode: split(). Różni się ona tym, że zamiast prostego ciągu znaków rozdzielających pola, akceptuje ona wyrażenia regularne. Przykład 21 (operacja odwrotna tworzenie ciągu z tablicy) $dane = implode(";", $tablica); Funkcje Funkcja jest kawałkiem kodu, który można wywołać podając jej nazwę. Już wcześniej podane zostało kilka funkcji dostarczanych przez PHP, takich jak array(), each(), list(), explode() czy implode(). Jak można zauważyć, funkcje rozpoznaje się po nawiasach występujących po ich nazwie. W nawiasach tych (jeśli funkcja tego wymaga) podaje się parametry dla danej funkcji. Niektóre funkcje zwracają jakąś wartość, a więc wywołanie takiej funkcji można wstawić jak dowolne inne wyrażenie do listy parametrów innej funkcji czy np. do obliczenia.

Przykład 22 (własna funkcja obliczająca sumę) function suma($parametr1 = 0, $parametr2 = 0) $wartosc = $parametr1 + $parametr2; return $wartosc; Klasy Przykład 23 (klasa koszyk) // Początek definicji klasy Koszyk - definiującej koszyk sklepowy class Koszyk // Definicja zmiennej - tablicy asocjacyjnej zawierającej numery artykułów i // ich ilość var $artykuly; // Metoda dodająca podaną ilość artykułów do koszyka function dodaj($numer, $ilosc) $this->artykuly["$numer"] += $ilosc; // Metoda usuwająca podaną ilość artykułów z koszyka function usun($numer, $ilosc) if($this->artykuly["$numer"]>$ilosc) $this->artykuly["$numer"]-=$ilosc; else $this->artykuly["$numer"]=0; // Metoda wyświetlająca zawartość koszyka function wyswietl() while(list($k, $v) = each($this->artykuly)) if($v>0) echo "Artykul nr $k - $v sztuk<br>"; // Przykład wykorzystania $koszyk = new Koszyk; $koszyk->dodaj('20', 2); $koszyk->dodaj('12', 4); $koszyk->dodaj('20', 5); $koszyk->usun('12', 4); $koszyk->wyswietl(); Dziedziczenie Przykład 24 class Nazwany_koszyk extends Koszyk var $nazwa; function ustaw_nazwe($nowa_nazwa) $this->nazwa = $nowa_nazwa; $koszyk = new Nazwany_koszyk; $koszyk->ustaw_nazwe('fredzio'); $koszyk->dodaj('2', 34); echo 'Właściciel: '.$koszyk->nazwa.'<br/>'; $koszyk->wyswietl();

Zastosowanie konstruktora klasy: <? class Auto_koszyk extends Nazwany_koszyki function Auto_koszyk( $nazwa = 'Anonim') $this->ustaw_nazwe($nazwa); $koszyk = new Auto_koszyk('Jakiś właściciel'); $koszyk->dodaj('4', 30); echo 'Właściciel: '.$koszyk->nazwa.'<br/>'; $koszyk->wyswietl(); Include i require W PHP istnieją dwie instrukcje, które pozwalają włączyć do kodu zawartość innego pliku także zawierającego kod PHP. Obu tym instrukcjom podaje się jeden parametr nazwę pliku do włączenia do kodu (może to być ścieżka do pliku znajdującego się na innym serwerze WWW). Różnica między nimi polega na sposobie włączania tych plików do kodu. W przypadku instrukcji require pliki dołączane są do kodu jeszcze przed parsowaniem, w każdym miejscu gdzie znajduje się instrukcja require. Dlatego instrukcja ta nie nadaje się do dołączania plików których nazwa pobierana jest ze zmiennej zamiast tego należy użyć instrukcji include. Używając tych instrukcji należy pamiętać o dwóch rzeczach. Po pierwsze, przetwarzanie plików zaincludowanych zaczyna się od trybu HTML, a więc jeśli plik zawiera tylko kod PHP, to powinien zaczynać się od jednego ze znaczników otwierających. Po drugie należy pamiętać, że jeśli instrukcja include używana jest w pętli lub instrukcji warunkowej, to pomimo że jest to teoretycznie jedna linia, to musi znajdować się ona w nawiasach klamrowych, ponieważ ta pojedyncza linia zamieniana jest na wiele linii dołączanych z innego pliku. Funkcja readfile() Innym typem funkcji służącej do dołączania treści zawartych w innym pliku jest funkcja readfile(). Rzeczą odróżniającą tą funkcję od instrukcji zawartych w poprzednim punkcie jest to, że dane pobrane z pliku nie są przetwarzane przez PHP, więc funkcja ta nadaje się tylko do wyświetlania plików HTML bądź czysto tekstowych.