Technologie internetowe II Wykład 1 Dr Krzysztof Heller
Technologie internetowe II Literatura Meloni J.C.: PHP, MySQL i Apache dla każdego. Wydanie III, Helion, 2007 Lis M.: PHP i MySQL dla każdego, Helion, 2005 Leszek 'leon' Krupiński: Wykłady internetowe, 2007 http://docs.wsei.pl/dydaktyka/Techn_Internet_II_wyklad1.ppt 19-09-2009 Technologie internetowe II
Technologie internetowe II Plan wykładu 1 Podstawowe elementy języka PHP. Typy danych, stałe i zmienne, operatory i wyrażenia. Instrukcje warunkowe i instrukcje pętli. Tablice. 19-09-2009 Technologie internetowe II
Podstawowe elementy języka PHP
Technologie internetowe II Język PHP PHP - język skryptowy służący do rozszerzania możliwości stron internetowych. Składnia bardzo podobna do popularnych języków programowania C/C++, lecz uproszczona. Wbudowana obsługa wielu popularnych baz danych. Dzięki połączeniu z biblioteką GD możliwe jest także dynamiczne tworzenie obrazków GIF (starsze wersje GD) lub PNG (nowsze wersje). 19-09-2009 Technologie internetowe II
Podstawy programowania PHP Aby plik był rozpoznany przez serwer WWW jako skrypt PHP musi on mieć odpowiednie rozszerzenie. Rozszerzenia są definiowalne w konfiguracji serwera WWW, zazwyczaj: .php3 (dla PHP w wersji 3), .php lub php4 (dla PHP w wersji 4), .phtml (dla PHP w wersji starszej niż 3). 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. 19-09-2009 Technologie internetowe II
Podstawy programowania PHP Jeśli zwykłemu plikowi HTML nadamy rozszerzenie .php, to zostanie on prawidłowo wyświetlony Parser PHP przetwarzając stronę ma 2 tryby pracy: HTML, gdzie cała treść jest wyświetlana, bez przetwarzania, 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. skrócone: <? echo ("to jest najprostsza metoda, podobna do SGML'u\n"); ?>; uwaga - short_open_tag = on 2. standardowe: <?php echo("jeśli serwujesz pliki XML, użyj tej metody\n"); ?&>; 3. skryptowe: <script language="php"> echo ("niektóre edytory (np. FrontPage) nie lubią przetwarzania instrukcji"); </script> 4. ASP: <% echo ("Możesz też użyć metody podobnej do tej z ASP"); %> <%= ; # To jest skrót dla "<%echo .." %>; uwaga – asp_tags = on 19-09-2009 Technologie internetowe II
Podstawy programowania PHP Niby-funkcja echo: dla większości normalnych funkcji parametry trzeba podawać w nawiasach, w przypadku funkcji echo można je pominąć, "echo" jest elementem składni języka, służy do wysyłania tekstu podanego jako parametr do przeglądarki użytkownika . echo nie wysyła znaku końca linii, więc w miejscu końca linii trzeba wstawić \n Funkcja print() – działanie podobne, zwraca wartość. 19-09-2009 Technologie internetowe II
Technologie internetowe II Pierwszy program <?php echo "Witaj sieci!"; ?> lub print ("Witaj sieci!„); 19-09-2009 Technologie internetowe II
Drugi program – łączenie z HTML <head> <title>Skrypt PHP zawierający HTML</title> </head> <body> <b> <?php echo "witaj świecie"; ?> </b> </body> </html> 19-09-2009 Technologie internetowe II
Technologie internetowe II Składnia Zakańczanie - umieszczenie na końcu każdej instrukcji (niekoniecznie linii) znaku średnika (';'). Można pominąć gdy jest przejście do trybu HTML. Komentarz – zaznaczanie tekstu nie będącego programem. Są 3 sposoby: Znak // Znak # Pomiędzy znakami /* a */ Przykład: <? echo „cokolwiek"; // jak w C/C++ echo „cokolwiek 2"; # jak w UNIX shell /* komentarza w kilku liniach */ ?> 19-09-2009 Technologie internetowe II
Typy danych, stałe i zmienne, operatory i wyrażenia
Technologie internetowe II Zmienne Zmienne oznacza się za pomocą znaku dolara ('$') przed identyfikatorem. Zmienna jest inicjalizowana 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 ważna jest wielkość znaków - zmienne $Test i $test to dwie różne zmienne. Zmienne są widoczne tylko wewnątrz funkcji lub skryptu, w którym się znajdują. 19-09-2009 Technologie internetowe II
Przykłady użycia zmiennych <? $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 jest wartość zmiennej "nazwa" */ 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 ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Typy zmiennych liczby całkowite (integer) liczby rzeczywiste (double) ciągi (string) tablice (array) obiekty (object) PHP potrafi konwertować zmienne całkowite zapisane w różnych formatach liczbowych: <? $a = 1234; # liczba dziesiętna $a = -123; # liczba ujemna $a = 0123; # liczba ósemkowa (równoznaczne z dziesiętnym 83) $a = 0x12; # liczba szesnastkowa (równoznaczne z dziesiętnym 18) ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Ustalenie typu PHP sam ustala typ zmiennej, zależnie od kontekstu: <? $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 = + 1.3; // $blah jest wartością rzeczywistą (1.3) $blah = 5 + "10 Malutkich Świnek"; // jest wartością całkowitą (15) $blah = 5 + "10 Małych Świń"; // jest wartością całkowitą (15) ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Zmiana typu Podczas przypisywania zmiennej nowej wartości, poprzednia wartość jest oczywiście zamazywana. W takim przypadku typ zmiennej ustalany jest od nowa. Jeśli jednak zachodzi potrzeba zmiany typu lub PHP błędnie rozpoznaje typ, to można tego dokonać za pomocą rzutowania (cast - efekt jest jednorazowy) lub za pomocą ustalenia typu - funkcja settype (efekt trwały). 19-09-2009 Technologie internetowe II
Technologie internetowe II Rzutowanie typu Dozwolone typy rzutowań: (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 19-09-2009 Technologie internetowe II
Technologie internetowe II Rzutowanie typu <?php $nieokreslona = 3.14; $chwila = (double) $nieokreslona; echo "czy ".$chwila." jest typu double? ".is_double($chwila)."<br/>"; // double $chwila = (string) $nieokreslona; echo "czy ".$chwila." jest typu string? ".is_string($chwila)."<br/>"; // string $chwila = (integer) $nieokreslona; echo "czy ".$chwila." jest typu integer? ".is_integer($chwila)."<br/>"; // integer $chwila = (boolean) $nieokreslona; echo "czy ".$chwila." jest typu boolean? ".is_bool($chwila)."<br/>"; // boolean echo "<hr/>"; echo "pierwotny typ zmiennej $nieokreslona: "; echo gettype($nieokreslona); // double ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Ustalenie typu Funkcja settype pobiera 2 argumenty. Pierwszym jest nazwa zmiennej do ustalenia typu, a drugim ciąg określający nowy typ zmiennej: "integer" "double" "string" "array" "object" Funkcja zwraca wartość "true" gdy wszystko poszło pomyślnie, w przeciwnym razie zwracana jest wartość "false". 19-09-2009 Technologie internetowe II
Technologie internetowe II Ustalenie typu <?php $nieokreslona = 3.14; echo "czy ".$nieokreslona." jest typu double? ".is_double($nieokreslona)."<br/>"; // double settype($nieokreslona, 'string'); echo "czy ".$nieokreslona." jest typu string? ".is_string($nieokreslona)."<br/>"; // string settype($nieokreslona, 'integer'); echo "czy ".$nieokreslona." jest typu integer? ".is_integer($nieokreslona)."<br/>"; // integer settype($nieokreslona, 'double'); settype($nieokreslona, 'bool'); echo "czy ".$nieokreslona." jest typu boolean? ".is_bool($nieokreslona)."<br/>"; // boolean ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Testowanie typu <?php $testing; // deklaracja bez przypisania wartości echo "typ null? ".is_null($test); // sprawdza, czy wartość jest typu null $testing = 5; echo "typ integer? ".is_int($test); // sprawdza, czy wartość typu integer $testing = "five"; echo "typ string? ".is_string($test); // sprawdza, czy wartość typu string $testing = 5.024; echo "typ double? ".is_double($test); // sprawdza, czy wartość typu double $testing = true; echo "typ boolean? ".is_bool($test); // sprawdza, czy wartość typu boolean $testing = array('apple', 'orange', 'pear'); echo "tablica? ".is_array($test); // sprawdza, czy wartość typu array echo "wartość numeryczna? ".is_numeric($test); // sprawdza, czy wartość numeryczna echo "zasób? ".is_resource($test); // sprawdza, czy jest to zasób ?> 19-09-2009 Technologie internetowe II
Zmienne predefiniowane (superglobalne) 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ą. Zmienne dzielą się na: ustawiane przez serwer WWW ustawiane przez PHP 19-09-2009 Technologie internetowe II
Technologie internetowe II Tablice $_GET – zmienne przesłane do skryptu metodą GET $_POST – zmienne przesłane do skryptu metodą POST $_COOKIE – zmienne przesłane do skryptu metodą COOKIE $_FILES – zmienne przesłane do skryptu przez wysłanie pliku $_SERVER – wysłane nagłówki, ścieżkę do pliku, adres skryptu $_ENV – wartości zmiennych środowiskowych serwera $_REQUEST – zmienne przesłane do skryptu przez użytkownika $_SESSION – zmienne zarejestrowane w aktualnej sesji 19-09-2009 Technologie internetowe II
Zmienne ustawiane przez serwer WWW 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. 19-09-2009 Technologie internetowe II
Zmienne ustawiane przez serwer WWW 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ą. 19-09-2009 Technologie internetowe II
Zmienne ustawiane przez serwer WWW 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 ogląda bieżącą stronę. 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. 19-09-2009 Technologie internetowe II
Zmienne ustawiane przez PHP argv - Tablica argumentów przekazywanych 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ą <?php_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ą <?php_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ą <?php_track_vars?>. 19-09-2009 Technologie internetowe II
Stałe ustawiane przez parser __FILE__ - Nazwa pliku ze skryptem który jest aktualnie przetwarzany. Jeśli stała ta użyta jest wewnątrz pliku który został zainkludowany (o poleceniu include w dalszej części kursu), to podana zostanie nazwa pliku zainkludowanego, a nie pliku nadrzędnego. __LINE__ - Numer linii w skrypcie która aktualnie jest przetwarzana. Jeśli stała ta użyta jest wewnątrz pliku który został zainkludowany, to podany zostanie numer linii przetwarzanej w pliku zainkludowanym. PHP_VERSION - Ciąg reprezentujący wersję parsera PHP aktualnie używaną. PHP_OS - Nazwa systemu operacyjnego na którym uruchamiany jest parser PHP. TRUE - Logiczna wartość prawdy. FALSE - Logiczna wartość fałszu. 19-09-2009 Technologie internetowe II
Stałe definiowane przez użytkownika <?php define("ROK", "2006"); echo "Mamy rok ".ROK; ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Operatory Operatory - symbole, które służą do operacji na zmiennych. Operatory dzielą się na: operatory arytmetyczne, operatory przypisania, operatory operacji bitowych, operatory porównania, operator kontroli błędów, operator wywołania (uruchamianie zewnętrznych programów), operatory inkrementacji i dekrementacji, operatory logiczne operatory ciągu. 19-09-2009 Technologie internetowe II
Operator przypisania, operator konkatenacji Podstawowym operatorem przypisania jest symbol '='. Zmiennej można przypisać także wartość innej zmiennej: $b = 5; $a = $b. Zmiennym można przypisywać wartości innych zmiennych. Wartości te można przypisywać kaskadowo, przy czym wartości przypisywane będą od prawej do lewej. Operator konkatenacji . np. „Ala”.”kot” -> Alakot. 19-09-2009 Technologie internetowe II
Operatory arytmetyczne 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 $a % $b Modulo Reszta z dzielenia $a przez $b Operator konkatenacji . np. „Ala”.”kot” -> Alakot 19-09-2009 Technologie internetowe II
Technologie internetowe II Operator przypisania 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" 19-09-2009 Technologie internetowe II
Operatory operacji bitowych 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 Przesuń bity z $a $b-razy w prawo (każdy krok oznacza podzielenie przez 2) 19-09-2009 Technologie internetowe II
Technologie internetowe II Operatory porównania Przykład Nazwa Wynik $a == $b Równy Prawda jeśli $a jest równe $b. $a === $b Identyczny Prawda jeśli $a jest równe $b i są tego samego typu. (tylko PHP4) $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 równe Prawda jeśli $a jest mniejsze lub równe $b. $a >= $b Większe lub równe Prawda jeśli $a jest większe lub równe $b. 19-09-2009 Technologie internetowe II
Operator kontroli błędó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. <? /* 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 ''"); ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Operator wywołania Operator ten służy do uruchamiania zewnętrznych programów lub poleceń powłoki. Wystarczy wpisać polecenie pomiędzy znaki odwróconego apostrofu ('`') aby zostało ono wykonane. <? $wynik = `ls -l /home/`; echo $wynik; ?> Po uruchomieniu tego skryptu wyświetlona zostanie zawartość katalogu /home na serwerze. 19-09-2009 Technologie internetowe II
Operatory inkrementacji i dekrementacji 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. 19-09-2009 Technologie internetowe II
Operatory inkrementacji i dekrementacji <? echo "<h3>Postinkrementacja"; $a = 5; echo "Powinno być 5: " . $a++ . "<br>\n"; echo "Powinno być 6: " . $a . "<br>\n"; echo "<h3>Preinkrementacja"; echo "Powinno być 6: " . ++$a . "<br>\n"; echo "<h3>Postdekrementacja"; echo "Powinno być 5: " . $a-- . "<br>\n"; echo "Powinno być 4: " . $a . "<br>\n"; echo "<h3>Predekrementacja;"; echo "Powinno być 4: " . --$a . "<br>\n"; echo "Powinno być 4: " . $a . "<br>;\n"; ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Operatory logiczne Nazwa Symbol suma logiczna (LUB) || iloczyn logiczny (ORAZ) && negacja (NIE) ! 19-09-2009 Technologie internetowe II
Instrukcje warunkowe i instrukcje pętli
Technologie internetowe II Struktury kontrolne Instrukcje warunkowe Instrukcje pętli: For While Do … while Break Instrukcja switch 19-09-2009 Technologie internetowe II
Technologie internetowe II Instrukcje warunkowe <? if(wyrażenie_warunkowe) instrukcja wykonywana jeśli spełniony zostanie warunek else if(inne_wyrażenie_warunkowe) instrukcja wykonywana jeśli spełniony zostanie drugi warunek, a pierwszy nie else instrukcja wykonywana jeśli nie zostanie spełniony żaden z warunków ?> Wyrażeniem warunkowym jest dowolne wyrażenie. Za warunek uznawane jest wszystko co zwraca wartość, czyli wszystkie zmienne, wyrażenia logiczne, funkcje itp. Spełniony warunek - wartość większa od zera. 19-09-2009 Technologie internetowe II
Technologie internetowe II Instrukcje warunkowe <?php $nastroj = "smutny"; if ($nastroj == "radosny") { echo "Hurrra, jestem w dobrym nastroju!";} else { echo "Mój nastrój jest $nastroj.";} ?> Jeśli chcemy, aby po sprawdzeniu warunku wykonane zostało nie jedno, ale kilka poleceń, to te polecenia trzeba ująć w nawiasy klamrowe. 19-09-2009 Technologie internetowe II
Technologie internetowe II Instrukcje warunkowe <?php $nastroj = "smutny"; if ($nastroj == "radosny") { echo "Hurrra, jestem w dobrym nastroju!";} else if ($nastroj == "smutny") { echo "Nie martw się, wszystko będzie dobrze!";} else { echo "Ani wesoły, ani smutny, ale $nastroj.";} ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Instrukcje warunkowe <? $a = 6; $b = 5; $c = 7; $d = 6; $e = 6; if( ($a > $b || $a > $c) && // Nawiasy klamrowe nie są potrzebne - to $d == $e ) // 2 linie ale jedna instrukcja echo 'Zmienna $a jest większa od $b a zmienna $d jest równa $e, '. 'więc ten tekst pokaże się.'; // Taka konstrukcja jest dozwolona ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Pętla for <? for( inicjalizacja zmiennych ; sprawdzenie warunku ; modyfikacja zmiennych) { blok wyrażeń } ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Pętla for – przykład 1 <?php for ($licznik=1; $licznik<=12; $licznik++) { echo "$licznik razy 2 to ".($licznik * 2)."<br>";} ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Pętla for – przykład 2 <?php for ($licznik=1; $licznik<=10; $licznik++) { $tymcz = 4000/$licznik; echo "4000 dzielone przez $licznik to... $tymcz<br>"; } ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Pętla for – przykład 3 <?php $licznik = -4; for (; $licznik <= 10; $licznik++) { if ($licznik == 0) { break; } else { $tymcz = 4000/$licznik; echo "4000 dzielone przez $licznik to... $tymcz<br>"; } } ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Pętla while <? while( warunek ) { ... instrukcje ... } ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II For przez while <? $x=1; while($x <= 10) { echo $x."<br>"; $x++; } ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Przykład while <?php $licznik = 1; while ($licznik <= 12) { echo "$licznik razy 2 to ".($licznik * 2)."<br>"; $licznik++; } ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Pętla do…while <? do{ ... instrukcje ... }while( warunek ); ?> Polecenia zawarte w pętli będą wykonane przynajmniej raz. 19-09-2009 Technologie internetowe II
Technologie internetowe II Przykład do…while <?php $num = 1; do { echo "Liczba: $num<br>"; $num++;} while (($num > 200) && ($num < 400)); ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Przerywanie pętli continue - przerwanie danej iteracji pętli i przejście do następnej iteracji. break - całkowite wyjście z pętli - nie tylko z bieżącej iteracji. 19-09-2009 Technologie internetowe II
Technologie internetowe II Przykład continue <?php $licznik = -4; for (; $licznik <= 10; $licznik++) { if ($licznik == 0) { continue; } $tymcz = 4000/$licznik; echo "4000 dzielone przez $licznik to... $tymcz<br>"; } ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Przykład break <?php $licznik = -4; for (; $licznik <= 10; $licznik++) { if ($licznik == 0) { break; } $tymcz = 4000/$licznik; echo "4000 dzielone przez $licznik to... $tymcz<br>"; } ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Switch <? switch($zmienna) { case 'wartość1': ... instrukcje ... break; case 'wartość2': ... instrukcje ... break; …. default: ... instrukcje ... } ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Switch Jedną zmienną można porównać nie z jedną wartością, ale z kilkoma. Nie można konstruować złożonych warunków. Instrukcje zawarte po identyfikatorze "default" wykonywane są jeśli zmienna $zmienna nie przyjęła wartości "wartość1" i "wartość2 ". Instrukcje są przetwarzane linia po linii. Parser przechodzi do pierwszej linii "case" pasującej do zmiennej. Następnie przetwarzane są wszystkie linie wewnątrz nawiasów klamrowych aż do napotkania instrukcji break - nawet jeśli po drodze znajdują się instrukcje "case ". 19-09-2009 Technologie internetowe II
Technologie internetowe II Przykład switch <?php $nastroj = "smutny"; switch ($nastroj) { case "radosny": echo "Hurrra, jestem w dobrym nastroju!"; break; case "smutny": echo "Nie martw się, wszystko będzie dobrze!"; break; default: echo "Ani wesoły, ani smutny, ale $nastroj."; break; } ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Przykład switch 2 <? $i = 3; switch($i){ case 0: case 1: case 2: case 3: echo "Zmienna $i jest mniejsza bądź równa od trzech\n"; break; case 4: echo "Zmienna $i jest równa cztery\n"; break; default: echo "Zmienna $i jest większa od czterech\n"; } ?> 19-09-2009 Technologie internetowe II
Tablice
Technologie internetowe II Tablice Tablice to 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 indeks - numer kolejny zmiennej w tablicy. 19-09-2009 Technologie internetowe II
Przypisanie wartości tablicy <? $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"; ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Wypełnianie tablicy Aby 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, a nawet z innej tablicy czy funkcji. Elementem tablicy może być każdy typ zmiennej (z innymi tablicami i obiektami włącznie). 19-09-2009 Technologie internetowe II
Przykład wypełniania tablicy <? $tab1[] = 1; $tab1[] = 0; $tab1[] = 3; $tab1[] = 2; $tab2[] = "Pierwszy"; $tab2[] = "Drugi"; $tab2[] = "Trzeci"; $tab2[] = "Czwarty"; echo $tab2[$tab1[2]]; ?> 19-09-2009 Technologie internetowe II
Przykład złożonej tablicy <?php $postaci = array( array( "imię" => "Robert", "zawód" => "superbohater", "wiek" => 30, "specjalna moc" => "rentgen w oczach" ), array( "imię" => "Ania", "zawód" => "superbohater", "wiek" => 24, "specjalna moc" => "nadludzka siła" ), array( "imię" => "Kasia", "zawód" => "czarny charakter", "wiek" => 45, "specjalna moc" => "nanotechnologia" ) ); foreach ($postaci as $c) { while (list($k, $v) = each ($c)) { echo "$k ... $v <br/>"; } ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Tablica asocjacyjna <? $tablica["imie"] = "Jan"; $tablica["nazwisko"] = "Kowalski"; $tablica["adres"] = "Polna 1"; echo $tablica["imie"]." ".$tablica["nazwisko"].", ul. ".$tablica["adres"]."\n"; ?> 19-09-2009 Technologie internetowe II
Technologie internetowe II Przeglądanie tablicy Indeks może być zmienną w pętli for. Funkcja count( $nazwa_tablicy ) zwraca ilość elementów w tablicy podanej jako parametr. W przypadku tablicy asocjacyjnej należy skorzystać z funkcji list() i each(). Przy przechodzeniu przez tablice asocjacyjne trzeba wykorzystać pętlę while. 19-09-2009 Technologie internetowe II
Przykład przeglądania tablicy <? $tbl[] = 1; $tbl[] = 2; $tbl[] = 3; $tbl[] = 4; $tbl[] = 5; for( $x = 0; $x < count($tbl); $x++ ) { echo $tbl[$x]; } ?> 19-09-2009 Technologie internetowe II
Przykład przeglądania tablicy asocjacyjnej <? $tablica["imie"] = "Jan"; $tablica["nazwisko"] = "Kowalski"; $tablica["adres"] = "Polna 1"; while( list($klucz, $wartosc) = each($tablica) ) echo "$klucz => <BR>"; ?> 19-09-2009 Technologie internetowe II
Niektóre funkcje operujące na tablicach 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 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 19-09-2009 Technologie internetowe II
Technologie internetowe II Przykład <? $owoce = array ("d"=>"mango", "a"=>"papaja", "b"=>"banan", "c"=>"aronia"); asort ($owoce); reset ($owoce); // Funkcja ta powoduje powrót do pierwszego elementu tablicy while (list ($klucz, $wartosc) = each ($owoce)) { echo "$klucz = $wartosc\n"; } ?> asort arsort ksort c = aronia a = papaja b = banan d = mango 19-09-2009 Technologie internetowe II