Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałDita Achtelik Został zmieniony 9 lat temu
1
Wprowadzenie do PHP SYSTEMY TELEINFORMATYCZNE Wykład 5 AiR 5r.
2
Tablice
3
Wartości przechowywane w tablicy nazywane są elementami tablicy. Każdy z elementów tablicy posiada indeks (klucz) umożliwiający dostęp do niego. PHP obsługuje tablice indeksowane numerycznie, jak i asocjacyjne. Tablice indeksowane numerycznie stosowane są w większości języków programowania. W PHP indeks numeryczny zaczyna się od wartości "0". Tablice asocjacyjne stosowane w PHP jako wskaźnika używają najczęściej łańcucha znaków. KsiążkiFilmy VHSFilmy DVD Produkty Tablica to zmienna, która przechowuje zbiór lub sekwencję wartości. Tablica może posiadać wiele elementów, a każdy z nich może przechowywać pojedynczą zmienną, taką jak tekst bądź liczby, lub też inną zmienną. Tablice zawierające w sobie inne tablice są nazywane wielowymiarowymi. 012indeksy
4
Tablice indeksowane numerycznie Tworzenie tablicy: $produkty[0] = "Ksiazki"; $produkty[1] = "Filmy VHS"; $produkty[2] = "Filmy DVD"; Albo konstrukcja array: $produkty = array ("Ksiazki","Filmy VHS","Filmy DVD"); $produkty1 = array(1=>"Ksiazki","Filmy VHS","Filmy DVD"); //zmiana indeksu startowego $produkty2 = array(1=>"Ksiazki",3=>"Filmy VHS",5=>"Filmy DVD"); // „tablica rzadka" Dostęp do elementów tablicy: echo $produkty[1]; for ($i = 0; $i<3; $i++) echo $produkty[$i];
5
Tablice asocjacyjne Tworzenie tablicy: $ceny = array("Biblia PHP"=>123, "Faraon"=>89, "Atlas świata"=>243); przykład tworzy tablicę w której nazwy produktów są kluczami, a ceny wartościami. $ceny["Pan Tadeusz"] = 149; Dostęp do elementów tablicy: echo $ceny["Pan Tadeusz"]; while ($el = each($ceny)) { echo $el["key"]; echo " - "; echo $el["value"]; echo " "; } funkcja each() zwraca bieżący element tablicy i przechodzi do następnego $el jest tablicą o 4 elementach: "key" i 0 – zawierają klucz bieżącego elementu tablicy $ceny "value" i 1 – zawierają wartość bieżącego elementu tablicy $ceny key0value1 Biblia PHP BiBlia PHP 123 $el
6
Tablice heterogeniczne – wartości przechowywane w tablicy mogą być różnych typów. $mieszana = array("mały piesek", 63, 4.25, false); var_dump($mieszana); var_dump(zmienna_tablicowa) wyświetla zawartość i typ zmiennej, dodając odstępy albo print_r (zmienna_tablicowa) Tablice wielowymiarowe Elementy tablic mogą przechowywać inne tablice -> w ten sposób można utworzyć tablicę dwuwymiarową traktowaną jak macierz Tak zdefiniowana tablica składa się z trzech wektorów PHP Biblia PHP 123 FAR Faraon 89 ASW Atlas świata243
7
a) indeksowanej numerycznie $prod = array(array ("PHP", "Biblia PHP", 123), array("FAR", "Faraon", 89), array("ASW", "Atlas świata", 243) ); Dostęp do elementów tablicy: echo $prod[0][1];//itd lub z użyciem pętli for: for( $rzad=0; $rzad<3; $rzad++) { for( $kol=0; $kol<3; $kol++) echo " | ".$prod[$rzad][$kol]; echo " "; } Tworzenie tablicy dwuwymiarowej
8
a) asocjacyjnej $prod = array( array ("Kod"=>"PHP", "Nazwa"=>"Biblia PHP", "Cena"=>123), array("Kod"=>"FAR", "Nazwa"=>"Faraon", "Cena"=>89), array("Kod"=>"ASW", "Nazwa"=>"Atlas świata", "Cena"=>243) ); Dostęp do elementów tablicy: echo $prod[0]["Nazwa"];//itd lub: for( $rzad=0; $rzad<3; $rzad++) echo " | ".$prod[$rzad]["Kod"]. " | ".$prod[$rzad]["Nazwa"]. " | ".$prod[$rzad]["Cena"]." | ";
9
Funkcja sort() $produkty = array("Książki","Filmy VHS","Filmy DVD", "filmy DVD", "Plyty CD", Plyty VCD"); for($i=0; $i<6; $i++) echo $produkty[$i]." "; echo "Oto produkty: "; sort($produkty); echo "Oto sortowane produkty: "; for($i=0; $i<5; $i++) echo $produkty[$i]." "; rsort($produkty);//porządek odwrotny! for($i=0; $i<5; $i++) echo $produkty[$i]." "; F. sort() zwraca uwagę na wielkość liter, dlatego wielkie litery zostaną umieszczone przed małymi Sortowanie tablic
10
count(tablica) F. count() działa na wszystkich typach zmiennych i zwraca 0 jeśli badana jest zmienna pusta lub nieustawiona (można wykorzystać isset() i is_array()) Do rozdzielania ciągów na tablicę służy funkcja explode(). Jako pierwszy parametr trzeba do niej podać znak lub dłuższy ciąg który oddziela kolejne pola, jako drugi ciąg do rozdzielenia. <?php $dane="alfa;beta;gamma;delta"; $tablica = explode(";", $dane); ?> Zliczenie elementów tablicy
11
Wyszukiwanie minimalnej i maksymalnej wartości w tablicy min(tablica), max(tablica) <?php … echo "Najmniejsza wartosc:".min($dlugosci)." "; echo "Najwieksza wartosc:".max($dlugosci)." "; ?> Znajdowanie wartości w tablicy in_array(igla, stog_siana) – funkcja zwraca true jeśli wartość igla jest w tablicy stog_siana … if (in_array(194, $dlugosci)) echo "Liczba 194 jest w tablicy";
12
Korzystanie z systemu plików (pliki na serwerze!) Do otwierania plików służy funkcja fopen(nazwa_pliku,mode). Nazwa pliku to pełna ścieżka do pliku, który tworzymy lub otwieramy, mode określa tryb działania funkcji. Funkcja zwraca wskaźnik pliku (służy jako odnośnik i dostarcza informacji o pliku). Parametr mode przyjmuje jedną z następujących wartości: ModeOpis rOtwiera istniejący plik i odczytuje zawarte w nim dane. Ustawia wskaźnik na początku pliku r+Otwiera istniejący plik do odczytu i zapisu i ustawia wskaźnik na początku pliku wOtwiera plik tylko do zapisu i jeżeli plik nie jest pusty, opróżnia go, a jeżeli taki plik nie istnieje zostanie utworzony w+Otwiera plik do odczytu i zapisu. Jeżeli plik nie jest pusty, opróżnia go, a jeżeli taki plik nie istnieje zostanie utworzony aOtwiera istniejący plik do zapisu i ustawia wskaźnik na końcu pliku. Jeśli plik nie istnieje f. tworzy go. a+Otwiera plik do odczytu i zapisu i ustawia wskaźnik na końcu pliku. Jeśli plik nie istnieje f. tworzy go.
13
1. Sprawdzanie czy plik istnieje file_exists("plik.php") 2. Tworzenie nowego pliku fopen("c:/moje dane/plik.txt","w+"); - jeśli nie podamy trybu plik będzie otwarty do odczytu 3. Zapis do pliku $file = @fopen($plik, "w+") – tworzy wskaźnik pliku (zmienną plikową) fwrite($file, $tekst); //zapis lub fputs ($file, $tekst, $dlugosc); //zapis fclose($file); UWAGA: dla przeczytanych tekstów stosuje się funkcję trim obcinającą białe znaki (spacje, zmiany wiersza itp.)
14
4. Odczytywanie danych z pliku $file = fopen($plik, "r"); $ msg = fread($file, filesize($plik)); - czyta od początku do końca pliku lub $ msg = fgets($file, filesize($plik)); //odczyt lub $msg = file('adres/nazwa_pliku'); fclose($file); echo $msg; Można podawać liczbę znaków do odczytania
15
Szczegółowo: $linia = fgets(zmienna_plikowa, [długość]) – odczyt linii z otwartego pliku (do znaku \n lub EOF ) fputs(zmienna_plikowa, zawartość, [długość]) – zapis do otwartego pliku fseek(zmienna_plikowa, pozycja) – ustawia wskaźnik pliku w punkcie pozycja bajtów ftell(zmienna_plikowa) – informuje na jakiej pozycji (bajt) jest ustawiony wskaźnik rewind(zmienna_plikowa) – ustawia wskaźnik na początku pliku readfile(nazwa_pliku) – otwiera plik, wyświetla plik w oknie przeglądarki i zamyka plik $tabpliku =file(nazwa_pliku) – wpisuje zawartość całego pliku do tablicy, każda linia stanowi osobny element tablicy feof((zmienna_plikowa) - sprawdza osiągnięcie końca pliku, przyjmuje wartość true jeśli został osiągnięty koniec pliku
16
string fgets ( resource $uchwyt [, int długość]) Zwraca łańcuch o (długości – 1) bajtów odczytany z pliku wskazanego przez uchwyt. Czytanie kończy się kiedy przeczytano (długość – 1) bajtów lub gdy wystąpi znak nowego wiersza (jest on dołączany do zwracanego wyniku) lub gdy wystąpi znak końca pliku EOF (którykolwiek przypadek zdarzy się pierwszy). Jeśli nie została określona długość, domyślnie przyjmuje 1k (1024 bajty). Dokładniej… $uchwyt= fopen("sciezka/nazwa","r")
17
6. Kopiowanie plików $stary = "c:/moje dane/plik.php"; $nowy = "nowyplik.php"; copy($stary, $nowy); 7. Zmiana nazwy pliku $stary = "stara nazwa.php"; $nowy = "nowa nazwa.php"; rename($stary, $nowy); 8. Usuwanie plików unlink("nowyplik.php");
18
Przykłady: $linia = fgets($plik, 4096); Pobiera do zmiennej $linia wiersz o długości nie większej niż 4096 znaków fputs ($plik, "tekst"); Spowoduje zapisanie tekstu „tekst" do otwartego pliku i odpowiednie przesunięcie się wskaźnika zapisu. <?php $plik=fopen ( " dane.txt ", " r " ); while ( !feof($plik) ) { $linia= fgets($plik, 255); echo $linia; } fclose($plik); ?>
19
time Zwraca aktualny unixowy znacznik czasu Opis int time ( ) Zwraca aktualny czas, podawany jako liczba sekund, które upłynęły od unixowej Epoki (1 stycznia 1970 00:00:00 GMT). Funkcje czasu
20
date Formatuje lokalny czas/datę Opis string date ( string format [, int znacznik_czasu]) Zwraca datę sformatowaną według szablonu podanego w argumencie format. Żądana data określona jest w argumencie znacznik_czasu, a w przypadku jego braku pobierany jest aktualny czas.
21
Najważniejsze znaki używane w szablonie formatującym datę: d - dzień miesiąca, 2 cyfry z zerem na początku; tzn. od "01" do "31" D - dzień tygodnia, tekst, 3 litery; n.p. "Fri" F - miesiąc, tekst, pełna nazwa; n.p. "January" h - godzina, format 12-godzinny z zerem na początku; tzn. od "01" do "12" //g H - godzina, format 24-godzinny z zerem na początku; tzn. od "00" do "23" //G i - minuty; tzn. od "00" do "59" j - dzień miesiąca bez zera na początku; tzn. od "1" do "31" l (mała litera 'L') - dzień tygodnia, tekst, pełna nazwa; n.p. "Friday" m - miesiąc; tzn. "01" to "12" M – skrót nazwy miesiąca (ang.) n - miesiąc bez zera na początku; tzn. "1" to "12" s - sekundy; i.e. "00" to "59" Y - rok, 4 liczby; n.p. "1999" //y z - dzień roku; tzn. od "0" do "365" Nierozpoznane znaki w szablonie formatującym będą wyświetlone tak jak są.
22
Przykład 1. echo date ("l dS of F Y h:i:s"); echo "1 lipca 2010 ----- ". date ("l", mktime(0,0,0,7,1,2010)); Przykład 2. <?php $dzis=date('d.m.Y'); echo $dzis." "; $jutro=date('d.m.Y',time()+3600*24); echo $jutro; ?> Przykłady użycia funkcji date()
23
mktime -- Oblicza uniksowy znacznik czasu dla podanej daty Opis int mktime ( int godzina, int minuta, int sekunda, int miesiąc, int dzień, int rok [, int letni/zimowy]) Uwaga: Proszę zwrócić uwagę na kolejność argumentów !!!, która w dodatku nie jest praktyczna przy opuszczaniu argumentów od prawej do lewej (patrz niżej). Częstym błędem w skryptach są pomyłki w kolejności tych argumentów. Funkcja zwraca uniksowy znacznik czasu odpowiadający podanym argumentom. Znacznik czasu jest liczbą całkowitą długą (long integer) zawierającą liczbę sekund dzielącą uniksową Epokę (1 stycznia 1970) od podanego w argumentach czasu. Argumenty mogą być opuszczane w kolejności od prawej do lewej. Za każdy pominięty argument będzie wówczas wstawiona aktualna wartość, zgodnie z lokalnym czasem/datą. Argument letni/zimowy może być ustawiony na 1, jeśli to czas zimowy, lub 0 jeśli letni, lub -1 (domyślnie) jeśli niewiadomo, czy letni czy zimowy. Jeśli nie jest to wiadome, PHP spróbuje ustalić samodzielnie. mktime
24
Przykład 1. przykład mktime() <?php echo date ("M-d-Y", mktime (0,0,0,12,32,2007)); echo date ("M-d-Y", mktime (0,0,0,13,1,2007)); echo date ("M-d-Y", mktime (0,0,0,1,1,2008)); echo date ("M-d-Y", mktime (0,0,0,1,1,2008)); ?> rok może być liczbą dwu lub czterocyfrową, przy czym wartości dwucyfrowe z przedziału 0-69 będą mapowane do 2000-2069, a z przedziału 70-99 do 1970-1999 Windows: Żadna znana wersja systemu Windows nie obsługuje ujemnych znaczników czasu. Z tego powodu zakres poprawnych dat zawiera się pomiędzy rokiem 1970 a 2038. Ostatni dzień dowolnego miesiąca może być wyrażony jako zerowy dzień następnego miesiąca.
25
<?php $ostatni = mktime (0,0,0,3,0,2012); echo "Ostatni dzień lutego 2012 to:".date('d', $ostatni); ?> Przykład. Ostatni dzień miesiąca
26
Przykłady zastosowania date() i mktime() $jutro = mktime (0,0,0,date("m"),date("d")+1,date("Y")); $poprzedni_miesiac = mktime (0,0,0,date("m")-1,date("d"), date("Y")); $nastepny_rok = mktime (0,0,0,date("m"), date("d"), date("Y")+1); Notatka: Rozwiązanie to jest bardziej godne zaufania od dodawania lub odejmowania określonej liczby sekund, chociażby z powodu zmiany czasu.
27
Należy najpierw odpowiednio przygotować formularz. W znaczniku FORM w parametrze ACTION należy podać adres dokumentu PHP mającego obsłużyć ten formularz. Parametr METHOD może mieć wartość POST lub GET - obie metody są obsługiwane przez PHP. Formularze wysyłane przez GET mają ograniczoną długość. Należy pamiętać o zdefiniowaniu nazw wszystkich pól formularza z których skrypt ma skorzystać. Przykład: Obsługa formularzy
28
Wartości zmiennych będą dostępne wówczas w tablicy $ _POST lub $_GET (w zależności od atrybutu METHOD formularza) Czyli skrypt2.php istniejący na serwerze zawierający: <?php echo($_POST['tekst']); ?> prawidłowo dane przesłane na serwer i umieszczone w tablicy poprawnie prześle z powrotem do klienta W przypadku pola tekstowego wartością zmiennej będzie wpisany przez użytkownika tekst. Jeżeli pole jest typu CHECKBOX wartością będzie "on" jeżeli pole jest zaznaczone, lub zmienna będzie pusta jeżeli pole nie zostało zaznaczone. Jeżeli w polu typu CHECKBOX podamy parametr VALUE, będzie on użyty zamiast "on". Tak samo wygląda obsługa pola typu RADIO. Wartością pola SELECT będzie wartość parametru VALUE zdefiniowanego w znaczniku OPTION.
29
Formularze HTML najczęściej zawierają: Metodę Akcję Pola wejściowe Pierwszy wiersz formularza w kodzie HTML może wyglądać następująco: Post - zmienne przekazywane są z formularza z wykorzystaniem superglobalnej tablicy $_POST Get – tablica $_GET. Zapytanie jest dołączone do lokalizatora (adresu) URL Post vs. Get Metoda Post została opracowana do tworzenia nowych zasobów, np. przekazanie formularza zamówienia powoduje wstawienie nowego rekordu do tabeli bazy danych – pojawia się trwały efekt. Metoda Get jest używana gdy żądanie nie powoduje trwałych efektów ubocznych – np. operacje wyszukiwania. Należy jednak uważać: przy stosowaniu get mogą powstać długie adresy, często przekraczające limity przeglądarek czy serwerów.
30
Metodę POST stosuje się gdy: (Wynikiem żądania są trwałe zmiany || Dane z formularza mogą powodować powstanie długiego adresu URL przy użyciu get || Wysyłane dane nie są zapisane za pomocą siedmiobitowego ASCII.) Metodę GET stosuje się gdy: (Celem żądania jest odszukanie zasobów && W wyniku wykonania żądania nie wystąpią żadne trwałe efekty uboczne && Dane z pól mają w sumie mniej niż 1024 znaki) Get – bezpieczna; Post – niebezpieczna, dokonuje trwałych modyfikacji w serwerze Akcja określa skrypt do którego zostaną przesłane dane i który zostanie uruchomiony
31
Typy pól formularzy HTML: input – różne typy text – jedna linia tekstu; hidden – pole ukryte (umożliwia przesłanie dodatkowych, niewidocznych dla użytkownika danych); password - dla haseł file – do przesyłania plików (upload) submit – przycisk służący do wysyłania formularza lub do kasowania zawartości wypełnionych pól; textarea – wiele wierszy tekstu checkbox – pole wyboru (jeden z dwu); radio – pole wyboru (jeden z wielu); select – menu rozwijane lub lista;
32
Liczba1: Liczba2: Dodaj Odejmij Przykład
33
Wysyłanie poczty e-mail Dla systemu Windows w pliku php.ini należy skonfigurować: [mail function] SMTP = ewa.prz.rzeszow.pl //nazwa serwera poczty wychodz. sendmail_from = ty@prz.rzeszow.pl //własny adres Można zastosować funkcję w skrypcie: ini_set(' sendmail_from','ty@prz.rzeszow.pl'); Do wysyłania listu elektronicznego za pośrednictwem protokołu SMTP (standardowy protokół wykorzystywany do przesyłania poczty elektronicznej) w najprostszym przypadku wystarczy funkcja mail() : mail (odbiorca, temat, treść); Można również uwzględnić adres nadawcy, wtedy funkcja mail() będzie miała postać: mail (odbiorca, temat, treść, od); mail ("jan@kowalski.com"; "to jest temat wiadomości", "to jest treść bardzo krótkiej wiadomości", "od:franek@nowak.com")
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.