1. tutorial php

54
-2- Introducere in PHP si MySQL Ce este PHP ? PHP (se pronunta pe-haş-pe) este un limbaj de programare ce ruleaza server, proiectat special pentru WEB. Intr-o pagina HTML puteti ingloba cod PHP care va fi executat la fiecare vizitare a paginii. Codul dumneavoastra PHP este interpretat pe serverul WEB si genereaza un cod HTML care va fi vazut de Uilizator (clientului (browserului) fiindu-i transmis numai cod interpretat ca si HTML). PHP a fost conceput in anul 1994 si a fost initial munca unui singur om, Rasmus Lerdorf . A fost adoptat de alti oameni talentati si a trecut prin trei rescrieri importante pentru a ajunge la produsul clar si matur de astazi. In octombrie 2002, era in uz de mai mult de noua milioane de domenii din lumea intreaga, iar acest numar este intr-o continua crestere. Numarul actual al acestora il puteti vedea la adresa http://www.php.net/usage.php PHP este un produs Open Source, cu acces la codul sursa. Il puteti folosi, modifica si redistribui, toate acestea in mod gratuit. Initial, PHP era acronimul de la Personal Home Page, dar a fost modificat pentru a se alinia la conversia de numire recursiva GNU (GNU = Gnu`s Not Unix) si acum este acronimul pentru PHP Hypertext Preprocessor. Versiunea actuala a PHP este 5.1 (RC 1) Pagina de baza pentru PHP este: http://www.php.net Pagina pentru Zend (compania a carei fondatori au proiectat PHP4) se afla la http://www.zend.com 

Upload: marcela-ionela

Post on 07-Apr-2018

249 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 1/54

-2-

Introducere in PHP si MySQL Ce este PHP ? 

PHP (se pronunta pe-haş-pe) este un limbaj de programare ce ruleaza server, proiectat special pentru WEB.

Intr-o pagina HTML puteti ingloba cod PHP care va fi executat la fiecare vizitare a paginii.

Codul dumneavoastra PHP este interpretat pe serverul WEB si genereaza un cod HTML care va fi vazut deUilizator (clientului (browserului) fiindu-i transmis numai cod interpretat ca si HTML).

PHP a fost conceput in anul 1994 si a fost initial munca unui singur om, Rasmus Lerdorf.

A fost adoptat de alti oameni talentati si a trecut prin trei rescrieri importante pentru a ajunge la produsul clar simatur de astazi. In octombrie 2002, era in uz de mai mult de noua milioane de domenii din lumea intreaga, iar acest numar este intr-o continua crestere. Numarul actual al acestora il puteti vedea la adresahttp://www.php.net/usage.php 

PHP este un produs Open Source, cu acces la codul sursa. Il puteti folosi, modifica si redistribui, toate acesteain mod gratuit. 

Initial, PHP era acronimul de la Personal Home Page, dar a fost modificat pentru a se alinia la conversia denumire recursiva GNU (GNU = Gnu`s Not Unix) si acum este acronimul pentru PHP Hypertext Preprocessor.

Versiunea actuala a PHP este 5.1 (RC 1) 

Pagina de baza pentru PHP este: http://www.php.net Pagina pentru Zend (compania a carei fondatori au proiectat PHP4) se afla la http://www.zend.com 

Page 2: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 2/54

-3-

Ce este MySQL ? 

Mysql (se pronunta mai-es-chiu-el) este un sistem de gestiune a bazelor de date, foarte rapid si robust.O baza de date va permite sa stocati, sa cautati, sa sortati si sa va regasiti datele in mod eficient.Serverul MySQL controleaza accesul la datele dumneavoastra pentru a garanta ca mai multi utilizatori potlucra simultan cu acestea.

Deci, MySQL este un server multi-user (mai multi utilizatori) si multi-thread (mai multe fire de executie).Utilizeaza SQL (Structured Query Language), limbajul standard de interogare a bazelor de date din intreagalume.

MySQL este disponibil in mod public din 1996, dar istoria dezvoltarii sale incepe in 1979. A castigat de maimulte ori Linux Journal Readers` Choice Award (Premiul cititorilor).

MySQL este disponibil sub o licenta Open Source, dar daca este nevoie sunt disponibile si licente comerciale.

Versiunea actuala a MySQL este 5.0.11 (beta).Pagina de baza pentru MySQL este: http://www.mysql.com 

Page 3: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 3/54

-4-

Solutia completa 1) Apache

Pentru a rula un site aveti, in primul rand, nevoie de un server HTTP (Hyper Text Transport Protocol).Alegerea mea este indreptata spre Apache datorita flexibilitatii sale, portabilitatii, sigurantei si extensibilitatii.

Versiunea actuala a Apache este 2.1.6 (alfa)

Pagina de baza pentru Apache este: http://httpd.apache.org/ 

Descarcare Apache 

Sistem Linux: http://apache.iasi.roedu.net/httpd/httpd-2.0.54.tar.gz  Sistem Windows: http://apache.iasi.roedu.net/httpd/binaries/win32/apache_2.0.54-win32-x86-no_ssl.msi  

Documentatie 

http://httpd.apache.org/docs/2.0/ 

2) PHP 

Descarcare PHP 

Sistem Linux: http://ro.php.net/distributions/php-4.4.0.tar.bz2 Sistem Windows: http://ro.php.net/distributions/php-4.4.0-Win32.zip 

Documentatie 

Romana: http://ro.php.net/distributions/manual/php_manual_ro.chm Engleza: http://ro.php.net/distributions/manual/php_manual_chm.zip 

Unelte si scripturi folositoare 

In primul rand va recomand scriptul phpMyAdmin acest script va ajuta sa va conectati la baza de date, sa ogestionati, toate acestea putand fi executate direct din pagina web.

Descarcare http://kent.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.6.4-pl3.zip 

Pagini folositoare cu documentatii in limba engleza si scripturi PHP:http://www.hotscripts.com/PHP/index.html http://www.phpfreaks.com/ http://php.resourceindex.com/ 

http://www.onlyphp.com/ http://www.scripts.com/php-scripts/ 

Un SOC (Sistem de Organizare a Continutului = Content Management System) - realizat de un roman, esteusor, frumos si cuprinde foarte multe facilitati.Il puteti descarca de la adresa http://cms.punctweb.com/ 

Cea mai mare comunitate a programatorilor PHP din Romania http://www.phpromania.net unde putetigasi informatii PHP si un mare forum (lista de discutii). 

Page 4: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 4/54

-5-

3) MySQL

Descarcare MySQL 

http://dev.mysql.com/downloads/mysql/4.1.html 

Documentatie

ftp://ftp.roedu.net/pub/mirrors/ftp.mysql.com/Downloads/Manual/manual.zip 

4) CuteFTP 

Pentru a accesa fisierele aflate pe site, trebuie sa va conectati la FTP (File Transfer Protocol).Un client FTP se foloseste in cazul in care site-ul nu este gazduit pe calculatorul dumneavoastra (local).

Va recomand CuteFTP dezvoltat de GlobalScapeVersiunea actuala a CuteFTP este 7.1 

Descarcare CuteFTP

ftp://ftp.globalscape.com/pub/cuteftppro/cuteftppro.exe 

Documentatie

http://help.globalscape.com/help/guides/CuteFTP_Pro7_User_Guide.pdf  

Recomandare: 

Daca rulati Windows 98/ME/XP ca sistem de operare si doriti sa va instalati un pachet intregApache+PHP+MySQL+phpMyAdmin pe calculatorul dumneavoastra, va recomand EasyPHP 1.8.

Il puteti descarca de la adresa http://ovh.dl.sourceforge.net/sourceforge/quickeasyphp/easyphp1-8_setup.exe 

Scripturile PHP se scriu in orice editor de text insa pentru o mai buna vizualizare a codului php scris, avetinevoie de un editor de text profesional.

Va recomand sa folositi PHPEdit 1.2 pe care il puteti descarca de la adresahttp://www.waterproof.fr/products/PHPEdit/download.php 

Page 5: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 5/54

-6-

Instalare Recomandare

Daca nu vreti sa aveti atata bataie de cap, si doriti sa instalati mai repede un pachet complet ce sa continaApache + PHP + MySQL + phpMyAdmin, va recomand pachetul EasyPHP

Acest pachet nu necesita decat o instalare simpla (ca a oricarui program) si il puteti descarca de la adresa:

http://ovh.dl.sourceforge.net/sourceforge/quickeasyphp/easyphp1-8_setup.exe 

Eu folosesc acest pachet si sunt foarte multumit de el, de aceea vi-l recomand cu cea mai mare placere.

Retineti faptul ca in acest tutorial o sa lucram cu pachetul instalat in C:\Program Files\EasyPHP-1.8\ iar 

directorul unde sunt tinute si de unde se acceseaza paginile si scripturile PHP este www.

Daca totusi doriti sa le instalati manual, urmati pasi de mai jos. Instalare Apache

Dupa ce ati descarcat Apache de la http://apache.idilis.ro/httpd/binaries/win32/apache_2.0.54-win32-x86-no_ssl.msi, executati pentru a porni instalarea.

Apasati next, apoi (dupa ce ati citit textul) selectati optiunea “I accept the terms in the license agreement” –

aceasta optiune inseamna ca ati citit si acceptat termenii din licenta si ca puteti trece mai departe la instalareapoi apasati next.

Page 6: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 6/54

-7-

Apasati din nou next si va apare o fereastra in care completati campurile, exemplu:

Apasati next, next, next, install si asteptati sa se efectueze instalarea apoi apasati finish pentru a termina.

Daca serverul s-a instalat cu succes, uitati-va in bara de jos (dreapta), langa ceas. Observati ca a aparut oiconitza cu un cerc, in mijlocul careia apare o sageata de culoare verde (in caz ca serverul ruleaza) sau deculoare rosie (in caz ca serverul nu a putut sa porneasca).

Accesati http://localhost/ Daca pagina arata ca cea de mai jos, inseamna ca serverul Apache a pornit sifunctioneaza.

Page 7: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 7/54

-8-

Fiecare server/pachet instalat are cate un fisier de configurare. Fisierul de configurare al serverului Apacheeste httpd.conf pe care il puteti gasi in folderul din C:\Program Files\Apache Group\Apache2\conf\

Intrati in C:\Program Files\Apache Group\Apache2\htdocs\, stergeti tot de acolo si creati un fisier test.html incare introduceti codul:

<html> 

<head> 

<title>Primul HTML</title> 

</head> 

<body> 

Acesta este un test HTML

</body> 

</html>

Salvati si accesati in browser: http://localhost/test.html 

Observati ca serverul Apache ruleaza HTML-ul.Pentru a rula scripturi PHP trebuie sa instalati pachetul PHP pe care l-ati descarcat.

Page 8: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 8/54

-9-

Instalare PHP

Intrati un C:\Program Files\Apache Group\ si creati un folder cu numele php apoi dezarhivati si copiaticontinutul directorului php-4.4.0-Win32.

In continuare, trebuie sa editam fisierul de configurare al PHP-ului, si anume php.ini Intrati in C:\Program Files\Apache Group\php, copiati fisierul php.ini-recommended si redenumiti-l in php.ini,deschideti-l in notepad si efectuati modificarile:

1) cautati doc_root = si schimbati cu doc_root = “C:\Program Files\Apache Group\Apache2\htdocs”(aceasta operatiune se face pentru a seta calea catre folderul unde sunt tinute scripturile, paginile)

2) cautati extension_dir = si schimbati cuextension_dir = “C:\Program Files\Apache Group\php\extensions”(aceasta operatiune se face pentru a seta calea catre folderul unde sunt tinute extensiile php)

3) cautati display_errors = Off si schimbati cu display_errors = On(aceasta operatiune se face pentru a seta ON afisarea erorilor)

4) cautati ;session.save_path = /tmp si schimbati cusession.save_path = “C:\Program Files\Apache Group\php\sesiuni”

(intrati apoi in folderul cu php (C:\Program Files\Apache Group\php) si creati un folder cu numele “sesiuni”,aceasta operatiune se face pentru a seta calea catre sesiunile temporare de pe server)

Dupa ce ati efectuat aceste schimbari in fisierul php.ini, deschideti fisierul de config al serverului Apache, aflatin C:\Program Files\Apache Group\Apache2\conf sub numele de httpd.conf si efectuati urmatoarelemodificari:

1) Adaugati la sfarsitul fisierului, urmatoarele 3 linii.

ScriptAlias /php/ "C:/Program Files/Apache Group/php/"AddType application/x-httpd-php .phpAction application/x-httpd-php "/php/php.exe"

2)

Cautati linia DirectoryIndex index.html si schimbati-o cu DirectoryIndex index.html index.php

Salvati si reporniti serverul Apache.

Intrati in C:\Program Files\Apache Group\Apache2\htdocs si creati un fisier cu numele test.php in careintroduceti codul de mai jos, salvati si accesati-l in browser: http://localhost/test.php 

<?php 

echo 'Primul script PHP';

?> 

Page 9: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 9/54

-10-

Daca rezultatul afisat in browser este la fel ca cel de mai sus, atunci serverul Apache + PHP s-a instalat cusucces si ruleaza.

Pentru a putea vedea configuratia php, realizati un fisier cu numele phpinfo.php, in care puneti codul:

<?php 

phpinfo();

?>

Salvati si accesati in browser: http://localhost/phpinfo.php 

PHP Version 4.4.0

System Windows NT ORICEON 5.1 build 2600

Build Date Jul 11 2005 16:08:47

Server API CGI/FastCGI

Virtual Directory Support enabled

Configuration File (php.ini) Path C:\Program Files\Apache Group\php\php.ini

PHP API 20020918

PHP Extension 20020429

Zend Extension 20050606

Debug Build no

Zend Memory Manager enabled

Thread Safety enabled

Registered PHP Streams php, http, ftp, compress.zlib

This program makes use of the Zend Scripting Language Engine:Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies

In continuare, activati extensiile de care aveti nevoie stergand ; din fata extensiei si verificand daca extensiape care ati activat-o se afla in directorul C:\Program Files\Apache Group\php\extensions

;extension=php_gd2.dll .. stergeti ; deci:

extension=php_gd2.dll

Page 10: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 10/54

-11-

Instalare MySQL

Dupa ce ati descarcat mysql-essential-4.1.13a-win32.msi, rulati-l, apasati next, selectati optiunea Customapoi apasati next, apasati pe Change si alegeti calea catre C:\Program Files\Apache Group\ unde creati unfolder cu numele MySQL, apasati next si install pentru a porni instalarea.

In timpul instalarii va apare o fereasta unde vå va cere sa creati un cont sau sa va autentificati la MySQL.com,selectati Skip Sing-Up si apasati butonul next apoi finish.

Dupa instalare, va va deschide o fereasta pentru a va da posibilitatea sa va configurati serverul mysql.Apasati next, apoi selectati optiunea Standard Configuration, apasati next, apoi iar next, setati o parola, cucare va veti autentifica la serverul mysql, apasati next, execute si apoi finish pentru a incheia procedeul deconfigurare.

Instalare phpMyAdmin

Dupa ce ati descarcat scriptul phpMyAdmin, dezarhivati si copiati folderul in directorul de unde vor rulascripturile si anume: htdocs din C:\Program Files\Apache Group\Apache2 (redenumiti folderul in phpmyadmin).

Accesati apoi http://localhost/phpmyadmin Veti observa ca primiti o eroare..#1045 - Access denied for user 'root'@'localhost' (using password: NO)

Asta inseamna ca trebuie sa editati fisierul de configurare al scriptului phpMyAdmin si sa ii setati parola (pecare ati ales-o la inregistrarea MySQL-ului).

Intrati in C:\Program Files\Apache Group\Apache2\htdocs\phpmyadmin si deschideti fisierul config.inc.php,apoi cautati linia ($cfg['Servers'][$i]['password'] = '';) si scrieti parola dvs, ex:$cfg['Servers'][$i]['password'] = 'parolamysql';

Salvati si apoi dati un refresh la pagina http://localhost/phpmyadmin 

Page 11: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 11/54

-12-

Daca rezultatul va fi:

Welcome to phpMyAdmin 2.6.4-rc1

phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. Youshould check the host, username and password in config.inc.php and make sure that they

correspond to the information given by the administrator of the MySQL server.

Error

MySQL said:

#1251 - Client does not support authentication protocol requested by

server; consider upgrading MySQL client

inseamna ca trebuie sa updatam parola mysql.

Apasati pe butonul start de la windows (jos, stanga) apoi in casuta run scrieti cmd, si apasati butonul ok.

Tastati comanda cd ../../Program Files/Apache Group/MySQL/bin apoi mysql -u root -p si veti observa cavi se cere parola de mysql. Introduceti parola pe care ati setat-o in momentul instalarii serverului MySQL apoiapasati enter.

Dupa ce va autentificati, observati:

C:\Program Files\Apache Group\MySQL\bin>mysql -u root -p Enter password: ********* Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 3 to server version: 4.1.13a-nt 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> 

Tastati comanda: SET PASSWORD FOR root@localhost=OLD_PASSWORD('parolaDvs'); apoi apasatienter, dupa care tastati comanda FLUSH PRIVILEGES; si apasati din nou enter.

Inchideti fereastra apoi dati refresh la pagina http://localhost/phpmyadmin/ 

Scriptul se incarca insa jos de tot veti observa niste erori:

The $cfg['PmaAbsoluteUri'] directive MUST be set in your configuration file!The mbstring PHP extension was not found and you seem to be using a multibyte charset. Without thembstring extension phpMyAdmin is unable to split strings correctly and it may result in unexpected results.

Cautati linia $cfg['PmaAbsoluteUri'] in config.inc.php si modificati-o din $cfg['PmaAbsoluteUri'] = ''; in

$cfg['PmaAbsoluteUri'] = 'http://localhost/phpmyadmin';

Dati un refresh la pagina si observati ca a ramas decat eroarea legata de extensia mbstring deoarece aceaextensie nu a fost activata din php.ini

Intrati in C:\Program Files\Apache Group\php si deschideti fisierul php.ini.Cautati linia ;extension=php_mbstring.dll si activati-o eliminand ; din fata ei astfel incat rezultatul sa fieextension=php_mbstring.dll 

Salvati, apoi dati refresh din nou la pagina.

Observati ca erorile au disparut, iar scriptul phpMyAdmin ruleaza fara probleme.

Page 12: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 12/54

-14-

Initiere in PHP 

Primul exemplu in crearea unui script PHP 

Trebuie sa stiti ca intotdeauna codul php este delimitat cu etichetele <? si respectiv ?> sau <?php si respectiv?> 

Sa luam ca exemplu urmatorul cod: 

<?php 

echo 'Salut, acesta este primul meu script PHP';

?> 

Intram in directorul unde am instalat serverul web (in cazul nostru: C:\Program Files\EasyPHP-1.8\) siaccesam directorul WWW. Acesta este directorul radacina de unde serverul nostru stie sa listeze paginile.

Cream o noua pagina cu numele: primul_script.php, insa aveti grija ca nu cumva sa aveti extensiile ascunse,deoarece, daca dati click dreapta / new / text document si il redenumiti in primul_script.php , acesta va aveanumele de primul_script.php.txt deoarece extensia .txt este ascunsa.

Ca sa vedeti daca aveti extensiile ascunse, creati un text document apasand click dreapta / new / textdocument si, daca numele documentului text o sa fie New Text Document.txt, inseamna ca totul este ok, dacanumele o sa fie New Text Document, inseamna ca extensia este ascunsa.Pentru a o arata, trebuie sa facem o setare in windows si anume: deschideti My Computer apoi apasati susde tot pe meniul Tools, apoi Folder Options, apoi View, apoi cautati unde scrie “Hide extensions for knownfile types” si debifati casuta. 

Page 13: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 13/54

-15-

Dupa aceasta mica pauza cu configurarea extensiilor in Windows, ne vom intoarce la primul nostru script PHP.

Ati creat fisierul primul_script.php in C:\Program Files\EasyPHP-1.8\www si pentru a-l accesa deschideti unbrowser (Internet Explorer sau Mozilla Firefox) si tastati adresa: http://localhost/primul_script.php 

Dupa cum vedeti, textul este afisat in pagina cu ajutorul constructiei echo, care este delimitata de ghilimelele

magice ‘. Acestea pot fi si duble “ insa in nici un caz una simpla si cea de inchidere dubla: ‘ si “ sau “ si ‘.

Este bine de stiut ca in scriptul PHP puteti ingloba si HTML si anume:

<?php 

echo 'Acesta este un script ce contine si <b>HTML</b> <br>

<a href="pagina_mea.php">Legatura catre pagina mea</a>';

?> 

Realizati un fisier cu numele php_cu_html.php puneti codul inauntru, salvati si accesati in browser http://localhost/php_cu_html.php 

Trebuie sa stiti ca atunci cand gresiti vreo sintaxa, PHP-ul va arata o eroare care va indica unde ati gresit (peparcurs veti invata si cum sa depanati aceste erori). Aceasta eroare apare numai in cazul in care in php.ini(fisierul de configurare a php-ului) are setat display_errors = On si error_reporting = E_ALL.

Page 14: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 14/54

-16-

Revenind la erorile ce pot apare in script, in cazul in care gresiti sintaxa, luam urmatorul exemplu:

<?php 

echo 'Acesta este un script scris gresit"; 

?> 

Puneti acest cod intr-un fisier numit script_cu_eroare.php Accesati scriptul: http://localhost/script_cu_eroare.php 

Observati de ce este bine si recomandat sa folositi un editor PHP cum este PHP Edit, deoarece linia deinchidere nu mai este rosie, ci este albastra, fapt care ne indica ca ceva nu este in regula, si ne face sa fimmai atenti la liniile din preajma ei.

Uitandu-ne la poza de mai sus observam ca primim o eroare in loc sa ni se afiseze texult “Acesta este unscript scris gresit”.

Luati codul si modificati constructia echo apoi salvati si vizualizati din nou in browser  

<?php 

echo 'Acesta este un script scris gresit';

?> 

Observati ca nu mai apare eroarea. De ce? Asta va las pe voi sa vedeti.

In constructia echo se poate pune orice fel de text insa aveti grija ca pot fi cazuri in care sa existe conflicte cughilimelele magice si anume:

<?php 

echo 'Conflict cu ghilimelele magice <br> 

<a href='pagina_mea.php'>Legatura catre pagina mea</a>';?> 

Page 15: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 15/54

-17-

Puneti codul intr-un fisier conflict.php, salvati si apoi vizualizati in browser accesandhttp://localhost/conflict.php 

Dupa cum vedeti, eroarea ne spune ce este gresit in constructia noastra, si anume vedem ca exista conflictintre gilimelele magice ‘ sau “ cu ghilimele normale din interiorul constructiei echo.

Ca sa fiu mai explicit, ghilimelele din <a href=’pagina_mea.php’>Legatura catre pagina mea</a> fac conflict cu

ghilimelele magice din delimitarea constuctiei echo: echo ‘’;

In acest caz, avem doua posibilitati de rezolvare a problemei si anume:

1) Putem inlocui ghilimelele din interiorul legaturii a href cu ghilimele duble “ “ si asa vom scapa de conflictulcu ghilimelele magice simple din PHP.(Ghilimelele standard din interiorul unui cod HTML sunt ghilimele duble “ insa se pot ivi cazuri in care sa avetisi ‘ insa asta mai rar). 

<?php 

echo 'Conflict cu ghilimelele magice <br> 

<a href="pagina_mea.php">Legatura catre pagina mea</a>';

?> 

2) Putem sa le anulam folosind o linie inversa \ aplicata in fata ghilimelelor din interiorul legaturii a href(aceasta anuland practic acele ghilimele) si anume:

<?php 

echo 'Conflict cu ghilimelele magice <br> 

<a href=\'pagina_mea.php\'>Legatura catre pagina mea</a>';

?> 

Realizati aceste modificari pe rand si vizualizati in browserul dumneavoastra.

Page 16: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 16/54

-18-

Aceste conflicte dintre ghilimelele simple magice si ghilimele simple din cod HTML sunt intalnite mai rar inHTML insa mare atentie atunci cand introduceti in scripturi PHP un cod JavaScript deoarece aici se folosescmai des ghilimele simple.

<?php 

echo '<html> 

<head><title>PHP cu JavaScript</title> 

<script language="JavaScript"> 

function alertare () {

alert('Acesta este un test PHP ce contine JavaScript') 

</script> 

</head> 

<body onLoad="alertare()"> 

<p>Un script PHP ce contine JavaScript</p>

</body> 

</html>';

?> 

Puneti codul intr-un fisier php_cu_javascript.php, salvati si apoi vizualizati in browser accesandhttp://localhost/php_cu_javascript.php 

Vedeti aceeasi eroare ca cea explicata mai sus, efectuati modificarile, si anume din linia alert('Acesta este untest PHP ce contine JavaScript') schimbati in alert(\'Acesta este un test PHP ce contine JavaScript\') sau alert(“Acesta este un test PHP ce contine JavaScript”), apoi testati din nou in browser.

Page 17: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 17/54

-19-

Observati faptul ca eroarea a disparut iar codul JavaScript a fost executat.

Nota: Toate exemplele pentru constructia echo si erorile aparute, au fost facute numai pentru constructia echoce este delimitata de ghilimele magice simple, insa, dupa cum stiti / banuiti, erorile pot aparea si atunci candconstructia echo este delimitata de ghilimele magice duble, si va voi da un singur exemplu, iar restul deexemple le puteti aplica prin cele de mai sus.

Exemplu: 

<?php 

echo "Acesta este un exemplu de conflict cu ghilimele magice duble <br> 

<a href="pagina_mea.php">Legatura catre pagina mea</a>";

?> 

Puneti codul intr-un fisier conflict_ghilimele_duble.php, salvati si apoi vizualizati in browser accesandhttp://localhost/conflict_ghilimele_duble.php 

Apoi reparati eroarea si testati din nou in browser 

<?php 

echo "Acesta este un exemplu de conflict cu ghilimele magice duble <br> <a href=\"pagina_mea.php\">Legatura catre pagina mea</a>";

?> 

sau

<?php 

echo "Acesta este un exemplu de conflict cu ghilimele magice duble <br> 

<a href='pagina_mea.php'>Legatura catre pagina mea</a>";

?> 

Cu speranta ca ati inteles constructia echo si ghilimelele magice, voi trece mai departe, insa nu inainte de a va

da un sfat, si anume sa folositi tot timpul in constructiile voastre echo, ghilimele simple.

Este bine de stiut ca in scripturi PHP puteti anula bucati de cod sau puteti comenta linii din script.

De exemplu: 

<?php 

echo 'Un cod PHP comentat'; // Aceasta este un comentariu care nu se afiseaza in browser 

// echo 'O linie din cod PHP care nu este afisata'; 

?> 

Exista o alta posibilitate care se foloseste la inlaturarea temporara a unei bucati de cod PHP din pagina, si

anume:

<?php 

echo 'Aici este un text';

/* 

echo 'Aici un altul'; 

echo 'Bine ai venit oriceon'; 

echo 'Un alt text'; 

*/ 

?> 

Aceasta se foloseste pentru a nu fi nevoiti sa adaugam // la fiecare linie din script pentru a o anula.Setam /* si la sfarsit */ si scapam mai usor de cod ☺ 

Page 18: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 18/54

-20-

Variabile si lucrul cu acestea O variabila este o zona de memorie caruia i se da un nume pentru a putea fi recunoscuta ulterior si pentru ane putea referi mai tarziu la ea. Ca sa avem o variabila, trebuie sa ii atribuim si o valoare.

<?php

$autor = 'oriceon';

echo 'Acesta este un tutorial realizat de '.$autor.' ';

?> 

Puneti codul intr-un fisier variabila.php, salvati si apoi vizualizati in browser accesandhttp://localhost/variabila.php 

Dupa cum vedeti, o variabila este construita dintr-un $ care se pune in fata ei, un = si ghilimele magice ‘ ‘sau “ “ in interiorul carora se afla valoarea variabilei si apoi constructia este inchisa cu ; 

In exemplul de mai sus avem declarata variabila cu numele autor si ca valoare textul oriceon

Nu uitati ca din constructia variabilei sa lipseasca cele de mai sus si anume $nume_variabila = ‘ ’;sau $nume_variabila = “ “;

Exemplul urmator contine o eroare, si intorcandu-ne din nou la cunostintele acumulate mai sus, in constructiaecho si ghilimelele magice, vom incerca sa o rezolvam.

<?php

$autor = "oriceon'; 

echo 'Acesta este un tutorial realizat de '.$autor.' ';

?> 

Codul acesta contine greseala la ghilimelele magice din constructia variabilei.Vizualizand in browser, vom vedea eroarea de mai jos.

Modificati constructia $autor = “oriceon’; in $autor = ‘oriceon’; apoi vizualizati in browser.

Veti observa ca problema a fost rezolvata iar codul PHP functioneaza corect. 

Page 19: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 19/54

-21-

Trecand mai departe la explicarea codului de mai sus, ajungem la partea unde afisam variabila pe pagina cuajutorul constructiei echo.

echo 'Acesta este un tutorial realizat de '.$autor.' ';

Dupa cum vedeti este un echo in care ca noutate apare adaugarea variabilei cu ajutorul constructiei ‘..’ sianume ‘.$autor.’. Aceasta constructie poate sa difere in functie de ghilimelele magice ale constructiei echo si

anume:

1) Daca construtia echo este delimitata de ghilimele magice simple, adaugarea variabilei se face cu ‘..’si anume ‘.$autor.’

2) Daca constructia echo este delimitata de ghilimele magice duble, adaugarea variabilei se face cu “..” si anume “.$autor.”

Aceeasi modalitate de adaugare o sa se foloseasca si pentru $_SESSION , $_POST , $_GET si alte variabilepredefinite pe care le vom invata mai tarziu.

Daca variabila nu este adaugata corect, in sensul ca nu i se atribuie constructia corespunzatoare adaugarii,vom avea urmatoarea afisare in browser pentru codul urmator:

<?php

$autor = 'oriceon';

echo 'Acesta este un tutorial realizat de $autor ';

?> 

Uitati-va la constructia afisarii variabilei $autor si observati ca nu este corecta deoarece nu are ‘..’.

Page 20: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 20/54

-22-

Modificam codul din nou si o sa vedem o noua afisare gresita

<?php 

$autor = 'oriceon';

echo 'Acesta este un tutorial realizat de ".$autor." ';

?> 

Iar, intorcandu-ne la ghilimelele magice si constructia afisarii variabilei pe pagina, o sa ne aducem aminteunde am gresit.

In caz ca nu gasiti raspunsul la aceasta eroare, cititi cu o pagina mai sus.

Nota: Intr-un script php, puteti avea cate variabile doriti.

Exemplu:

<?php 

$nume = 'orice';

$prenume = 'on';

$varsta = '20 ani';

$tara = 'Romania';

echo ' Ma numesc '.$nume.' '.$prenume.', am '.$varsta.' si locuiesc in '.$tara.'. ';

?> 

Vizualizati in browser si rezultatul o sa fie:

Intr-o variabila puteti avea mai multe variabile cu continut diferit iar “lipirea” variabilelor se face cu .’ si respectiv‘. si anume daca avem 2 variabile le vom uni astfel $variabila1.’ ‘.$variabila2 

<?php 

$nume = 'orice';

$prenume = 'on';

$nume _ complet = $nume.' '.$prenume;echo ' Ma numesc '.$nume_complet.' ';

?> 

Page 21: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 21/54

-23-

Daca doriti ca o variabila sa aibe ca valoare un text definit direct in ea si sa mai fie alaturat acelui text.. un altuldintr-o alta variabila, puteti folosi urmatorul cod PHP:

<?php 

$nume = 'orice';

$prenume = 'on';

$nume _ complet = 'Numele meu complet este '.$nume.' '.$prenume;

echo ' '.$nume_complet.' ';

?> 

O singura variabila se poate afisa in browser si fara ajutorul ghilimelelor magice, si anume:

<?php 

$nume = 'orice';

$prenume = 'on';

$nume _ complet = 'Numele meu complet este '.$nume.' '.$prenume;

echo $nume_complet;

?>

Page 22: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 22/54

-24-

Constante O constanta stocheaza o valoare, cum este si o variabila, dar aceasta valoare, dupa ce a fost stabilita, nu maipoate fi modificata in script.

Pentru a defini o constanta, ne vom folosi de functia define(); iar numele constantelor este scris cuMAJUSCULE, aceasta optiune nu este obligatorie, insa va face codul dumneavoastra mai frumos si mai lizibil. 

O diferenta importanta intre constante si variabile, este faptul ca o constanta nu are in fata ei semnul $.

<?php 

define('AUTOR', 'oriceon');

define('VARSTA', '20 ani');

echo AUTOR.' <br> '.VARSTA;

?>

Realizati o pagina cu numele define.php si apoi testati in browser pentru a observa rezultatele.

Page 23: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 23/54

-25-

Variabile predefinite $GLOBALS = pot fi accesate toate variabilele globale care sunt accesibile script-ului PHP curent$_SERVER = contine o serie de variabile ale caror valori sunt setate de server-ul web; majoritatea valorilor variabilelor din acest vector depind de mediul de executie al script-ului curent.$_GET si $_POST contin variabile primite de script prin intermediul unor transferuri care folosesc metodele

HTTP get, respectiv post. De exemplu, prin intermediul acestor vectori, pot fi accesate valorile campurilor dintr-un formular care a fost completat si transmis folosind una dintre cele doua metode.$_COOKIE contine valorile variabilelor care cuprind informatii referitoare la cookie-urile pastrate pecalculatorul utilizatorului ce acceseaza pagina web.$_FILES contine variabile primite de script prin intermediul incarcarilor de fisiere prin metoda post .$_ENV contine variabile disponibile prin intermediul mediului in care este executat.$_REQUEST contine variabile disponibile prin intermediul oricarui tip de mecanism cu ajutorul caruiautilizatorul poate introduce date.$_SESSION contine variabile care corespund sesiunii curente a script-ului.

Page 24: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 24/54

-26-

Tipuri de variabile Tipul unei variabile se refera la genul de date care sunt introduse in ea.

Variabilele pot fi de mai multe tipuri, nu doar numere. PHP are opt tipuri de variabile. Patru dintre acestea sunttipuri scalare (boolean, integer, float si string ), doua sunt tipuri compuse (array si object ), iar alte doua sunt

tipuri speciale (resource si null ). De asemenea, din motive de lizibilitate, au fost introduse trei pseudotipuri:mixed, number si callback . Mai exista si tipul double , dar semnificatia acestuia este aceeasi cu cea a tipuluifloat . Cele doua denumiri coexista doar din motive "istorice". In PHP, de obicei, tipul unei variabile nu estespecificat de catre programator, ci este stabilit in timpul executiei in functie de contextul in care este folositavariabila.

Tipul boolean:

Variabilele de acest tip pot avea doar doua valori: ADEVARAT sau FALS .

Aceste valori pot fi indicate prin cuvintele cheie TRUE sau FALSE (pentru ambele nu se face distinctie intreliterele mari si literele mici). Exista posibilitatea de a converti o variabila de orice tip la tipul boolean. Inmomentul efectuarii unei conversii, sunt convertite la valoarea FALSE urmatoarele valori:

- numarul intreg 0;- numarul real 0.0;- sirul vid;- sirul "0";- un vector fara nici un element;- un obiect fara nici o variabila membru;- o variabila de tipul NULL;- o variabila nedefinita.

Orice alta valoare este convertita la valoarea TRUE (inclusiv resursele).

Acest tip se poate folosi de exemplu pentru verificarea logarii intr-o pagina de administrare. Dupa ce se facverificarile, daca utilizatorul este logat ca administrator, functia noastra va returna o valoare de adevar: TRUEdaca este logat sau FALSE daca nu este, si astfel vom sti daca sa ii acordam sau nu acces in sectiunea deadministrare.

Tipul integer: 

O variabila de tip integer reprezinta o valoare din multimea numerelor intregi.

Aceste numere pot fi specificate in baza 10, in baza 16 sau in baza 8, conventiile fiind aceleasi ca si inlimbajele C/C++ sau Java. Modul de reprezentare depinde de platforma utilizata; de obicei se folosestereprezentarea pe 32 de biti.

Interpretorul PHP nu ofera suport pentru numerele intregi fara semn. Trebuie remarcat faptul ca in PHP nuexista nici un operator pentru efectuarea de impartiri intregi.De exemplu, rezultatul operatiei 3/2 nu va fi numarul intreg 1 (ca in C/C++ sau Java), ci numarul real (float ) 1.5

Si pentru numerele intregi exista posibilitatea efectuarii de conversii:- valoarea logica TRUE este convertita la valoarea intreaga 1;- valoarea logica FALSE este convertita la valoarea intreaga 0;

Page 25: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 25/54

-27-

- un numar real este convertit prin "rotunjire inspre 0"; asadar, valoarea reala 2.5 va fi convertita la valoareaintreaga 2, in timp ce valoarea reala -2.5 va fi convertita la valoarea intreaga -2;- un sir de caractere este convertit luand in considerare doar primele caractere care contin informatii numerice;asadar sirul "10" va fi convertit la valoarea intreaga 10; de asemenea sirul "10 ani" va fi convertit tot lavaloarea 10; daca primele caractere nu contin informatii numerice, rezultatul conversiei va fi valoarea 0.

Tipul float:

O variabila de tip float poate fi specificata folosind fie forma zecimala, fie cea stiintifica (cu exponent).

La fel ca si in cazul tipului integer , precizia variabilelor de tipul float este dependenta de platforma utilizata.De obicei se foloseste standardul IEEE 64. Exista posibilitatea de a converti o variabila de orice tip la tipulfloat .

Pentru numerele reale se pot efectua urmatoarele conversii:

- un sir de caractere este convertit luand in considerare doar primele caractere care contin informatii numerice;asadar sirul "10.2" va fi convertit la valoarea reala 10.2; sirul "1.23E1 ani" va fi convertit la valoarea 12.3;- in toate celelalte cazuri se realizeaza conversii la numere intregi care apoi sunt convertite la valorile realecorespunzatoare.

Tipul string:

O variabila de tip string reprezinta un sir de caractere.

Un caracter se reprezinta pe un octet, deci sunt 256 de caractere distincte. Acest lucru implica faptul ca

interpretorul PHP nu ofera suport nativ pentru setul de caractere Unicode . Lungimea variabilelor de tip string  nu este limitata de catre interpretor.

Literalii de tip sir de caractere pot fi specificati in trei moduri diferite:

- prin folosirea ghilimelelor simple (exemplu $a='acesta este un sir de caractere'). Pentru a avea in cadrulsirului simbolul "`", atunci inaintea acestuia trebuie scris caracterul "\", iar pentru a putea specifica simbolul "\"acesta trebuie dublat.- prin folosirea ghilimelelor duble. Folosind aceasta notatie, pot fi specificate mai multe caractere speciale, pelanga caracterele de la varianta anterioara, printre care: sfarsit de linie ("\r"), rand nou ("\n"), tab orizontal ("\t"),semnul dolar ("\$"), ghilimelele duble ("\""), secvente de caractere pentru specificarea faptului ca o expresieregulara este in notatie octala ("\[0-7]{1,3}") si secventele de caractere pentru specificarea faptului ca o

expresie regulara este in notatie hexazecimala ("\x[0-9A-Fa-f]{1,2}"). Cel mai important lucru este acela ca,folosind acest mod de specificare a literalilor de acest tip, numerele de variabile care apar in interior vor fitransformate in valoarea lor. De exemplu, daca $a este o variabila de tipul integer si are valoarea 2, atuncisirul de caractere "Variabila a are valoarea $a." va fi transformat in sirul "Variabila a are valoarea 2".- notatia heredoc . Acest tip de notatie a fost introdus la versiunea 4 a interpretorului PHP. Pentru a specificaun sir de caractere folosind aceasta notatie, trebuie utilizat operatorul "<<<" urmat de un identificator ales deutilizator. Toate caracterele care se afla intre operatorul "<<<", urmat de un identificator pe o singura linie, siacelasi identificator pe o alta linie, vor constitui valoarea sirului de caractere. De exemplu, instructiunea:

$str=<<<SF

Acesta este un exemplu de utilizare a sintaxei heredoc SF; va avea ca rezultat un sir de caractere format din

trei linii de text.

Pentru a accesa un anumit caracter din sirul de caractere, se foloseste, dupa numele variabilei de tip string,

Page 26: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 26/54

-28-

indicile caracterului care trebuie accesat scris intre acolade. De exemplu, $str{0} returneaza primul caracter din sirul de caractere $str.

In cazul in care dorim sa concaternam doua siruri de caractere, vom folosi operatorul "." Folosirea operatorului"+" nu va concaterna cele doua siruri.Exista posibilitatea de a converti o variabila de orice tip la tipul string. Pentru sirurile de caractere, se potefectua urmatoarele conversii:

- valoarea logica TRUE va fi convertita la sirul "1", iar valoarea logica FALSE va fi convertita la sirul vid ("");

- un numar intreg va fi convertit la un sir de caractere care reprezinta valoarea numarului in baza 10;- un numar real va fi convertit la un sir de caractere care reprezinta notatia stiintifica a acestuia;- obiectele sunt intotdeauna convertite la sirul "Object ";- variabilele de tipul resource sunt convertite la sirul "Resource id #n ", unde n reprezinta un numar unic atasatresursei respective de catre interpretorul PHP;- valoarea NULL este convertita la sirul vid ("").

Tipul array: 

Vectorii in PHP sunt niste multimi formate din chei . Fiecarei chei din vector i se ataseaza o valoare.Acest tip de date este optimizat astfel incat sa poata fi folosit in locul urmatoarelor structuri de date: liste,tabele de dispersie, dictionare, colectii, stive, cozi si altele.

Datorita faptului ca o valoare poate fi reprezentata de un alt vector, se pot simula foarte usor arboriin -dimensionali sau tablourile n -dimensionale. Valoarea unei variabile de tip vector se poate specifica folosindconstructia array (cheie => valoare, cheie => valoare, ...)

De exemplu, urmatoarea instructiune PHP va construi un vector cu doua elemente, dintre care unul este de tipstring , iar celalalt de tip boolean :

$a = array('ch' => 'string', 12 => TRUE);

Variabila $a reprezinta un ector, $a["ch"] are valoarea string , iar $a[12] are valoarea TRUE. In cazul in care nu se specifica o cheie pentru o valoare, atunci acea valoare va fi atasata unei chei care va ficheia maxima de tip integer folosita anterior, la care se adauga valoarea 1. Cheile pot avea si valori negative.Daca nu exista chei de tip integer , atunci valoarea va fi atasata cheii 0. De exemplu, urmatoarele douainstructiuni sunt echivalente:

array(5 => 43, 32, 56, 'b' => 12);

array(5 => 43, 6 => 32, 7 => 56, 'b' => 12);

Daca se foloseste valoarea logica TRUE ca si cheie, atunci aceasta va fi convertita la cheia de tip intreg 1, iar valoarea FALSE va fi convertita la numarul intreg 0. Nu se pot folosi pentru chei variabile de tipul array sauobject .

O variabila de tip array se poate modifica prin setarea explicita de valori.De exemplu instructiunea $a["x"] = 42; adauga in vectorul $a valoarea 42 atasata cheii "x".Daca se foloseste un vector care nu a fost definit anterior, atunci acesta este creat automat.Asadar printr-o instructiune de forma $a[5] = 42, in cazul in care vectorul $a nu exista, atunci se va crea unvector cu un singur element. Cheia acestuia va fi numarul intreg 5, iar valoarea sa va fi 42.

De asemenea, exista posibilitatea de a crea un element nou fara a-i preciza cheia. Sintaxa are forma$vector[] = valoare; aceasta instructiune are ca efect adaugarea unui element a carui cheie este un numar 

intreg mai mare cu 1 decat cel mai mare numar intreg care este cheie a unui alt element al vectorului.

Daca nu exista nici o astfel de cheie, atunci noul element va avea cheia 0.

Page 27: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 27/54

-29-

De exemplu, urmatoarele doua secvente sunt echivalente:

$a[5] = 1; ............................ $a[5] = 1;$a[6] = 2; ............................ $a[] = 2;

Prin conversia la un vector a unei variabile de tip scalar (boolean, integer, float, string ) sau resource secreeaza un vector cu un singur element; cheia acestui element este numarul intreg 0, iar valoarea este cea avariabilei convertite.

Daca se converteste un obiect (variabila de tip object), atunci vectorul rezultat va contine cate un elementpentru fiecare variabila membru a obiectului. Cheile elementelor vor fi date de denumirile proprietatilor obiectului (variabilele membru ale obiectului), iar valorile elementelor vor fi valorile proprietatilor obiectului.Daca realizam o conversie a unei variabile de tip NULL, atunci rezultatul va fi un vector vid (care nu continenici un element).

In continuare sunt prezentate cateva exemple care descriu mai detaliat posibilitatile oferite de folosireavectorilor in PHP.

Pentru inceput, prezint un vector al carui elemente reprezinta caracteristicile unei portocale:

<?php 

$a = array ('denumire' => 'portocala',

'familie' => 'citrice',

'culoare' => 'portocaliu',

'forma' => 'rotunda',

'gust' => 'dulce' 

);

echo $a['denumire'].' <br> '.$a['familie'];

?> 

Putem adauga si alte elemente care sa reprezinte diferite alte proprietati. De exemplu, am putea avea nevoiede o valoare suplimentara careia nu dorim sa ii atribuim nici un nume de identificare (cheie). Pentru cavectorul sa contina un element suplimentar cu valoarea 4, vom putea defini vectorul astfel:

<?php 

$v = array ('denumire' => 'portocala',

'familie' => 'citrice',

'culoare' => 'portocaliu',

'forma' => 'rotunda','gust' => 'dulce',

);

echo $v['denumire'].' <br> '.$v['familie'];

?>

Creati o pagina cu numele array1.php apoi testati in browser.

Page 28: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 28/54

-30-

Cheia elementului cu valoarea 4 va fi numarul intreg 0 deoarece nu exista nici o alta cheie care este numar intreg. O alternativa de construire a acestui vector este urmatoarea:

<?php 

$v['denumire'] = 'portocala';

$v['familie'] = 'citrice';

$v['culoare'] = 'portocaliu';

$v['forma'] = 'rotunda';

$v['gust'] = 'dulce';

$v[] = 4;

echo $v['denumire'].' <br> '.$v['familie'];

?>

Creati o alta pagina cu numele array2.php, introduceti codul de mai sus, apoi comparati cu rezultatul si coduldin pagina array1.php.

Efectuati cateva exercitii cu array-uri pentru aprofundare.

Folosirea unor array-uri ce au in alcatuire alte array-uri.

<?php 

$fructe = array (

'denumire' => array('p' => 'portocala', 'a' => 'ananas', 'm' => 'mar'),

'numere' => array(1, 2, 3, 4, 5, 6),

'ordine' => array('prima', 5 => 'a II-a', 'a III-a')

);

echo 'Denumire: '.$fructe['denumire']['p'].' - '.$fructe['denumire']['a'].' <br>';

echo 'Numere: '.$fructe['numere'][0].' - '.$fructe['numere'][1].' <br>';

echo 'Ordine: '.$fructe['ordine'][0].' - '.$fructe['ordine'][5].' <br>';

?>

Creati o pagina cu numele array3.php, introduceti codul de mai sus, apoi testati in browser. 

Page 29: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 29/54

-31-

Tipul object:

Pentru a defini un obiect care poate fi folosit pentru afisarea mesajului “Salutare lume!”, se scrie urmatoarea

secventa:

<?php 

class Salutare {

function ArataSalutare() {

echo 'Salutare lume!';

}

}

$a = new Salutare;

echo $a -> ArataSalutare();

?> 

Creati o pagina cu numele clasa.php, introduceti codul de mai sus apoi testati in browser.

Observam faptul ca ne este afisat textul “Salutare lume!”, text ce l-am introdus in functia ArataSalutare()

Pentru a utiliza o variabila de tip obiect, va trebui sa realizam o instantiere prin intermediul instructiunii new .

Sintaxa este:

$a = new Salutare;

Page 30: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 30/54

-32-

Astfel, variabila $a devine un obiect ale carui metode pot fi utilizate. Pentru afisarea propriu-zisa a mesajuluiva trebui sa executam metoda Displaysalutare() printr-o instructiune de tipul $a -> Displaysalutare();

Orice variabila de un anumit tip poate fi convertita intr-un obiect.

Daca variabila respectiva este un obiect, atunci ea nu va fi modificata. In caz contrar, efectul conversiei estecrearea unei noi instante a clasei stdClass .

Daca variabila are tipul NULL, atunci noua instanta va fi vida. In toate celelalte cazuri, instanta va contine ovariabila membru numita scalar a carei valoare va fi cea a variabilei convertite. Pentru conversii vom folosiinstructiuni de tipul $obiect = (object) "Salutare lume!". Dupa realizarea conversiei, vom putea tipari mesajul“Salutare lume!” folosind instructiunea echo $obiect->scalar;

Tipul resource:

Variabilele de tip resource sunt folosite pentru pastrarea unor referinte catre anumite resurse externe cum ar ficonexiuni la baze de date, fisiere, etc. Resursele sunt create si utilizate de anumite functii speciale.

Datorita specificului acestui tip de date, valoarea nici unei variabile de alt tip nu poate fi convertita la tipulresource .

Tipul NULL:

Valoarea speciala NULL este atribuita oricarei variabile care nu a fost initializata. Aceasta valoare este singurape care o pot avea variabilele de tip NULL.

Se considera ca o variabila are tipul NULL daca:

- i s-a atribuit constanta NULL;- nu a fost initializata;- a fost dezinitializata (prin intermediul functiei unset () ).

Page 31: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 31/54

-33-

Siruri si caractere speciale Spre deosebire de intregi si de numere duble, care contin cu precadere cifre, sirurile pot contine oricecaracter.

Ca atare, sirurile sunt utile pentru stocarea datelor care nu pot fi calculate, precum nume si adrese.De asemenea, sirurile pot fi utilizate pentru stocarea datelor numerice. Pentru a specifica un sir in PHP,caracterele care alcatuiesc sirul sunt incluse NUMAI intre ghilimele duble “ si “ 

De exemplu, sirul reprezentand numele "Ivascu Valentin".

Asa cum am mai spus, un sir poate contine date numerice; de exemplu , "3.141516".PHP faciliteaza includerea in siruri a unor caractere speciale, precum caracterele de salt la linie noua.

\n - salt la linie noua\r - retur de car \t - caracter de tabulare pe orizontala\\ - backslash\$ - simbolul dolarului\" - ghilimele duble

Ca exemplu, iata un sir care include un retur de car, urmat de un salt la linie noua:

<?php 

echo "Salut \r\nutilizatorule";

?> 

Creati o pagina cu numele sir.php, introduceti codul de mai sus apoi testati in browser.

Apasati pe view (sus in browser) apoi source – pentru a vizualiza sursa paginii sir – si observati ca textul“utilizatorule” apare pe o noua linie in codul din sursa paginii.

Page 32: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 32/54

-34-

Retineti ca fiecare secventa escape incepe cu un backslash (\). Pentru a include un backslash intr-un sir,trebuie sa folositi secventa escape adecvata, care este alcatuita din doua caractere backslash. Pentru aintroduce ghilimele duble in cadrul unui sir fara a folosi secventa escape , puteti include sirul intre ghilimelesimple astfel: 'Pe ea o cheama "Nikita"' 

Page 33: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 33/54

-35-

Clase si obiecte 

Ce este o clasa ?

O clasa este o colectie de variabile si functii care opereaza asupra variabilelor respective.

Sintaxa folosita pentru declararea unei clase in PHP este:

<?php 

class nume _ clasa {// date membre

var nume _ variabila _ 1// ... 

var nume _ variabila _ m*// metode 

function nume _ functie _ 1 (parametri) {// definitia functiei 

}// ... 

function nume_functie _ n (parametri) {// definirea functiei 

}

}

?> 

Pentru numele unei clase poate fi utilizat orice identificator permis in PHP cu o singura exceptie: sdtclass 

Acest identificator este folosit de PHP in scopuri interne. In PHP functiile ale caror identificatori incep cu '_'sunt considerate functii magice si utilizarea acestora nu este recomandata. In PHP, datele membre nu pot fi

initializate decat cu valori constante. Pentru a initializa variabilele cu valori care nu sunt constante trebuiefolosit un constructor.

Mai jos aveti un exemplu de clasa in care initializarile  nu sunt corecte: 

class Nepermis {

var $data = date ('Y-m-d');

var $nume = $prenume;

var $dest = 'Ivascu' . 'Valentin';

var $obiecte = array ('orice', 'on');

}

Page 34: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 34/54

-36-

Obiectele

In PHP clasele sunt considerate a fi tipuri de date; ele pot fi privite ca fiind "amprentele" variabilelor propriu-zise. Pentru a crea o variabila al carei tip este o clasa, trebuie utilizat operatorul new. In continuare, vom definio clasa Aritmetica cu doua date membre x si y care sunt numere intregi si doua metode care realizeazaadunarea, respectiv inmultirea lor.

class Aritmetica {var x = 2;

var y = 3;

function Suma() {

return $this -> x + $this -> y;

}

function Produs() {

return $this -> x * $this -> y;

}

}

Pentru a crea un obiect de tipul Aritmetica, vom utiliza o instructiune de tipul:

$aritm = new Aritmetica;

Acum putem utiliza metodele clasei; pentru a afisa suma sau produsul celor doua numere, vom putea apelacele doua metode astfel:

echo $aritm -> Suma();

echo $aritm -> Produs();

Vom obtine rezultatele 5, respectiv 6. Valorile datelor membre pot fi si ele modificate prin instructiuni de tipul:

$aritm -> x = 5;

$aritm -> y = 4;

Daca, in urma modificarii apelam din nou metodele Suma 9 si Produs(), rezultatele vor fi 9, respectiv 20.

Haideti sa realizam o clasa si sa vedem cum lucreaza.

<?php 

class PHP4 {

var $salut = 'Salut PHP4!';

function Salut() {

return $this -> salut;

}

}

$salutare = new PHP4;

echo $salutare -> Salut().'<br>';

?>

Realizati o pagina cu numele clasa.php, puneti codul de mai sus, apoi testati in browser.

Page 35: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 35/54

-37-

In acest exemplu a fost utilizata pseudo-variabila $this.Aceasta este folosita pentru a indica faptul ca se opereaza asupra unei date membre a obiectului curent.

Extinderea claselor

Deseori este necesara definirea unor clase cu proprietati (date membre) si metode asemanatoare.

Pentru a usura definirea unor astfel de clase, a fost introdus conceptul de extindere (derivare) a claselor.

O clasa derivata va pastra toate proprietatile si metodele clasei pe care o extinde si poate contine diferiteproprietati si metode noi. Nu exista nici o posibilitate de a elimina din clasa derivata anumite proprietati saumetode ale clasei de baza.

O anumita clasa poate avea o singura clasa parinte; asadar, in PHP nu este permisa mostenirea multipla.Pentru a extinde o anumita clasa se utilizeaza cuvantul cheie extends. In urmatorul exemplu, vom extindeclasa Aritmetica ; vom adauga inca o variabila si vom crea doua noi functii: una pentru calculul sumei celor treivariabile si una pentru calcularea produsului lor: 

class Aritmetica3 extends Aritmetica {var z = 4;

function Suma3() {

return $this -> x + $this -> y + $this -> z;

}

function Produs3() {

return $this -> x * $this -> y * $this -> z;

}

}

Daca definim un obiect prin intermediul unei instructiuni de genul:

$aritm3 = new Aritmetica3

atunci pentru acest obiect vom putea utiliza atat metodele definite in cadrul clasei Aritmetica3: Suma3() siProdus3(), cat si metodele definite in cadrul clasei de baza Aritmetica: Suma() si Produs(). In continuare avetiun exemplu care ilustreaza modul in care pot fi create si utilizate clasele derivate.

In exemplul urmator veti observa flexibilitatea claselor.Creati o pagina cu numele clasa2.php, introduceti codul urmator apoi testati in browser pentru a observarezultatele.

Page 36: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 36/54

-38-

<?php 

class Aritmetica {

var $x = 2;

var $y = 3;

function Suma() {

return $this -> x + $this -> y;

}

function Produs() {

return $this -> x * $this -> y;

}}

class Aritmetica3 extends Aritmetica {

var $z = 4;

function Suma3() {

return $this -> x + $this -> y + $this -> z;

}

function Produs3() {

return $this -> x * $this -> y * $this -> z;

}

}

$aritm3 = new Aritmetica3;

echo '<b>Inainte de modificare:</b> <br><br> 

Suma primelor doua numere: '.$aritm3 -> Suma().' <br> 

Produsul primelor doua numere: '.$aritm3 -> Produs().' <br> 

Suma celor trei numere: '.$aritm3 ->Suma().' <br> 

Produsul celor trei numere: '.$aritm3 -> Produs().' <br><br><br>';

$aritm3 -> x = 5;

$aritm3 -> y = 4;

$aritm3 -> z = 3;

echo '<b>Dupa modificare:</b><br><br> 

Suma primelor doua numere: '.$aritm3 -> Suma3().' <br> 

Produsul primelor doua numere: '.$aritm3 -> Produs3().' <br> Suma celor trei numere: '.$aritm3 -> Suma3().' <br> 

Produsul celor trei numere: '.$aritm3 -> Produs3().' <br>';

?>

Page 37: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 37/54

-39-

In PHP clasele trebuie definite inaintea utilizarii lor; asadar clasa parinte va fi definita intotdeauna inainteaclasei fiu.Relatia dintr-o clasa derivata si clasa pe care o extinde poarta denumirea de relatie parinte-fiu.

Constructori

Un constructor este o metoda (functie) a unei clase care este apelata automat in momentul in care este creatao noua instanta a clasei (cu ajutorul operatorului new).

In PHP, considerata ca fiind un constructor, orice functie care are acelasi nume cu clasa in interiorul careiaeste definita. Constructorii pot fi folositi pentru initializarea datelor membre cu valori care nu sunt constante. Eipot avea argumente, iar acestea pot fi optionale. Pentru a putea utiliza clasa fara a specifica nici un parametruin momentul crearii unui obiect, se recomanda stabilirea unor valori implicite pentru toate argumenteleconstructorului. In cazul in care nu este definit un constructor pentru o anumita clasa, se utilizeazaconstructorul clasei de baza, daca aceasta exista.

De exemplu, pentru urmatoarea secventa de cod, in momentul crearii obiectului corespunzator variabilei $b,

va fi apelat constructorul clasei A.

class A {

function A() {

echo 'Constructorul clasei A. <br>';

}

function B() {

echo 'O functie obisnuita a clasei A. <br>';

}

}

class B extends A {

function C() {echo 'O functie obisnuita a clasei B. <br>';

}

}

$b = new B;

In PHP apelul constructorului clasei de baza, trebuie sa fie explicit daca este necesara executarea operatiilor corespunzatoare. In majoritatea limbajelor de programare exista functii speciale numite destructori care suntapelate automat in momentul "distrugerii" unui obiect. In PHP nu exista destructori.

Page 38: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 38/54

-40-

Operatorul ::

Uneori este utila folosirea unor metode sau variabile ale clasei de baza sau ale unei clase care nu a fostinstantiata inca. In acest scop, a fost introdus operatorul ::.

Pentru a descrie modul de utilizare al acestui operator, vom prezenta mai intai un exemplu:class A {

function exemplu() {

echo 'Functia clasei de baza. <br>';

}

}

class B extends A {function exemplu() {

echo "Functia redefinita<br>\n";

A :: exemplu();

}

}

A :: exemplu();

$b = new B;

$b -> exemplu();

Prin intermediul instructiunii A :: exemplu(); este apelata metoda exemplu() a clasei A, asadar se afiseazamesajul 'Functia clasei de baza ' cu toate ca nu exista nici un obiect care este o instanta a acestei clase, decinu putem scrie o instructiune de tipul $a -> exemplu(); In schimb apelam metoda $b -> exemplu(); ca "o functiea clasei" si nu ca "o functie a unui obiect".

Putem avea functii ale claselor, dar nu putem avea variabile ale claselor. De fapt, in momentul unui astfel deapel, nu se creeaza nici un obiect care este instanta a clasei respective. Ca urmare, o functie a unei clase nupoate opera asupra unor proprietati ale clasei, dar poate utiliza variabile locale sau globale. In plus, o astfel defunctie nu poate utiliza pseudo-variabila $this. In exemplul anterior, in cadrul clasei B este redefinita functiaexemplu(). Asadar, definitia "originala" (din cadrul clasei A) nu poate fi accesata in interiorul clasei B decatdaca ne referim la ea explicit prin intermediul operatorului ::.

Accesarea clasei de baza

In exemplul anterior am utilizat o functie a clasei de baza.In locul utilizarii denumirii clasei de baza poate fi folosita denumirea speciala parent care este o referinta laclasa de baza definita in cadrul constructiei extends.

Folosirea denumirii speciale este utila in cazul in care ierarhia de clase se modifica. In acest caz estesuficienta o singura modificare in cadrul constructiei extends, fara a mai fi necesare modificari in interiorulclasei derivate.

Asadar, definitia clasei B poate fi rescrisa astfel:

class B extends A {function exemplu() {

echo "Functia redefinita<br>\n";

 parent :: exemplu();

}

}

Page 39: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 39/54

-41-

Serializarea obiectelor

Prin serializare se intelege crearea unui sir de octeti care contine reprezentarea interna (binara) a variabileirespective. Asadar, serializarea permite "salvarea" valorilor unei variabile.

Daca este serializat un obiect, sunt salvate doar proprietatile acestuia (variabilele membre) si numele claseidin care face parte, nu si metodele deoarece functiile nu reprezinta valori.

Pentru a serializa un obiect, este utilizata functia serialize() care returneaza sirul de octeti care continereprezentarea binara. Pentru a deserializa un obiect, se foloseste functia pereche unserialize(). Pentru ca oastfel de operatie sa functioneze corect, este necesara definirea clasei din care face parte obiectul respectiv.Functia returneaza valoarea variabilei serializate.

In exemplul urmator aveti prezentat modul in care poate fi serializat si deserializat un obiect. Sirul de octetiobtinut in urma serializarii va fi scris intr-un fisier si va fi citit din fisierul respectiv pentru efectuareadeserializarii. De obicei serializarea si deserializarea sunt realizate in documente php diferite deoarece acesteoperatii nu au aproape nici o utilitate daca sunt folosite in cadrul aceluiasi document.

Primul document in care se realizeaza serializarea trebuie sa contina o secventa asemanatoare cuurmatoarea:

<?php 

class A {

var $msg = 'Salutare lume';

function scrie() {

echo $this -> msg;

}

}

$a = new A;

$s = serialize($a);

// salvarea sirului intr-un fisier 

$fp = fopen ("fisier.txt", "w");

fputs ($fp, $s);

fclose ($fp);

?> 

Pentru deserializare, al doilea document va contine urmatoarea secventa:

class A {

var $msg = 'Salutare lume';

function scrie() {

echo $this -> msg;

}}

// citirea sirului din fisier 

$s = implode('', @file("fisier.txt"));

$a = unserialize($s);

// dupa deserializare obiectul poate fi folosit

// arata unul .. 

Referintele pot fi utilizate pentru a accesa continutul unei variabile folosind mai multe nume. Spre deosebire delimbajul C, in PHP referintele nu sunt pointeri, ci alias -uri intr-o tabela de simboluri. In PHP denumirilevariabilelor si continutul acestora nu sunt unul si acelasi lucru. Asadar, este posibil ca acelasi continut sa aibadenumiri diferite. 

Page 40: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 40/54

-42-

Utilizarea referintelor

Referintele PHP permit unor variabile cu denumiri diferite sa corespunda unui acelasi continut.

Cu alte cuvinte, instructiunea $a = &$b are ca efect faptul ca $a si $b refera aceeasi variabila. In aceastasituatie $a si $b au acelasi statut. Nu se poate spune ca $a refera $b sau invers.

O alta posibilitate de utilizare a referintelor este transmiterea prin referinta a parametrilor unei functii. Efectulunei astfel de transmisii este crearea unei variabile locale care refera spre acelasi continut ca variabila dincontextul apelant.

Sa luam in considerare urmatorul exemplu:

function inc(&$var) {

$var++;

}

$a = 5;

inc($a);

Initial, valoarea variabilei $a este 5. Dupa apel, variabila locala $var si variabila din contextul apelant $a indicaspre acelasi continut. Valoarea pastrata in locatia de memorie respectiva este incrementata (devine 6) prinintermediul instructiunii $var++ ;. Datorita faptului ca cele doua variabile au acelasi continut, valoarea variabilei$a va fi 6 dupa executarea functiei. Un parametru transmis prin referinta poate fi:

- o variabila;- o instructiune new;- o referinta returnata de o functie.

Daca unei astfel de functii i se transmite ca parametru un alt tip de expresie rezultatul este nedefinit. Asadar,pentru o functie care are un parametru transmis prin referinta, nu se poate folosi o constanta in momentul

apelului. De exemplu, pentru functia inc() prezentata anterior nu este permis un apel de forma inc (5).

Referinte globale

In momentul declararii unei variabile globale (printr-o instructiune de tipul global $var ) se creeaza de fapt oreferinta spre o variabila globala. Cu alte cuvinte, aceasta instructiune este echivalenta cu $var = &$GLOBALS ["var"]; .

Referinta $this

In cadrul unei metode a unui obiect, $this este intotdeauna o referinta spre obiectul care utilizeaza functia(obiectul curent).

Page 41: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 41/54

-43-

Operatori PHP 

Operatori aritmetici cu variabile 

+ Adunare $a + $b- Scadere $a - $b* Inmultire $a * $b/ Impartire $a / $b

% Modulo $a % $b

Exemple:

<?php 

$a = '12';

$b = '8';

$rezultat = $a + $b;

echo 'Rezultatul adunarii lui '.$a.' cu '.$b.' este '.$rezultat.' ';

?> 

Puneti codul intr-un fisier operatii.php, salvati si apoi vizualizati in explorer accesand

http://localhost/operatii.php 

Operatori de comparatie in PHP

== Egal $a == $b=== Identic $a === $b!= Diferit $a != $b<> Diferit $a <> $b< Mai mic $a < $b

> Mai mare $a > $b<= Mai mic sau egal $a <= $b>= Mai mare sau egal $a >= $b

Operatori logici in PHP 

! NOT !$b Returneaza true (adevarat) daca $b este false (fals) si viceversa.&& AND $a && $b Returneaza true (adevarat) daca atat $a cat si $b sunt true (adevarate) si

false (fals) in caz contrar.|| OR $a || $b Returneaza true (adevarat) daca $a, $b sau ambele sunt true (adevarate)

si false (fals) in caz contrar.and AND $a and $b Identic cu && dar are o prioritate mai scazuta.or  OR $a or $b Identic cu || dar are o prioritate mai scazuta.

Page 42: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 42/54

-44-

Operatorul tertiar

conditie?adevarat:fals

<?php 

$variabila = "oriceon";

echo $variabila == "oriceon" ? "variabila are valoarea oriceon" : "variabila nu are

valoarea oriceon";

?>

Realizati o pagina cu numele operator_tertiar.php, introduceti codul de mai sus si testati in browser pentru aobserva rezultatul, apoi modificati valoarea variabilei din oriceon in test, salvati si testati in browser.Dupa cum vedeti, ruleaza ca instructiunile if si else.Codul de mai sus se interpreteaza cam asa: daca valoarea variabilei este egala cu valoarea data, in cazulnostru oriceon, atunci printez un text.., daca nu, printez alt text cu un mesaj de eroare…

Page 43: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 43/54

-45-

Luarea deciziilor prin structuri conditionale Instructiunea IF

Pentru a lua o decizie, in scriptul nostru PHP, putem folosi instructiunea if. Acestei instructiuni trebuie sa iioferim o conditie pe care sa o foloseasca, iar daca acea conditie este adevarata, va fi executat blocul de codde dupa ea. Conditiile din instructiunea if trebuie sa fie trecute intre paranteze rotunde ( )

<?php

$a = 12;

$b = 8;

$rezultat = $a + $b;

if($rezultat == '20') {

echo 'Rezultatul este perfect';

}

?> 

Puneti codul intr-un fisier structuri.php, salvati si apoi vizualizati in explorer accesand

http://localhost/structuri.php 

Observati, conditia noastra, si anume aceea ca valoarea rezultata in urma adunarii dintre variabila a (12) sivariabila b (8) sa fie egala cu numarul 20, este adevarata si in acest caz, codul de dupa { si respectiv } a fostexecutat.

Daca valoarea adunarii dintre variabila a si variabila b nu era 20, atunci afisarea in browser era nula.

<?php 

$a = 155;

$b = 8;

$rezultat = $a + $b;

if($rezultat == '20') {

echo 'Rezultatul este perfect';

}

?>

In conditiile noastre, dupa cum vedeti, ne folosim de operatorii din PHP pe care i-am scris mai sus

Page 44: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 44/54

-46-

Instructiunea ELSE

De multe ori, pe langa decizia de a executa o actiune, atunci cand conditia este adevarata, doriti sa executatio alta care in caz contrar (in cazul in care conditia nu este adevarata) sa returneze o alta bucata de cod.

<?php 

$a = 20;

$b = 8;

$rezultat = $a + $b;

if($rezultat == '20') {

echo 'Rezultatul este perfect';

} else {

echo 'Rezultatul nu este egal cu cel din conditie';

}

?> 

Puneti codul intr-un fisier structuri.php, salvati, si apoi vizualizati in explorer accesandhttp://localhost/structuri.php 

Avem aceasta afisare deoarece variabila $a (20) adunata cu variabila $b (8) nu este egal cu 20, deci prinurmare se executa blocul de cod din instructiunea else.

Instructiunea ELSEIF

Aceasta instructiune este (dupa cum vedeti) o combinatie dintre instructiunea if si cea else.Aceasta poate verifica fiecare conditie pana in momentul in care una dintre contidiile gasite returneaza ovaloare adevarata.

<?php 

$a = 20;

$b = 1;

$rezultat = $a + $b;

if($rezultat == '20') {

echo 'Rezultatul este egal cu 20';

} elseif ($rezultat == '21') {

echo 'Rezultatul este egal cu 21';

} else {

echo 'Rezultatul nu este egal cu cel din conditie';

}

?> 

Page 45: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 45/54

-47-

Schimbati pe rand valoarea variabilelor si testati in browser.

1) $a = 20;$b = 0;

2) $a = 20;$b = 1;

3) $a = 20;$b = 20;

Pentru varianta 1, 20+0 = 20, se va executa bucata de cod din instructiunea if, daca modificati cu valorile dinvarianta 2, 20+1 = 21, se va executa bucata de cod din instructiunea elseif, iar daca puneti valorile din varianta3, va rula instructiunea else.Toate acestea se interpreteaza si se gandesc cam asa:

Daca prima instructiune este adevarata, afisez ceva, daca nu, verific urmatoarea instructiune si, dacareturneaza adevarat, afisez blocul de cod din ea, iar daca nici prima nici a-II-a nu returneaza adevarat, atunciafisez blocul de cod din instructiunea else.

In aceste instructiuni if, else sau elseif ne putem folosi de toti operatorii din PHP pe care i-am spus mai sus.

In exemplul urmator o sa vedem cum calculele se pot complica si vom observa ca intr-o instructiune se potpune mai multe conditii. 

<?php 

$a = 20;

$b = 1;

$c = 5;

$d = 2;

$rezultat1 = $a + $b;

$rezultat2 = $c - $d;

if(($rezultat1 == '21') || ($rezultat2 != '100')) {

echo 'Rezultatul este ok';

} else {

echo 'Rezultatul nu este egal cu cel din conditie';

}

?> 

Puneti codul intr-un fisier si vizualizati in browser. Veti observa ca rezultatul o sa fie cel din instructiunea if deoarece returneaza adevarat.

Analizand calculele, vom observa ca rezultat1 este egal cu 21, deoarece adunarea lui $a (20) cu $b (1) ne da21, iar rezultat2 este egal cu 3, deoarece scaderea lui $c (5) cu $d (2) ne da 3.

Instructiunea noastra if ne rezulta true, deoarece rezultat1 este egal cu 21, prin urmare true, si rezultat2 nueste egal cu 100, deci si aici ne da true.Amintindu-ne de operatorii din PHP, stim ca || returneaza true (adevarat) daca prima conditie, a II-a conditiesau ambele sunt true (adevarate) si false (fals) in caz contrar.

Schimband instructiunea if in if(($rezultat1 == '21') || ($rezultat2 != '3')), vom observa ca tot bucata de cod dinaceasta instructiune, se va executa, chiar daca prima parte este adevarata, iar a-II-a este falsa.

Daca schimbam iar instructiunea if in if(($rezultat1 == '200') || ($rezultat2 != '3')), vom observa ca se vaexecuta urmatoara instructiune, si anume else, deoarece nici prima si nici a-II-a parte nu este valida.

Page 46: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 46/54

-48-

Instructiunea SWITCH

Aceasta instructiune functioneaza asemanator cu cea if, insa 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 luaorice numar de valori diferite.Aceasta instructiune trebuie sa contina o instructiune case care sa manevreze fiecare valoare pe care o doriti.

<?php 

if(!isset($ _ GET['modul'])) $ _ GET['modul'] = '';

switch($ _ GET['modul']) {case '':

echo 'Pagina switch.php';

 break;

case 'pagina1':

echo 'Pagina switch.php?modul=pagina1';

 break;

case 'pagina2':

echo 'Pagina switch.php?modul=pagina2';

 break;}

?> 

Puneti codul intr-un fisier switch.php, salvati si apoi vizualizati in browser accesand http://localhost/switch.php

Accesand numai pagina switch.php, se va afisa bucla de cod din inter iorul case ‘’:

Acum accesati in browser: http://localhost/switch.php?modul=pagina1 sau ?modul=pagina2

Observati modalitatea de accesare a paginii si rezultatul obtinut.

Page 47: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 47/54

-49-

Bucla WHILE

Cel mai simplu tip de bucla PHP este while. Asemenea instructiunii if, ea se bazeaza pe o actiune. Diferentadintre if si while este aceea ca instructiunea if, daca gaseste adevarata conditia, afiseaza o singura databucata de cod din ea, insa in conditia while, daca rezultatul este adevarat, bucata de cod din ea se va repetaatata timp cat conditia este adevarata.

<?php 

$numar = 1;

while($numar <= 5)

echo $numar.'<br>';

$numar++;

}

?>

Puneti codul intr-un fisier while.php, salvati si apoi vizualizati in explorer accesand http://localhost/while.php

Page 48: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 48/54

-50-

Structura FOR

O alternativa cu o functionalitate mai ridicata pentru utilizarea buclelor este structura repetitiva for.

Sintaxa este foarte asemanatoare cu cea din limbajele C/C++ si Java si anume:

for(expresie1; conditie; expresie2) {

//instructiune 

}

Prima expresie este evaluata o singura data, inainte de inceperea executiei ciclului.Expresia conditie este testata inaintea fiecarei repetari a buclei. Daca expresia returneaza fals, repetarea seopreste.Expresia 2 este executata la sfarsitul fiecarei repetari.

Instructiunea se executa la fiecare repetare a buclei.

Oricare dintre cele trei expresii poate lipsi; in cazul in care o expresie lipseste, se considera ca ea are valoareatrue.

Bucla WHILE si FOR sunt identice din puct de vedere functional insa bucla FOR este putin mai complexa.

<?php 

for ($variabila = 1; $variabila <= 10; $variabila++) {

echo $variabila.'<br>';

}

?> 

Sa mai luam un exemplu de lucru cu bucla for.

Creati o pagina cu numele for.php, introduceti codul urmator apoi testati in browser.

<?php 

echo "<table border=\"1\">\n<tr><td>Celula</td></tr>\n";

$culoare = "yellow";

for ($variabila = 1; $variabila <= 10; $variabila++) {

if($culoare == "yellow") $culoare = "red";

else $culoare = "yellow";

echo "<tr><td bgcolor=".$culoare.">".$variabila."</td></tr>\n";

}

echo "</table>";

?>

Page 49: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 49/54

-51-

Vizualizati si sursa paginii si observati asezarea codului HTML

Page 50: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 50/54

-52-

Structura FOREACH

Aceasta structura poate fi folosita pentru a realiza o repetare printre toate elementele unui vector. Asadar, eanu poate fi folosita decat impreuna cu vectorii; utilizarea sa asupra unei variabile de alt tip duce la aparitia deerori.

Exista doua sintaxe acceptate pentru aceasta structura si anume:

foreach(expresie_vectoriala as $valoare) {

//instructiune 

}

foreach(expresie_vectoriala as $cheie => $valoare) {

//instructiune 

}

Daca se utilizeaza prima varianta, atunci la fiecare iteratie valoarea elementului curent este atribuita variabilei$valoare, si apoi se trece la elementul urmator (a carui valoare va fi atribuita variabilei la urmatoarea iteratie).

Executia ciclului se incheie in momentul in care nu mai exista alte elemente in vector. Singura diferenta careapare in cazul utilizarii celei de-a doua variante este faptul ca la fiecare iteratie valoarea cheii elementuluicurent este atribuita variabilei $cheie .

In continuare este un exemplu de folosire a celor doua sintaxe ale structurii foreach.

<?php 

$sir = array("unu", "doi", "trei", "patru", "cinci");

foreach($sir as $valoare) {

echo "Valoare: ".$valoare." <br>\n";

}

?> 

Realizati o pagina cu numele foreach1.php, introduceti codul de mai sus si testati in browser.

Acum, sa realizam cel de-al II-lea exemplu; creati o pagina cu numele foreach2.php, introduceti codul de mai

 jos apoi testati in brwoser.

Page 51: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 51/54

-53-

<?php 

$sir = array("unu", "doi", "trei", "patru", "cinci");

foreach($sir as $cheie => $valoare) {

echo "Cheie: ".$cheie." Valoare: ".$valoare." <br>\n";

}

?>

Observati diferenta dintre primul exemplu de foreach si cel de-al II-lea.

Page 52: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 52/54

-54-

Instructiunea BREACK

Aceasta instructiune poate fi folosita pentru a intrerupe fortat executia unui ciclu sau a secventei de instructiunicorespunzatoare unei structuri switch.

Instructiunea poate fi urmata de un argument care indica numarul de structuri imbricate a caror executie seincheie. Valoarea implicita este 1, deci se intrerupe executia unei singure structuri. Urmatoarea secventa decod PHP realizeaza parcurgerea elementelor unui vector de numere intregi, pana in momentul in care seintalneste un numar negativ.

foreach ($a as $v)

if($v < 0)

 break;

Mai departe, aveti cazul in care este intrerupta executia mai multor cicluri; vom considera ca parcurgemelementele unei matrice patratice cu n elemente si n coloane pana in momentul in care intalnim o valoarenula.

for($i = 0; $i < $n; $i++)

for($j = 0; $j < $n; $j++)if(!$a[$i][$j])

 break 2;

Instructiunea break poate fi utilizata pentru intreruperea executiei secventelor de instructiuni corespunzatoarestructurilor for, foreach, while, do - while si switch.

Page 53: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 53/54

-55-

Instructiunea CONTINUE

Aceasta instructiune este folosita pentru a intrerupe executia secventei de instructiuni din interiorul unui ciclu sitrecerea la urmatoarea iteratie.

In cazul instructiunii for, inainte de urmatoarea iteratie se evalueaza (executa) expresia de incrementare(expresia #3 din sintaxa generala). La fel ca si in cazul instructiunii break, poate aparea un argument care

indica numarul structurilor imbricate asupra carora are efect.

Exemplul urmator realizeaza afisarea elementelor unui sir de numere intregi care sunt mai mari decat 1000.

foreach($a as $v) {

if($v <= 1000)

continue;

echo $v;

}

Urmatorul exemplu ilustreaza efectul folosirii argumentelor pentru instructiunea continue. 

<?php 

$i = 0;

while($i++ < 5) {

echo "Ciclul #1 <br>\n";

while(1) {

echo "&nbsp;&nbsp;Ciclul #2 <br>\n";

while (1) {

echo "&nbsp;&nbsp;Ciclul #3<br>\n";

continue 3;

}

echo "Acest mesaj nu va fi afisat niciodata.<br>\n";}

echo "Nici acest mesaj nu va fi afisat niciodata.<br>\n";

}

?>

Realizati o pagina cu numele continue.php, introduceti codul de mai sus apoi testati in browser.

Page 54: 1. Tutorial Php

8/3/2019 1. Tutorial Php

http://slidepdf.com/reader/full/1-tutorial-php 54/54

Alte structuri PHP

Exista mai multe alte structuri PHP care pot fi utilizate in anumite scopuri.

Vom aminti acum cateva dintre ele:

Structurile include, require, include_once si require_once pot fi utilizate pentru a "insera" anumiteinstructiuni care sunt pastrate intr-un alt fisier (document). Interpretorul PHP considera ca secventa din fisierulinserat se afla in fisierul din care s-a "comandat" inserarea in pozitia in care apare structura de inserare.

O alta structura este declare care permite crearea unor directive in executie.

Functiile PHP trebuie sa utilizeze instructiunea return pentru a furniza un rezultat.