FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT IOAN SLAVICI [632078]
FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT “IOAN SLAVICI”
TIMIȘOARA
UNIVERSITATEA “IOAN SLAVICI” TIMIȘOARA
FACULTATEA DE INGINERIE
DOMENIUL CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI
FORMA DE ÎNVĂȚĂMÂNT – ZI
PROIECT DE DIPLOM Ă
CONDUCĂTOR ȘTIINȚIFIC
Prof. Dr. Ing. Mircea Vlăduțiu
ABSOLVENT: [anonimizat]ć Mirsad
– 2016 –
FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT “IOAN SLAVICI”
TIMIȘOARA
UNIVERSITATEA “IOAN SLAVICI” TIMIȘOARA
FACULTATEA DE INGINERIE
DOMENIU L CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI
FORMA DE ÎNVĂȚĂMÂNT – ZI
Conceperea de pagini web bazate pe
tehnologiile PHP și MySQL
CONDUCĂTOR ȘTIINȚIFIC
Prof. Dr. Ing. Mircea Vlăduțiu
ABSOLVENT: [anonimizat] ć Mirsad
2016
UNIVERSIT ATEA DIN ORADEA
FACULTATEA de Inginerie Electrică Și Tehnologia Informației
DEPARTAMENTUL Calculatoare Și tehnologia informației
TEMA
Lucrare de Finalizare a studiilor a student: [anonimizat] Ć MIRSAD
1). Tema lucrării de finalizare a studiilor: CONCEPEREA D E PAGINI WEB BAZATE PE
TEHNOLOGIILE PHP ȘI MYSQL
2). Termenul pentru predarea lucrării : 07.06.2016
3). Elemente inițiale pentru elaborarea lucrării de finalizare a studiilor
Elemente de descriere și documentație aferentă tehnologiilor PHP și MySQL.
4). Co nținutul lucrării de finalizare a studiilor:
Plancate de un capitol introductiv și unul de concluzii, se vor prezenta capitole ale lucrării
referitoare la conceperea de pagini web bazate pe tehnologii PHP și MySQL, cu elemente teoretice
doar pe măsura uti lizării lor pe partea aplicativă.
5). Material grafic:
Ordinograme, tabele și pictograme.
6). Locul de documentare pentru elaborarea lucrării:
Biblioteca Universității de Vest din Timișoara, Biblioteca universității “Politehnica” din Timișoara
7). Data emi terii temei 20 Octombrie 2015
Coordonator Științific
Prof. Dr. Ing. Mircea Vlăduțiu
UNIVERSITATEA DIN OR ADEA
FACULTATEA DE INGINERIE ELECTRICĂ
ȘI TEHNOLOGIA INFORMAȚIEI
Adresa Oradea, Cod 410087, Bihor, Romania, Strada Universității, nr. 1 ,
Tel/Fax :+40 259/408412, Tel:+40 259/408104; +40 259/408204
REFERAT
PRIVIND LUCRAREA DE LICENȚĂ
A
ABSOLVENT: [anonimizat] : Nicevi ć Mirsad
DOMENIUL Calculatoare ș i tehnologia informației
SPECIALIZAREA Tehnologia Informației
PROMOȚIA 2016
1. Titlul lucrării CONCEPEREA DE PAGINI WEB BAZATE PE
TEHNOLOGIILE PHP ȘI MYSQL
2. Structura lucrării
Capitolul 1 – Introducere
1.1 Aspecte generale
1.2 Structura lucrării
Capitolul 2 – Elemente și tehnologii utilizate
2.1 Aplicația NetBeans
2.2 Pachetul de programe XAMPP
2.3 Limbajul de programare PHP
2.4 Limbajul HTML
2.5 Standardul de formatare CSS
Capitolul 3 – Elaborarea proiectului
3.1 Cerințe și specificații
3.2 Structura website -ului pe server -ul local
3.3 Utilizarea platformei de dezvoltare NetBeans
3.4 Realizarea b azei de date în PhpMyAdmin
3.5 Dezvoltarea website -ului
3.6 Realizarea design -ului
3.7 Prezentarea website -ului
3.8 Analiză comparativă între metode de dezvoltare al website -urilor
Capitolul 4 – Concluzii
Bibliografie
3. Aprecieri asupra conținutului lucrării de LICENȚĂ ( finalizare a studiilor ), mod de
abordare, complexitate, actualitate, deficiențe
Autorul dezvoltă în mod corect elemente teoretice esențiale, inserându -le în lucrare doar în măsura
în care contribuie la î nțelegerea părții aplicative.
Lucrarea este corect divizată pe capitole si paragrafe între care există o bună coerență.
Lucrarea conține o parte aplicativă consistentă.
Lucrarea tratează o problematică de strictă actualitate, luând in considerare importanț a domeniului
aplicațiilor de tip PHP și MySQL.
4. Aprecieri asupra lucrării (se va menționa: numărul titlurilor bibliografice
consultate, frecvența notelor de subsol, calitatea și diversitatea surselor consultate;
modul în care absolventul a prelucrat inform ațiile din surse teoretice)
Sunt utilizate 14 referințe bibliografice importante în domeniu.
Sursele bibliografice sunt alese în mod corespunzător. Consider tematica dată ca fiind soluționată.
Materialul grafic este executat în mod îngrijit, fiind complem entar părții redactate.
5. Concluzii (coordonatorul lucrării trebuie să aprecieze valoarea lucrării întocmite,
relevanța studiului întreprins, competențele absolventului, rigurozitatea pe
parcursul elaborării lucrării, consecvența și seriozitatea de care a d at dovadă
absolventul pe parcurs)
În baza celor mai sus menționate, apreciez că lucrarea elaborată de absolventul Nicević Mirsad este
valoroasă, fiind bazată pe un amplu studiu de specialitate, absolventul dovedind reale compentențe
în domeniul aplicații lor web. Pe parcursul elaborării lucrării de licență, autorul a dovedit
rigur ozitate, consecvență și seriozitate la elaborarea lucrării de licență.
6. Redactarea lucrării respectă întocmai cerințele academice de redactare (părți,
capitole, subcapitole, note de subsol și bibliografie).
7. Consider că lucrarea îndeplinește / nu îndeplinește condițiile pentru susținere în
sesiunea de Examen de LICENȚĂ ( finalizare a studiilor ) din IULIE 2016 și propun
acordarea notei ………………
Oradea,
Data
20 iunie 2016
Conducător Științific
Prof. Dr. Ing. Mircea Vlăduțiu
Cuprins
Capitolul 1 – Introducere .………………………………………………………………. 7
1.1 Aspecte generale .………………………………………………………………. 7
1.2 Structura lucrării …………………………………………………………….…. 8
Capito lul 2 – Elemente și tehnologii utilizate …………………………………………… 9
2.1 Aplicația NetBeans .…….…….…….…….…….………………..……………. 9
2.2 Pachetul de programe XAMPP …………….……………………………… 9
2.2.1 Webserver -ul Apache HTTP …………………….………………… 9
2.2.2 Baza de date mySQL .…………………………………………… 10
2.3 Limbajul de programare PHP ………….………………………………… 11
2.3.1 Var iabile ……………… ………….………………………………… 12
2.3.2 Structuri de control ……… ………….………………………………… 13
2.3.3 Fun cții ……………… ………….………………………………… 15
2.3.4 Vectori și obiecte ……… ………….………………………………… 16
2.4 Limbajul HTML ……… ………….………………………………… 19
2.5 Standardul de formatare CSS ………….………………………………… 20
Capitolul 3 – Elaborarea proiectului ………………….……………………………….
21
3.1 Descrierea, cerințe și specificații …………….………………………………. 21
3.2 Structura website -ului pe server -ul local ……….……………………………… 21
3.3 Utilizarea platformei de dezvoltare NetBeans ………………………………… 22
3.3.1 Crearea proiectului …………………………………………………… 22
3.3.1 Crearea proiectului …………………………………………………… 24
3.4 Realizarea bazei de date în P hpMyAdmin ……………………………….…. 25
3.5 Dezvoltarea limbajelor PHP și MySQL …………………………………….… 27
3.5.1 Crearea entităț ilor …………………………………………………… 27
3.5.2 Dezvoltarea controller -ului și a funcțiilor …………………………… 28
3.5.3 Realizarea legătur ii cu baza de date …………………………………. 32
3.5.4 Proiectarea CMS -ului ………………………………………………… 35
3.5.4.1 Adăugare ………………………………………………… 35
3.5.4.2 Încărcare ……………………………………………… … 37
3.5.4.3 Privire de ansamblu ………………………………………. 38
3.5.4.4 Modul de funcționare ………………………………………. 39
3.5.5 Formularul de contact .……………………………………………… 39
3.6 Realizarea des ign-ului ………………………………………………………. 40
3.6.1 Șablonul ….…………………………………………………………… 40
3.6.2 Formatarea în CSS ..…………………………………………………… 41
3.7 Prezentarea website -ului …………………………………………………….. 46
3.7.1 Design ………………………………………………………………… 46
3.7.2 Structura și modul de utilizare …………………………………….….
3.8 Analiză comparativă între metode de dezvoltare al website -urilor ……………
46
49
Capitolul 4 – Concluzii …………… ………………………………………….………… 51
Bibliografie ………………………………………………………………….…………
52
7
CAPITOLUL 1
INTRODUCERE
1.1 Aspecte Generale
În conformitate cu cele cunoscute, prin INTERNET se înțelege o r ețea internațională de
calculatoare, forma tă prin interconectarea rețelelor locale și globale, destinată să faciliteze schimbul
de date și informații în diverse domenii. – Abr. din engl. Inter [national] Net[work]. (conform cu
Dicționarul Explicativ al limbii Române, ediția 2009) [1].
Acest cuvânt a re doua sensuri, unul scris cu majusculă, iar cealaltă cu minusculă, astfel că,
Internet, fiind substantiv propriu, desemnează o rețea mondială de calculatoare, interconectate
conform protocoalelor TCP/IP, iar internet, substantiv comun, desemnează rețele speciale, capabil
să interconecteze două sau mai multe rețele autonome aflate la mare depărtare una față de cealaltă.
Doar aproximativ 20% din populația planetei a folosit Internetul ȋn anul 2008, ca mai apoi,
ȋn anul 2014, numărul utilizatorilor să urce la aproximativ 40%, aproape jumătate din populația
totală a planetei, iar numărul fiind ȋn continuă creștere.
În prezent, Internetul este î ntreținut de multe firme comerciale, bazându -se pe specificații
tehnice detaliate, cum ar fi „protocoale de comunicați e”. Aceste protocoale descriu toate regulile de
transmitere a datelor ȋn rețeaua Internet. Protocoalele fundamentale sunt Internet Protocol (IP),
Transmission Control Protocol (TCP), și User Datagram Prot ocol (UDP). Există doi termeni
înrudiți cu Internet, respectiv internet: intranet și extranet. Intranet -ul este o rețea particulară, de
regulă folosit ȋn companiile mai mari, la care au acces numai angajații companiei respective.
Intranet -ul este separat de Internet, principi ile de funcționare fiind similar e cu cele ale Internetului.
Extranet -ul este un intranet particular, la care au acces nu numai angajații unei companii, ci și alte
persoane sau grupuri autorizate din alte companii, iar accesul are loc prin intermediul Internetului.
Accesul la Internet se poate face prin mai multe metode, unele cu avantaje, altele cu
dezavantaje. Accesul la Internet prin linie de telefonie fixă se realizează cu ajutorul unui modem.
Modemul este o componentă al calculatorului, fiind capabil să convertească semnalele digitale ȋn
semnale analogice, care pot circula prin rețeaua telefonică. Acest tip de acces nu se mai utilizează
aproape deloc, având o viteză foarte mică , comparativ cu alte tipuri de acces. Alte tipuri de acces
folosite sunt cele Wi -Fi (fără fir), cele cu fibră optică, având viteze de transfer foarte mari, cele prin
rețele de telefonie mobilă (GSM), care de asemenea au viteze foarte bune de transfer (3G/4G), etc.
Primul site web din Internet a apărut ȋn anul 1991, ca re avea adresa nxoc01.cern.ch.
Începând cu anul 2005, numărul site -urilor web era de aproximativ 75 milioane, ca mai apoi, ȋn
anul 200 8, numărul site -urilor să atingă 190 milioane. Este foarte probabil ca la jumătatea anului
2016, numărul site -urilor web o să depașească un miliard.
Există multe aplicaț ii Internet, cel mai popular fiind afișarea de informații ȋn format text,
imagini și chiar sunete, apoi comunicarea ȋn poșta electronică (e -mail), cu funcții precum transfer
de fișiere și informații. De asemnea există și aplicații , precum comunicarea video , sunet și text,
televiziune prin Internet, comerț online, site -uri mass -media, jocuri ȋn rețea, operațiuni bancare și
efectuarea de plăți online, și multe altele. World Wide Web, prescurtat WWW, este de asemenea o
aplicație integrativă, cu o interfață foa rte atrăgatoare, simplu de folosit. WWW a fost inventat ȋn
anul 1993 de către Tim Berners -Lee. Pentru folosirea aplicațiilor din web enumerate, este necesar ă
utilizarea unui browser, de exemplu : Internet Explorer, Mozilla Firefox, Google Chrome, Apple
Safari etc . [2].
Cu ajutorul Internetul ui, avem acces la divertisment, de exemplu vizionarea filmelor,
videoclipuri, cărți, muzică, documentație și multe altele. Un mare avantaj al Internetului este
comerțul electronic, prin care furnizorii de servicii și prod use își pot dezvolt a afacerea, punând la
dispoziția clientului o serie de produse, pe o platformă online, ȋn care clientul poate vizualiza
informații despre un produs, inclusiv preț, cumpărare online , ș.a.m.d.
8
Gradul d e răspândire a Internetului ȋn î ntreag a lume este rap id, accesul fiind simplu și ieftin,
însă poate fi la fel de periculos , deoarece poate avea consecințe negative, pentru că nimeni nu
garantează corectitudinea utilizatorului. Astfel, există programe dău nătoare create de rău -voitori,
începând de la spionarea activității unui utilizator, până la furturile din conturile bancare.
Rețeaua Internet și WWW este o rețea mare de calculatoare, la ordinul zecilor sau sutelor de
milioane de calculatoare, rețea ce deține cantități uriașe de informații, une le dintre acestea fiind
gratuite sau contra cost. Rețeaua World Wide Web este cea mai dezvoltată parte din internet, creată
ȋn 1989 ȋn Europa.
1.2 Structura lucrării
În prezenta lucrare, s -a elaborat un proiect care să ilustreze dinamicitatea paginilor web
create în limbajul PHP, respectiv sistemul de gestiune MySQL. Pentru elaborarea proiectului, s -au
implementat limbajele PHP, HTML, bazele de date MySQL și standardul de formatare CSS.
În primul capitol al lucrării, sunt prezentate, în mod succint, aspectel e importante ale
domeniului din care face parte proiectul.
Următorul capitol prezintă ideile de bază ale fiecărui element utilizat, acestea fiind foarte
importante în realizarea proiectului.
În capitolul 3 din lucrare, se prezintă, în detaliu, elementele d e descriere ale unei aplicații de
elaborare de pagini web, caracteristici le lor esențiale fiind prezentate în capitolul anterior .
Lucrarea se încheie cu un scurt capitol de concluzii și cu o listă de referințe bibliografice.
9
CAPITOLUL 2
ELEMENTE ȘI TEHNOLOG II UTILIZATE
2.1 Aplicația NetBeans
Netbeans este o platformă de dezvoltare software, scrisă ȋn Java, și permite programatoriilor
să dezvolte aplicații conform unor componente software modulare, denumite module. Netbeans
este de tip cross -platform și ruleaza pe mai multe sisteme de operare precum Microsoft Windows,
Linux, Solaris, Mac OS X, dar și pe alte platforme care suportă Java Virtual Machine [3].
Această platformă suportă limbajul de programare PHP și are caracteristic i precum :
Acoperirea codului
Depanarea codului cu xdebug
Unit testing cu PHPUnit și Selenium
Completarea codului
Marcaje de sintaxă, marcaje de eroare
Analiză semantică cu marcarea parametr ilor și variabilelor neutilizate
Pentru proiectele ȋn PHP, NetBea ns oferă o versiune IDE (Integrated Development
Environment) pentru a dezvolta pagini web PHP , care cuprinde o varietate de limbaje de tip
scripting și mark -up. Editorul PHP este integrat dinamic cu caracteristicile de editare
HTML și CSS.
Cu Xdebug, putem depana codul PHP pentru a inspecta variabile locale, pentru a seta
breakpoint -uri, și de a evalua codul ȋn timp real. Se poate naviga la declarații, tipuri și
fișiere folosind scurtături și legături .
2.2 Pachetul de programe XAMPP
XAMPP este un pachet de programe gratuită, open source și cross -platform web server,
care include Apache HTTP Server, baze de date MySQL și interpretoare pentru scripturi scrise ȋn
limbaje de programare PHP și Perl. Numele este un acronim pentru programele menționate, iar X
inseamnă cross -platform. Acesta vine și cu alte module precum OpenSSL și phpMyAdmin.
Scopul acestui pachet este acela de a -l utiliza ca utilitar de dezvoltare , pentru a permite
programatori lor web testarea proiectelor proprii pe calculatoarele proprii, fară a avea nevoie de
acces la internet. De asemenea, XAMPP asigură și suport pentru crearea și manipularea bazelor de
date MySQL și SQLite.
Din momentul în care XAMPP este instalat pe calculator, se poate trata adresa de localhost
a serverului XAMPP ca pe un server la distanță, prin protocolul client FTP.
2.2.1 Webserver -ul Apache HTTP Server
Conform rubricii de FAQ de pe site -ul proiectului Apache, numele Apache a fost ales din
respect pentru tribul nativ american Apache și pentru competențele sale superio are în război și
strategie. Numele a fost mult timp considerat a fi un joc de cuvinte pentru un “A Patchy Server”
(deoarece a fost un set de patch -uri de software).
Apache suportă o varietate de caracteristici, multe implementate ca module compilate care
extind funcționalitatea de bază. Acestea pot varia de la suport pentu limba jul de programare server –
side până la sisteme de autentificare . Unele interfețe comune suportă Perl, Python, Tcl și PHP.
Modulele populare de autentificare includ mod_access, mod_a uth, mod_digest și mod_auth_digest,
succesorul mod_digest. Alte caracteristici includ Secure Sockets Layer și Transport Layer Security
10
suport (mod_ssl), un modul de proxy (mod_proxy), un ReWriter URL (mod_rewrite), fișierele
jurnal personalizat (mod_log_co nfig), și de sprijin de filtrare (mod_include și mod_ext_filter).
Metodele de comprimare populare pe Apache includ modulul de extensie extern, mod_gzip,
implementat pentru a ajuta la reducerea dimensiunilor paginilor web furnizate prin HTTP.
ModSecurity es te un motor deschis detectare și prevenire a intruziunilor sursă pentru aplicații Web.
Logurile Apache pot fi analizate prin intermediul unui browser web, folosind scripturi gratuite, cum
ar fi AWStats / W3Perl sau Visitors.
Virtual hosting permite instala rea Apache pentru a deservi mai multe site -uri web diferite.
De exemplu, o unitate cu o instalare Apache ar putea deservi simultan www.examplu.ro,
www.examplu.com.ro, test52. server -test.examplu.edu.ro etc.
Apache are mesaje de eroare configurabile, baze d e date de autentificare baz ate pe DBMS și
negocierea conținutului. De asemenea, este susținută de mai multe interfețe grafice (GUI).
Susține autentificare prin parolă și autentificare cu certificat digital. Deoarece codul sursă
este disponibil gratuit, oricine poate adapta serverul pentru nevoi specifice, și există o bibliotecă
publică mare de add -on-uri pentru Apache.
În loc de a pune în aplicare o singură arhitectură, Apache oferă o varietate de module
MultiProcessing (MPMS), care îi permit să ruleze ȋn mod process -based, hybrid (process și
thread) sau event -hybrid pentru a se potrivi mai bine cerințelor fiecărei infrastructuri. Aceasta
implică faptul că alegerea corectă a MPM și configurația corectă este importantă.
Proiectul Apache HTTP Server este un efort de dezvoltare de sof tware de colaborare care
vizează crearea unui cod sursă de calitate comercial ă, cu o implementare robustă, bogat în
caracteristici disponibile în mod liber pentru un server HTTP (Web). Proiectul este gestionat în
comun de către un grup de voluntari situate în întreaga lume , folosind Internetul și Web pentru a
comunica , planifica și de a dezvolta serverul și documentația aferentă . Acest proiect face parte din
Apache Software Foundation . În plus , sute de utilizatori au contribuit cu idei, cod și documentație
de proiect .
2.2.2 Baza de date MySQL
MySQL este un sistem de gestiune a baze lor de date relationale, produsă de MySQL AB și
distribuit sub Licenta Publica Generala GNU. Este , de asemenea , o componentă important ă al
LAMP, care înseamnă Linux, Apa che, MySQ L, PHP, fiind cel mai popular la ora actual ă.
Este des folosit cu limbajul de programare PHP, dar cu mySQL se pot realiza aplicaț ii ȋn
orice limbaj [5]. Există scheme API ce permit scrierea aplicaț iilor ȋn limbaje de programare pentru
accesarea bazelor de d ate mySQL, după cum urmeaz ă: C, C++, Java, PHP, Python, C# , și multe
altele, ia r fiecare dintre acestea foloseș te un tip specific API.
MySQL este o componentă integrată LAMP sau WAMP, care înseamnă Linux/Windows –
Apache -MySQL -PHP/Perl/Python. Est e mai ușor de învațat și folosit decât alte aplicaț ii de g estiune
a bazelor de date, punând spre exemplu comanda de ieș ire: „exit” sau „quit”.
Pentru administrarea bazelo r de date MySQL, se poate folosi fie modulul linie de comandă ,
sau descarcarea unei int erfețe gra fice de pe internet al MySQL Administrator și MySQL Query
Browser. Se poate , de asemenea descarca aplicatia gratuita phpMyAdmin, scrisa ȋn PHP, care este
un alt instrument al bazelor de date. MySQL poate fi rulat pe platforme precum: Mac OS X, Linux,
Solar is, Windows etc.
MySQL a fost creată de o companie suedeză, fondată de David Axmark, Allan Larsson și
Michael Widenius. Prima versiune MySQL a aparut ȋn 23 Ma i 1995, și initial a fost creată pentru
uz personal bazat pe limbajul de nivel scazut ISAM, ȋn car e creatorii l -au considerat inflexibil și
prea lent. Ulterior au creat o nouă interfața SQL, păstrâ nd ac elași API ca și mSQL. Astfel, păstrâ nd
același API cu sistemul mSQL, mul ți dezvol tatori au putut folosi MySQL ȋn loc de mSQL.
11
2.3 Limbajul de program are PHP
PHP este un limbaj de tip server -side, c reat pentru dezvoltare web. La început, PHP
însemna Personal Home Page, dar ulterior a devenit Hypertext Preprocessor, și este , de asemenea
folosit ca și limbaj de programare de uz general.
PHP poate fi impl ementat în tr-un cod HTML, sau se poate combina cu framework -uri și
template -uri web. Codul este procesat de către un interpretor și , ulterior implementat ca un modul
în server -ul web. Server -ul web combină rezultatele și execută codul PHP, care, bine înțele s, poate
fi o imagine, sau orice tip de dată. De obicei, PHP se utilizează cu scopul de a crea pagini web
dinamice, cu conținut dinamic, chiar și imagini.
PHP este ca un filtru, care preia conținutul text sau instrucțiunile php dintr -un fisier din care
rezultă alt flux de date. Adesea, rezultatul va fi HTML, î nsă mai poate fi și XML, JSON sau date ,
precum imagini sau sunete.
Arhitectura LAMP este foarte popular ă ȋn industria web, iar litera P este adesea folosit ă
pentru a face referire la PHP, alături de Li nux, Apache și MySQL. De asemenea, litera P mai poate
face referire la Perl, Python. Pachete comune , precum WAMP și MAMP sunt valabile și pentru
Windows și OS X, cu prima litera făcând referire la sistemul de operare.
În anul 2007, peste 20 de milioane de domenii au avut găzduire web cu PHP instalat, ca
peste 7 ani, ȋn 2014, procentajul dome niilor cu PHP implementat să fie de peste 80%, fiind cel mai
utilizat soft de tip open source.
Codul PHP poate fi scris utilizand programul Netbeans, iar ȋn cazul ȋn care lucrăm pe un
server virtual, fiș ierele care conțin codul programului PHP trebuie să aibă extensia .php. Pen tru a
executa codul creat ȋn fișierele respective, se utilizează un browser, de exemplu Internet Explorer,
iar mai apoi vom trece ȋn bara de ad rese locația după cum urmează :
http://localhost:8080/index.php .
Exemplu de script php:
<?php
echo „Scriptul meu php”;
?>
În exemplul ilustra t mai sus, prima linie marchează î nceputul unui script, ca mai apoi, pe a
doua linie, prin cuvantul cheie echo, să afișăm un mesaj pe ecran, și foarte important, să nu uitam
simbolul de punct și virgulă de la final (;). Ultima linie reprezintă finalul codului scris ȋn PHP.
Exemplu de combinare a codului HTML cu cod PHP :
Un lucru foarte important ȋn programarea web, este faptul ca putem integra codul PHP ȋn
interiorul codului HTML, astfel:
<html>
<body>
<p>Text scris ȋn HTML</p>
<?php
echo “Text scris ȋn PHP”;
?>
</body>
</html>
În PHP, la fel ca și în multe limbaje de p rogramare, putem marca o secvență/linie de cod
prin comentariu. Acest comentariu nu face altceva decât să ignore bucata de cod selectată ȋn acest
12
scop. Pentru un rând, vom folos i simbolul #, iar pen tru mai multe rânduri, vom folosi la î nceput /*,
și la fin alul codului vom marca cu */.
Cuvinte cheie rezervate
Cuvintele cheie ȋn PHP au o semnificație impor tantă. Unele se aseamană cu constante,
altele cu funcții, î nsă aceste cuvinte nu sunt altceva decât construcții ale limbajului. Nu se vor putea
utiliza ni ciodată aceste cuvinte pentru a declara clase, funcții sau metode. Totuși, utilizarea lor ȋn
scopul denumirii variabilelor este acceptată, dar este recomandat a nu se utiliza, pentru a evita
confuz iile. Î n figura 1 am prezentat o listă a cuvintelor rezerva te de PHP [6]:
Abstract And Array( ) As Break Callable
Case Catch Class Clone Const Continue
Declare Default Die( ) Do Echo Else
Elseif Empty( ) Enddeclare Endfor Endforeach Endif
Endswitch Endwhile Eval( ) Exit( ) Extends Final
Finally For Foreach Funciton Global Goto
If Implements Include Include_once Instanceof Insteadof
Interface Isset( ) list( ) Namespace New or
Print Private Protected Public Require Require_once
Return Static Switch Throw Trait try
Unset( ) Var While Xor yield __halt_compil er( )
Figura 1
2.3.1 Variabile
Variabilele sunt containere folosite pentru păstrarea temporară a valorilor. Aceste valori pot
fi numere, text sau date complexe. Variabilele reprezintă nucleul mul tor limbaje de programare, iar
înțelegerea acestora este un element cheie al utilizării limbajului PHP. În PHP există opt tipuri de
variabile, patru dintre ele fiind scalare, două nescalare, un tip tablouri și obiecte, și NULL [8].
Numele variabilei, care poartă denumirea și de identificator, trebuie să înceapă c u simbolul
de dolar, de exemplu $numevar, iar acest nume poate conține combinație de litere, numere și
underline, de exemplu $numevar_1. Un lucru important ȋn denumirea acestor variabile este faptul
că primul caracter de după dolar trebuie să fie o literă sau underline. Denumirea variabilelor este
Case Sensitive, adica variabila $numevar și $Numevar sunt variabile diferite. Aceste variabile pot
primi valori prin utilizarea operatorului de atribuire egal, de exemplu $numevar = 10. PHP nu este
un limbaj stric t cu privire la modul de tratare ale variabilelor, ȋn sensul că nu este obligatorie
inițializarea sau decl ararea acestora, de altfel putându -se converti variabila de la un tip la altul.
Șirul de caractere este probabil cel mai important tip de variabilă. A cesta este o secvență de
litere, spații, cifre, simboluri, î ncadrate cu ghilimele simple sau duble, de exemplu ‘Mirsad’,
“Mirsad are mașină din anul 2011”. Pentru crearea unei variabile de tip șir de caractere, trebuie să
atribuim valoarea unui nume valid de variabilă, de exemplu $nume = “Mirsad”. Pentru afișarea
acestei variabile, folosim instrucțiunea echo, de exemplu, echo $nume;.
Numere ȋn PHP sunt utilizate pentru a lucra cu numere, inclusiv cu cele de virgulă mobile.
Variabilele valide de tip numeric pot fi de exemplu 5, 6.68, – 3.2151. De reținut este faptul că
aceste valori nu sunt î ncadrate ȋn ghilimele sau apostrofuri.
Constantele sunt un tip specific de date, pentru că își păstrează valoarea pe toată durata
executării scriptului. Altfel spus, nu p utem modifica valoarea unei constante după ce l -am
13
inițializat. Pentru a crea o constantă, folosim funcția define(), ȋn locul operatorului de atribuire, de
exemplu define (‘NUME’, ‘valoare’) . De reținut este faptul că numele constantelor conțin numai
litere mari, cu toate că nu este obligatoriu. Mai important de atât, constantele nu utilizează simbolul
dolar, deoarece din punct de vedere tehnic, constantele nu sunt variabile.
În ceea ce privește ghilimelele simple și duble, trebuie să ințelegem diferența în tre ele. În
PHP, valorile încadrate î ntre ghilimele le simple vo r fi tratate literal, iar cele î ncadrate ȋn ghilimele le
duble vor fi interpretate.
Celelalte tipuri de variabile sunt cele booleene, care pot a vea două valori, TRUE sau
FALSE. M ai sunt și tablo urile și obiectele, la care se adaugă și resursele, pe care le întâlnim când
utilizăm bazele de date, iar ultimul tip de data este NULL, care este un tip special, care nu conține
nici o valoare.
Pe l ângă regulile de numire a variabilelor, există și reguli privind disponibilitatea
variabilelor. În general, valoarea care se atribuie unei variabile este prezentă doar ȋn interiorul unei
funcții sau scri ptului ȋn cadrul căruia se găsește. Așadar, ȋn cazul ȋn care avem o variab ila $nume,
cu valoarea Mirsad, într -un script locatar.php, și dacă dorim crearea unui alt script
administrator.php, tot cu numele variabilei $nume, cu valoarea Mihai, putem face acest lucru,
deoarece variabila $nume este o variabilă locală, și valorile atribuite sunt independente una față de
cealaltă. De asemenea, putem să definim variabilele $nume drepte variabilă globală î ntr-un script
sau funcție, iar ȋn acest caz, locatar.php și administrator.php vor fi conectate, existând o singură
valoare pentru variabila $nume. Pe lângă variabilele glo bale, ȋn PHP mai există câteva variabile
predefinite care poartă denumirea de variabile super globale. Acestea sunt prezente î ntotdeauna, iar
valorile lor sunt disponibile oricând. De fapt, acestea sunt vectori care conțin alte variabile.
Variabilele superg lobale sunt $_GET, $_POST, $_COOKIE, $_FILES, $_SERVER, $_ENV,
$_REQUEST, $_SESSION.
2.3.2 Structuri de control
Atunci câ nd scriem un script și programe ȋn PHP, urmăm un set de reguli și instrucțiuni pe
care le oferim limbajului de programare, acestea fi ind de fapt coduri sursă, pentru ca mai apoi,
interpretorul să prelucreze aceste coduri și să le transforme ȋn cod mașină, după care să ne ofe re
rezultatul codului aferent. Î n continuare, se va realiza o scurtă prezentare a structurilor utilizate ȋn
PHP:
Structura IF
Această structură, des utilizată ȋn PHP, reprezintă faptul că instrucțiunea se va executa, cu
condiți a ca valoarea expresiei evaluate sa fie adevărată, ȋn caz contrar, nu va executa nimic. Sintaxa
este: if(condiție){instrucțiune}.
<?php
$mesaj=’Acesta este un simplu mesaj’;
Echo $text’<br/>’
$var1 = 10;
$var2 = 30;
if ($var1 < $var2) {
echo ‘Valoarea lui var1 este mai mica decat valoarea lui var2’;
}
echo “Condi ția este adevărată ”;
?>
Rezultatul codului de mai sus, dup ă ex ecuție, va afișa mesajul din interiorul if -ului,
deoarece condiția pusă ȋn paranteze este adevărată.
14
Structura IF – ELSE
Deoarece nu î ntotdeauna condiția este adevărată, PH P pune la dipoziția dezvoltator ilor web
o structură care să execute o instrucțiune sau un set de instrucțiuni ȋn cazul ȋn care condiția evaluată
este falsă. Sintaxa este : if(condiție){instrucțiune} else{instrucțiune}. Un exemplu de cod pentru
această structură :
<?php
$mesaj=’Acesta este un simplu mesaj’;
Echo $t ext’<br/>’
$var1 = 60;
$var2 = 30;
if ($var1 < $var2) {
echo ‘Valoarea lui var1 este mai mica decat valoarea lui var2’;
}
else {
echo ‘Valoarea lui var1 nu este mai mic ă decât valoarea lui var2 ’;
}
?>
În cazul de față, condiția i f-ului este falsă, astfel programul va executa secvența de cod
aflată ȋn interiorul lui else.
Structura WHILE
Această structură este utilă ȋn cazul ȋn care dorim să ex ecutăm o serie de instrucțiuni î ntr-o
buclă, ȋn funcție de condiția specif icată. Sintaxa acestei structuri este: whil e (condiție){cod de
executat}. Î n exemplul de mai jos arătăm cum funcționează o astfel de buclă.
<?php
$contor = 0;
$numar = 50;
while($contor < 10) {
$numar –;
$contor++;
}
echo “Bucla s -a oprit la i =” . $contor. “și num = “ . $num;
?>
Structura FOREACH
Bucla Foreach funcționează doar pe tablouri, și este utilizat ă să itereze prin fiecare pereche
de valori î ntr-un tablou. Sintaxa pentru bucla Foreach este : Foreach ($tablou as $valoare)
{Codul de executat }.
Pentru fiecare itera ție, valoarea curentă a elementului tabloului este atribuită la $valoare, iar
elementul tabloului este mutat cu o unitate, până va atinge ultimul element al tabloului. Mai jos,
vom ilustra cum funcționează bucla :
15
<?php
$nume = (“Mirsad”, “Alexandru”, “Cristi”, “Paul”);
foreach ($nume as $valoare) {
Echo $valoare “<br>”;
}
?>
2.3.3 Funcții
O funcție este un bloc de cod separat, care poate fi apelată de scripturile create de noi.
Funcțiile stau la b aza unui script bine organizat și permit codului să fie ușor de folosit și reutilizat.
De regulă, toate proiectele mai mari nu pot fi gestionate fără ajutorul funcțiilor. Putem să pasăm
funcției diverse valori, iar după termin area execuției acesteia poate să returneze o valoare codului
care a apelat -o.
Funcțiile sunt de două tipuri, definite și predefinite. Cele predefinite sunt implementate ȋn
limbaj, iar cele definite, sunt implementate de utilizator. Un exemplu de apelare a funcției print ( ),
căreia î i pasăm un șir de caractere “Salutare, lume!”. După execuția funcției, se va afi șa șirul de
caractere introdus î ntre paranteze. Un apel către o funcție conține numele funcției, urmat de o
pereche de paranteze. Datele pasate unei funcții se numesc argumente, iar unele funcții pot conține
mai m ulte argumente, de exemplu funcț ie ($argument_1, $argument_2);.
Definirea propriei fun cții se face folosind intrucțiunea function, de exemplu:
Function functia_mea($argument_1, $argument_2) {
Codul de executat ȋn cadrul funcției
}
Numele funcției se introduce imediat după cuvântul function, și este urmat d e o pereche de
paranteze, unde î i pasăm argumente, separate prin virgule. În cazul ȋn care funcția nu are
argumente, sunt necesare parantezele. O funcție poate returna o valoare prin intermediul intrucțiunii
return. Această instrucțiune oprește execuția funcției și returnează valoarea către codul care a apelat
funcția. Mai jos, construim o funcție care returnează suma a două numere:
<html>
<body>
<?php
function adun are($numar_1, $numar_2) {
$rezultat = $numar_1 + $numar_2;
Return $rezultat;
}
Echo adunare(4, 6);
?>
</body>
</html>
Executarea codului va afișa 10, deoarece am pasat ca argumente numerele 4 și 6, iar funcția,
după efectuarea calculului, va retu rna suma dintre cele două. Instrucțiunea return poate returna o
valoare sau poate să nu returneze nimic, iar valoarea pe care o returnează poate fi obținută ȋn mai
multe moduri. De exemplu return $numar_1 + $numar_2, return alta_functie($argument) ;
O varia bilă declarată ȋn interiorul unei funcții, este locală doar pentru funcția respectivă.
Așadar, variabila nu va fi disponibilă din afara funcției sau din interiorul altei fun cții. În cazul ȋn
care se lucrează la un proiect mai mare, acest lucru previne supr ascrierea unei variabile atunci când
se declară două variabile cu același nume ȋn funcții diferite. Un exemplu :
16
<html>
<body>
<?php
Function functie( ) {
$variabila_mea = “Acesta este o variabila intr -o funtie!”;
}
Echo “Variabila mea: “ .$variabila_me a;
?>
</body>
</html>
Valoarea variabilei $variabila_mea nu este a fișată din cauza faptului că ȋn afara funcției
functie ( ) nu există o astfel de variabilă.
2.3.4 Vectori, clase și obiecte
Vectorii și obiectele sunt utilizate pentru a stoca și organiz a date. PHP include un număr
mare de funcții care permit să construim, modificăm și manipulăm vectorii. Structurile programării
orientate pe obiecte, care se regăsesc ȋn multe limbaje de programare, sunt prezente și ȋn PHP.
Un vector reprezintă un tip spec ial de variabilă, care permite stocarea unui numă r
nedeterminat de valori. Acești vectori sunt indexați, ceea ce î nseamnă că fiecare intrare este
format ă dintr -o cheie și o valoare. Cheia i îseamnă poz iția ȋn cadrul indexului, care î ncepe de la 0,
iar valoa rea poate reprezenta orice, fie un număr, fie un șir de caractere [8].
Pentru crearea unui vector, se poate realiza fie prin funcția array( ), fie prin operatorul
pentru vectori [ ]. De regulă, funcția array( ) se folosește atunci când dorim crearea unui ve ctor nou
și să î l populăm cu mai multe elemente, iar operatorul pentru vector îl folosim atunci când dorim să
construim un vector care să aibă inițial, un singur element, sau câ nd dorim să adaugăm un element
într-un vector deja existent. În următorul exemp lu, demonstrăm crearea unui vector cu numele
$curcubeu, care stochează toate culorile curcubeului:
$curcubeu = array(“rosu”, “portocaliu”, “galben”, “verde”, “albastru”, “indigo”, “violet”);
În urm ătorul exemplu, vom arăta crearea unui vector ȋn mod incr emental, cu ajutorul
operatorului pentru vectori.
$curcubeu [ ] = “rosu”;
$curcubeu [ ] = “portocaliu”;
$curcubeu [ ] = “galben”;
$curcubeu [ ] = “verde”;
$curcubeu [ ] = “albastru”;
$curcubeu [ ] = “indigo”;
$curcubeu [ ] = “violet”;
Ambele exemple cre ază un vector cu șapte elemente, cu numele $curcubeu, cu valori
pornind de la indexul 0, până la poziția 6. Se putea specifica poziția indexului ȋn momen tul ȋn care
am creat vectorii, î nsă, totuși, PHP poate face acest lucru de unul singur.
Un obiect, este o ins tanță a unei clase, și poate conține lucruri precum variabile și funcții.
Mecanismul prin care îi atribuim date unui obiect se numesc metode, iar aceste metode, la rândul
lor, au proprietăți. O clasă, este un tip de data predefinită, care conține o serie d e caracteristici și
metode. De exemp lu, clasa automobil, putem folos i caracteristici, atribute precum culoare, marcă,
model. Obiectele instanțiate din această clasa vor utiliza aceste atribute, care vor fi inițializate cu
valori diferite, cum ar fi Ford Fo cus Rosu, Dacia Logan Verde.
17
Scopul folosirii obiectelor și, ȋn general, programarea orientate pe obiecte, este de a crea
secțiuni, blocuri de cod reutilizabile. Clasele sunt bine structurate, independente și complete, și pot
fi reutilizate de la o aplicaț ie la alta. Crearea unui obiect este relativ simplu, iar acesta se face ȋn
felul următor:
class ClasaMea {
// codul meu
}
$obiect = new ClasaMea( );
Variabilele declarate ȋn interiorul unui obiect poartă denumirea de proprietăți. De obicei,
aceste vari abile se declară la î nceputul clasei, iar aceste proprietăți pot fi valori, vectori sau chiar
alte obiecte. Mai jos este evidențiat un exemplu prin care arătăm modul de dec larare și afișare a
proprietăți lor unui obiect:
<?php
Class MasinaMea {
var $cul oare = “verde”;
var $marca = “Ford”;
var $model = “Focus”;
}
$masina = new Maș inaMea( );
echo “Eu conduc un “.$masina -> marca.” “.$masina -> model.” “.$masina -> culoare;
De asemenea, exist ă posibilitatea de a schimba pro prietățile unui obiect în cla sa din care
face parte.
<?php
Class MasinaMea {
var $culoare = “verde”;
var $marca = “Ford”;
var $model = “Focus”;
}
$masina = new MasinaMea( );
$masina -> culoare = “negru”;
$masina -> marca = “Opel”;
$masina -> model = “Corsa”;
echo “Eu conduc un “.$masina -> marca.” “.$masina -> model.” “.$masina -> culoare;
Acest exemplu ilustreaz ă modul prin care putem schimba proprietățile unui obiect, ȋn
funcție de nevoi și de cerințe, cu toate că aceste prop rietăți au fost definite de la î nceput.
Metodele nu sunt altceva decât funcții, care sunt definite ȋn interiorul unei clase. Pentru a
apela metoda obiectului din cadrul script ului ȋn care lucrăm, se va folos i operatorul ->. În cazul ȋn
care există variabile stocate în interiorul unui obiect, metoda este capabilă să le acceseze ȋn cursul
execuției sale.
<?php
class ClasaMea {
var $nume = “Mirsad”;
function Salut( ) {
18
echo “Salut! Numele meu este “.$this ->nume;
}
}
$obiectulMeu = new ClasaMea( );
$obiectulMeu -> Salut ( );
?>
În acest exemplu, folosim variabila specială $this p entru a face referire la instanța curentă a
obiectului. De câte ori se va face referire la un obiect, se va foloși variabila $this.
Un constructor este o funcție specială care este apelată automat ori de câte ori se instanțiază
un obiect din cadrul acelei clase. Scopul acestor constructori este de a furniza argum ente care să fie
procesate imediat ce clasa este apelată prima dată.
Un principiu foarte im portant ȋn programarea orientată pe obiecte este moștenirea.
Moștenirea este procedeul prin care o clasă moștenește funcționalitatea clasei părinte. Clasa care
moște nește se numește clasă derivată, iar clasa părinte se numește clasa de bază.
<?php
Class ClasaMea {
Var $nume = “Mirsad”;
Function ClasaMea ($n) {
$this -> nume = $n;
}
Function Salut( ) {
Echo “Salut! Numele meu este “ .$this – > nume;
}
}
Class ClasaTa extends ClasaMea {
// codul clasei ClasaTa
}
$obiectulMeu = new ClasaTa(“Cristi”);
$obiectulMeu = Salut ( );
?>
După cum se poate observa, lini ile de cod 4 -6 reprezintă un constructor, deoarece funcția
are același nume ca și clasa. Lini le 11 -13 definesc o altă clasă ClasaTa, care nu conține niciun cod.
Așadar, a doua clasă ClasaTa moștenește funcționalitățile clasei ClasaMea, prin folosirea
cuvântului cheie extends.
Prin aceste simple exemple, am vrut să demonstrez ușurința ș i, totodată, conceptul de
programare orientate pe obiecte, pentru a demonstra rapidi tatea și reutilizarea codului unei clase,
fără a scrie ace eași secvență de cod ȋn alte clase.
19
2.4 Limbajul HTML
HTML = HyperText Markup Language, într -o traducere ad -litteram, Limbaj de marcare,
este un limbaj standard utilizat pentru crearea paginilor web ce pot fi afișate într -un browser.
Scopul HTML este mai degrabă de a prezenta informați ile – paragrafe, fonturi, tabele, etc – decât
de a descrie semantica documentului.
Specificaț iile HTML sunt dezvoltate de World Wide Web Consortium W3C. HTML5 este o
tehnologie de bază a internetului, utilizată pentru structurarea și prezentarea de conținut pentru
World Wide Web. Din octombrie 2014, acesta este la a cincea revizuire fin ală și completă a
standardului HTML al World Wide Web Consortium (W3C). Versiunea anterioară, HTML 4, a fost
standardizat în 1997.
Obiectivele sale de bază au fost să îmbunătățească limbajul, cu suport pentru cele mai
recente elemente multimedia în timp ce se menține ușor de citit de oameni și în mod constant
înțeles de către browsere. HTML5 este gândit să reunească nu numai HTML 4, ci și XHTML 1 și
DOM Level 2 HTML.
În continuare predecesorii săi imediați HT ML 4.01 și XHTML 1.1, HTML5 sunt un răspuns
la faptul că HTML și XHTML, folosite în comun pe World Wide Web, sunt un amestec de
caracteristici introduse de specificații diferite, pe lângă cele introduse de produsele software cum ar
fi browserele. De asemenea, este o încercare de a defini un singur limba j de marcare care pot fi
scrise în HTML sau XHTML. Acesta include modele detaliate de prelucrare pentru a încuraja
implementări mai interoperabile; extinde, îmbunătățește și raționalizează marcajul disponibil pentru
documente și introduce markup și API (ap plication programming interface) pentru aplicații web
complexe. Din aceleași motive, HTML5 este, de asemenea, un potențial candidat pentru aplicațiile
mobile cross -platform. Multe caracteristici ale HTML5 au fost construite cu considerentul de a fi
capabi l să ruleze pe dispozitive low -powered cum ar fi smartphone -urile și tabletele.
În particular, HTML5 adaugă multe caracteristici noi în sintaxă. Acestea includ noile
elemente <videoclip>, <audio> și <canvas> , precum și integrarea conținutului Scalable Ve ctor
Graphics (SVG) (înlocuind tag -ul generic <object>), precum și MathML pentru formule
matematice. Aceste caracteristici sunt concepute să facă mai ușoară includerea și manipularea
elementelor multimedia și conținutului grafic pe web, fără a fi nevoie să recurgă la plugin -uri și
API-uri. Alte elemente noi de structură , cum ar fi, <section> <principal>, <Article>, <header>,
<footer>, <aside>, <nav> și <figure> sunt concepute pentru a îmbogăți conținutul semantic al
documentelor. Au fost introduse noi atri bute, unele elemente și atributele au fost eliminate și unele
elemente, cum ar fi <a>, <cite> și <menu> s -au schimbat, redefinit sau s -au standardizat. API -uri și
Document Object Model (DOM) sunt lăsate pe planul secund, dar sunt părți fundamentale ale
specificațiilor HTML5. HTML5 definește în detaliu procesarea necesară pentru documente
invalide, astfel încât erorile de sintaxă vor fi tratate în mod uniform de toate browserele conforme și
alți utilizatori [7].
HTML5 introduce elemente și atribute ce refle ctă consumul tipic pe site -urile moderne.
Unele dintr e ele sunt înlocuitori semantici pentru utilizări comune ale blocului generic (<div>) și
inline (<span>) elemente, de exemplu, <nav> (bloc de navigare pe site), <footer> (de obicei,
referindu -se la parte a de jos a paginii web sau la ultimele linii de cod HTML), sau <audio> și
<video> în loc de <object>. Unele elemente depreciate din HTML 4.01 au fost abandonat e, inclusiv
elemente pur prezentare, cum ar fi <font> și <center>, ale cărei efecte au fost mult timp înlocuite cu
mai capabilul CSS. De asemenea, există un accent pe importanța DOM (Document Object Model)
scripting (de exemplu, JavaScript) în comportamentul Web [12].
20
2.5 Standardul de formatare CSS
Cascading Style Sheets (CSS) este un standard folosit pentru a descrie aspectul și
formatarea unui document HTML . Cu toate că este folosit pentru a schimba stilul de pagini web și
interfeț e scrise în HTML și XHTML , poate fi aplicat la orice tip de document XML , inclusiv XML
simplu , SVG și XUL . Împreun ă cu HTML și JavaScript, CSS este o tehnologie fundamentală
folosită de cele mai multe site-uri web pentru a crea pagini web atractive vizual , interfețe de
utilizator pentru aplicații web și interfețe de utilizator pentru multe aplicații mobile .
CSS este g ândit în primul rând pentru a permite separarea conținutului documentului de
prezentare de documente, inclusiv elemente cum ar fi aspectul, culorile și fonturile. Această
separare poate îmbunătăți accesibilitatea conținutului, oferă mai multă flexibilitate și control în
specificarea caracteristicilor de prezentare. P ermite mai multor pagini HTML să împartă aceeași
formatare prin specificarea unui CSS relevant î ntr-un fișier .css separat și reduce complexitatea și
repetiția în conținutul structural, cum ar f i tabelele nesemnificative semantic, care au fost folosite
pe scară largă pentru formatarea paginilor înainte ca un suport consistent de redare CSS să poată fi
disponibil în toate browserele importante. CSS face posibilă separarea instrucțiunilor de prezen tare
de conținutul HTML într -un fișier sau o secțiune stil separată a fișierului HTML. Pentru fiecare
element HTML potrivit, se oferă o listă de instrucțiuni de formatare. De exemplu, o regulă CSS ar
putea preciza că "toate elemente heading 1 ar trebui să fie bold", lăsând cod curat HTML care
specifica "acest text este heading 1" fără formatare cod, cum ar fi marcajul <bold> de indicare a
modului în care aceste texte ar trebui să fie afișate [13].
Această separare de formatare și conținut face posibilă preze ntarea unei pagini în stiluri
diferite pentru diferite metode de redare, cum ar fi pe ecran, în print, prin voce (când e citit de un
browser sau de un screen -reader) și pe dispozitive tactile bazate pe Braille. Acesta poate fi de
asemenea utilizat pentru a afișa pagina web diferit, în funcție de dimensiunea ecranului
dispozitivului pe care este vizualizat. Deși autorul unei pagini web conectează un fișier CSS cu
fișierul HTML, cititorii pot specifica o foaie de stil diferit, cum ar fi un fișier CSS stocat pe
computerul lor, pentru a trece peste cel specificat de autor. În cazul în care autorul sau cititorul nu a
legat documentul la o foaie de stil, stilul implicit al browser -ul va fi aplicat. Un alt avantaj al CSS
este că modificările estetice aduse proiectului grafic unui do cument (sau sute de documente) pot fi
aplicate rap id și ușor, prin editarea câtorva rânduri într -un singur fișier, decât printr -un proces
laborios (și, prin urmare , costisitor ) de crawling peste fiecare linie de cod din fișier pentru
schimbarea marcării.
Specificațiile CSS descriu un sistem de priorități pentru a determina ce stil se aplică dacă
mai mult de o singură regulă se p otrivește unui anumit element. Î n așa -numita cascadă, priorități le
(sau greutăți) sunt calculate și atribuite regulilor, astfel înc ât rezultatele sunt previzibile.
Specificațiile CSS sunt întreținute de către World Wide Web Consortium (W3C). Tipul
media internet (tip MIME) text / css este înregistrată pentru utilizarea cu CSS de RFC 2318 (martie
1998). W3C operează un serviciu gratui t de validare CSS pentru documentelor CSS.
21
CAPITOLUL 3
ELABORAREA PROIECTUL UI
3.1 Cerințe și specificații
Scopul acestui proiect este acela de a elabora pagini web cu conținut dinamic pentru a
demonstra rapiditatea și ușurința modului de uti lizare ale acestora. Din punct de vedere software,
pentru realizarea proiectului, s -a utilizat platforma de dezvoltare NetBeans, limbajul de programare
PHP în stilul programării orientate pe obiecte, baza de date MySQL, elemente ale limbajelor
HTML și CSS, iar pentru partea de webserver, s -a instalat pachetul de programe XAMPP, care
conține aplicația Apache HTTP Server 2.4.17.
Din punct de vedere tehnic, pentru a oferi performanță și stabilitate, am ales opțiunea de
virtualizare al unui laptop HP, cu următ oarele specificații hardware : Procesor Intel(R) Core(TM)
i5-2520M cu frecvența de 2.50GHz, memorie RAM de 8.00GB, cu un hard disk de 300GB.
Sistemul de operare instalat este Windows 10 pe 64 -bit.
3.2 Structura website -ului pe server -ul local
În structur a website -ului pe server, s -a realizat un număr de 5 foldere și 15 fișiere, toate
având o contribuție importantă în realizarea proiectului. Folderele și fișierele sunt împărțite astfel :
Folder -ul Controller , care conține fișierul ControlareCafea.php, în c are se află
toate funcțiile principale care controlează website -ul
Folderul Entitat i, care conține un fișier EntitateCafea.php, iar în acest fișier se
află clasa care conține variabilele necesare.
Folderul Imagini, care conține imagini pentru a le încărca în baza de date.
Folderul Model, acesta conținând două fișiere php, unul DateLogareBD, care
conține datele necesare conectării la baza de date MySQL, și un fișier
BazeDateCafea, care conține funcțiile de comunicare cu baza de date.
Folderul Stiluri, care c onține fișierul stiluri.css, pentru a defini desing -ul site –
ului.
Împreună cu cele menționate mai sus, sunt realizate un număr de 10 fișiere, care fac parte
din arborele proiectului, acestea fiind :
index.php, care este prima pagină de prezentare a websit e-ului
Despre.php, o pagină care conține o scurtă prezentare
Cafele.php, pagina care afișează elementele care sunt stocate în baza de date
contact.php, care conține un formular de contact prin care utilizatorii pot adresa
un mesaj
FormularDB.php, un fișier care conține legătura dintre baza de date și formular
Administrare.php, o pagină în care se află legături către controller -ul CMS
AdaugareCafea.php, o pagină care conține un formular prin care se adaugă,
respectiv actualizează elementele pe website
Incar careImagine.php, pagina care conține mecanismul de încărcare a pozelor pe
serverul local
AnsambluCafea.php, o pagină care oferă o privire de ansamblu asupra
elementelor existente pe website, cu posibilitatea de a actualize sau de a șterge
un anumit element .
Sablon.php, care este un fișier important, deoarece realizează șablonul website –
ului
22
Structurarea fișierelor pe serverul local în acest mod permite gestionarea și dezvoltarea cu
ușurintă a proiectului.
3.3 Utilizarea platformei de dezvoltare NetBeans
Această platformă a fost utilizată în realizarea proiectului, folderelor, fișierelor PHP,
HTML și CSS. Consider această platformă fiind cea mai potrivită în realizarea unui astfel de
proiect.
Figura 2
În fig ura 2 este o prezentare generală a aplicați ei NetBeans, înainte de a începe proiectarea
website -ului.
3.3.1 Crearea proiectului
În figura 3 am prezentat modul în care se cre ază un proiect nou. Se selectează din meniu File, apoi
New Project…
Figura 3
23
Figura 4
După executarea comenzii New Project, avem opțiunea de a alege crearea proiectului după
categorie, conform figurii 4, în cazul nostru PHP, după care selectăm opțiunea de PHP Application.
Figura 5
24
După crearea proiectului, se va genera automat un fișier implicit „index.php ”. Se poate
observa în figura 5, faptul că aplicația prezintă diferite zone de lucru: Navigator, proiectele și
fișierele, bara d e navigare la diferite fișiere și un camp de lucru unde se dezvoltă website -ul.
3.3.2 Crearea fișierelor
Fișierele sunt documente c are conțin intrucțiunile pe care interpretorul PHP trebuie să le
execute într -o anumită ordine. În figura 6 am prezentat modul de creare a fișierelor. Se va apăsa clic
dreapta pe denumirea proiectului, New și PHP File…
Figura 6
Figura 7
În figu ra 7 am prezentat modul de denumire a fișierelor și crearea lor.
25
Figura 8
În figura 8 sunt prezentate toate fișierele și folderele pe care le -am creat, pentru a putea realiza
website -ul.
Figura 9
În figura 9 este prezentată bara de navigare printr e fișierele website -ului.
3.4 Realizarea bazei de date în PhpMyAdmin
PhpMyAdmin este un sistem de gestiune a bazelor de date MySQL liber, open source , scris
în PHP și destinat administrării bazelor de date prin intermediul unui browser web . Prin
phpMyAdmin se pot întreprinde diverse operații cum ar fi crearea, modificarea sau ștergerea
bazelor de date, tabelelor, câmpurilor sau rândurilor; executarea de comenzi (interogări) SQL .
Figura 10
26
În figura 10 este prezentată pagina principală a aplicației phpMyAdmin. În stânga putem
vedea un meniu cu diferite baze de date predefinite de sistem, precum și un buton New pentru a
crea o nouă bază de date. Ma i sunt prezentate diferite informații despre sistem, precum și o bară de
meniu pentru a executa diferite comenzi.
Figura 11
În figura 11 am prezenta t modul în care se cre ază baza de date. Trebuie să atribuim un nume
și o interclasare pentru recunoașt erea diacriticelor.
Figura 12
În figura 12, după ce s -a creat baza de date, trebuie să definim și un tabel, care conține un
nume și numărul de coloane.
Figura 13
27
În figura 13 am prezentat etapa de creare a coloanelor. Acestea pot avea un nume, un tip,
lungime caractere și diferite alte configurații. Coloana ID este de tipul întreg și se incrementează în
mod automat după adăugarea fiecărui element nou.
Figura 14
În figura 14 sunt prezentate coloanele tabelului. Se pot realiza multe operații în această
secțiune, printre care operația de schimbare, ștergere și selectare multiplă a coloanelor.
Figura 15
Figura 15 prezintă tabelul în care sunt stocate informațiile de pe website. Fiecare element este
poziționat pe rând separat, cu specificaț iile proprii.
3.5 Dezvoltarea website -ului
3.5.1 Crearea entități lor
Entităț ile reprezintă variabilele de bază al proiectului. De acest fișier, depind multe alte
fișiere ale proiectului [4].
<?php
//Aici se creează clasa aferentă
class EntitateCafea
{
public $id;
public $nume;
public $tip;
public $pret;
public $gen;
public $tara;
public $imagine;
public $despre;
28
//Generare constructor prin care pasăm fiecare element ȋn parte variabilei
corespunzătoare
function _ _construct($id, $nume, $tip, $pret, $gen, $tara, $imagine, $despre) {
$this ->id = $id;
$this ->nume = $nume;
$this ->tip = $tip;
$this ->pret = $pret;
$this ->gen = $gen;
$this ->tara = $tara;
$this ->imagi ne = $imagine;
$this ->despre = $despre;
}
}
?>
3.5.2 Dezvoltarea controller -ului
Controller -ul reprezintă fișierul cu funcțiile de bază ale website -ului.
<script>
// Creează o alertă când se încearcă ș tergerea unui obiect
function Confirmar e(id)
{
// Contruirea alertei
var cn = confirm("Sunteti sigur ca doriti să stergeti?");
// Dacă condiția este adevărată, șterge elementul și reîncarcă
if(cn)
window.location = "AnsambluCafea.php?delete=" + id;
}
</script>
<?ph p
require (" BazedeDate/Bazed eDate.php");
//Această clasă conține diferite funcții pentru website
class ControlareWeb {
function CreareTabelAnsamblu() {
$rezultat = "
<table class=' Ansamblu Tabel'>
<tr>
<td></td>
<td></td>
<td><b>Id</b></td>
<td><b>Nume</b></td>
<td><b>Tip</b></td>
<td><b>Preț</b></td>
<td><b>Gen</b></td>
<td><b>Tara</b></td>
</tr>";
29
$TablouCafea = $this ->PrimesteCafeaDupaTip('%');
foreach ($TablouCafea as $Cheie => $valoare) {
$rezultat = $rezultat .
"<tr>
<td><a href='AdaugareCafea.php?update=$valoare ->id'>Actualizare</a></td>
<td><a href='#' onclick='showConfirm($valoare ->id)'>Ștergere</a></td>
<td>$valoare ->id</td>
<td>$valoare ->nume</td>
<td>$valoare ->tip</td>
<td>$valoare ->pret</td>
<td>$valoare ->gen</td>
<td>$valoare ->tara</td>
</tr>";
}
$rezultat = $rezultat . "</table>";
return $rezultat;
}
function CreareListaCafea() {
$ModelCafea = new ModelCafea();
$rezultat = "<form action = '' method = 'post' width = '200px'>
Te rog să alegi un tip :
<select name = 'tip' >
<option valoare = '%' >Toate</option>
" . $this ->CreareOptiuneCafea($this ->PrimesteTipCafea()) .
"</select>
<input type = 'su bmit' valoare = 'Caută' />
</form>";
return $rezultat;
}
function CreareOptiuneValori(array $ValoareTablou) {
$rezultat = "";
foreach ($ValoareTablou as $valoare) {
$rezultat = $rezultat. " <option value ='$valoare >$valoare </option>";
}
return $rezultat;
}
function CreareTabelCafea($tipuri) {
$ModelCafea = new ModelCafea ();
$TablouCafea = $ModelCafea ->PrimesteCafeaDupaTip($tipuri);
$rezult at = "";
//Generează un tabel de cafele pentru fiecare entitate din array
foreach ($TablouCafea as $Cheie => $cafea) {
$rezultat = $rezultat.
"<table class = ' TabelCafea '>
30
<tr>
<th rowspan='6' width = '150px' ><img runat = 'server' src = '$cafea ->imagine'
/></th>
<th width = '75px' >Nume: </th>
<td>$cafea ->nume</td>
</tr>
<tr>
<th>Tip: </th>
<td>$cafea ->tip</td>
</tr>
<tr>
<th>P reț: </th>
<td>$cafea ->pret</td>
</tr>
<tr>
<th>Gen: </th>
<td>$cafea ->gen</td>
</tr>
<tr>
<th>Originea: </th>
<td>$cafea ->tara</td>
</tr>
<tr>
<td colspan='2' >$cafea ->despre</td>
</tr>
</table>";
}
return $rezultat;
}
//Returnează lista de fișiere î ntr-un dosar
function Primeș teImag ini() {
//Selectare dosar
$handle = opendir("Imagini/Cafea/");
//Citește toate fișierele și stochează numele ȋn array
while ($imagine = readdir($handle)) {
$imagini[] = $imagini;
}
closedir($ha ndle);
//Exclude toate numele de fișiere unde lungimea numelui este mai mică de 3
$TablouImagine = array();
foreach ($imagini as $imagine) {
if (strlen($imagine) > 2) {
array_push($TablouImagine, $imagin e);
31
}
}
//Creează o valoare de tip <select><option> și returnează rezultatul
$rezultat = $this -> CreareOptiuneValori ($TablouImagine);
return $rezultat;
}
//Inserare obiect de tip cafea
function In serareCafea() {
$nume = $_POST["txtNume"];
$tip = $_POST["ddlTip"];
$pret = $_POST["txtPret"];
$gen = $_POST["txtGen"];
$tara = $_POST["txtTara"];
$imagine = $_POST["ddlImagine"];
$despre = $_POST["tx tDespre"];
$cafea = new EntitateCafea( -1, $nume, $ tip, $pret, $gen, $tara, $imagine, $despre);
$ModelCafea = new ModelCafea ();
$ModelCafea -> InserareCafea($cafea);
}
//Actualizează un obiect de tip cafea
function Actu alizareCafea($id) {
$nume = $_POST["txtNume"];
$tip = $_POST["ddlTip"];
$pret = $_POST["txtPret"];
$gen = $_POST["txtGen"];
$tara = $_POST["txtTara"];
$imagine = $_POST["ddlImagine"];
$despre = $_POST ["txtDespre"];
$cafea = new EntitateCafea($id, $nume, $ tip, $pret, $gen, $tara, $imagine, $despre);
$ModelCafea = new ModelCafea ();
$ModelCafea ->ActualizareCafea($id, $cafea);
}
//Ștergere obiect de tip cafea
function StergereCafea($id)
{
$ModelCafea = new ModelCafea ();
$ModelCafea ->StergereCafea($id);
}
function PrimesteCafeaDupaId($id) {
$ModelCafea = new ModelCafea ();
return $ModelCafea ->PrimesteCafeaDupaId($id);
}
function PrimesteCafeaDupaTip ($ tip) {
$ModelCafea = new ModelCafea ();
return $ModelCafea -> PrimesteCafeaDupaTip ($ tip);
32
}
function PrimesteTipCafea() {
$ModelCafea = new ModelCafea ();
return $ModelCa fea ->PrimesteTipCafea();
}
}
?>
3.5.3 Realizarea legăturii cu baza de date
Pentru realizarea unei legături cu baza de date MySQL, a fost necesară dezvoltarea unui
fișier nou care să conțină funcțiile. M ai întai, am creat un fișier separat care con ține datele de
autentificare în baza de date [9].
<?php
//Date pentru logare la baza de date. Acest fișier se poate utiliza la toate modelele
$host = "localhost";
$user = "root";
$passwd = "";
$database = "cafeadb";
?>
După crearea fișierului care conțin e datele de autentificare, s -au dezvoltat și funcțiile
necesare de comunicare.
<?php
require ("Entitati/EntitateCafea.php");
//Acest script contine instrucțiuni pentru comunicare cu baza de date
class ModelCafea {
//Primește toate tipurile de cafea de la baza de date și returnează î ntr-un tablou
function Primeș teTipCafea() {
require ('DateLogareBD.php');
//Deschide conexiune și selectează baza de date
mysql_connect($host, $user, $passwd) or die(mysql_error());
mysql_select_db($database);
$rezultat = mysql_query("SELECT DISTINCT tip FROM cafele") or
die(mysql_error());
$tipuri = array();
//Primește date de la baza de date
while ($row = mysql_fetch_array($rezultat)) {
array_push($tipuri, $row[0]);
}
//Închide conexiunea și returnează rezultatul
mysql_close();
return $tipuri;
33
}
//Primește obiectele din EntitateCafea de la baza de date și le returnează î ntr-un array
function Pr imeș teCafeaDupaTip ($ tip) {
require (' DateLogareBD.php');
//Deschide conexiunea și selectează baza de date
mysql_connect($host, $user, $passwd) or die(mysql_error);
mysql_select_db($database);
$query = "SELECT * FR OM cafele WHERE tip LIKE '$ tip";
$rezultat = mysql_query($query) or die(mysql_error());
$TablouCafea = array();
//Primește date de la baza de date
while ($row = mysql_fetch_array($rezultat)) {
$id = $row[0];
$nume = $row[1];
$tip = $row[2];
$pret = $row[3];
$gen = $row[4];
$tara = $row[5];
$imagine = $row[6];
$despre = $row[7];
//Crează obiecte de tip cafea și le stoc hează ȋn array
$cafea = new EntitateCafea($id, $nume, $ tip, $pret, $gen, $tara, $imagine, $despre);
array_push($TablouCafea, $cafea);
}
//Închide conexiunea și returnează rezultatul
mysql_close();
return $TablouCafea;
}
function PrimesteCafeaDupaId ($id) {
require ('DateLogareBD.php');
//Deschide conexiunea și selectează baza de date
mysql_connect($host, $user, $passwd) or die(mysql_error);
mysql_select_db($data base);
$query = "SELECT * FROM cafele WHERE id = $id";
$rezultat = mysql_query($query) or die(mysql_error());
//Primește date de la baza de date
while ($row = mysql_fetch_array($rezultat)) {
$nume = $row[1];
$tip = $row[2];
$pret = $row[3];
$gen = $row[4];
$tara = $row[5];
$imagine = $row[6];
$despre = $row[7];
34
//Creează cafea
$cafea = new EntitateCafea($id, $nume, $tip, $pret, $gen, $tara, $imagine, $despre);
}
//Închide conexiunea și returnează rezultatul
mysql_close();
return $cafea;
}
function InserareCafea (EntitateCafea $cafea) {
$query = sprintf("INSERT INTO caf ele
(nume, tip, pret,gen,tara,imagine,despre)
VALUES
('%s','%s','%s','%s','%s','%s','%s')",
mysql_real_escape_string($cafea ->nume),
mysql_real_esc ape_string($cafea ->tip),
mysql_real_escape_string($cafea ->pret),
mysql_real_escape_string($cafea ->gen),
mysql_real_escape_string($cafea ->tara),
mysql_real_escape_string("Imagini/Cafea/" . $caf ea->imagine),
mysql_real_escape_string($cafea ->despre));
$this ->PerformQuery($query);
}
function ActualizareCafea($id, EntitateCafea $cafea) {
$query = sprintf("UPDATE cafele
SET nume = ' %s', tip = '%s', pret = '%s', gen = '%s',
tara = '%s', imagine = '%s', despre = '%s'
WHERE id = $id",
mysql_real_escape_string($cafea ->nume),
mysql_real_escape_string($ca fea-> tip),
mysql_real_escape_string($cafea ->pret),
mysql_real_escape_string($cafea ->gen),
mysql_real_escape_string($cafea ->tara),
mysql_real_escape_string("Imagini/Cafea/" . $cafea ->imagine),
mysql_real_escape_string($cafea ->despre));
$this ->PerformQuery($query);
}
function Ș tergereCafea($id) {
$query = "DELETE FROM cafele WHERE id = $id";
$this ->PerformQuery($query);
}
function PerformQuery($query) {
require ('DateLogareBD.php');
mysql_connect($host, $user, $passwd) or die(mysql_error());
mysql_select_db($database);
//Execute query and close connection
mysql_query($quer y) or die(mysql_error());
mysql_close();
35
}
}
?>
3.5.4 Proiectarea CMS -ului
Un controller CMS este un sistem de management, proiectat pentru a oferi suport
management -ului de informații și conținut pentru pagini web. Aceste conținuturi web pot include
text, poze, videoclipuri, audio care afișează conținut sau interacționează cu utilizatorii. De
asemenea, o aplicație CMS este o interfață care permite utilizatorului să adauge, modifice și șterge
conținut de pe o pagină web, fără intervenția webma ster-ului.
Pentru website -ul meu, am creat un astfel de controller, care permite adăugarea, modificarea
și ștergerea conținutului de pe website, cât și din baza de date MySQL.
Figura 16
În figura 16 am reprezentat o schemă bloc a modului de com unicare cu diferite module ale
proiectului. Modulul Entitate conține variabilele principale, modulul Model conține funcțiile de
conectare și interac țiune cu baza de date, iar modulul Controller reprezintă funcțiile principale care
stau la baza funcționării sistemului de management. Modulele de Adăugare, Încărcare, respectiv
Overv iew, conțin coduri HTML care cr ează tabele și diferite elemente specifice limbajului.
3.5.4.1 Adăugare
Fișierul Adăugare conține coduri HTML și instrucțiuni pentru crearea formu larului de
adăugare, respectiv actualizare a elementelor din baza de date și pe website.
<?php
require './Controller/ControlareCafea.php';
//Creare obiect nou de tip controlareCafea .
$controlareCafea = new ControlareCafea();
36
$title = "Adaugă o cafea nou ă";
//În cazul în care utilizatorul dorește o actualizare a unui obiect de tip cafea,
//atunci se v a executa acest set de instrucțiuni.
if(isset($_GET["update"]))
{
$cafea = $controlareCafea ->PrimeșteCafeaDupă Id($_GET["update"]);
//Creare for mular care permite utilizatorului să comunice cu interfața CMS
$continut ="<form action='' method='post'>
<fieldset>
<legend>Adaugă o cafea nouă</legend>
<label for='nume'>Nume: </label>
<input type='text' class='inputField' name='txtNume' value='$cafea ->nume' /><br/>
<label for='tip'>Tip: </label>
<select class='inputField' name='ddlTip'>
<option value='%'>Toate</option>"
.$controlareCafea -> CreareOptiuneValori ($controlareCafea ->Primest eTipCafea()).
"</select><br/>
<label for='pret'>Preț: </label>
<input type='text' class='inputField' name='txtPret' value='$cafea ->pret'/><br/>
<label for='gen'>Gen: </label>
<input type='text' class='inputField' n ame='txtGen' value='$cafea ->gen' /><br/>
<label for='tara'>Țara: </label>
<input type='text' class='inputField' name='txtTara' value='$cafea ->tara' /><br/>
<label for='imagine'>Imagine: </label>
<select class='inputField' name='ddlImagine'>"
.$controlareCafea ->PrimesteImagini().
"</select></br>
<label for='despre'>Descriere: </label>
<textarea cols='70' rows='12' name='txtDespre'>$cafea ->despre</textarea></br>
<input type='submit' v alue='Confirmă'>
</fieldset>
</form>";
}
//În cazul în care dorim să creăm un obiect nou, atunci se v a executa acest set
//de instrucțiuni
else
{
$conț inut="<form action='' method='post'>
<fieldset>
<legend>Adaugă o cafea nouă</legend >
<label for='name'>Nume: </label>
<input type='text' class='inputField' name='txtName' /><br/>
37
<label for='tip'>Tip: </label>
<select class='inputField' name='ddlTip'>
<option value='%'>Toate</option>"
.$controlareCafea -> CreareOpț iuneValori ($controlareCafea ->Primeș teTipCafea()).
"</select><br/>
<label for='pret'>Preț: </label>
<input type='text' class='inputField' name='txtPret' /><br/>
<label for='gen'>Gen: </label>
<input type='text' class='inputField' name='txtGen' /><br/>
<label for='tara'>Țara: </label>
<input type='text' class='inputField' name='txtTara' /><br/>
<label for='imagine'>Imagine: </label>
<select class='inputFi eld' name='ddlImagine'>"
.$controlareCafea -> Primeș teImagini().
"</select></br>
<label for='despre'>Descriere: </label>
<textarea cols='70' rows='12' name='txtDespre'></textarea></br>
<input type='submit' value='Co nfirmă'>
</fieldset>
</form>";
}
//Actualizare obiect existent
if(isset($_GET["update"]))
{
if(isset($_POST["txtNume"]))
{
$controlareCafea ->ActualizareCafea($_GET["update"]);
}
}
//Adăugare obiect nou
else
{
if(isset($_POST["t xtNume"]))
{
$controlareCafea ->InserareCafea();
}
}
include './Sablon.php';
?>
38
3.5.4.2 Încărcare
Fișierul de încărcare conține un mic formular care permite încărcarea imaginilor din diferite
locații, în destinația folderului de imag ini, pentru a putea fi utilizate în scopul adăugării acestora pe
website și ȋn baza de date [11].
<?php
$title = "Incarcă o imagine nouă";
$conținut= '<form action="" method="post" enctype="multipart/form -data">
<label for="file">Nume fișier: </label>
<input type="file" name="file" id="file"><br/>
<input type="submit" name="submit" value="Incarcă">
</form>';
//Verifică dacă tipul fișierului are un format valid
if (isset($_POST["submit"])) {
$TipFisier = $_FILES["file"]["type"];
if (($ TipFisier == "image/gif") ||
($TipFisier == "image/jpeg") ||
($TipFisier == "image/jpg") ||
($TipFisier == "image/png")) {
//Verifică dacă fișierul există
if (file_exists("Imagini/Cafea/" . $_FIL ES["file"]["name"])) {
echo "Fișierul există deja";
} else {
move_uploaded_file($_FILES["file"]["tmp_name"], "Imagini/Cafea/" .
$_FILES["file"]["name"]);
echo "Încărcat în " . "Imagini/Cafea/" . $_FILES["file"][" name"];
}
}
}
include './Sablon.php';
?>
3.5.4.3 Privire de ansamblu
Acest fișier conține funcții PHP care generează un tabel cu elementele existente pe website,
cu posibilitatea de actualizare, respectiv ștergere a elementelor din baza de d ate.
<?php
$title = "Administrare cafele";
include './Controller/ControlareCafea.php';
//Creare obiect de tip ControlareCafea
$controlareCafea = new ControlareCafea();
//Afișarea tabelului de cafele
$continut= $controlareCafea ->CreareTabelAnsamblu();
39
//Pentru ștergerea unui element din tabel
if(isset($_GET["delete"]))
{
$controlareCafea ->ȘtergereCafea($_GET["delete"]);
}
include './Sablon.php';
?>
3.5.4.4 Modul de funcționare
În continuare, o să prezint și o schemă bloc, pentru a i lustra modul prin care acest
management comunică cu celelalte elemente care compun un website.
Figura 17
După cum se poate observa în figura 17, management -ul de conținut include șabloanele
website -ului și articolel e de conținut din baza de date. Ult erior, datele sunt transmise spre
generatoarele de conținut HTML, CSS și JavaScript, toate acestea ajungând la webserver.
3.5.5 Formularul de contact
Formularul de contact este un spațiu destinat utilizatori lor cu scopul de a adresa un mesaj
sau diferite întrebări. Formularul website -ului v -a conține 6 câmpuri, acestea fiind spații de
introducere a numelui, prenumelui, numărului de telefon, e -mail-ul, localitatea și mesajul dorit. De
asemenea, pagina mai conține un spațiu în care este trecută o persoană d e contact.
<?php
$title = "Contact";
40
$conținut='
<p id = "contact" text align="center">
<br>
<b>Persoană de contact:</b><br>
<br>
<b>Nicevic Mirsad</b><br>
<br>
Software Developer<br>
<br>
Mobil: 0725173566<br>
<br>
E-mail: mirsadnicevic@yahoo .com<br>
</p>
<h2>Formular de contact</h2>
<form method="post" action="FormularDB.php">
Nume: <input type="text" name="nume">
<br><br>
Prenume: <input type="text" name="prenume">
<br><br>
Telefon: <input type="text" name="telefon">
<br><br>
E-mail: <input type="text" name="email">
<br><br>
Localitate: <input type="text" name="localitate">
<br><br>
Mesaj: <textarea name="mesaj" rows="5" cols="40"></textarea>
<br><br>
<input type="submit" name="submit" value="Trimite" >
</form>';
include 'Sablon.php';
?>
3.6 Realizarea design -ului
Pe lângă faptul că am realizat funcționarea website -ului, este necesar ă realizarea unui
design, a unui aspect, pentru a oferi un mod de utilizare atractiv și prietenos. Pentru a realiz a
design -ul website -ului, este necesară realizarea a două elemente importante : șablonul și stilurile.
3.6.1 Șablonul
Șablonul este elementul important ce stă la baza fiecărui website. Acesta, pentru a oferi o
poziționare corectă și un design plăcut, va t rebui să includă și un fișier de tip css, în care sunt
definite stilurile fiecărui element de pe site.
41
<!DOCTYPE html>
<html>
<head>
<meta http -equiv="Content -Type" content="text/html; charset=UTF -8">
<title><?php echo $title; ?></titl e>
<link rel="stylesheet" type="text/css" href="Stiluri/Stiluri.css" />
</head>
<body>
<div id="wrapper">
<div id="banner">
</div>
<nav id="naviga re">
<ul id="nav i">
<li><a href="index.php">Acasă</a></li>
<li><a href="Cafele.php">Cafele</a></li>
<li><a href="Despre.php">Despre</a></li>
<li><a href="contact.php">Contact</a></li>
<li><a href="Administrare.php">Administrare</a></li>
</ul>
</nav>
<div id="aria_de_continut ">
<?php echo $ conținut; ?>
</div>
<div id=" bara_laterala ">
</div>
<footer>
<p>Toate drepturile rezervate ©</p>
</footer>
</div>
</body>
</html>
3.6.2 Formatarea în CSS
CSS este un standard pentru formatarea elementelor unui document HTML . Stilurile se pot
atașa elementelor HTML prin intermediul unor fișiere externe sau în cadrul documentului, prin
elementul <style> și/sau atributul style [10].
//Definirea body -ului
body
{
font-family: lucida grande ,tahoma,verdana,arial,sans -serif;
background -color: #e9e9e9;
background -image: url(../Imagini/background.jpg);
}
//Definirea paragrafelor body -ului
42
body p
{
font-size: 0.8em;
line-height: 1.28;
}
//Definirea wrapper -ului
#wrapper
{
width: 1080px;
background -color: white;
margin: 0 auto;
padding: 10px;
border: 5px solid #dedede;
}
//Definirea banner -ului
#banner
{
background -image: url(../Imagini/ba ner_cafea.jpg);
background -repeat: no -repeat;
background -size: cover;
border: 5px solid #dedede;
height: 200px;
}
//Definirea ariei de conținut
#aria_de_continut
{
float: left;
width: 750px;
margin: 20px 0 20px 0;
paddi ng: 10px;
}
//Definirea banner -ului lateral
#bara_laterala
{
float: right;
width: 215px;
height: 300px;
margin: 20px 10px;
padding: 10px;
border: 2px solid #E3E3E3;
background -image: url(../Imagini/pentru_sidebar.jpg);
}
//Def inirea câmpului Persoana de contact
#contact
{
float: right;
width: 215px;
43
height: 300px;
margin: 20px 10px;
padding: 10px;
border: 2px solid #E3E3E3;
background -image: url(../Imagini/fundal_gri.png);
-moz-border -radius: 50p x;
-webkit -border -radius: 50px;
border -radius: 50px;
}
//Definirea subsolului
footer
{
clear: both;
width: auto;
height: 40px;
padding: 10px;
border: 3px solid #E3E3E3;
text-align: center;
color: #fff;
text-shadow: 0.1em 0.1em #333;
background -image: url(../Imagini/bar_background.png);
}
//Definirea elementelor de navigare
#navigare
{
height: 60px;
border: 3px solid #E3E3E3;
margin -top: 20px;
text-shadow: 0.1em 0.1em #333;
background -image: u rl(../Imagini/bar_background.png);
}
#nav i
{
list-style: none;
}
#nav i ul
{
margin: 0;
padding: 0;
width: auto;
display: none;
}
#nav i li
{
font-size: 24px;
float: left;
position: relative;
width: 180px;
44
height: 5 0px;
}
#nav i a:link, nav i a:active, nav i a:visited
{
display: block;
color: #fff;
text-decoration: none;
}
#nav i a:hover
{
color: lightblue;
}
//Definirea imaginii pe stânga
.imgStâ nga
{
float: left;
width: 200px;
height: 150 px;
margin: 0px 10px 10px 0;
padding: 10px;
-moz-border -radius: 50px;
-webkit -border -radius: 50px;
border -radius: 50px;
}
//Definirea imaginii pe dreapta
.imgDreapta
{
float: right;
width: 200px;
height: 175px;
margin: 0px 0 10px 10px;
padding: 10px;
-moz-border -radius: 50px;
-webkit -border -radius: 50px;
border -radius: 50px;
}
//Definirea hărții
.harta {
float: left;
width: 200px;
height: 150px;
margin: 0px 10px 10px 0;
padding: 10px;
}
//Definirea tabelelor
.TabelCafea
{
45
width: 750px;
height: 250px;
margin: 10px 10px 10px 0;
border: 3px solid #E3E3E3;
border -radius: 10px;
moz-border -radius: 10px;
}
.TabelCafea tr th, . TabelCafea tr td
{
text-align: left;
padding: 0px 5px 0 5px;
}
.TabelCafea img
{
padding: 0px 10px 10px 10px;
height: 150px;
width: 150px;
-moz-border -radius: 50px;
-webkit -border -radius: 50px;
border -radius: 50px;
}
//Definirea câmpului de introducere
.inputField
{
width: 280px;
padding: 4px;
}
//Definirea label -ului
label
{
float: left;
width: 100px;
font-weight: bold;
}
//Definirea tabelului de elemente
.AnsambluTabel
{
width: 700px;
}
.AnsambluTabel tr
{
padding: 4px;
}
.AnsambluT abel td
{
padding: 4px;
border: 1px solid #E3E3E3;
}
46
3.7 Prezentarea website -ului
3.7.1 Design
În figura 18 este prezentată interfața website -ului care este atractivă, modernă și simplă.
Sunt utilizate culori care să fie apropiate de ideea gene rală a website -ului. De asemenea, layout -ul
este bine structura t, iar paginile urmează același design pentru a urmări mai ușor informațiile [14].
Figura 18
3.7.2 Structură și mod de utilizare
Website -ul prezintă 3 zone : antet, conținut și subsol. În figura 19 este prezentat antetul, care
conține o bară de meniu orizontală, cu următoarele butoane : Acasă, Cafele, Despre, Contact,
Administrare. Numărul redus de butoane din meniu oferă automat un confort plăcut în navigarea
website -ului.
Figura 19
Figura 20
În figura 20 este subsolul website -ului, având un mesaj cu “Toate drepturile rezervate”.
47
Figura 21
Figura 21 reprezintă pagina „Cafele” , unde fiecare element, împreună cu poza și toate
caracteristicile proprii, sunt așezate separat, în c ontainere, tocmai pentru a delimita fiecare element
în parte și pentru a oferi o navigare mai ușoară. De asemenea, se pot sorta elementele după cele
două tipuri de cafele existente: Espresso și Latte.
Figura 22
În figura 22 am prezentat pagina „Conta ct” care este organizat pe două coloane : în stânga
este formularul de contact, iar în dreapta sunt detalii despre persoana de contact. În pagina de
„Admi nistrare”, se află 3 legături că tre diferite pagini. Acesta este management -ul de conținut. De
aici, pu tem adăuga, încărca, șterge și actualiza elemente.
48
Figura 23
În figura 23 este prezentat formularul de adăugare al unui element pe website. Este
încapsulat într -un chenar, care conține diferite câmpuri : Nume, Tip, Preț, Gen, Țara, Imagine și
Descri ere, și un buton de confirmare al datelor introduse.
Figura 24
În figura 24 este formularul de încărcare. Imaginile încărcate din acest câmp sunt trimise
într-un folder al proiectului, pentru a putea fi adăugată mai departe pe website și în baza de da te.
Figura 25
Figura 25 reprezintă pagina de „Administrare”, unde există un tabel care conține
elementele existente în baza de date și pe website, cu posibilitatea de actualizare, respectiv ștergere
al unui element.
49
3.8 Analiză comparativă într e metode de dezvoltare al website -urilor
De ce PHP și nu altceva? Există sute de moduri și limbi de a dezvolta un website. Eu am
ales PHP deoarece sunt familiarizat cu acest limbaj și mă ajută să dezvolt mai rapid lucrul.
Rezultatul și scopul folosirii ac estui limbaj este faptul că permite programarea orientată pe obiecte,
și faptul că paginile create sunt mult mai dinamice.
Așadar, eu am dezvoltat site -ul folosind conceptul de programare orientată pe obiecte,
deoarece este un stil de programare mai avans at, față de programarea procedurală. Acest concept
poate crea dificultăți, dar, după cum îi spune și denumirea, ideea este aceea de a ne focusa pe
realitate, pentru a reflecta lumea reală ȋn programarea noastră. Una dintre cele mai importante
caracteristic i pe care o oferă acest stil de programare e ste Moștenirea, care permite cr earea de clase
noi, care sunt extensii pentru clasele existente. Clasele extinse pot avea mai multe funcții și
variabile, și , de asemenea, pot să redefinească funcțiile și variabile le deja definite ȋn clasa de bază.
Motivul principal pentru care este utilă organizarea codului ȋn clase este evitarea
coliziunilor dintre funcții și variabile folosite de componente diferite. Țelul claselor PHP este să
împărtășească și reutilizeze codul dezvoltat de alți programatori. Dacă se dorește combinarea
claselor de la diferiți dezvoltatori, clasele pot avea funcții și variabile cu același nume, pentru că nu
vor exista conflicte din punctul de vedere al numelor.
Unii dezvoltatori se referă la func țiile globale și variabile ca și cod procedural. Procedura
este doar un nume diferit pentru funcție. Clasele de obicei au funcții, deci clasele au de asemenea,
cod procedural. Trecerea codului în OOP este simplu. Se declară o clasă apoi se plasează funcții le
globale și variabilele în interiorul declarației. Apoi, trebuie să schimbăm accesele la variabile și
funcții folosind operatorul $this ->. Acest operator este obiectul cu rent atunci când suntem în
interiorul unei funcții din clasă. De exemplu dacă avem o variabilă globală și o funcție, doar
schimbăm referința către ele cu operatorul $this ->.
Sunt, de asemenea , alte caracteristici ale OOP precum constructori și destructori,
modificatori de acces, funcții statice și variabile, polimorfismul, abstractizarea , încapsularea etc., în
timp ce, în programarea procedural ă nu avem aceste caracteristici speciale, precum cele ale
programării orientate pe obiecte. De altfel, doresc să prezint și două avantaje și dezavantaje, câte
una pentru fiecare, cele mai importante :
Avantajele :
În programarea procedurală, este ușoară scrierea codului pentru prima oară, și de
altfel, codul este de dimensiuni mai mici;
În cazul programării orientate pe obiecte, codul este ușor de î ntreținut și de
upgradat, codul este segregat dacă MV C este utilizat;
Dezavantaje:
În programarea procedurală, este dificilă menținerea și upgradarea codului pe
termen lung;
Învățarea acestui stil de programare necesită mult timp și multă practică pentru
perfecțiune;
Am pomenit despre MVC printre av antajele utilizării programării orientate pe obiecte.
Acest MVC, care înseamnă Model View Controller, este o arhitectură software, care este
utilizată ȋn ingineria software, în care principiile sale fundamentale sunt bazate pe ideea că
logica unei aplicați i trebuie separată de la prezentarea sa. Cu alte cuvinte, MVC este o cale
mai bună de a separa logica aplicației de la afișarea acestuia. Voi prezenta o schema bloc
pentru a ilustra modul în care funcționează MVC -ul:
50
Figura 26
În figura 26 am reprezentat principiul de separare a aplica ției în 3 părți principale, și anume :
Model, View și Controller. O explicație simplă și clară asupra acestei diagrame: Un utilizator
interacționează cu “View” prin a apăsa click pe un link sau validarea unui formular, controller -ul
manipulează datele introduse de utilizator, apoi transferă informația către model, modelul primește
informația și actualizează baza de date prin adăugarea datelor, după care partea de View verifică
starea modelului și așteaptă o nouă interacțiune cu utilizatorul.
Figura 27 reprezintă diferența dintre cele două stiluri de programare, programarea
procedurală și programarea orientată pe obiecte.
Figura 27
În concluzie, programarea procedural ă folose ște o listă de instrucțiuni pentru a spune
calculatorului pas cu pas ce să fa că, iar ȋn programarea orientată pe obiecte, toate problemele sunt
rezolvate folosind obiecte. Un obiect este o component ă a unui program care știe cum să efectueze
acțiuni specif ice și știe cum să interacționeze cu alte elemente din program, iar aceste obiecte sunt
unități le central e ale OOP.
O metodă ȋ n programarea orientată pe obiecte este ca o procedură ȋn programarea
procedural ă. Diferența este că metoda este o parte dintr -un obiect, și de asemenea, ȋn OOP, codul se
organizează folosind obiecte, iar mai apoi atribuim obiectelor proprietăți pentru a face diferite
lucruri.
51
CAPITOLUL 4
CONCLUZII
În această lucrare, m -am rezumat la aspecte la care eu le -am considera t mai importante.
Lucrarea aceasta poate fi dezvoltată în sensul că pot fi luați în considerare și alți factori ai
comparației cum ar fi: introducerea și dezvoltarea limbajului JavaScript, cu scopul introducerii unor
funcționalități în paginile web .
Scopul acestui proiect a fost atins, însă acest lucru nu înseamnă că dezvoltarea acestui
website trebuie să se oprească aici.
Din prezenta lucrare, am dobândit cunoștințe de programare și web design, și am pus în
aplicare studiile de peste ani în domeniul infor maticii.
52
BIBLIOGRAFIE
[1] https://ro.wikipedia.org/wiki/Internet
[2] Traian ANGHEL: ” Tot ce trebuie să stii despre Internet”, Editura Polirom, 2011
[3] http://www.oracle.com/technetwork/developer -tools/netbeans/overvi ew/index.html
[4] Mitchell SCOTT: ” Cum să creezi un site web”, Editura Teora, 2009
[5] Traian SURCEL: ” Tehnologii Web și baze de date”, Tribuna Economica, București, 2005
[6] http://php.net/manual/en/reserved.keywords.php
[7] Jeremy KEITH: ” HTML5 for w eb designers”, A Book Apart Publisher, 2010
[8] Larry ULLMAN: ” PHP și MySQL pentru site -uri web” Editura Teora, București, 2005
[9] http://www.w3schools.com/php/php_mysql_intro.asp
[10] Dan CEDERHOLM: ” CSS3 for web designers”, second edition, A Book Ap art Publisher,
2015
[11] Gabriel PREDA: ” Aplicaț ii cu baze de date”, Editura Matrixrom, 2014
[12] Robert SCHIFREEN: ” How to create Web sites and applications with HTML, CSS, Javascript,
PHP and MySQL”, Oakworth Business Publishing Ltd, UK, 2009
[13] Jo n DUCKETT: ” HTML and CSS: Design and Build Websites Paperback, Wiley Publisher,
2011
[14] Jason BEAIRD: ” Principii de web design atractiv”, 3d media comunications, 2011
53
DECLARAȚIE DE AUTENTICITATE
A
LUCRĂRII DE FINALIZARE A STUDIILOR
Titlul lucrări i CONCEPEREA DE PAGINI WEB BAZATE PE TEHNOLOGIILE
PHP ȘI MYSQL
Autorul lucrării NICEVIĆ MIRSAD
Lucrarea de finalizare a studiilor este elaborată în vederea susținerii
examenului de finalizare a studiilor organizat de către Facultatea de Inginerie
Electrică și Tehnologia Informației din cadrul Universi tății din Oradea, sesiunea Iulie
2016 a anului universitar 2015 – 2016.
Prin prezenta, subsemnatul NICEVIĆ, MIRSAD, CNP 1921020350067, declar
pe proprie răspundere că această lucrare a fost scrisă de că tre mine, fără nici un ajutor
neautorizat și că nici o parte a lucrării nu conține aplicații sau studii de caz publicate
de alți autori.
Declar, de asemenea, că în lucrare nu există idei, tabele, grafice, hărți sau alte
surse folosite fără respectarea le gii române și a convențiilor internaționale privind
drepturile de autor.
Oradea,
Data
20.06.2016 Semnătura
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT IOAN SLAVICI [632078] (ID: 632078)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
