php - BK-S
Transkrypt
php - BK-S
Dynamiczne przetwarzanie stron dr Beata Kuźmińska-Sołśnia KLIENT <html> <body> <p> Witaj</p> … wyświetlanie przez przeglądarkę Witaj! SERWER Plik HTML INTERNET <html> <body> <p> Witaj</p> … Serwer WWW – komputer przechowujący dokumenty HTML oraz towarzyszące im pliki (np. grafikę) i udostępniający je użytkownikom przez Internet Skrypty – najczęściej generują kod HTML, lecz w rzeczywistości mogą generować dowolny typ danych – od plików tekstowych po pliki graficzne czy dokumenty PDF Skrypty – interpretowane programy wykonywane na serwerze w chwili, gdy klient zażąda pobrania strony WWW Serwis WWW – zbiór powiązanych ze sobą stron WWW KLIENT <html> <body> <p> Dzisiaj jest 21-04-2012</p> … SERWER Wynik działania skryptu INTERNET <html> <body> <p>Dzisiaj jest 21-04-2012</p> … przetwarzanie skryptu wyświetlanie przez przeglądarkę Dzisiaj jest 21-04-2012 Plik skryptu PHP <html> <body> <?php echo(‘<p>Dzisiaj jest’); echo(date(‘d-m-Y’)); echo(‘</p’); ?> … Kod w języku PHP umieszcza się w kodzie dokumentu HTML – oddziela się go specjalnymi znacznikami <?php oraz ?> Funkcja echo dołącza do wynikowego kodu HTML łańcuch <html> (ciąg znaków) podany jako parametr <html> <head> <title>Skrypt wyświetlający bieżącą datę </title> </head> <body> <?php echo(‘Dzisiaj jest <b>’.date(‘d-m-Y’). ‘</b>’); ?> </body> </html> <head> <title>Skrypt wyświetlający bieżącą datę </title> </head> <body> Dzisiaj jest <b> 20-04-2012</b> </body> </html> Aby mieścić skrypt na serwerze należy skopiować plik skrypt do odpowiedniego katalogu, udostępnionego przez serwer WWW jako publiczny Aby wykonać skrypt należy otworzyć go w przeglądarce WWW podając adres pod jakim jest on dostępny np. http://localhost/katalog/skrypt.php Komentarze jednoliniowe rozpoczynają się od znaków // i kończą wraz z przejściem do nowej linii # po znaku „hash” wszystko do końca wiersza jest komentarzem W przypadku umieszczania dłuższych opisów używa się symboli „/*” i „*/” <html> <head> <title> Stosowanie komentarzy </title> </head> <body> <?php /* Oto skrypt pokazujący, jak stosować komentarze. Interpreter ignoruje wszystko, co jest tutaj umieszczone: echo(‘Ten tekst nie zostanie wypisany’); */ // wypisanie daty echo(‘Dzisiejsza data: ‘.date(‘d-m-Y’)); echo(‘<br>’); // przejście do nowego wiersza // wypisanie godziny echo(‘Aktualna godzina: ‘.date(‘H:i:s’)); ?> </body> </html> Aby w PHP utworzyć zmienną – przypisujemy jej wartość Zmienne oznacza się umieszczając znak $ przed ich nazwą Nie ma potrzeby deklarowania typu zmiennych Operatorem przypisania jest znak „=„ nie jak w Pacalu „:=„ Ważne zasady: Rozróżniane są wielkie i małe litery $kwadrat, $Kwadrat, $KWADRAT (trzy różne zmienne) W nazwach dopuszcza się stosowanie liter alfabetu łacińskiego, cyfr i podkreśleń; Nie można rozpoczynać identyfikatora cyfrą, nie można używać znaków specjalnych (?, - (), . , itp.) Poprawne nazwy: $_kreska, $agent007, $pod_kreslenie Nieoprawne nazwy: $kółeczko, $-myślnik, $12, $7x <html> <head> <title> Wykorzystanie zmiennych</title> </head> <body> <?php $nl = "<br>\n"; $dzialanie = '(24 + 1) / 5 ='; $wynik = (24 + 1) / 5; echo('Proste działanie:'.$nl.$dzialanie.$wynik); ?> </body> </html> Podstawowe operacje arytmetyczne Operatory: „+” „-” „*” „/” „%” - odpowiednik MOD oraz <html> <head><title>Stosowanie funkcji matematycznych</title></head> <body> <?php //pierwiastek kwadratowy - funkcja sqrt(liczba) echo('sqrt(64) = '.sqrt(64).'<br>'); //potęgowanie - funkcja pow(podstawa, wykładnik) echo('pow(1.5,2) = '.pow(1.5,2).'<br>'); //zaokrąglenie - funkcja round(liczba, dokładność) echo('round(14/5,0) = '.round(14/5,0).'<br>'); echo('round(sqrt(2),2) = '.round(sqrt(2),2).'<br>'); ?> </body> </html> Losowanie liczb Do losowania liczb z zdanego przedziału służy funkcja rand(min, max) <html> <head> <title>Rzut kostką</title> </head> <body> <?php // inicjalizacja generatora liczb losowych srand ((double) microtime() * 1000000); $kostka = rand(1,6); echo("Liczba oczek: $kostka"); ?> </body> </html> Konkatenacja łańcuchów W PHP do łączenia łańcuchów nie można stosować operatora „+” Aby otrzymać efekt połączenia łańcuchów, należ użyć operatora „.” (kropka) <html> <head> <title>Operatory dodawania liczb i konkatenacji łańcuchów znakowych</title> </head> <body> <?php // operator dodawania $liczba = '14' + '10'; echo("$liczba <br>"); // operator konkatenacji (łączenia łańcuchów) $napis = '14' . '10'; echo("$napis <br>"); // skrócone zapisy $liczba += 15; // równoważne $liczba = $liczba + 15; echo("$liczba <br>"); $napis .= ' rok'; // równoważne $napis = $napis . ' rok'; echo("$napis <br>"); ?> </body> </html> Warunki proste i zagnieżdżone Warunek dla instrukcji if umieszczamy w nawiasach okrągłych. Nawiasy klamrowe ograniczają bloki instrukcji – pełnią tą samą funkcję jak begin i end w TP Do porównywania wartości używamy podwójnego znaku równości „==„ <html> <head> <title>Rzut monetą</title> </head> <body> <?php // inicjalizacja generatora liczb losowych srand ((double) microtime() * 1000000); $wypadlo = rand(1,2); // sprawdzenie wyniku // przyjmujemy umownie: 1-orzeł, 2-reszka if($wypadlo == 1) { echo('Wypadł orzeł'); } else { echo('Wypadła reszka'); } ?> </body> </html> Warunki proste i zagnieżdżone Oprócz operatora sprawdzającego równość argumentów dostępne są operatory: !=(różny) ! operator zaprzeczenia (negacji) >(większy), >=(większy lub równy) <(mniejszy), <=(mniejszy lub równy) ++ operator zwiększenia o 1 (inkrementacja) -- operator zmniejszenia o 1 (dekrementacja) *= operator przypisania – przypisuje do wyniku iloczyn wyniku i argumentu += przypisuje do wyniku sumę wyniku i argumentu -= przypisuje do wyniku różnicę wyniku i argumentu .= przypisuje do wyniku (będącego łańcuchem) jego połączenie z łańcuchem ( będącym argumentem) Do budowana warunków złożonych operatory logiczne „&&” (i) oraz „II” (lub) <html> <head> <title>Rzut dwiema monetami</title> </head> <body> <?php // inicjalizacja generatora liczb losowych srand ((double) microtime() * 1000000); $moneta1 = rand(1,2); $moneta2 = rand(1,2); if($moneta1==1 && $moneta2==1) { echo('Wypadły dwa orły.'); } elseif($moneta1==2 && $moneta2==2) { echo('Wypadły dwie reszki.'); } else { echo('Wypadł 1 orzeł i 1 reszka.'); } ?> </body> </html> if (warunek1) { blok instrukcji 1 } elseif (warunek2) { blok instrukcji 2 } elseif (warunek3) { blok instrukcji 3 … } else { blok instrukcji n } forma uproszczona if (warunek1) { blok instrukcji 1 } W PHP istnieją instrukcje sterujące, umożliwiające powtarzanie poleceń Pętle for i while działają podobnie jak instrukcje w Pascalu pętla for przykład opis <?php // 10 rzutów sześcienną kostką srand((double)microtime()*1000000); for($i=1;$i<=10;$i++) { $wypadlo = rand(1,6); echo("Rzut nr $i:<br>\n"); echo("<b>$wypadlo</b><br>\n"); } ?> Pętlę tę stosuje się, gdy określone instrukcje trzeba wykonać z góry określoną liczbę razy, np. powtórzyć 10 razy rzut kostką, odczytać 15 wierszy z pliku, obliczyć sumę 0 kolejnych liczb for (ustalenie_początku; warunek_pętli; zwiększenie_licznika) { blok instrukcji } • • • W sekcji pierwszej (ustalenie początku) nadajemy zmiennej sterującej w pętli wartość początkową Druga sekcja (warunek pętli) to wyrażenie określające warunek, przy którego spełnieniu pętla ma być wykonana W trzeciej sekcji (zwiększenie licznika) określamy sposób zwiększenia zmiennej sterującej przy każdym przebiegu pętli Pętla while while (warunek) { blok instrukcji } Pętla Dopóki jest spełniony warunek wykonuj instrukcje do…while do { blok instrukcji } while (warunek) Wykonuj instrukcje, dopóki jest spełniony warunek pętla while przykład opis <?php // wypisywanie silni z kolejnych // liczb naturalnych dopóki nie // przekracza ona podanego maksimum $max = 1000; $silnia = 1; $n = 1; while($silnia<$max) { echo("$n! = $silnia<br>\n"); $n++; $silnia = $silnia * $n; } echo("Przekroczono liczbę max!"); ?> Pętla ta jest użyteczna jeśli chcemy wykonywać określone polecenia, dopóki jest spełniony warunek. Najczęściej nie wiemy z góry, ile będzie powtórzeń – tak jak w przykładzie ze sprawdzaniem wartości silni. If ($zmienna == wartosc1) { dzialanie1; } elseif($zmienna == wartosc2) { dzialanie2; } else { dzialanie3; } tzw. wyrażenia wyboru switch (wyrazenie) { case wartosc1: dzialanie1; break; case wartosc2: dzialanie2; break … default dzialanie; } W PHP, inaczej niż w większości pozostałych języków programowania, wartość umieszczane w tablicy nie muszą być tego samego typu Nie ma też konieczności deklarowani z góry liczby elementów tablicy Najprostszym sposobem utworzenia tablicy jest skorzystanie z funkcji array, pozwalającej na inicjalizację tablicy elementami przekazanymi jako parametry - będą one miały przypisane kolejne indeksy, poczynając od 0 (w PHP indeksy tablic są zawsze liczone od 0) Typ tablicowy grupuje wiele elementów, są one ponumerowane, a numer nazywa się indeksem Poprzez indeks odwołujemy się do elementu tablicy Odwołanie do elementu tablicy ma postać $nazwatablicy [$numerelementu]; Tworzymy tablicę zawierającą trzy elementy: „zeszyt”, „linijka”, „kredka” o przypisanych domyślnych indeksach 0,1 i 2 Wypisujemy pierwszy element. Następnie zmieniamy wartość pierwszego elementu na „gruby zeszyt”. Dodajemy na koniec tablicy dwa elementy: „gumka” i „klej” (zostaną im nadane dwa kolejne wolne indeksy). Na koniec wpisujemy zawartość tablicy przy użyciu wbudowanej w PHP funkcji print_r <?php echo('<pre>'); // wykorzystanie funkcji array() // do utworzenia tablicy zawierającej 3 elementy $tablica = array("zeszyt", "linijka", "kredka"); // odwoływanie się do elementów tablicy echo('Pierwszy element tablicy (przed podmianą): '); echo($tablica[0]."\n"); $tablica[0] = "gruby zeszyt"; // dodawanie elementów $tablica[] = "gumka"; $tablica[] = "klej"; // funkcja print_r wypisuje zawartość podanej // jako parametr tablicy print_r($tablica); echo('</pre>'); ?> Jako indeksy w tablicach można stosować ciągi znaków Trzeba pamiętać, że rozróżniana jest wielkość liter – warto stosować małe litery do nazywania elementów <?php $typy_jezykow['php'] = 'interpretowany'; $typy_jezykow['c'] = 'kompilowany'; $typy_jezykow['pascal'] = 'kompilowany'; $typy_jezykow['basic'] = 'interpretowany'; // błędny indeks ('PHP' i 'php' to dwa różne indeksy!); // w zależności od konfiguracji PHP instrukcja // echo nie wypisze nic, bądź pojawi się // komunikat błędu "undefined index" echo($typy_jezykow['PHP']); ?> echo($typy_jezykow['php']."<br>"); print_r($typy_jezykow); Instrukcja foreach pozwala wykonać określony fragment kodu dla każdego elementu tablicy Nie trzeba znać liczby elementów tablicy, nie ma znaczenia jakie mają indeksy <?php $wyniki = array(6, 2, 4, 1, 3, 6, 5, 2, 1, 4); $i = 0; foreach($wyniki as $w) { $i++; echo("Rzut nr $i: $w<br>\n"); } ?> Omówiliśmy dwa rodzaje stron: statyczne (zawierające tylko HTML) dynamiczne (zawierające oprócz kodu HTML polecenia skryptowe wykonywane przez serwer w momencie przetwarzania żądania użytkownika) Skryty PHP nie są kompilowane – są przetwarzane przez odpowiedni interpreter Polecenia PHP umieszcza się między znacznikami <?php i ?> Aby wykonać skrypt, należy go najpierw umieścić na serwerze W PHP nie ma potrzeby deklarowania zmiennych. W celu utworzenia zmiennej przypisuje się jej wartość W PHP dostępne są podstawowe operatory działań arytmetycznych, zestaw funkcji matematycznych, oraz funkcja umożliwiająca losowanie liczb W PHP można stosować instrukcję warunkową i pętle W celu przechowywania dużej liczby danych w PHP można stosować tablice. Elementy nie muszą być tego samego typu i nie trzeba z góry określać rozmiaru tablicy. Utworzenie tablicy to przypisanie wartości jej elementom Zapraszam do ćwiczeń