Czym jest instrukcja warunkowa? Nie ma
józyka programowania, który nie posiadaóby w swojej strukturze
instrukcji warunkowych. Piszóc jakikolwiek program przygotowujemy go
na reakcje w odpowiedzi na zachowanie użytkownika. Program sprawdza,
jak zachowaó sió uóytkownik, np. co wpisaó w pole tekstowe, które
pole wybraó, w który przycisk kliknów, nastópnie wykonuje akcję
(kod), który w zamierzeniu programisty ma się wykonać w odpowiedzi
na oczekiwane zdarzenie.
Skóadnia instrukcji warunkowej if
Składnia instrukcji warunkowej if przedstawia
nastópujący wzór:
if(warunek)
{
instrukcje, które majó się wykonaó,
gdy warunek jest spełniony;
}else{
instrukcje, które majó się wykonać,
gdy warunek nie jest spełniony;
};
Przeanalizujmy nastópujócy kod skryptu:
Rys. 3_1 - Przykóad instrukcji if ...
else ...
Efektem dziaóania powyószego skryptu bódzie napis
"Liczba większa od zera" gdyż warunek $liczba>0 został spełniony.
Operatory porównania
Bardzo czósto bódziemy porównywaó wartości
zmiennych. W tym celu skorzystamy z następujących operatorów:
-
== (dwa znaki
równoóci) - porównanie dwóch zmiennych, czy są równe
np.: if ($zmienna1 == $zmienna2)
oznacza:
jeóeli $zmienna1 ma taką samą wartość, jak $zmienna2
-
!= (wykrzyknik i
znak równoóci) - porównanie dwóch zmiennych, czy nie są równe
np.: if ($zmienna1!=$zmienna2)
oznacza:
jeóeli $zmienna1 nie równa sió $zmienna2
-
=== (trzy znaki
równoóci) - porównanie dwóch zmiennych pod wzglódem ich typów i
wartoóci
np.: if($zmienna1===$zmienna2)
oznacza:
jeóeli $zmienna1 i $zmienna2 są tego samego typu (np. tekst) i
przechowujó te same wartoóci
-
> (znak
wiókszoóci) - porównanie dwóch zmiennych, czy pierwsza jest
wióksza od drugiej
np.: if ($zmiena1>$zmienna2)
oznacza:
jeóeli $zmienna1 jest większa od $zmienna2
-
< (znak
mniejszoóci) - podobnie, jak wyóej, lecz o przeciwnym znaczeniu
-
>= (znak
wiókszoóci i znak równoóci) - porównanie dwóch zmiennych, czy
pierwsza jest wióksza lub równa drugiej
np.: if ($zmienna1>=$zmienna2)
oznacza:
jeóeli $zmienna1 jest wióksza lub równa $zmienna2
Jeóeli porównujemy wartość zmiennej z ciągiem
tekstowym, tekst powinien być umieszczony w pomiódzy znakami
cudzysóowu:
if($zmienna=="Ala") ...
Operatory logiczne
-
or (lub) -
alternatywa
np.: if ($zmienna1 ==2 or $zmienna2
==2)
oznacza:
jeóeli $zmienna1 jest równa liczbie dwa, lub $zmienna2 jest
równa liczbie 2
-
and (i) -
koniunkcja
np.: if ($zmienna1==1 and $zmienna2==1)
oznacza:
jeóeli $zmienna1 równa sió liczbie 1 i $zmienna2 równa się
liczbie 1
Odbieranie zmiennych z formularzy, funkcja
empty
W zadaniu z poprzedniej części użytkownik
rozwiózując test nie musiał zaznaczać (wypełniać) wszystkich pól.
Jeźeli pozostawił puste pole, nie nastąpiło przekazanie zmiennej. Co
się stanie, gdy będziemy próbowaó w skrypcie odwołać się do
zmiennej, która nie istnieje?
Interpreter moóe wygenerowaó komunikat o bółędzie:
Rys. 3_2 - Komunikat o braku istnienia
zmiennej o nazwie "zmienna"
Rys. 3_3 - Skrypt generujący powyższy
komunikat
W powyószym skrypcie linia polecenia
error_reporting(E_ALL); powoduje
wyówietlenie wszystkich bóódów, takóe tych, które nie só krytycznymi
jeóeli chodzi o dziaóanie skryptu. Jak widaó, skrypt nie przerwaó
dziaóania, zostaóo wyówietlone zdanie "Wyówietlam wartoóó zmiennej".
Zmienne z formularzy będziemy odbierać w
nastópujący sposób:
if(empty($_POST['nazwa_zmiennej'))
{
$nazwa_zmiennej="";
}else{
$zmienna=$_POST['nazwa_zmiennej'];
};
Powyósza linia kodu oznacza:
Jeóeli jest pusta (empty) zmienna o nazwie "nazwa_zmiennej"
przekazywana metodó POST (czyli nie ma óadnej wartoóci),
to przypisz zmiennej o nazwie "nazwa_zmiennej" wartoóó znaku pustego
"" (pole tekstowe o zerowej dóugoóci),
w przeciwnym wypadku
przypisz zmiennej o nazwie "nazwa_zmiennej" takó wartoóó, jaka
zostaóa przesóana metodó POST.
Powyósze deklaruje istnienie zmiennej o nazwie "nazwa_zmiennej"
bez wzglódu na to, czy została ona przesłana przez formularz, czy
teó nie. Można więc odwoływać się do tej zmiennej w kaódym miejscu
kodu, co nie będzie powodowało generowania komunikatu o błędzie.
W powyższym przykładzie moóe być zastosowana
równieó funkcja isset();
wynikiem jej dziaóania jest "prawda", jeżeli zmienna istnieje,
choóby o pustej wartoóci, "faósz", jeóeli zmienna nie istnieje.
Zaleca sió w trakcie pisania skryptów stosowania
linii: error_reporting(E_ALL); dla
wyówietlenia wszystkich ewentualnych bóódów. Po zakończeniu
edytowania skryptu, należy powyższą linię zamienić na znaną
error_reporting(0);
ówiczenie 3_1 - Przykóad prostego testu
-
Naleóy umieóció na swoim koncie WWW plik
03_01.php i 03_01a.php (do pobrania tutaj
03_01.zip).
-
Na podstawie analizy dostarczonego kodu i komentarzy, należy
przygotowaó Zadanie 2.
Funkcja exit();
Jeóeli oczekiwany warunek nie został spełniony lub powstał
przewidziany bóód, a co za tym idzie dalsze wykonywanie skryptu jest
pozbawione sensu, możemy zatrzymaó dalsze analizowanie kodu poprzez
użycie funkcji exit();
if($zmienna!="Ala")
{
exit();
};
Instrukcja switch
Instrukcja ta upraszcza wielokrotne użycie instrukcji if.
Skóadnia tej instrukcji wygląda następująco:
switch ($zmienna)
{
case "wartość porównywana 1": {polecenia, gdy spełniony warunek równści; break;}
case "wartość porównywana 2": {polecenia, gdy spełniony warunek
równoóci; break;}
default: {polecenia, gdy nie został spełniony żaden z powyższych
warunków;break;}
};
Instrukcja break; powoduje
przerwanie dziaóania instrukcji, gdy zostanie speóniony warunek.
ówiczenie 3_2 - Uóycie instrukcji switch
-
Naleóy umieścić na swoim koncie WWW plik
03_02.php i 03_02a.php (do pobrania tutaj
03_02.zip).
- W pliku 03_02a.php naleóy doóoóyó obsługą kilku kolejnych
kolorów (informacjó o tym, jakie kolory zostały doóóczone proszę
umieócić na widocznym miejscu w formularzu).
Zadanie 2 - Test z wybranego przedmiotu z
podsumowaniem poprawnoóci odpowiedzi
- Należy wykorzystać test przygotowany w poprzednim zadaniu.
- Należy odebrać zmienne z formularza po uprzednim
sprawdzeniu, czy zmienna została przesłana. W przeciwnym wypadku
należy tej zmiennej przypisać wartośó pustego znaku.
- Skrypt powinien sprawdzió poprawność udzielonych odpowiedzi
i wyówietlić sumó uzyskanych punktów.
- Skrypt powinien wystawić ocenę wedóug zaóoóonej skali.
- Skrypt powinien przy kaódym pytaniu udzielać informacji, czy
odpowiedó na to pytanie zostaóa udzielona prawidłowo. W wypadku
braku prawidóowej odpowiedzi skrypt powinien poinformowaó, jaka
była oczekiwana odpowiedź.
|