Kurs PHP dla początkujących.
PHP jest stosunkowo nowym językiem programowania. Łączy w sobie zalety programowania w C i Perlu oraz niektóre elementy JavaScript. Nie ma wątpliwości, że w PHP piszę się o wiele prościej i szybciej niż skrykty w CGI. Nie ma sensu porównywania PHP i ASP ponieważ ASP świeżym językiem i jeszcze do końca nie dopracowanych, a poza tym w obecnym internecie o wiele prościej jest znaleść konto z obsługą PHP lub CGI niż z ASP.
PHP zaliczanne jest do języków interpretowanych t.zn. że skrypty nie są wcześniej kompilowane tak jak np. w Delphi, Html tylko kod w momencie uruchamiania strony z rozszerzeniem *.php, *.php3 lub *.php4 jest wykonywany przez stosowny do tego program zwany interpretorem. I właśnie dlatego, aby móc testować na włąsnym komputerze skrypty, które będziesz pisać na włąsnym komputerze należy przed tym zainstalować włąsny serwer oraz interpereter PHP. Oczywiście skrypty można testować wysyłąjąc je na serwer providera, który udostępnia obsługę PHP jednak stracisz na to o wiele więcej czasu. Opis konfiguracji komputera do obsługi PHP mżna znaleść w dziale Artykuły.
Stwórzmy teraz swój pierwszy program. Otwórz dowolny edytor tekstowy i wpisz coś takiego:
<?
print("Witaj !!!");
?>
Zapisz plik w folderze htdocs w katalogu Apacha pod nazwą test.php3. Uruchom teraz przeglądarkę internetową i w miejsce adresu strony wpisz localhost/test.php3. Jeżeli na ekranie zobaczysz napis "Witaj" wszystko jest w porządku. Jak już możliwe zauważyłeś sktypt PHP jest objęty znacznikami
<?
?>
Dozwolony jest także zapis
<?php
?>
lub...
<SCRIPT LANGUAGE="php">
</SCRIPT>
We wnętrzu powyższych znaczników wstawia się całą treść, która ma zostać wygenerowana za pomocą skryptu. Aby wypisać dowolny tekst na ekran należy użyć funkcji print("Jakiś tekst"); No i w tej lekcji to już wszystko zapraszam do dalszych części kursu.
Zmienne i stałe
Zmienne i stałę są jednymi z podstawowych pojęć każdego języka programowania. Są to jakby pojedyńcze fragmenty pamięci w których przechowywane są jakieś dane. Dzięki wykorzystaniu wcześniej zadeklarowanych zmiennych lub stałych mamy bardzo prosty dostęp do ich wartości. Możemy w kążdej chwili zmienić wartość zmiennej.
W PHP jak w większości języków programowania interpretowanych przed wykorzystaniem zmiennych oraz stałych nie trzeba daklarować ich rodzaju. Każdą deklarację lub pobranie wartości z zmiennej poprzedza się znakiem dolara "$", za nim wstawia się dowolnie wymyśloną nazwę np:
$zmienna = "Ten tekst jest zapisany w zmiennej";
Teraz żeby w dowolny miejscu wypisać tekst znajdujący się w zmiennej zadeklarowanej powyżej wystarczy napisać coś takiego:
print("$zmienna");
Operacje na zmiennych można przeprowadzać za pomocą operatorów. Wszystkie podstawowe, najczęściej wykorzystywane wraz z omówieniem możesz znaleźć w poniższej tabeli.
Operator |
Zastosowanie |
Przykład |
= |
Przypisuje do zmiennej wartość znajdującą się po prawej stronie |
$zmienna="Tekst lub liczba"; |
+= |
Dodaje lewą stronę operatora do prawej |
$zmienna="21"; |
-= |
Odejmuję lewą stronę operatora do prawej |
$zmienna="21"; |
*= |
Mnoży lewą stronę operatora do prawej |
$zmienna="21"; |
/= |
Dzieli lewą stronę operatora do prawej |
$zmienna="21"; |
++ |
Powiększa wartość zmiennej oo 1 |
$zmienna="20"; |
-- |
Pomniejsza wartość zmiennej o 1 |
$zmienna="20"; |
Jeżeli nadal nie rozumiesz zastosowania zmiennych nie masz się czym przejmować w dalszych częściach kursu analizując przykłady powinieneś zrozumieć ich zastosowanie.
Stałe nie różnią się bardzo od zmiennych. Rożnice pomiędzy nimi właściwie wskazują już same nazwy. Wartości zmiennych można zmieniać podczas wykonywania skryptu, zaś po zadeklarowaniu stałej jej warość pozostaje zawsze taka sama. Przykładowe tworzenie stałej wygląda następująco:
define("stala", "To jest tekst zapisany w stałej");
Teraz w dowolnym miejscu skruptu możesz pobrać wartość stałej w następujący sposób:
print(stala);
Instrukcje warunkowe
Instrukcje warunkowe są kolejną, rzeczą wykorzystywaną bardzo często we wszystkich językach programowania
Dzięki nim wykonywany kod może zależeć od woli odwiedzającego stronę lub np. od daty.
Instrukcje warunkowe w PHP mają podobną postać do instrukcji wykorzystywanej w JavaScript.
Najprostsza deklaracja ma postać:
if(warunek1)
{
ten kod jest wykonany, gdy jest spełniony warunek1
}
else
{
ten kod jest wykonany, gdy nie został spełniony warunek1
}
Dodatkowo instrukcję warunkową w PHP możemy rozbudować o znacznik elseif np.:
if(warunek1)
{
ten kod jest wykonany, gdy jest spełniony warunek1
}
elseif(warunek2)
{
ten kod jest wykonany, warunek1 zwrócił wartość false, a warunek2 true
}
else
{
ten kod jest wykonany, gdy nie został spełniony ani warunek1 ani warunek2
}
Dokładne wykorzystanie instrukcji warunkowych powinieneś zrozumieć czytając dalsze części kursu, lub
analizując poniższy przykłąd. Ma on za zadanie pobranie do zmiennej $data nazwy dnia tygodnia.
Jeżeli dniem jest Sobota(Saturday) lub Niedziela(Sundey) wyświetla napis nareszcze Wickend w przeciwnym
wypandku wyświetla napis "Kiedy wreszcie będzie ten Wickend":
<?
$data = date("l");
if(($data == Saturday) or ($data == Sunday))
{
print("Nareszcie Wickend");
}
else
{
print("Kiedy wreszcie będzie wickend");
}
?>
Tablice
Tablice można nazwać jakby pewnym rodzajem zmiennych. Są to ich zbiory pod jedną nazwą. Wykorzystywanie tablic jest o tyle korzystniejsze, że watrości poszczególnych elementów możemy wyświetlić za pomocą pętli. I tak np. zamiast tworzenia po kolei zmiennych element1, element2, element3 możesz utworzyć tablicę z poszczególnymi indexami np.:
$Element[0] = "Wartość pierwsza";
$Element[1] = "Wartość druga";
$Element[2] = "Wartość trzecia";
lub...
$Element[] = "Wartość pierwsza";
$Element[] = "Wartość druga";
$Element[] = "Wartość trzecia";
Obie powyższe inicjalizację tablic są identyczne, różnią się pomiędzy sobą tylko tym, że wykorzystanie drugiego sposobu jest korzystniejsze. A to dlatego, że za każdym razem gdy chcemy dopisać do tablicy nową wartość nie musimy określać jej indexu. Tak jak w przypadku przykładu pierwszego. No i to jest kolejna różnica pomiędzy zmiennymi, a tablicami. Jeżeli nie znamy ilości zmiennych, które powinny zostać utworzone powinniśmy właśnie wtedy wykorzystać tablicę z przypisywaniem wartości do zmiennych tak jak w przykładzie drugim. PHP przychodzi nam z pomocą i pozwala dodawać elementy do tablicy jeszcze w jeden sposób. Gdybyśmy mieli tablicę wypełnić listą imion za pomocą obojętne którego wcześniej podanego przykładu, mogło by to być uciążliwe. Dlatego została stworzona funkcja array którą można wykorzystać w ten sposób:
$Imiona = array("Michał", "Tomek", "Jarek", "Natalia", "Karolina", "Aneta");
Za pomocą tak napisanego kody kolejne elementy są przypisane do kolejnych wartości index'ów. Żeby teraz wyświetlić pierwsze imię można napisać to tak:
print("Imię o indexie 0 to $Imiona[0]");
W ten sam sposób wypisuję się wartości wszystkich tablic. No tak, ale wciąż nie napisałem że rodzaju tablicy w PHP nie trzeba wcześniej określać, a index wpisuję się w nawiasie kwadratowym po nazwie tablicy.
Istnieje też możliwość tworzenia tablic asocjacyjnych, tzn. że zamiast indexów w tablicach będą pojawiać się nazwy np. tak:
$Pracownik["Imię"] = "Michał"; $Pracownik["Nazwisko"] = "Siudziński";
No i to byłoby tyle na tą lekcję. Pora sobie trochę utrwalić zdobyta wiedzę. Dokładne sposoby wyświetlania wszystkich elementów tablicy po kolei znajdziesz w lekcji poświęconej pętlom.
Pętle
Pętlę dają nam możliwość wielokrotnego wykonania określonych lini kodu. Dzięki nim możemy np. wyświetlić wszystkie elementy tablicy, wyświetlić zawartość pliku linia po lini itd. W PHP momy do dyspozycji trzy rodzaje pętli: while, for, do...while. Oprócz tego mamy do dyspozycji kilka dodatkowych wbudowanych funkcji takich jak: exit, break.
Pętla while ma następującą postać:
while(wyrażenie)
{
operacje;
}
Jeżeli wyrażenie ma wartość pozytywną (true) to funkcja wykona operacje zawarte we wnętrzu pętli i powróci na jej początek. I znowu jeżeli wyrażenie będzie miało wartość true zatem ... Najlepiej będzie Ci to zrozumieć na przykładzie:
<?
$licznik = 0;
while($licznik < 5)
{
$licznik++;
print("To jest $licznik wykonanie pętli<BR>
");
}
?>
Funkcja będzie wykonywana do momentu kiedy zmienna $licznik przyjmie wartość równą - 5. Podobny efekt można by uzyskać wykorzystując tu pętlę for. Jej budowa jest następująca:
for(inicjalizacja; warunek; inkrementacja)
{
operacje;
}
W pętli tej inicjalizacja czyli przypisanie do zmiennej o dowlonej nazwie wartości początkowej jest wykonywane tylko za pierwszym razem. Dalej jeżeli warunek zostaje spełniony wykonywana jest t.zw. inkrementacja, czyli powiększenie wsześniej utworzonej zmiennej o jeden. Pętle for wykorzystuję się zazwyczaj wtedy kiedy chcemy, aby dany fragment kodu został wykonany określoną ilość razu, zaś pętlę while wtedy kiedy chcemy, aby kod był wykonywany do osiągnięcia jakiegoś określonego celu np. osiągnięcia końca pliku. Czas na przykład. Oto pętla for w działaniu:
<?
$licznik = 0;
nor($licznik = 1; $licznik <= 5; $licznik++)
{
print("To jest $licznik wykonanie pętli<BR>
");
}
?>
Pętla do..while różni się od pętli while tym, że pętla do...while zostanie wykonana przynajmniej raz ponieważ wartość instrukcji jest sprawdzana na końcu, zaś w pętli while na samym początku. Oto jej skłądnia
do
{
operacje;
}
while(wyrażenie);
O funkcjach break oraz exit nie ma dużo do mówienia. Funkcja BREAK powoduję opuszczenie pętli w momencie napotkania na ten wyraz, zaś funkcja exit może być wykorzystywana nie tylko w połączeniu z pętlami powoduję przerwanie wykonywania skryptu PHP lub HTML.
No i to byłoby tyle teori. W poprzedniej części kursu obiecałem pokazać jak za pomocą pętli można odczytać wszystkie wartości tablicy. Oto on:
<?
$Imiona[] = "Michał";
$Imiona[] = "Jarek";
$Imiona[] = "Marcin";
$koniec = count($Imiona);
for($index=0; $index < $koniec; $index++)
{
print("$Imiona[$index]<BR>");
}
?>
Funkcje
Funcje są elementem kodu dostępnym w każdym języku programowania. Dzięki nim mamy mozliwość wykonania tego samego kodu nie powtarzając go. Każdą deklarację funkcji rozpoczyna się wyrazem function dalej podaję się nazwę funkcji oraz w nawiasie w razie potrzeby argumenty które mają zostać przetworzone. Poszczególne argumenty oddziela się od siebie przecinkiem. Oto szablon funkcji:
function nazwa(argumenty)
{
instrukcję
}
Stwórzmy teraz naszą pierwszą funkcję. Bedzie ona wypisywała tekst objęty znacznikami <PRE>. Oto kod do przeanalizowania:
<HTML>
<HEAD>
</HEAD>
<BODY>
<?
function pre($tekst)
{
print("<PRE>$tekst</PRE>");
}
pre("To jest tekst przekazany do funkcji");
?>
</Body>
</HTML>
Zapomniałem jeszcze dodać, że każda funkcja przed wywołaniem musi zostać wcześniej utworzona tak jak w powyższym przykładzie.
Potrafisz już wykorzystywać funkcję, jednak wszystko nie jest tak proste jak się wydaję. Zmienne które wykorzystujesz wewnątrz funkcji nie będą widoczne poza nią. Jak temu zaradzić? Służy do tego instrukcja global która tworzy zmienną na całym obszarze kodu. Jeżeli jednak zamiast zmiennej chciałbyś wykorzystywać tablicę, wystarczy instrukcę global zamienić na GLOBALS.
Odbieranie danych z formularza
Odbieranie danych, wprowadzonych przez odwiedzjącego do formularza, jest o wiele prostsze w PHP niż w podobnym języku, którym jest CGI. W PHP nie jest ważne którą metodę przesyłania danych z formularza wybierzemy. Czy będzie to "Get" czy "Post" musimy zdecydować sami. Widoczna różnica pomiędzy nimi jest taka, że gdy wybierzemy opcję: "Get" wszystkie dane zostaną po znaku "?" zapisane w adresie, zaś przy opcji "Post" PHP prześlę dane dyskretnie. Oto przykład najprostszego formularza, który będzie przesyłał imię do skryptu o nazwie: obsluga.php3.
<FORM ACTION="obsluga.php3" METHOD="POST">
<INPUT TYPE="TEXT" NAME="Imie">
<INPUT TYPE="SUBMIT" NAME="Akceptuj" Value="Akceptuj">
</FORM>
Zakładam, że znasz HTML więc nie będę omawiał powyższego kodu linia po lini. Zajmę się za to obsługą tak wprowadzonych danych przez sktypt PHP. Po wpisaniu przez użytkownika do okienka "Text" imienia i kliknięciu na przycisk "Akceptuj" PHP uruchomi skrypt podany w poleceniu ACTION formularza. W skrypcie będziesz miał do dyspozycji wszystkie zmienne z ich wartościami o nazwach równych właściwościom "Name" poszczególnych elementów formularza. I tak np. w powyższym formularzu pole tekst miało nazwę "Imie", teraz w skrypcie "obsluga.php3" pod zmienną $Imie kryje się wartość wprowadzona do pola. No dobrze, stwórzmy więc teraz skrypt obsługujący powyższy formularz. Będzie on wyświetlał napis powitalny z wprowadzonym imieniem:
<?
print("Witaj $Imie");
?>
Uwaga: PHP uwzgędnia wielkości liter, tzn. jeżeli w formularzu pole Name miało nazwę "Imie", w skrypcie zostanie utworzona zmienna $Imie nie $imie
Operacje na plikach
Ważną częścią PHP jest umiejętność obsługi plików. Zajmijmy się na początek zapisaniem do pliku jakiegoś tekstu. Oto przykłądowy kod, który wykona tą operację:
<?
$Plik = fopen("plik.txt", "w");
fputs($Plik, "Ten tekst zostanie zapisany do pliku
");
fputs($Plik, "Ten również o linię dalej");
fclose($Plik);
?>
Najpierw do dowolnej zmiennej musimy przypisać uchwyt do pliku. Służy do tego funkcja fopen. Pierwszym jej paramentrem jest nazwa pliku, zaś drugim tryb w którym ma zostać otworzony plik. W poniższej tabeli znajdziesz wszystkie możliwe tryby:
Tryb |
Opis |
r |
Tylko do odczytu |
w |
Tylko do zapisu. Usuwa zawartość pliku. W razie potrzeby tworzy plik |
a |
Tylko do zapisu. Dopisuję wartość na końcu pliku. Jeżeli jest to konieczne tworzy nowy plik |
r+ |
Do odczytu i zapisu |
w+ |
Do odczytu i zapisu. Czyści zawartość pliku i dopisuję wartość. Jeżli jest to konieczne tworzy nowy plik. |
a+ |
Do odczytu i zapisu, dopisuję wartość na końcu pliku. Jeżeli jest to konieczne twortzy nowy plik |
Później, aby dopisać wartość do pliku musimy użyć funkcji fputs, gdzie pierwszym paramentrem jest uchwyt do pliku zaś drugim dowolny tekst. Na końcu musimu zamknąć uchwyt używając do tego funkcji fclose(uchwyt);
Nadszedł teraz czas, aby nauczyć się odczytywać wartości z pliku. Oto kod:
<?
$Plik = fopen("Plik.txt", "r");
while(!eof($Plik))
{
$Linia = fgets($myFile, 255);
print("$Plik <BR>");
}
fclose($Plik);
?>
Najpierw tworzymy uchwyt do pliku, póżniej za pomocą pętli odczytujemy wszystkie linie z pliku i wypisujemy je na ekran. Do pobrania lini z pliku służy funkcja fgets, pierwszą jej wartością jest uchwyt do pliku, zaś drugą jego maksymalna wielkość.Na końcu należy zamknąć plik.