You are on page 1of 69

Aplicaii Web prin limbaj PhP

XAMPP este un pachet de software folosit pentru a putea crea n local pagin web dinamice.
Cerine de sistem: XAMPP funcioneaz cu sistemele de operare windows - windows XP / windows 2000 / windows vista / windows 7 - Linux i Macintosh funcioneaz foarte bine cu windows xp i windows vista. * Pentru a putea folosi XAMPP estei nevoie de minim: Procesor: 1000 MHz Pentium|| Memorie: 128 MB RAM|| Spaiu liber pe disc: 160 MB|| * Se recomand: Procesor: 2.4 GHz Pentium|| Memorie: 512 MB RAM|| Spaiu liber pe disc: 1 Gb|| Internet n band larg|| Caracteristici principale server web pentru folosit n local sau pentru a gzdui site-uri web; instaleaz Apache, MySQL, PHP, Perl, phpMyAdmin, FileZilla FTP Server etc; stabil, sigur, rapid i eficient; interfa simpl i intuitiv; este o aplicaie uor de folosit; suport n diferite limbi; actualizare manual: suport instalare / dezinstalare, etc;

HTDOCS este radacina documentelor web, adica orice tip de document (fisier, director, script, etc.) web se va afla in acest director, fie direct in radacina lui, fie prin intermediul unei scheme de directoare. Atunci cand o pagina web este solicitata de browser, serverul va cauta pagina in acest director sau sub-directoare din el, nu in alta parte, pe baza adresei scrise in bara de adrese. Aceste pagini (fisiere) se scriu folosind un editor de text simplu (notepad, notepad2,) apoi sunt salvate in radacina arborelui de documente.

Tipuri de fisiere :
Fisiere php contin instructiuni ce

trebuie executate de motorul php, iar rezultatul este trimis catre browser. Fisiere html: cuprind instructiuni despre ce si cum trebuie sa apara in pagina html. Fisiere css: cuprind instructiuni despre designul pagini html. Fisier javascript (extensia de fisier .js): permit gestionarea si folosirea unor efecte in pagina web. Fisiere multimedia: cu imagini, audio, video.

Limbajul php
Este un limbaj de programare ce ruleaz server proiectat special pentru

paginile Web. Programele php sunt combinaii de 3 elemente: text, cod html, script php Spre deosebire de paginile HTML care puteau fi verificate si pe calculatorul local paginile PHP nu pot fi verificate decat daca sunt gazduite pe un server web care are instalat PHP. Pentru ca un fisier sa fie considerat php viabil trebuiesc indeplinite conditiile: - Numele poate fi format din caractere alfanumerice [a-zA-Z0-9] liniuta de subliniere "_". - Sa aiba extensia .php. - Instructiunile din fisier sa fie cuprinse intre expresiile <?php si ?> In momentul cand serverul intalneste aceste expresii va trimite toate datele si instructiunile aflate intre aceste expresii catre motorul php. - Intr-o pagina php poate fi si cod html si cod php; codul html este trimis direct catre browser, iar codul php (tot ce este scris intre <?php si ?>) este trimis la prelucrat catre motorul php care la randul lui trimite rezultatul catre browser prin instructiuni specifice (print, echo, etc).

Client, trimite cerere catre server

1. GENERALITI

Server Apache

php

Baza de date

Alte module Apache

Pagina Web in server

Cand se acceseaz o pagina HTML serverul care o gazduieste trimite pagina HTML catre browser spre afisare. In cazul unei pagini PHP serverul citeste codul PHP, il interpreteaza si genereaza dinamic pagina HTML care este trimisa browserului spre afisare. Acesta este motivul pentru care utilizatorii folosesc PHP pentru construirea unor pagini cu continut dinamic.

Reguli: inchiderea unui rand se face obligatoriu cu caracterul ; numele functiilor NU sunt Case Sensitive (nu se face diferenta intre utilizarea literelor mari sau mici) numele variabilelor sunt Case Sensitive (se face diferenta intre utilizarea literelor mari sau mici) ghilimelele se folosesc pereche "..." sau '...', folosirea lor "...' sau '..." constituie o eroare functia echo este folosita pentru afisarea informatiilor delimitate de ghilimele. fisierul PHP poate contine intre etichetele <html> si </html> blocuri PHP

delimitate de <?php....... ?>


In situatia in care scriptul nu este scris corect PHP-ul va afisa eroarea indicandu-se si locul unde aceasta apare. Erorile sunt afisate doar daca serverul este setat corespunzator (in php.ini este setat display_errors=On si error_reporting=E_ALL).

Scrierea scripturilor PHP <?php ?>

Afisarea datelor de iesire intr-un browser Web


<?php echo <H2> scrieti aici un text oarecare </H2>" ?>

<? echo "Aceasta este \"textul\" care se va afisa<BR>"; echo "Acesta este al doilea text \\scris care se va afisa"; ?>

Fiierele cu extensia php se salveaz n dosarul htdocs al serverului Apache.

<html> <head> <title>Test PHP</title> </head> <body> <?php echo "<h4> Exemplu de script PHP inclus in HTML</h4>" ?> </body> </html> // Comentariul pe o singura linie /* Acesta este un comentariu pe mai multe linii. Poate fi alcatuit dintr-un numar oricat de mare de linii. */

<html> <head> <title>Test PHP</title> </head> <body> <?php // Script test // Acest script afiseaza un mesaj vizibil pentru utilizator.

echo "Primul meu script PHP."; ?>


</body> </html>

http://localhost/nume script.php

2. VARIABILE
Variabila este un container de date care poarta un nume si i se poate atribui o valoare care poate fi modificata de mai multe ori sau salvata intr-o baza de date. Numele dat variabilei incepe cu simbolul $ urmat de orice litera mica (a-z) sau mare (A-Z) sau cu caracterul _ , dar niciodata cu o cifra si nu poate contine spatii goale. $nume_variabila="valoare" Valorile atribuite pot fi: text, numere, date complexe. Scalare conin o singur valoare: booleene, ntregi, n virgul mobil, text Nescalare conin valoari multiple: tablouri, obiecte Text (string)
Boolean - String - Integer - Float - Array - Object - Resource - Null

Tipuri de variabile

Tipuri de date: Numerice: integer, double

Variabile predefinite - care rezida in nucleul PHP, sunt alocate automat de catre modulul PHP, si sunt accesibile in program :
$_SERVER[PHP_SELF] $_SERVER[HTTP_USER_AGENT] $_SERVER[REMOTE_ADDR] returneaz numele scriptului curent returneaz numele browser-ului Web i a S.O, returneaz adresa IP a utilizatorului

3. IRURI DE CARACTERE
irul (string) este o variabil care conine o combinaie de

numere, litere, simboluri i spaii delimitate ntre dou ghilimele simple sau duble. irurile pot conine i nume de variabile. Crearea unei variabile se face prin atribuirea valorii irului de caractere unui nume valid de variabil. $name=Adi; Afiarea valorii coninute n variabil se face prin echo

echo $name;
echo Salut $name; Concatenarea irurilor se face prin operatorul de concatenare punct (.) Caracterul spaiu este considerat tot un ir de caractere.

GHILIMELE MAGICE
<?php echo 'Acesta este un script scris gresit"; ?> Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in C:\xampp\htdocs\script_gresit.php on line 2 <?php echo "Acesta este un script scris corect"; ?>

In constructia echo se poate pune orice fel de text insa pot fi cazuri in care sa existe conflicte cu ghilimelele magice si anume: <?php echo 'Conflict cu ghilimelele magice <br> <a href='pagina_mea.php'>Legatura catre pagina mea</a>'; ?>

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\xampp\htdocs\ghilimele_magice.php on line 3

Soluii:
<?php echo Conflict cu ghilimelele magice <br> <a href='pagina_mea.php'>Legatura catre pagina mea</a>; ?>

<?php echo 'Conflict cu ghilimelele magice <br> <a href=\'pagina_mea.php\'>Legatura catre pagina mea</a>'; ?>

<?php $program="PHP"; echo $program; ?>

PHP

<?php $luna="iulie"; echo "Am concediu in luna ".$luna; ?>

Am concediu in luna iulie

<?php $ziua="22"; $luna="12"; $anul="1986"; echo "Data nasterii este ".$ziua.".".$luna.".".$anul; ?>

Data nasterii este 22.12.1986

<?php $nume=Adi Pop"; $data="19 iulie 2012"; echo "Solicitarea a fost facuta de domnul ".$nume." pe data de ".$data; ?> Solicitarea a fost facuta de domnul Adi Pop pe data de 19 iulie 2012

<?php $temperatura=-5; $vant=8.5; echo "La Sinaia sunt ".$temperatura."<sup>o</sup>C iar vantul bate cu ".$vant."m/s"; ?> La Sinaia sunt -5oC iar vantul bate cu 8.5m/s

4. NUMERE
Intreg (integer) este un simplu numar intreg exprimat in sistem zecimal, hexazecimal sau octal, optional putand purta si semn (+ sau -). In sistem octal numarul trebuie precedat de 0, iar pentru hexazecimal precedat de 0x.

$a=2006; //numar exprimat in sistem zecimal $a=-52; //numar negativ exprimat in sistem zecimal $a=0135; //numar octal (echivalent cu 207 zecimal) $a=0x1D; //numar hexazecimal (echivalent cu 29 zecimal) <?php $valoare = 3; echo "Numarul ales este ".$valoare." ". "100"; ?>

Numerul cu virgula flotanta (float) sau dubla precizie este un numar real care poate fi folosit cu urmatoarea sintaxa: $a=3.14; //numar zecimal $a=-2.59; //numar zecimal negativ $a=1.3e2; //130 $a=6E+3; //6000

! La acest tip de numere separatorul zecimal este semnul punct, semnul virgula se utilizeaz
pentru separarea parametrilor unei funcii. <?php $g = 9.81; echo "Constanta gravitaionala g= ".$g." unitatea de masura"; ?>

Punctul este i operatorul de concatenare. Daca se dorete unirea a dou numere exist urmtoarele posibiliti: 1. Atribuim mai nti numerele unor variabile si apoi unim acestea cu operatorul punct. <?php $unitati = 4; $zeci = 5; echo $zeci.$unitati; ?>

2. Dac dorim s unim dou valori ntregi cu ajutorul operatorului punct atunci trebuie s inseram cte un spaiu nainte si dup operator.

<?php $nr1=4 . 5; $nr2=4.5; echo "Valoarea primului numar este $nr1<BR>"; echo "Valoarea celui de-al doilea numar este $nr2"; ?>

<?php $nr1=4 . 5; $nr2=4.5; echo $nr1.' <BR> '.$nr2; ?>

4. CONSTANTE
O constanta stocheaza o valoare, cum este si o variabila, dar aceasta valoare, dupa ce a fost stabilita, nu mai poate fi modificata in script. Constanta i pstreaz valoarea pe toat durata rulrii scriptului. Constantele pot conine orice valori unice, un numr sau un ir de caractere. Numele constantei conine NUMAI MAJUSCULE. ! O diferenta importanta intre constante si variabile, este faptul ca o constanta nu are in fata ei semnul $. Pentru crearea unei constante n locul operatorului de atribuire (=) se foloseste functia DEFINE define (NAME,valoare)
Numele constantei scris cu majuscule

Valoarea constantei

Constante predefinite: PHP_VERSION - d versiunea procesorului PHP PHP_OS - d sistemul de operare al serverului

<?php define('AUTOR', 'Adi'); define('VARSTA', '20 ani'); echo AUTOR.' <br> '.VARSTA; ?> <?php define('USERNAME', 'Adi'); echo 'Salut'.' '.USERNAME; ?> Valorile ncadrate de ntre ghilimele simple sunt tratate literal, adic textul va fi afiat exact aa cum a fost scris.

Valorile ncadrate ntre ghilimele duble sunt interpretate, adic determin nlocuirea unei variabile $var cu valoarea ei => dac se dorete afiarea valorii unei variabile se folosesc ghilimele duble.

5. OPERATORI PHP
Operatori aritmetici cu variabile
+ Adunare - Scadere * Inmultire / Impartire % Modulo $a + $b $a - $b $a * $b $a / $b $a % $b

<?php $a = 12; $b = 8; $rezultat = $a + $b; echo 'Rezultatul adunarii lui '.$a.' cu '.$b.' este '.$rezultat. '; ?>

<?php $a=12; $b=3; $c=7; $adunare=$a+$b; $scadere=$a-$b; $inmultire=$a*$b; $impartire=$a/$b; $modulo=$a%$c; echo $a."+".$b."=".$adunare."<br>"; echo $a."-".$b."=".$scadere."<br>"; echo $a."x".$b."=".$inmultire."<br>"; echo $a.":".$b."=".$impartire."<br>"; echo $a."%".$c."=".$modulo; ?>

Operatorii de atribuire
Principalul operator de atribuire este = si inseamna asocierea operatorului din stanga cu valoarea expresiei din dreapta (a nu se confunde cu egalitatea). Valoarea unei expresii de atribuire este valoarea atribuita, adica valoarea lui $a=5 este 5. $a=7; $a+=6; //atribuie lui $a valoarea 13, acelasi lucru cu $a=$a+6 $b="Buna "; $b.="ziua"; // atribuie lui $b valoarea "Buna ziua", acelasi lucru cu $b=$b."ziua";

Operatori de comparatie in PHP == === != <> < > <= >= Egal Identic Diferit Diferit Mai mic Mai mare Mai mic sau egal Mai mare sau egal $a == $b $a === $b $a != $b $a <> $b $a < $b $a > $b $a <= $b $a >= $b

Operatorii logici
NOT AND AND OR OR XOR !$a $a && $b $a and $b $a || $b $a or $b $a xor $b TRUE daca $a nu este TRUE TRUE daca si $a si $b sunt TRUE TRUE daca si $a si $b sunt TRUE TRUE daca ori $a ori $b sunt TRUE TRUE daca ori $a ori $b sunt TRUE TRUE daca ori $a ori $b sunt TRUE dar nu amandoua

Operatori multipli Intr-o constructie PHP pot fi pot fi folositi impreuna mai multi operatori.

<?php $a=12; $b=3; $c=3; echo $a."+".$b."+".$c."=".($a+$b+$c)."<br>"; echo $a."x".$b."-".$c."=".($a*$b-$c); ?>


12+3+3=18 12x3-3=33

Incrementarea si decrementarea unui numar Marirea unui numar cu o unitate se numeste incrementare, iar scaderea cu o unitate se numeste decrementare. Incrementarea se poate realiza adunand o unitate la acel numar (sau variabila) sau se poate folosi varianta prescurtata; similar pentru decrementare. post incrementare post decrementare pre incrementare pre decrementare $a++ $a-++$a --$ad returneaza $a si incrementeaza $a cu 1 returneaza $a si decrementeaza $a cu 1 incrementeaza $a cu 1 si returneaza $a decrementeaza $a cu 1 si returneaza $a

<?php $a=7; $b=7; $c=7; $d=7; echo "post incrementarea lui 7 este: ".$a++."<br>"; echo "post decrementarea lui 7 este: ".$b--."<br>"; echo "pre incrementarea lui 7 este: ".++$c."<br>"; echo "pre decrementarea lui 7 este: ".--$d; ?>

Numere aleatoare

rand() este functia din PHP care genereaza automat numere aleatoare. Poate primi parametri limita minima si maxima a numerelor generate.
<?php echo "numar generat aleator: ".rand()."<br>"; echo "numar generat aleator din intervalul 1-49: ".rand(1,49); ?>

Functia de rotunjire round() este functia de rotunjire si poate primi ca parametru numarul de cifre zecimale dupa rotunjire

<?php echo "27,54621 rotunjit este: ".round(27.54621)."<br>"; echo "27,54621 rotunjit cu 2 zecimale este: ".round(27.54621,2); ?>

Structuri de control
Aceste structuri permit definirea unei conditii si apoi executarea unor operatii functie de raspuns. IF Conditia este incadrata de paranteze rotunde, iar instructiunea care se executa in cazul in care conditia este indeplinita intre acolade. Neindeplinirea conditiei face sa se execute ce urmeaza dupa inchiderea acoladei.

if (conditie) { instructiuni executate daca este indeplinita conditia ; }


<?php $a=4; $b=3; echo "$a=4<br>"; echo "$b=3<br>"; if ($a>$b) { echo "$a>$b"; } ?>

ELSE Indica ce se executa in cazul in care conditia mentionata in instructiunea if nu este indeplinita. if (conditie) { instructiuni executate daca este indeplinita conditia; } else { instructiuni executate daca nu este indeplinita conditia; } <?php $a=2; $b=9; echo "$a=2<br>"; echo "$b=9<br>"; if ($a>$b) { echo "$a>$b"; } else { echo "$a<$b"; } ?>

elseif este o combinatie intre if si else. In cazul in care conditia if nu este indeplinita se introduce elseif care testeaza inca o conditie. Daca nu este indeplinita a doua conditie se executa declaratia introdusa prin else. if (conditia1) { instructiuni executate daca este indeplinita conditia 1; } elseif (conditia2) { instructiuni executate daca este indeplinita conditia 2; } else { instructiuni executate daca nu este indeplinita conditia 2; }

<?php $a=19; $b=23; if ($a<$b) { echo "$a<$b"; } elseif ($a==$b) { echo "$a==$b"; } else { echo "$a>$b"; } ?>

<?php $ziua=2; echo $ziua; echo "<br>"; switch ($ziua) { case 1: echo "Luni"; break; case 2: echo "Marti"; break; case 3: echo "Miercuri"; break; case 4: echo "Joi"; break; case 5: echo "Vineri"; break; case 6: echo "Sambata"; break; case 7: echo "Duminica"; break; } ?>

switch este asemanatoare functiei if, dar permite conditiilor sa aibe mai mult de 2 valori. Intr-o instructiune if, conditia poate fi adevarata sau falsa, insa intr-o instructiune switch conditia poate lua orice numar de valori diferite. Aceasta instructiune trebuie sa contina o instructiune case care sa manevreze fiecare valoare dorita.

Instructiunea compara variabila $variab cu valorile din clauzele Case. In caz de egalitate, executa codul din blocul respectiv pana intalneste break. Altfel executa blocul default break.

while este o instructiune de tip bucla. Atat timp cat conditia este adevarata se repeta bucla.

Asemenea instructiunii if, ea se bazeaza pe o actiune. Diferenta dintre if si while este aceea ca instructiunea if, daca gaseste adevarata conditia, afiseaza o singura data bucata de cod din ea, insa in conditia while, daca rezultatul este adevarat, bucata de cod din ea se va repeta atata timp cat conditia este adevarata.
<?php $numar=1; while ($numar<=7) { echo $numar."<br>"; $numar++; } ?>

for este o instructiune de tip bucla.


for (expresia1; expresia2; expresia3) { instructiuni de executat; } ?>

expresia1 este evaluata la inceputul buclei expresia2 se verifica la inceputul fiecarei iteratii expresia3 se executa la sfarsitul fiecarei iteratii constructia for poate functiona si fara una sau toate aceste expresii <?php for ($i=1; $i<=10; $i++) { echo $i."<br>"; } ?>
Obs: se initializeaza variabila i cu valoarea 1, se verifica daca este mai mica sau egala cu 10 iar apoi se incrementeaza. La fiecare iteratie se tipareste variabila i.

Foreach si tablouri
Un tablou (array) este o lista de valori, in care fiecare valoare poate fi un sir de caractere, un numar sau chiar un tablou. Php accepta 2 tipuri de tablouri: - indexate folosesc numere pentru chei (incep cu 0) - asociative folosesc pentru chei siruri de caractere Pentru obtinerea unei valori specifice dintr-un tablou se precizeaza numele tabloului urmat de index in paranteze patrate: $tablou[index] Tablouri globale predefinite: $_GET stocheaza toate variabilele si valorile trimise catre scriptul php prin metoda GET $_POST stocheaza toate variabilele si valorile trimise catre scriptul php prin metoda POST

Ex 1: tabloul $ang Cheie 0 1 2 3 4 Valoare Dan Vlad Ana Andrei Sorin

Ex 2: tabloul $judete` Cheie


AR TM BH CJ

Valoare
Arad Timis Bihor Cluj

Echo $ang [2]; Echo $judete[TM];

//Ana //Timis

Fiecare cheie dintablou trebuie sa fie unica

foreach este o constructie care functioneaza doar cu tablouri, genernd erori cand sunt folosite variabile cu tipuri de date diferite sau variabile neinitializate.

foreach ($array as $cheie=>$valoare) { instructiuni de executat; } <?php $personal = array("Florin" => director, "Catalin" => inginer, "Mihai" => economist, "Sorin" => sofer, "Diana" => secretara);
foreach ($personal as $nume => $meserie) { echo "$nume => $meserie<br>"; } ?>

include si require sunt doua functii asemanatoare folosite pentru includerea in paginile php a unor fisiere externe. Diferenta intre cele doua functii consta in faptul ca daca functia include da gres ,scriptul genereaza o avertizare, dar functioneaza in continuare, in timp ce la functia require , se termina executarea scriptului.

include "fisier1.php"; require "fisier2.html"; break opreste fortat executia structurilor for, foreach, while, do..while sau switch. break accepta optional un argument numeric care indica numarul de structuri imbricate a caror functionare este oprita. <?php for ($i=0; ;$i++) { if ($i>6) { break; } echo $i."<br>"; } ?> Obs: la i=6 se opreste executia buclei

continue este folosita pentru a intrerupe executia secventei de instructiuni din interiorul unui ciclu si trecerea la urmatoarea iteratie. Functia continue accepta optional un argument numeric care indica numarul de bucle care vor fi sarite pana la sfarsit. <?php for ($i=0;$i<8;$i++) { if ($i==5) continue; echo $i."<br>"; } ?> Obs: sare executia peste i==5 return Daca este chemata din interiorul unei functii, declaratia return() opreste imediat executia functiei curente si furnizeaza argumentul ca valoare a functiei. Daca este chemata in scop global executia scriptului curent se opreste.

6. FORMULARE
Elementul FORM <form [action=script.php] [method=get/post] </form>

<fieldset> adaug un chenar la formular <legend> pune un titlu n partea de sus a chenarului ce delimiteaz formularul
Elementul INPUT <input [type=text|password|checkbox|radio|submit|image|reset|button|hidden|file] [name=nume] [value=valoare] [checked] [disabled] [readonly] [size=latime] [maxlength=cuvinte_maxime] [src=url] [alt=altText] [usemap=url] [align=left|center|right|justify] [tabindex=numar] [accesskey=keyCombo] [onfocus=script] [onblur=script] [onselect=script] [onchange=script] [accept=set_caractere] [core] [international] [events]>

Valorile Type ale elementului INPUT Buton reset /submit Exemplu: <input type=submit name=Trimite value=Trimite> Exemplu: <input type=reset name=Reseteaza value=Reseteaza>

Casete de validare
Exemplu: <input type=checkbox name=nume value=valoare>

Butoane radio Exemplu: <input type=radio name=nume value=valoare>

Casete de introducere a parolei <input type=password name=nume value=valoare>

Elementul SELECT Acest element este folosit pentru crearea unei liste de opiuni, fie ca un meniu care se desfoar, fie ca o caseta cu lista. Fiecare din optiunile din lista reprezint un element OPTION. <select [name=nume] [size=latime] [multiple] [disabled] [tabindex=numar] [onfocus=script] [onblur=script] [onchange=script] [core] [international] [events]> Elementele din select </select> <option [selected] [disabled] [value=valoare] >Nume</option>

Exemplu select: <select name=test> <option value=optiune 1>Optiune 1</option> <option value=optiune 2>Optiune 2</option> <option value=optiune 3>Optiune 3</option> <option value=optiune 4>Optiune 4</option> </select> <select name=test multiple size=3> <option value=optiune 1>Optiune 1</option> <option value=optiune 2>Optiune 2</option> <option value=optiune 3>Optiune 3</option> <option value=optiune 4>Optiune 4</option> <option value=optiune 5>Optiune 5</option> <option value=optiune 6>Optiune 6</option> </select>

Elementul TEXTAREA Acest element este asemntor cu cel text numai ca aici se poate tasta ntr-o sectiune mult mai mare dect n cazul text.
<textarea [name=nume] [rows=nr_randuri] [cols=nr_coloane] [disabled] [readonly] [tabindex=numar] [onfocus=script] [onblur=script] [onselect=script] [onchange=script] [core] [international] [events]</textarea> Exemplu textarea: <textarea name=nume cols=40 rows=10>Text initial</textarea>

<form action="formular.php" method="post"> Nume: <input type="text" name="nume" value="" size=60 maxLength=15> <br><br> Prenume: <input type="text" name="prenume" value=""> <br><br> Varsta: sub 16 <input type="radio" name="varsta" value="sub16"> | peste 16 <input type="radio" name="varsta" value="peste16"> <br><br>

Parola dorita: <input type="password" name="parola" value=""> <br><br>


<input type="submit" name="Trimite" value="Trimite"> <input type="reset" name="Reseteaza" value="Reseteaza"> </form>

Manipularea unui formular


Un script manipuleaz formularul nseamn c datele din formular vor fi: - retransmise ctre browser-ul Web - stocate ntr-o baz de date MySql, comparate cu valori stocate anterior - pot fi transmise prin email.

Pagina php care primete datele din formular va atribui informaiile introduse unei variabile speciale $_REQUEST[ ]
Intrrile din formular sunt transformate n variabile cu acelai nume.

$_REQUEST[ ] este un tip special de variabil n php care stocheaz toate datele trimise ctre o pagin php prin metodele GET sau POST

Transformarea automat a intrrilor din formulare n variabile cu nume similare se face prin $name => nu mai este necesar referirea n prealabil a variabilei $_REQUEST[ name] Ortografia variabilei trebuie s corespund EXACT cu valorile atributului din formularul html => datele introduse n caseta de text cu numele name a crei valoare este name, sunt accesibile prin variabila $_REQUEST[ name]

Validarea datelor din formular


Validarea datelor presupune funcii, operatori i expresii.
Funcia Isset() verific dac o variabil are o valoare, inclusiv 0, False, ir vid, dar nu NULL. If (isset($var)) { //$var are o variabila } else { // $var nu are o valoare If (strleng($var)>0) { //$var are o variabila } else { // $var nu are o valoare

Obs: funcia isset() returneaz true n cazul irurilor vide => nu este eficient pentru a verifica dac un utilizator a introdus sau nu date.

<?php $nume=$_POST["nume"]; if ($nume=="") { echo "Campul nume nu este completat"; } else { echo $nume; } ?> <?php $nume=$_POST["nume"]; if (($nume=="") || (strlen($nume)<5)) { echo "Campul nume nu este completat corect"; } else { echo $nume; } ?> Funcia Empty() varific dac o variabil are o valoare nul: ir vid, 0, Null, False => este folosit pentru a verifica dac utilizatorul a scris ceva n elementele de tip text (nume, prenume, adres, comentariu).

TABLOURI
Un tablou (array) este o lista de valori, in care fiecare valoare poate fi un sir de caractere, un numar sau chiar un tablou. Tablourile sunt structurate ca serii de perechi cheie-valoare.

Php accepta 2 tipuri de tablouri: - indexate folosesc numere pentru chei (incep cu 0) - asociative folosesc pentru chei siruri de caractere
Tablourile respect aceleai reguli de denumire ca i alte variabile. Diferena sintactic se refer al modul de accesare la elementele individuale ale tabloului. Pentru obtinerea unei valori specifice dintr-un tablou se precizeaza numele tabloului urmat de index in paranteze patrate: $tablou[index] Ex: echo $judete[2]; //Arad echo $orase[AR]; //Arad
La chei sir de caractere

Echo aceasta este abrevierea pentru {$orase[AR]};

a) Crearea tablourilor
Metode: adugnd pe rnd elementele unul cte unul Ex: $array[AR]=Arad; $array[TM]=Timis;

Tablouri predefinite:
$_GET, $_POST, $_REQUEST

folosind funcia ARRAY() prin care se construiete tabloul printr-o singur instruciune. Ex: $judete=array(AR=>Arad, TM=>Timis); chei valori

Obs: dac se specific o cheie numeric pentru primul element, urmtoarele elemente vor fi incrementate: Ex: $zile=array(1=>Luni, Marti, Miercuri, Joi, Vineri); echo $zile[3]; //Miercuri

Accesul la elementele tabloului se face prin funcia Foreach() Ciclul foreach atribuie iterativ valoarea fiecrui element al tabloului variabilei $value.
Pentru un tablou de numere secveniale se poate folosi funcia RANGE() Ex: $days = range (1, 31);

Accesul la toate elementele tabloului


Prin ciclul foreach: Foreach ($array as $value) {

// face ceva cu $value


} Ciclul foreach atribuie iterativ valoarea fiecrui element al tabloului variabilei $value. Pentru a avea acces atat la valori, ct i la chei, se folosete sintaxa: Foreach ($array as $key=> $value) { echo Tabloul de valori corespunzatoare lui $key este $value; }

Observaii
Numrul de elemente dintr-un tablou se poate determina prin funcia COUNT() sau SIZEEOF(). Ex: $nume=count($array) Funcia RANGE() poate genera pe lng tablouri cu numere secveniale i tablouri cu litere secveniale: Ex: $alfabet=range(a,z) Cheile unui tablou pot fi iruri formate din mai multe cuvinte: primul numar, numar de telefon. Funcia IS_ARRAY() confirm dac o variabil este de tip tablou. n caz contrar este afiat o eroare de forma: Invalid argument supplied for foreach s-a ncercat folosirea unui ciclu foreach pentru o variabil care nu este tablou.

b) Tablouri multidimensionale
Tabloul multidimensional este un tablou format din alte tablouri. $Moldova=array(SV=>Suceava, IS=>Iasi);
$Ardeal=array(AR=>Arad, TM=>Timis); $regiuni=array(M=>Moldova, A=>Ardeal); Tablou multidimensional format din 2 tablouri.

Pentru a avea acces la tabloul $Ardeal, se face referire la elementul $regiuni[A].


Pentru a avea acces la elementul Arad, se face referirea astfel: $regiuni[A][AR]. Se foloseste numele tabloului multidimensional $regiuni urmat de cheia primului tablou n paranteze ptrate [A], urmat de cheia tabloului interior [AR] tot ntre paranteze ptrate. Pentru afiare ntreaga construcie se trece ntre acolade. Echo Judetul a carui abreviere este AR este {$regiuni [A] [AR]}

c) Tablouri i iruri de caractere


Php include 2 funcii pentru a transforma un tablou n ir de caractere i invers. Funcia EXPLODE() transform irul de caractere $string n tabloul $array prin specificarea separatorului, adic a codului care delimiteaz diferitele elemente din tabloul generat. $array=explode(separator, $string); Ex: $string1=L - Ma Mi J V S - D;

$zile_array=explode( , $string1);
Tablou cu 7 elemente Avnd index zero

Funcia IMPLODE() transform tabloul $array n irul de caractere $string prin specificarea conectorului, adic caracterele sau codul care va fi inserat ntre valorile tabloului n irul de caractere generat.

$string=implode(conector, $array); Ex:


$string2=implode(, , $zile_array); $string2 este un ir de caractere desprite prin virgul.

d) Sortarea tablourilor
Php include cteva funcii pentru sortarea elementelor unui tablou. $nume=array(Vlad, Cristi, Adi, Mihai); Sort($nume); Funciile de sortare efectueaz 3 tipuri de sortri: - se poate sorta un tablou dup valori, renunnd la cheile originale, folosind funcia SORT(). n acest caz, cheile originale ale tabloului vor fi reiniializate dup procesul de sortare. - se poate sorta un tablou dup valori, pstrnd cheile originale, folosind funcia ASORT() - se poate sorta un tablou dup chei folosind funcia KSORT(). Obs: toate aceste sortri pot fi fcute n ordine invers dac se nlocuiesc funciile cu RSORT(), ARSORT(), KRSORT().

Crearea i apelarea funciilor proprii


1. Definiia i utilizarea funciilor
Functiile reprezinta secvente de cod care sunt apelate frecvent in cadrul codului PHP. Majoritatea funciilor preiau argumente, reprezentnd valori care influeneaz operarea i rezultatul funciei. Pentru a specifica argumente, acestea se insereaza ntre paranteze; dac se specific mai mult de un argument, fiecare argument

trebuie separat de vecinul su printr-o virgul.


Argumentul unei funcii poate fi o valoare literal, o variabil sau o expresie. Unele funcii PHP au argumente opionale, care pot fi specificate sau omise.

Exemple de funcii:
Funcia rand(), care genereaza un numar ntreg aleator

$nr = rand(1, 500); echo $nr;


Functia isset() preia ca argument de obicei o variabila si arata daca aceasta a fost sau nu setat. Functia returneaza TRUE daca variabila "$nr" are setata o valoare (diferita de NULL), in caz contrar returneaza FALSE. isset($nr) Obs: Cnd se produce o eroare n timpul executiei unei funcii, PHP genereaza mesaje de eroare. Uneori, asemenea mesaje de eroare sunt nedorite. n acest caz, se poate suprima generarea mesajelor de eroare prin adaugarea n faa numelui funciei a caracterului @. De exemplu,, pentru a suprima mesajele de eroare care pot aparea n timpul executiei functiei "f()", se scrie aceast funcie astfel: y = @f(x);

2. Includerea fiierelor multiple


Functiile PHP permit obinerea accesului la programe PHP scrise anterior, create ntrun alt fisier extern. Pentru aceasta se poate folosi functia require(), care are urmatoarea forma:
require("nume_fisier") Cnd este ncarcat un script PHP care contine o instructiune require, continutul fisierului specificat este inserat si executat n script, nlocuind instructiunea require. Astfel se insereaz instruciunea la nceputul scriptului din fiecare pagina PHP, ca in exemplu urmator: <?php require("antet.php"); ?> Ca urmare se determin programul PHP s includ coninutul fiierului "antet.php" ca i cum coninutul respectiv ar face parte din acel script.

O alta functie, similara instructiunii require este functia include(). Spre deosebire de functia require() care introduce datele din fisierul extern intocmai cum sunt scrise, functia include() este o instructiune executabil ce determin evaluarea scriptului PHP din fisierul extern i codul acestuia este executat ca i cum ar fi aprut n textul scriptului unde este inclus. Sintaxa functiei include() este urmatoarea: include("nume_fisier.php"); Functia corelata require_once() asigura faptul ca fisierul specificat este inclus o singura dat ntr-un script dat. n cazul n care se creaz fisiere externe care si ele folosesc instructiunea require pentru a include continutul altor fisiere externe, instructiunea require_once este foarte utila.

3. Definirea unei funcii


Pentru a defini o functie, n PHP funciile incep intotdeauna cu declaratia: function, ca in exemplul urmator:
function nume_functie(nume_argument) { // Codul functiei } Cuvntul cheie "function", "numele_functiei" si "nume_argument" alcatuiesc antetul functiei. Numele funciilor nu prezinta sensibilitate la diferena ntre majuscule si minuscule; ca atare, "f()" si "F()" reprezinta referiri la aceeasi funcie. Numele funciei poate fi orice combinaie de litere, cifre i liniue de subliniere, dar trebuie s nceap cu o liter sau cu liniu de subliniere. Nu se poate folosi pentru o funcie proprie numele unei funcii existente (echo, print, ..) Dac se dorete definirea unei funcii care nu are argumente, se poate omite "nume_argument"; Dac se dorete definirea unei funcii cu mai multe argumente, se pot include argumente suplimentare dupa "nume_argument", fiecare argument fiind separat de vecinul su printr-o virgul. Parantezele i numele argumentelor incluse ntre acestea poarta numele de lista cu argumente.

Ex: o funcie care calculeaz aria unui dreptunghi: <?php function arie($lungime, $latime) { return $lungime * $latime; } ?>

Lista cu argumente a functiei "arie()" include argumentele $latime si $inaltime. Corpul functiei este alcatuit dintr-o singura instructiune; cu toate acestea, corpul unei functii poate contine mai multe instructiuni. Dac se dorete ca o funcie s returneze o valoare, trebuie determinat ca funcia s execute o instruciune return care furnizeaza valoarea respectiv. Obs: Instructiunea return determina sistarea executarii funciei; nu este necesar ca aceasta s fie ultima instructiune fizica din corpul functiei. Dac se definete o funcie care nu are nici o instruciune return (sau pentru date de ieire, precum "echo"), funcia va returna valoarea speciala NULL.

4. Apelarea unei funcii definite de utilizator


O functie definita de utilizator poate fi apelata ca orice functie. De exemplu, urmtoarea instruciune apeleaz funcia "arie()" din exemplul anterior: <?php function arie($lungime, $latime) { return $lungime * $latime; } $rezultat = arie(5,3); echo "Aria este : $rezultat"; ?> Valorile argumentelor, 5 si 3, le nlocuiesc pe acelea ale argumentelor din corpul funciei, care se comporta ca si cum ar fi fost scris astfel: return 5*3 Rezultatul afisat al acestui script va fi : Aria este : 15

5. Terminarea execuiei unui script


O instruciune return determin sistarea executiei funciei care o contine. In cazul n care se dorete sistarea prelucrrii unui ntreg script, se poate invoca functia exit(). <?php function stop() { exit(); } echo "<br />Unu..."; echo "<br />Doi..."; stop(); echo "<br />Trei..."; ?>

Dupa executie, scriptul afiseaza: Unu... Doi...

6. Functii recursive
Este posibil ca o funcie din PHP s se auto-apeleze. O funcie care procedeaz astfel se numete "funcie recursiv".
<?php function recursor($nr) { $nr++; if ($nr<8) { return recursor($nr); } return $nr; } $x = recursor(3); echo $x; ?>

Dac se ruleaz acest script, rezultatul afisat va fi 8.

Obs:
- Variabila "$x" primete ca valoare funcia "recursor()" careia ii transmite ca argument numrul 3. - Funcia "recursor()" incrementeaz cu o unitate valoarea argumentului, prin "$nr++;" care devine 4, apoi condiia "if ($nr<8)" verific dac aceast variabil din funcie este mai mic decat 8, in caz afirmativ se executa comanda "return recursor($nr);" care sisteaz execuia altui cod din funcie i auto-apeleaz iar

funcia (cu noua valoare a lui "$nr" ca argument) care iar incrementeaz
valoarea lui "$nr" i verific din nou condiia care iar autoapeleaz funcia, ... si tot aa pan cnd "$nr" va avea valoarea 8 i la verificarea condiiei "if" aceasta returneaza FALSE i se trece mai departe la execuia comenzii "return $nr;" care va returna 8 ca valoare a variabilei "$x". Funcia "echo" va afia valoarea lui "$x", adic 8.

7. Definirea argumentelor prestabilite


PHP permite definirea unei funcii cu argumente prestabilite. Dac se apeleaz o funcie care are un argument prestabilit, dar nu se furnizeaz nici o valoare pentru argumentul respectiv, argumentul ia o valoare prestabilita specificat la inceput. <?php function impozit_vanzari($cantitate, $rata = 0.0725) { return $cantitate * $rata; } $cumparaturi = 123.45; echo "<br />cumparaturi = $cumparaturi"; $impozit1 = impozit_vanzari($cumparaturi, 0.09); echo "<br />impozit1 = $impozit1"; $cumparaturi = 123.45; echo "<br /><br />cumparaturi = $cumparaturi"; $impozit2 = impozit_vanzari($cumparaturi); echo "<br />impozit2 = $impozit2"; ?>

Obs: Functia impozit_vanzari preia doua argumente: un argument obligatoriu, denumit $cantitate, si un argument prestabilit, denumit $rata. Dac se apeleaz funcia i se furnizeaz un singur argument, valoarea argumentului respectiv se consider ca fiind valoarea argumentului $cantitate, iar valoarea 0.0725 se folosete ca valoare a argumentului $rata. Astfel, la prima invocare a functiei, pentru "impozit1", $rata are valoarea 0.09, specificat drept al doilea argument al funciei. Cu toate acestea, la a doua invocare a functiei, pentru "impozit2", $rata are valoarea 0.0725 deoarece este specificat valoarea unui singur argument, i astfel "$rata" a preluat valoarea prestabilita iniial. Rezultatul afisat va fi: cumparaturi = 123.45 impozit1 = 11.1105 cumparaturi = 123.45 impozit2 = 8.950125

You might also like