|
Instructiunea switch si structurile repetitive
In acest tutorial vom discuta amanuntit despre operatorii si structurile de control din PHP, alternative la familia de functii if-else(), dar si despre structurile repetitive.
Alternativa if-else: switch-case
switch (variabila decizionala) {
case conditia 1 este true:
actiune 1!
case conditia 2 este true:
actiune 2!
... si asa mai departe ...
}
In instructiunea switch-case, un bloc de cod dupa case() este executat daca variabila de decizie aferenta este adevarata. In plus, aceasta instructiune permite crearea unui bloc default care sa manipuleze datele in cazul in care nici una din conditiile case() nu este evaluata ca true:
<html>
<head></head>
<body>
<?php
$day = $_GET['day'];
produsului corespunzator
switch ($day) {
case 1:
$special = 'Cartofi prajiti cu pui';
break;
case 2:
$special = 'Supa de rosii';
break;
case 3:
$special = 'Salata de cruditati';
break;
default:
$special = 'Cartofi prajiti cu peste';
break;
}
?>
<h2>Specialitatea zilei este:</h2>
<?php echo $special ?>
</body>
</html>
Iata cateva comentarii interesante asupra codului de mai sus:
- instructiunea break este folosita cu precadere in structurile decizionale de tip switch-case pentru a opri executia secventei curente si continuarea executiei codului de dupa switch-case.
- instructiunea default este utilizata pentru a executa un cod doar in situatia in care nici una din conditiile inscrise in case() nu este satisfacuta.
O greseala frecventa in randul incepatorilor este aceea de a uita break dupa fiecare bloc case(). Trebuie sa retii faptul ca daca nu intalneste break, PHP va continua executia urmatorelor blocuri case().
Alte exemple de utilizare if else
In mod obisnuit, cand creezi si procesezi un formular in PHP, formularul HTML se regaseste intr-un fisier, iar codul ce proceseaza datele introduse de catre utilizator se gaseste separat, intr-un script PHP. Cu toate acestea, exista posibilitatea de a combina ambele instante intr-un singur fisier.
Tot ce trebuie sa faci este sa setezi un nume butonului de tip submit astfel incat el sa fie accesibil prin $_POST. Asadar, testand prezenta sau absenta variabilei $_POST[submit], se pot afisa formularul initial sau scriptul de procesare:
<html>
<head></head>
<body>
<?php
if (!isset($_POST['submit'])) {
?>
<form action="<?php echo $_SERVER['PHP_SELF'];
?>" method="post">
Varsta: <input name="age" size="2">
<input type="submit" name="submit"
value="Trimite">
</form>
<?php
}
else {
$age = $_POST['age'];
if ($age >= 18) {
echo 'Acum esti major!';
}
else {
echo 'Mai ai de crescut!';
}
}
?>
</body>
</html>
Dupa cum se poate observa, scriptul contine 2 pagini: pagina initiala in care se gaseste formularul si pagina cu rezultatul generat dupa apasarea butonului submit. Pentru a decide care dintre pagini trebuie afisata, scriptul de mai sus testeaza prezenta variabilei $_POST[submit].
Ca si observatie, este necesar ca butonul submit sa aiba setata o valoare in atributul name, iar aceasta este cea dupa care trebuie scrisa conditia de existenta: $_POST[nume_buton_submit]. Ca si noutate, variabila $_SERVER reprezinta un vector special ce contine informatii despre server, inclusiv calea catre scriptul curent ($_SERVER[PHP_SELF]).
|