Invata PHPcu punctsivirgula.ro

C O N T I N U T
Tutorial PHP in limba romana.

Explicatii, exemple si aplicatii in PHP pentru incepatori. Tutorial cu scripturi PHP


Taguri PHP, instructiuni, punct si virgula    0 ! 

Codul PHP trebuie inclus in fisierele ce vor fi deservite utilizatorilor finali si trebuie delimitat de restul continutului prin tagul de inceput <?php si tagul de sfarsit ?>. Practic tot ce se afla in interiorul acestor etichete va fi interpretat ca fiind cod-sursa PHP (cod ce va fi executat de interpretorul PHP). Textul din afara celor 2 taguri este lasat neschimbat, fiind ulterior interpretat de browser. Se pot folosi si alte etichete in functie de configuratia serverului web, dar acestea nu sunt recomandate.

<?php
/* forma recomandata */
?>
 
<script language="php">
/* forma disponibila oricand, putin folosita */
</script>
 
<?
/* taguri scurte, acceptarea lor de catre web-server depinde de configurare */
?>
 
<%
/* taguri in stilul asp, acceptarea lor de catre web-server depinde de configurare */
%>
Codul PHP este format din instructiuni - comenzi date catre interpretor, in urma carora se executa ceva. Asa cum s-a mai spus, PHP este folosit in principal pentru a genera cod HTML, asa ca de cele mai multe ori instructiunile folosite sunt cele de afisare. In aplicatii mai complexe se pot insa folosi si instructiuni de conectare la bazele de date, de citire/scriere/manipulare fisiere, intructiuni de trimitere email-uri si altele. Instructiunile se pot grupa in blocuri delimitate de acolade { }. Aceste blocuri, numite si "instructiuni complexe" se comporta ca si cum ar fi o singura instructiune (vezi mai jos exemple de blocuri).

Toate instructiunile (in afara de blocuri) trebuie sa fie terminate cu punct si virgula ( ; ). Lipsa acestuia genereaza o eroare.

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.

 


Intructiuni uzuale in PHP    4 ! 


echo, print, printf

In multe din scripturile scrise de incepatori (si nu numai) continutul rezultat in urma executiei este un text (care poate fi sau nu cod HTML). Pentru a obtine acest text, secventele de cod trebuie sa contina instructiuni explicite care sa "spuna" intrepretorului ce anume trebuie afisat.

Instructiunile de afisare sunt print, echo si printf. Exista si alte modalitati dar aceste 3 instructiuni sunt cele mai uzuale si usor de folosit. Diferente intre ele exista (vezi http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40), dar ca idee generala print si echo fac acelasi lucru si poate fi folosita oricare dintre ele. printf este folosita mai rar datorita sintaxei oarecum greoaie.

<?php
# cele 2 instructiuni de mai jos sunt echivalente
print "Text";
echo "Text";
 
# o instructiune echo poate primi mai multi parametrii
echo "Afisez", " un text din ", 4, " bucati";
 
# o singura intstructiune print poate primi doar unul
print "Afisez";
print " un text din ";
print 4;
print  " bucati";
 
# printf este folosita pentru a formata continutul, la fel ca in C/C++
printf( "Am %4.2f lei", 102.1234 ); // afiseaza Am 102.12 lei
?>

Instructiuni de atribuire

Alte instructiuni, la fel de uzuale ca cele de afisare, sunt cele de atribuire. Acestea sunt explicate mai pe larg in sectiunea "Variabile. Constante".


Instructiunea if

In afara de aceste 2 categorii, la fel de des intalnita este instructiunea if. Aceasta se numeste instructiunea de test si este folosita pentru a executa o secventa de cod in functie de valoarea de adevar a unei conditii. Exista mai multe forme, prezentate mai jos:

if( conditie ) instructiune 1;
Aceasta forma permite executarea unei instructiuni numai daca este indeplinita o conditie. Conditia poate fi orice expresie de genul "2 mai mic decat 3", "variabila $a este definita", s.a. tradusa in limbajul PHP.
Instructiunea poate fi simpla (o singura instructiune) sau un bloc (mai multe instructiuni delimitate de acolade). Regula este ca atunci cand este nevoie sa se execute mai mult de o instructiune, trebuie creat un bloc (trebuie folosite acoladele).
Exemplu:
<?php
if( 2 < 4 ) print "2 e mai mic decat 4";
 
if( 3 > 1 ) {
	print "3 e mai mare ca 1 \n";
	print "<br />";
}
?>
Atentie! Daca nu se foloseste un bloc in cadrul instructiunii if, atunci doar prima instructiune dintre cele existente se executa in urma evaluarii conditiei, pe cand celelalte se vor executa intotdeauna, indiferent de rezultatul verificarii. De exemplu:
<?php
echo "Este 3 mai mic decat 2? <br />";
if( 3 < 2 )
	print "3 < 2";
	print "3 este mai mic decat 2";
?>
Codul de mai sus va afisa:
Este 3 mai mic decat 2? <br />
3 este mai mic decat 2
Pentru ca nu am inclus cele 2 instructiuni print intr-un bloc, a doua instructiune s-a executat indiferent de valoarea de adevar a conditiei. Codul corect (din punct de vedere logic) ar fi urmatorul, care contine un bloc de instructiuni:
<?php
echo "Este 3 mai mic decat 2? <br />";
if( 3 < 2 ) {
	print "3 < 2";
	print "3 este mai mic decat 2";
}
?>

Instructiunea if - else

De multe ori este nevoie sa se specifice o instructiune ce trebuie executata daca nu este indeplinita conditia. In acest caz se foloseste if - else.

if( conditie ) instructiune 1;
else instructiune 2;

Aceasta forma permite executarea unei instructiuni atunci cand se indeplineste conditia sau executarea alteia diferite in caz contrar. Aceleasi observatii ca si mai sus se aplica.

Adi a spus Print in bloc - 04.02.2010

<?php
echo "Este 3 mai mic decat 2? <br />";
if( 3 < 2 ) {
print "3 < 2";
print "3 este mai mic decat 2";
}
?>

este un exemplu unde ar trebui sa se vada cum indiferent de instructiune daca lipsesc {} tot ce urmeaza dupa prima instructiune este executat indiferent de conditie.
Cred ca trebuiesc sterse {} ca sa se afiseze ce ai spus ca va afisa

P.S. E foarte util site`ul chiar sunt incepator si chiar se explica totul pe intelesul incepatorilor. Felicitari

cristina a spus te rog - 21.08.2010

eu am facut C++dar nu stiu la ce se foloseste instr <br/>..ma poti ajuta?
"/n"-este folosit pentru a afisa pe un rand diferit..sau pentru ce..ca nu mai tin minte

dorutzu a spus raspuns - 10.09.2010

pt cristina, in C++ nu exista <br/>, iar "/n" e folosit pt linie noua

geo a spus pentru cristina - 28.12.2011

stiu,e o diferenta foarte mare de timp intre intrebarea cristinei si raspunsul meu,dar poate le va fi de ajutor altora

tagul <br> semnifica linie noua in html


Adauga un comentariu la aceasta sectiune.

 


Siruri de caractere    9 ! 

In majoritatea scripturilor PHP se lucreaza cu bucati de text denumite siruri de caractere sau string-uri. PHP prezinta particularitati in modul in care sunt folosite stringurile, particularitati ce sunt prezentate in exemplele de mai jos.
Nota: sirurile de caractere reprezinta expresii (entitati ce au/returneaza o valoare). Asadar, un string poate fi folosit, pe langa, afisare, in atribuiri, la verificari, etc. In exemplele ce urmeaza s-a optat pentru afisarea sirurilor.

<?php
print "Salut, straine!"; // sir simplu
print 'Salut din nou!'; // sir simplu, delimitat de apostrof
?>
Nota: in acest exemplu nu este nici o diferenta intre modul de afisare a sirurilor delimitate prin ghilimele si cele delimitate prin apostrof. Cu toate astea, PHP trateaza in mod diferit aceste caractere. Mai multe explicatii si exemple sunt prezentate in pagina "Variabile.Constante".
<?php
print "Ma numesc \"Alex\"!"; // sir ce contine ghilimele, se foloseste \"
print 'Porecla ta e Kelu\' ?'; // sir delimitat de ghilimele simple ce contine un apostrof
 
print "Text afisat pe 3 linii: \n linia 2 si \n linia3";
// atentie, textul e afisat pe 2 linii in sursa HTML cu ajutorul \n
 
print "Am castigat \$30 :D"; // caracterul dolar are un statut aparte
// pentru a afisa semnul $ asa cum este se foloseste \$
 
print "Text cu \\backslash\\."; // caracterul \ (numit escape char) poate fi afisat intr-un 
// text daca este dublat; daca e folosit doar un \ PHP ar trata textul diferit:
print "Text fara \backslash\- \nu se afiseaza corec\t.";
 
print <<<TXT 
Text pe mai multe linii. 
Delimitatorii pot avea orice nume: TXT, START, etc, cu urmatoarele conditii
- ambii delimitatori trebuie sa aiba acelasi nume
- inainte de primul delimitator se foloseste <<<
- delimitatorul de inceput nu trebuie sa fie urmat de spatiu sau alt caracter
- delimitatorul de final sa fie la inceputul liniei (fara spatii inainte)
- dupa delimitatorul final se pune punct si virgula ;
TXT;
 
// concatenarea (legarea) sirurilor
print 'Sir1' . " legat de " . 'Sir2'; // Sir1 legat de Sir2
?>
Dany a spus Eroare - 23.05.2009

Imi pare o eroare : Parse error: parse error in C:\Program Files\EasyPHP 3.0\www\ma_numesc.php on line 15

Alexandru a spus Eroare in codul de mai sus - 25.05.2009

Da, erau 2 probleme cu secventa de cod de mai sus:
- lipsea punct si virgula (;) la al treilea print
- exista un spatiu dupa "print <<<TXT" ceea ce facea ca interpretorul PHP sa dea eroare.

Problemele au fost corectate acum.

Nota: Pentru a vedea rezultatul scripturilor si a observa diferentele e bine sa te uiti in sursa paginii HTML (View -> View Page Source)

Mihai a spus Iarasi - 23.11.2009

acea eroare a aparut iar:
spatiu dupa "print <<<TXT"
mie nu-mi citeste codul acela pe mai multe randuri si nici cu codul \n nu trece...doar cu <br /> sau <br>

Adi a spus delimitatori - 04.02.2010

Cred ca delimitatorii astia ajuta oarecum la o buna organizare a lucrului programatorului. Sau cel putin asa vad eu pentru moment lucrurile. Nici eu nu intelesesem initial, pana la urma am folosit varianta de mai jos si a mers

<?php
print <<< delimitator
Exemplu de sir care foloseste delimitatorul heredoc.
delimitator;
?>

ALex a spus La fel - 15.07.2010

Si mie imi apare erroare la linia 15 dar am modificat in orice fel si tot asa iese am si dat copy paste de pe site si tot asa :|

Dan a spus heredoc - 27.11.2010

Dragut site, cam rar resurse bune in romana pentru a invata php.Poate ar trebui sa intri mai in detali la tutoriale , sa spui ce e heredoc, ce e nowdoc , la care dintre ele merge interpolare (ce inseamna interpolare) etc.Oricum succes in continuare.

Koobe a spus Solutie - 26.05.2011

problema este ca dupa primul TXT este un spatiu. Eliminarea lui conduce la disparitia erorii.

cristi a spus lamuriri pentru print - 31.01.2012

# o instructiune echo poate primi mai multi parametrii
echo "Afisez", " un text din ", 4, " bucati";

# o singura intstructiune print poate primi doar unul
print "Afisez";
print " un text din ";
print 4;
print " bucati";

si totusi
// concatenarea (legarea) sirurilor
print 'Sir1' . " legat de " . 'Sir2'; // Sir1 legat de Sir2
Ce sa inteleg din astea?

Alexandru a spus Pentru Cristi - 31.01.2012

Prin concatenarea sirurilor se obtine in final un singur sir, care este tratat ca atare, de sine statator.

Asta este important de stiut, pentru ca "print" asa cum ai spus si tu poate primi un singur parametru, iar prin concatenarea mai multor secvente se obtine exact una singura. La executarea instructiunii print interpretorul nu va "sti" ca textul ce trebuie afisat provine din 3 bucati diferite.

La prima vedere e un pic derutant, dar pe masura ce vei parcurge restul capitolelor (Variabile, Functii) va fi mai usor de inteles.


Adauga un comentariu la aceasta sectiune.

 


Comentarii in PHP    0 ! 

Comentariile sunt portiuni de cod care nu se executa. Sunt folosite de programatori de regula pentru a da diverse explicatii despre logica aplicatiei, variabile si altele. Comentariile nu afecteaza executia unui script si pot fi sterse din cod fara nici un efect.

<?php
// acesta este un comentariu. intreaga linie nu va fi luata in considerare
# la fel ca mai sus - print "hello" - nu se executa
/* comentariu cu delimitator de inceput si sfarsit */
 
print /* partea asta e ignorata */ "Salut!";
 
/* afiseaza
Salut!
*/
?>
Nota: comentariile /* */ nu pot fi imbricate (unele in altele). Exemplul urmator nu este un cod valid.
<?php
/* comentariu /* altul */ inapoi la primul */
?>

Este un lucru foarte util sa folositi comentarii in cod pentru a explica modul de rezolvare a problemei abordate, sau pentru a da detalii despre operatiile efectuate. Acestea va vor ajuta mai tarziu daca veti vrea sa modificati codul scris, sau vor oferi altor persoane informatii (valoroase) despre cum ati gandit codul respectiv.

Nimic de afisat.


Adauga un comentariu la aceasta sectiune.

 


Terminarea executiei    2 ! 

<?php
exit( "Script terminat" );
die( "Script terminat" );
 
print "Acesta linie nu se afiseaza niciodata";
?>
Nota: instructiunile die si exit sunt echivalente.

Alex a spus Adika - 15.07.2010

Adica ce e scris dupa exit( "Script terminat" );
die( "script terminat" );

nu se executa nicodata?

Piny2u a spus @Alex - 03.08.2010

Exact. Poate acum nu le poti vedea un rost la aceste instructiuni (adica, de ce sa mai scri ceva in continuare daca nu va mai fi executat) dar cu siguranta vei intalnii ocazii cand va trebui sa opresti scriptul. Cel mai probabil folosind o conditie, in cazul in care se intampla ceva, opresti scriptul.


Adauga un comentariu la aceasta sectiune.