30 dniowy kurs php – dzień 6 – if,else


Back-end (php, mysql)

We wczorajszej lekcji (dzień 5) poznałeś operatory ale zetknąłeś się również z konstrukcją if,else. Służy ona do wykonywania operacji logicznych. Stawiasz warunki i oczekujesz konkretnej reakcji gdy warunek/warunki zostaną spełnione bądź nie. Można by ująć to w bardzo obrazowy sposób.

Jeśli będzie padał deszcz – if($deszcz == ‚pada’) – weź parasol – {echo ‚weź parasol!’;} – , jeśli nie pada – else – nie bierz parasola {echo ‚parasol nie potrzebny’;} – i teraz wszystko zależy jaką wartość podstawisz pod zmienną $deszcz. Umieśćmy całość w konstrukcji html z kodowaniem znaków utf8 aby poprawnie wyświetlały się polskie ogonki.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"; />
</head>
<body>

<?php

$deszcz = 'pada';

if($deszcz == 'pada')
{
	echo 'weź parasol!';
}
else
{
	echo 'parasol nie potrzebny';
}

?>

</body>
</html>

Dodatkowe warunki elseif

I teraz jeśli w zmiennej $deszcz podstawisz każdą inną informację niż „pada” zostanie wyświetlony tekst „parasol nie potrzebny”. Rzecz jasna nawet gdy wpiszesz „leje, kropi, mży, dżdży, burza” etc. to dalej zobaczysz tekst „parasol nie potrzebny”. Możesz jednak dodać więcej niż 1 warunek if rozbudowując tym samym funkcję i uwzględniając więcej możliwych akcji.

W tym celu dodajemy komendę elseif przy której również możemy użyć warunku logicznego umieszczonego w nawiasach. Przy else nie możemy go użyć bo jest to ostatni z możliwych warunków. Jeśli wszystkie inne nie zostaną spełnione wykonana zostanie akcja else. Jeśli nie podasz warunku else to funkcja zadziała tylko jeśli warunek if + ewentualne warunki elseif zostaną spełnione. W przeciwnym wypadku interpreter php zignoruje kompletnie wykonywanie deklaracji gdyż żadna nie spełni określonych warunków.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"; />
</head>
<body>

<?php

$deszcz = 'burza';

if($deszcz == 'pada')
{
	echo 'weź parasol!';
}

// w powyższej deklaracji nic nie zostanie wykonane

if($deszcz == 'leje')
{
	echo 'weź duży parasol!';
}
elseif($deszcz == 'burza')
{
// ten tekst zostanie wyświetlony bo $deszcz jest zdefioniowany jako 'burza'
	echo 'uważaj na pioruny!';

}
elseif($deszcz == 'pada')
{
	echo 'weź parasol!';
}
else{
	echo 'mamy ładną pogodę!';
}

?>

</body>
</html>

Jeśli godzina…

Inny ciekawy przykład. Powiedzmy, że chcemy witać użytkowników na naszej stronie tekstem zależnym od aktualnej godziny. Funkcja date() odpowiedzialna jest za wyświetlanie aktualnego czasu. Przypiszmy ją więc do zmiennej $godzina z odpowiednim parametrem (‚H’). Dzięki temu wyświetli się tylko godzina, bez minut i sekund.

Tworzymy deklarację if.  Jeśli aktualna godzina jest mniejsza niż 18 ale większa niż 3 wyświetli się tekst „Dzień dobry!”. Jeśli godzina będzie większa zobaczysz „Dobry wieczór!”. Co jednak w przypadku godziny 1,2,3? Nie bardzo pasuje dzień dobry. Dajmy więc Dobranoc pomiędzy godzinami 1 a 3. Tym samym godzina 24:59 wyświetli Dobry wieczór, a 1:00 już Dobranoc. 3:59 wyświetli Dobranoc, ale o 4:00 będzie już Dzień dobry.

<?php

$godzina = date('H');

if($godzina < 18 && $godzina > 3)
{
	echo "Dzień dobry!";
}
elseif($godzina >= 1 && $godzina <= 3)
{
	echo "Dobranoc!";
}
else
{
	echo "Dobry wieczór!";
}

?>

I w ten oto sposób można tworzyć masę warunków które będą wpływały na dalszy rozwój wydarzeń w naszym skrypcie. Dzięki czemu decydujemy co ma się dziać lub pojawiać w przypadku wystąpienia konkretnych okoliczności.