Conceperea de Pagini Web Bazate pe Tehnologiile Php și Mysql

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

Nicević Mirsad

– 2016 –

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

Conceperea de pagini web bazate pe tehnologiile PHP și MySQL

CONDUCĂTOR ȘTIINȚIFIC

Prof. Dr. Ing. Mircea Vlăduțiu

ABSOLVENT

Nicević Mirsad

2016

UNIVERSITATEA DIN ORADEA

FACULTATEA de Inginerie Electrică Și Tehnologia Informației

DEPARTAMENTUL Calculatoare Și tehnologia informației

TEMA

Lucrare de Finalizare a studiilor a studentului NICEVIĆ MIRSAD

1). Tema lucrării de finalizare a studiilor: CONCEPEREA DE PAGINI WEB BAZATE PE TEHNOLOGIILE PHP SI MYSQL

2). Termenul pentru predarea lucrării: 07.06.2015

3). Elemente inițiale pentru elaborarea lucrării de finalizare a studiilor

Elemente de descriere si documentație aferentă tehnologiilor PHP si MySQL.

4). Conținutul lucrării de finalizare a studiilor:

Succint ce conține capitolul introductiv cu precizarea domeniului căreia îi aparține lucrarea – Dezvoltarea aplicațiilor web, partea teoretică acoperind problematica si partea aplicativă care se referă la … inclusiv rezultate experimentale pentru investigațiile aplicative.

5). Material grafic:

Schemă bloc si detaliu pentru părțiile proiectate, ordinograme, tabele si reprezentări grafice corespunzătoare rezultatelor experimentale.

6). Locul de documentare pentru elaborarea lucrării:

Biblioteca Universității de Vest din Timișoara, Biblioteca Politehnicii din Timișoara

7). Data emiterii temei 20 Octombrie 2015

Coordonator Științific

Prof. Dr. Ing. Mircea Vlăduțiu

REFERAT

PRIVIND LUCRAREA DE LICENȚĂ

A

ABSOLVENTULUI: Nicević Mirsad

DOMENIUL Calculatoare Și tehnologia informației

SPECIALIZAREA Tehnologia Informației

PROMOȚIA 2016

Titlul lucrării CONCEPEREA DE PAGINI WEB BAZATE PE TEHNOLOGIILE PHP SI MYSQL

Structura lucrării

Capitolul 1 – Introducere

Aspecte generale

Structura lucrării

Capitolul 2 – Elemente și tehnologiile utilizate

Aplicația NetBeans

Pachetul de programe XAMPP

Limbajul de programare PHP

Limbajul HTML

Standardul de formatare CSS

Capitolul 3 – Elaborarea proiectului

3.1 Descrierea, cerințe și specificații

3.2 Structura website-ului pe server-ul local

3.3 Utilizarea platformei de dezvoltare NetBeans

3.4 Realizarea bazei de date în PhpMyAdmin

3.5 Dezvoltarea website-ului

3.6 Realizarea design-ului

3.7 Prezentarea website-ului

3.8 Studiu comparativ al performanțelor

Concluzii

Bibliografie

Aprecieri asupra conținutului lucrării de LICENȚĂ (finalizare a studiilor), mod de abordare, complexitate, actualitate, deficiențe

Lucrarea se caracterizează printr-o construcție echilibrată, cu o bună poonderație între dezvoltarea noțiunilor teoretice si descrierea aplicativă.

Lucrarea este corect divizată pe capitole si paragrafe între care există o bună coerență.

Lucrarea conține o parte aplicativă consistentă, implicând soluții cu caracter de originalitate software.

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 tratează o problematică de strictă actualitate, luând in considerare importanța domeniului aplicațiilor de tip PHP și MySQL.

Structura lucrării aparține absolventului Nicević Mirsad, acesta alocând o poonderare de 25% fundamentării teoretice, restul fiind atribuit dezvoltării applicative. Cele două părți de esență ale lucrării sunt flancate de succinte capitol introductive și de concluzii, precum și de bibliografie.

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 informațiile din surse teoretice)

Sunt utilizate referințe bibliografice de marcă importante în domeniu, în număr de 19, totuși investigația de literatură de specialitate este limitată.

Sursele bibliografice sunt alese în mod corespunzător. Consider tematica dată ca fiind soluționată. Materialul grafic este executat în mod îngrijit, fiind complementar părții redactate.

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 dat 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țiilor web. Pe parcursul elaborării lucrării de licență, autorul a dovedit rigulozitate, consecvență și seriozitate la elaborarea lucrării de licență.

Redactarea lucrării respectă întocmai cerințele academice de redactare (părți, capitole, subcapitole, note de subsol și bibliografie).

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 Conducător Științific

Prof. Dr. Ing. Mircea Vlăduțiu

Cuprins

CAPITOLUL 1
INTRODUCERE

Aspecte Generale

INTERNET s. n. Rețea internațională de calculatoare, formată 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).

Acest cuvânt are doua sensuri, unul scris cu majusculă, iar cealalta 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 folosea Internetul in anul 2008, ca mai apoi, in anul 2014, numărul utilizatoriilor a urcat la aproximativ 40%, aproape jumătate din populația totală a planetei, iar numărul este in continuare creștere.

In prezent, Internetul este intreținut de multe firme comerciale, bazându-se pe specificații tehnice detaliate, cum ar fi „protocoale de comunicație”. Aceste protocoale descriu toate regulile de transmitere a datelor in rețeaua Internet. Protocoalele fundamentale sunt Internet Protocol (IP), Transmission Control Protocol (TCP), și User Datagram Protocol (UDP). Există doi termeni inrudiți cu Internet, respectiv internet: intranet si extranet. Intranet-ul este o rețea particulară, de regulă folosit in companiile mai mari, la care au acces numai angajații companiei respective. Intranet-ul este separat de Internet, principiile de funcționare fiind similare 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 in 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 in anul 1991, care avea adresa nxoc01.cern.ch. Incepând cu anul 2005, numărul site-urilor web era de aproximativ 75 milioane, ca mai apoi, in anul 2008, numărul site-urilor sa atinga 190 milioane. Este foarte probabil ca la jumătatea anului 2016, numărul site-urilor web să depașească un miliard.

Există multe aplicații Internet, cel mai popular fiind afișarea de informații in format text, imagini si chiar sunete, apoi comunicația in poștă electronică (e-mail), cu funcții precum transfer de fișiere si informații. De asemnea există si aplicații precum comunicarea video, sunet si text, televiziune prin Internet, comerț online, site-uri massmedia, jocuri in rețea, operațiuni bancare si efectuarea de plăți online, si multe altele. World Wide Web, prescurtat WWW, este de asemenea o aplicație integrativă, cu o interfață foarte atrăgatoare, simplu de folosit. WWW a fost inventat in anul 1993 de către Tim Berners-Lee. Pentru folosirea aplicațiilor din web enumerate, este necesar de un browser, de exemplu: Internet Explorer, Mozilla Firefox, Google Chrome, Apple Safari etc.

Cu ajutorul Internetului, avem acces la divertisment, de exemplu vizionarea filmelor, videoclipuri, cărți, muzică, documentație si multe altele. Un mare avantaj al Internetului este comerțul electronic, prin care furnizorii de servicii si produse își pot dezvolta afacerea prin punerea la dispoziția clientului o serie de produse, pe o platformă online, in care clientul poate vizualiza informații despre un produs, inclusiv preț, cumpărare online ș.a.m.d.

Gradul de răspândire a Internetului in intreaga lume este rapidă, accesul fiind simplu si ieftin, insă la fel de periculos poate fi, deoarece poate avea consecințe negative, pentru că nimeni nu garantează corectitudinea utilizatorului. Astfel, există programe dăunătoare create de rău-voitori, incepând de la spionarea activității unui utilizator, până la furturile din conturile bancare.

Rețeaua Internet si 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, unele dintre acestea fiind gratuite sau contra cost. Rețeaua World Wide Web este cea mai dezvoltată parte din internet, creată in 1989 in Europa.

Structura lucrării

În prezenta lucrare, s-a dorit elaborarea unui proiect care să ilustreze dinamicitatea paginiilor web create în limbajul PHP, respectiv sistemul de gestiune MySQL. Pentru elaborarea proiectului, s-au utilizat o serie de programe și au fost implementate diferite limbaje.

În primul capitol al lucrării, sunt prezentate, în mod succint, aspectele 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.

Ultimul capitol din această lucrare prezintă, pe larg, cu detalii precise, fiecare element utilizat, pentru a demonstra importanța și modul în care multe limbaje depind una de cealaltă.

CAPITOLUL 2

Elementele și tehnologiile utilizate

2.1 Aplicația NetBeans

Netbeans este o platformă de dezvoltare software, scrisă in Java, si permite programatoriilor să dezvolte aplicații conform unor componente software modulare, denumite module. Netbeans este de tip cross-platform si 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.

Această platformă suportă limbajul de programare PHP și are caracteristici precum:

Acoperirea codului

Depanarea codului cu xdebug

Unit testing cu PHPUnit si Selenium

Completarea codului

Marcaje de sintaxă, marcaje de eroare

Analiză semantică cu marcarea parametriilor si variabilelor neutilizate

Pentru proiectele in PHP, NetBeans oferă o versiune IDE (Integrated Development Environment) pentru a dezvolta pagini web PHP care cuprinde o varietate de limbaje de tip scripting si mark-up. Editorul PHP este integrat dinamic cu caracteristicile de editare HTML si CSS.

Cu Xdebug, putem depana codul PHP pentru a inspecta variabile locale, a seta breakpoint-uri, si de a evalua codul in timp real. Se poate naviga la declarații, tipuri si fișiere folosind scurtăturile si legăturile.

2.2 Pachetul de programe XAMPP

XAMPP este un pachet de programe gratuită, open source si cross-platform web server, care include Apache HTTP Server, baze de date MySQL si interpretoare pentru scripturi scrise in limbaje de programare PHP si Perl. Numele este un acronim pentru programele menționate, iar X inseamnă cross-platform. Acesta vine si cu alte module precum OpenSSL si phpMyAdmin.

Scopul acestui pachet este acela de a-l utiliza ca utilitar de dezvoltare, pentru a permite programatoriilor web testarea proiectelor proprii pe calculatoarele proprii, fară a avea nevoie de acces la internet. De asemenea, XAMPP asigură si suport pentru crearea si manipularea bazelor de date MySQL si 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 superioare î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 limbajul de programare server-side pana la sisteme de autentificare. Unele interfețe comune suporta Perl, Python, Tcl, și PHP. Modulele populare de autentificare includ mod_access, mod_auth, mod_digest și mod_auth_digest, succesorul mod_digest. Alte caracteristici includ Secure Sockets Layer și Transport Layer Security suport (mod_ssl), un modul de proxy (mod_proxy), un ReWriter URL (mod_rewrite), fișierele jurnal personalizat (mod_log_config), ș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 este un motor deschis detectare si 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 instalarea 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 de date de autentificare bazate 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 ii permit Apache sa ruleze in mod process-based, hybrid (process si 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 software de colaborare care vizează crearea unui cod sursă de calitate comercială, cu o implementare robustă, bogat în caracteristici și 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 bazelor de date relationale, produsa de MySQL AB si distribuit sub Licenta Publica Generala GNU. Este de asemenea o componenta importanta al LAMP, care inseamna Linux, Apache, MySQL, PHP, si este cel mai popular la ora actuala.

Este des folosit cu limbajul de programare PHP, dar cu mySQL se pot realiza aplicatii in orice limbaj. Exista scheme API ce permite scrierea aplicatiilor in limbaje de programare pentru accesarea bazelor de date mySQL, dupa cum urmeaza: C, C++, Java, PHP, Python, C# si multe altele, iar fiecare dintre acestea foloseste un tip specific API.

MySQL este o componenta integrata LAMP sau WAMP, care inseamna Linux/Windows-Apache-MySQL-PHP/Perl/Python. Este mai usor de invatat si folosit decat alte aplicatii de gestiune a bazelor de date, punem spre exemplu comanda de iesire: „exit” sau „quit”.

Pentru administrarea bazelor de date MySQL, se poate folosi fie modulul linie de comanda, sau descarcarea unei interfete grafice de pe internet al MySQL Administrator si MySQL Query Browser. Se poate de asemenea descarca aplicatia gratuita phpMyAdmin, scrisa in PHP, care este un alt instrument al bazelor de date. MySQL poate fi rulat pe platforme precum: Mac OS X, Linux, Solaris, Windows etc.

MySQL a fost creata de o companie suedeza, fondata de David Axmark, Allan Larsson si Michael Widenius. Prima versiune MySQL a aparut in 23 Mai 1995, si initial a fost creata pentru uz personal bazat pe limbajul de nivel scazut ISAM, in care creatorii l-au considerat inflexibil si prea lent. Ulterior au creat o noua interfata SQL, pastrand acelasi API ca si mSQL. Astfel, pastrand acelasi API cu sistemul mSQL, multi dezvolatori au putut folosi MySQL in loc de mSQL.

2.3 Limbajul de programare PHP

2.3.1 Noțiuni introductive

PHP este un limbaj de tip server-side, creat pentru dezvoltare web. La inceput, PHP insemna Personal Home Page, dar ulterior a devenit Hypertext Preprocessor, si este de asemenea folosit ca și limbaj de programare de uz general.

PHP poate fi implementat intr-un cod HTML, sau se poate combina cu framework-uri si 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 si execută codul PHP, care, bineințeles, poate fi o imagine, sau orice tip de dată. Deobicei, 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, insă mai poate fi si XML, JSON sau date precum imagini sau sunete.

Arhitectura LAMP este foarte popular in industria web, iar litera P este adesea folosit pentru a face referire la PHP, alături de Linux, Apache și MySQL. De asemenea, litera P mai poate face referire la Perl, Python. Pachete comune precum WAMP si MAMP sunt valabile si pentru Windows si OS X, cu prima litera făcând referire la sistemul de operare.

In anul 2007, peste 20 de milioane de domenii au avut găzduire web cu PHP instalat, ca peste 7 ani, in 2014, procentajul domeniilor cu PHP implementat a fost de peste 80%, si este cel mai utilizat soft de tip open source.

Codul PHP poate fi scris utilizand programul Netbeans, iar in cazul in care lucram pe un server virtual, fisierele care conțin codul programului PHP trebuie să aibă extensia .php. Pentru a executa codul creat in fisierele respective, se utilizeaza un browser, de exemplu Internet Explorer, iar mai apoi vom trece in bara de adrese locația dupa cum urmeaza: http://localhost:8080/index.php.

Exemplu de script php:

<?php

echo „Scriptul meu php”;

?>

In exemplul ilustrat mai sus, prima linie marcheaza inceputul unui script, ca mai apoi, pe a doua linie, prin cuvantul cheie echo, afișăm un mesaj pe ecran, și foarte important, sa nu uitam simbolul de punct si virgulă de la final (;). Ultima linie reprezintă finalul codului scris in PHP.

Exemplu de combinare a codului HTML cu cod PHP:

Un lucru foarte important in programarea web, este faptul ca putem integra codul PHP in interiorul codului HTML, astfel:

<html>

<body>

<p>Text scris in HTML</p>

<?php

echo “Text scris in PHP”;

?>

</body>

</html>

In PHP, la fel ca și în multe limbaje de programare, putem marca o secvență/linie de cod prin comentariu. Acest comentariu nu face altceva decât să ignore bucata de cod selectată in acest scop. Pentru un rând, vom folosi simbolul #, iar pentru mai multe rânduri, vom folosi la inceput /*, si la finalul codului vom marca cu */.

Cuvinte cheie rezervate

Cuvintele cheie in PHP au o semnificație imporantă. Unele se aseamană cu constante, altele cu funcții, insă aceste cuvinte nu sunt altceva decât construcții ale limbajului. Nu se vor putea utiliza nici o dată aceste cuvinte pentru a declara clase, funcții sau metode. Totuși, utilizarea lor in scopul denumirii variabilelor este acceptată, dar este recomandat a nu se utiliza, pentru a evita confuziile. Mai jos avem o listă a acestor cuvinte rezervate de PHP:

2.3.2 Elemente ale limbajului PHP utilizate

2.3.2.1 Variabile

Variabilele sunt containere folosite pentru păstrarea temporară a valorilor. Aceste valori pot fi numere, text sau date complexe. Variabilele reprezintă nucleul multor limbaje de programare, iar inț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 si obiecte, si NULL.

Numele variabilei, care poarta denumirea si de identificator, trebuie să înceapă cu simbolul de dolar, de exemplu $numevar, iar acest nume poate conține combinație de litere, numere si underline, de exemplu $numevar_1. Un lucru important in 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 si $Numevar sunt variabile diferite. Aceste variabile pot primi valori prin utilizarea operatorului de atribuire egal, de exemplu $numevar = 10. PHP nu este un limbaj strict cu privire la modul de tratare ale variabilelor, in sensul că nu este obligatoriu inițializarea sau declararea acestora, de altfel putem converti variabila de la un tip la altul.

Șirul de caractere este probabil cel mai important tip de variabilă. Acesta este o secvență de litere, spații, cifre, simboluri, incadrate 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 in 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 faptul că aceste valori nu sunt incadrate in 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 putem modifica valoarea unei constante după ce l-am inițializat. Pentru a crea o constantă, folosim funcția define(), in locul operatorului de atribuire, de exemplu define (‘NUME’, ‘valoare’);. De reținut 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 si duble, trebuie să ințelegem diferența intre ele. In PHP, valorile incadrate intre ghilimele simple vor fi tratate literal, iar cele incadrate in ghilimele duble vor fi interpretate.

Celelalte tipuri de variabile sunt cele booleene, care pot avea două valori, TRUE sau FALSE, mai sunt si tablourile si obiectele, la care se adaugă si 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ă si reguli privind disponibilitatea variabilelor. În general, valoarea care se atribuie unei variabile este prezentă doar in interiorul unei funcții sau scirptului in cadrul căruia se găsește. Așadar, in cazul in care avem o variabila $nume, cu valoarea Mirsad, intr-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ă, si valorile atribuite sunt independente una față de cealaltă. De asemenea, putem să definim variabilele $nume drepte variabilă globală intr-un script sau funcție, iar in acest caz, locatar.php si administrator.php vor fi conectate, existând o singură valoare pentru variabila $nume. Pe lângă variabilele globale, in PHP mai există câteva variabile predefinite care poartă denumirea de variabile superglobale. Acestea sunt prezente intotdeauna, iar valorile lor sunt disponibile oricând. De fapt, acestea sunt vectori care conțin alte variabile. Variabilele superglobale sunt $_GET, $_POST, $_COOKIE, $_FILES, $_SERVER, $_ENV, $_REQUEST, $_SESSION.

2.3.2.2 Structuri de control

Atunci cand scriem un script si programe in PHP, urmăm un set de reguli si instrucțiuni pe care le oferim limbajului de programare, acestea fiind defapt coduri sursă, ca mai apoi, interpretorul să prelucreze aceste coduri si să le transforme in cod mașină, după care sa ne ofere rezultatul codului aferent. In continuare, o scurtă prezentare al structurilor utilizate in PHP:

Structura IF

Această structură, des utilizată in PHP, reprezintă faptul că instrucțiunea se va executa, cu condiția ca valoarea expresiei evaluată este adevărată, in 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ă execuție, va afișa mesajul din interiorul if-ului, deoarece condiția pusă in paranteze este adevărată.

Structura IF – ELSE

Deoarece nu intotdeauna condiția este adevărată, PHP pune la dipoziția dezvoltatoriilor web o structură care sa execute o instrucțiune sau un set de instrucțiuni in cazul in 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 $text’<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’;

}

?>

In cazul de față, condiția if-ului este falsă, astfel programul va executa secvența de cod aflată in interiorul lui else.

Structura WHILE

Această structură este utilă in cazul in care dorim să executăm o serie de instrucțiuni intr-o buclă, in funcție de condiția specificată. Sintaxa acestei structuri este: while (condiție){cod de executat}. In exemplul de mai jos arătăm cum funcționează o astfel de buclă.

<?php

$contor = 0;

$num = 50;

while($contor < 10) {

$num–;

$contor++;

}

Echo (“Bucla s-a oprit la i = $contor si num = $num”);

?>

Structura FOREACH

Bucla Foreach funcționează doar pe tablouri, și este utilizat să itereze prin fiecare pereche de valori intr-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, pana va atinge ultimul element al tabloului. Mai jos, vom ilustra cum funcționează bucla:

<?php

$nume = (“Mirsad”, “Alexandru”, “Cosmin”, “Paul”);

Foreach ($nume as $valoare) {

Echo “$valoare <br>”

}

?>

2.3.2.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 baza unui script bine organizat si permit codului să fie ușor de folosit si 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ă terminarea execuției acesteia, funcția poate să returneze o valoare codului care a apelat-o.

Funcțiile sunt de două tipuri, definite si predefinite. Cele predefinite sunt implementate in limbaj, iar cele definite, sunt implementate de utilizator. Un exemplu de apelare a funcției print( ), căreia ii pasăm un șir de caractere “Salutare, lume!”. După execuția funcției, se va afișa șirul de caractere introdus intre 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 multe argumente, de exemplu functie($argument_1, $argument_2);.

Definirea propriei funții se face folosind intrucțiunea function, de exemplu:

Function functia_mea($argument_1, $argument_2) {

Codul de executat in cadrul funcției

}

Numele funcției se introduce imediat după cuvântul function, și este urmat de o pereche de paranteze, unde ii pasăm argumente, separate prin virgule. În cazul in 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 si 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 adunare($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 si 6, iar funcția, după efectuarea calculului, va returna 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ă in mai multe moduri. De exemplu return $numar_1 + $numar_2, return alta_functie($argument);

O variabilă declarată in 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ții. În cazul in care se lucrează la un proiect mai mare, acest lucru previne suprascrierea unei variabile atunci când se declară două variabile cu același nume in funcții diferite. Un exemplu:

<html>

<body>

<?php

Function functie( ) {

$variabila_mea = “Acesta este o variabila intr-o funtie!”;

}

Echo “variabila mea: $variabila_mea”;

?>

</body>

</html>

Valoarea variabilei $variabila_mea nu este afișată din cauza faptului că in afara funcției functie ( ) nu există o astfel de variabilă.

2.3.2.4 Vectori, clase și obiecte

Vectorii și obiectele sunt utilizate pentru a stoca si organiza date. PHP include un număr mare de funcții care permit să construim, modificăm si manipulăm vectorii. Structurile programării orientate pe obiecte, care se regăsesc in multe limbaje de programare, sunt prezente si in PHP.

Un vector reprezintă un tip special de variabilă, care permite stocarea unui numar nedeterminat de valori. Acești vectori sunt indexați, ceea ce inseamnă că fiecare intrare este format dintr-o cheie si o valoare. Cheia inseamnă poziția in cadrul indexului, care incepe de la 0, iar valoarea poate reprezenta orice, fie un număr, fie un șir de caractere.

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 vector nou si să il populăm cu mai multe elemente, iar operatorul pentru vector îl folosim atunci când dorim să construim un vector care să aibe, inițial, un singur element, sau când dorim să adaugăm un element intr-un vector deja existent. În următorul exemplu, demonstrăm crearea unui vector cu numele $curcubeu, care stochează toate culorile curcubeului:

$curcubeu = array(“rosu”, “portocaliu”, “galben”, “verde”, “albastru”, “indigo”, “violet”);

In următorul exemplu, vom arăta crearea unui vector in mod incremental, cu ajutorul operatorului pentru vectori.

$curcubeu[ ] = “rosu”;

$curcubeu[ ] = “portocaliu”;

$curcubeu[ ] = “galben”;

$curcubeu[ ] = “verde”;

$curcubeu[ ] = “albastru”;

$curcubeu[ ] = “indigo”;

$curcubeu[ ] = “violet”;

Ambele exemple creează 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 in momentul in care am creat vectorii, insă, totuși, PHP poate face acest lucru de unul singur.

Un obiect, este o instanță a unei clase, și poate conține lucruri precum variabile și funcții. Mecanismul prin care ii 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 de caracteristici si metode. De exemplu, clasa automobil, putem folosi 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 Focus Rosu, Dacia Logan Verde.

Scopul folosirii obiectelor și, in general, programarea orientate pe obiecte, este de a crea secțiuni, blocuri de cod reutilizabile. Clasele sunt bine structurate, independente si complete, și pot fi reutilizate de la o aplicație la alta. Crearea unui obiect este relativ simplu, iar acesta se face in felul următor:

class ClasaMea {

// codul meu

}

$obiect = new ClasaMea( );

Variabilele declarate in interiorul unui obiect poartă denumirea de proprietăți. Deobicei, aceste variabile se declară la inceputul clasei, iar aceste proprietăți pot fi valori, vectori sau chiar alte obiecte. Mai jos un exemplu prin care arătăm modul de declarare si afișare a proprietățiilor unui obiect:

<?php

Class MasinaMea {

var $culoare = “verde”;

var $marca = “Ford”;

var $model = “Focus”;

}

$masina = new MasinaMea( );

echo “Eu conduc un “.$masina -> marca.” “.$masina -> model.” “.$masina -> culoare;

De asemenea, există posibilitatea de a schimba priprietățiile unui obiect în clasa din care face parte.

<?php

Class MasinaMea {

var $culoare = “verde”;

var $marca = “Ford”;

var $model = “Focus”;

}

$masina = new MasinaMea( );

$masina -> culoare = “albastru”;

$masina -> marca = “Opel”;

$masina -> model = “Astra”;

echo “Eu conduc un “.$masina -> marca.” “.$masina -> model.” “.$masina -> culoare;

Acest exemplu ilustrează modul prin care putem schimba proprietățiile unui obiect, in funcție de nevoi si de cerințe, cu toate că aceste proprietăți au fost definite de la inceput.

Metodele nu sunt altceva decât funcții, care sunt definite in interiorul unei clase. Pentru a apela metoda obiectului din cadrul scriptului in care lucrăm, se va folosi operatorul ->. În cazul in care există variabile stocate în interiorul unui obiect, metoda este capabilă să le acceseze in cursul execuției sale.

<?php

class ClasaMea {

var $nume = “Mirsad”;

function Salut( ) {

echo “Salut! Numele meu este “.$this->nume;

}

}

$obiectulMeu = new ClasaMea( );

$obiectulMeu -> Salut ( );

?>

În acest exemplu, folosim variabila specială $this pentru a face referire la instant curentă a obiectului. De câte ori se va face referire la un obiect, se va folosi 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 argumente care să fie procesate imediat ce clasa este apelată prima dată.

Un principiu foarte important in programarea orientate pe obiecte este moștenirea. Moștenirea este procedeul prin care o clasă moștenește funcționalitatea clasei părinte. Clasa care moșteneș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(“Alexandru”);

$obiectulMeu = Salut ( );

?>

După cum se poate observa, liniile de cod 4-6 reprezintă un constructor, deoarece funcția are același nume ca si clasa. Liniile 11-13 definesc o altă clasă ClasaTa, care nu conține niciun cod. Așadar, a doua clasă ClasaTa moștenește funcționalitățiile clasei ClasaMea, prin folosirea cuvântului cheie extends.

Prin aceste simple exemple, am vrut să demonstrez ușurința si, totodată, conceptul de programare orientate pe obiecte, pentru a demonstra rapiditatea și reutilizarea codului al unei clase, fără a scrie aceași secvență de cod in alte clase.

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țiile – 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 a cincea revizuire finală ș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 continuarea predecesorii săi imediați HTML 4.01 si XHTML 1.1, HTML5 este 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 limbaj 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 (application 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 capabil 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 Vector 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 atribute, 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.

HTML5 introduce elemente și atribute ce reflectă consumul tipic pe site-urile moderne. Unele dintre ele sunt înlocuitori semantice 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 partea de jos a paginii web sau la ultimele linii de cod HTML), sau <audio> si <video> în loc de <object>. Unele elemente depreciate din HTML 4.01 au fost abandonat, 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.

2.5 Standardul de formatare CSS

Cascading Style Sheets (CSS) este un standard folosit pentru a descrie aspectul și formatarea unui document HTML. Deși cele mai multe ori folosit pentru a schimba stilul de pagini web si interfete 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, permite mai multor pagini HTML să împartă aceeași formatare prin specificarea unui CSS relevant într-un fișier .css separat și să reducă complexitatea și repetiția în conținutul structural, cum ar fi tabelele nesemnificative semantic, care au fost folosite pe scară largă pentru formatarea paginilor înainte ca un suport consistent de redare CSS să fi fost disponibil în toate browserele importante. CSS face posibilă separarea instrucțiunilor de prezentare 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.

Această separare de formatare și conținut face posibilă prezentarea aceleași pagină î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 lega 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 document (sau sute de documente) pot fi aplicate rapid și ușor, prin editarea câteva rânduri într-un singur fișier, mai degrabă decât printr-un proces laborios (și, prin urmare, costisitoare) de crawling peste fiecare linie de cod din fișier pentru schimbarea marcării.

Specificațiile CSS descrie un sistem de priorități pentru a determina ce stil se aplică dacă mai mult de o singură regulă se potrivește unui anumit element. In acest așa-numita cascadă, priorități (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 gratuit de validare CSS pentru documentelor CSS.

CAPITOLUL 3

Elaborarea proiectului

3.1 Descrierea, 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 utilizare 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, am 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ătoarele 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 structura 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 Controlare, care conține fișierul ControlareCafea.php, în care se află toate funcțiile principale care controlează website-ul

Folderul Entitati, care conține un fișier CoffeeEntitati.php, iar în acest fișier se află clasa care conține variabilele necesare.

Folderul Images, 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 CoffeeModel, care conține funcțiile de comunicare cu baza de date.

Folderul Styles, care conține fișierul stylesheet.css, pentru a defini desing-ul site-ului.

Împreună cu cele menționate mai sus, mai 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 website-ului

Despre.php, o pagină care conține o scurtă prezentare

Coffee.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 si formular

Management.php, o pagină în care se află legături către controller-ul CMS

CoffeeAdd.php, o pagină care conține un formular prin care se adaugă, respectiv actualizează elementele pe website

UploadImage.php, pagina care conține mecanismul de încărcare a pozelor pe serverul local

CoffeeOverview.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.

Template.php, care este un fișier important, deoarece realizează șablonul website-ului

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ă platforma ca fiind cea mai potrivită în realizarea unui astfel de proiect.

Imaginea 3.1 – Prezentare generala a platformei NetBeans

Imaginea de mai sus este o prezentare generala a aplicației NetBeans, înainte de a începe proiectarea website-ului.

3.3.1 Crearea proiectului

Pentru crearea unui nou proiect, se selectează din meniu File, apoi New Project…

Imaginea 3.2 – Creare a unui nou proiect

Imaginea 3.3 – Selectarea proiectului

După executarea comenzii New Project, avem opțiunea de a alege crearea proiectului după categorie, în cazul nostru PHP, după care selectăm opțiunea de PHP Application.

Imaginea 3.4 – Primul fișier index.php

După crearea proiectului, se va genera automat un fișier implicit „index.php”. Se poate observa faptul că aplicația prezintă diferite zone de lucru: Navigator, proiectele si fișierele, bara de 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 care conțin intrucțiunile pe care interpretorul PHP trebuie să le execute într-o anumită ordine. Crearea fișierelor se va face apasând clic dreapta pe denumirea proiectului, New și PHP File…

Imaginea 3.5 – Crearea unui fișier PHP

Imaginea 3.6 – Denumirea unui fișier PHP

În câmpul File Name se atribuie o denumire a fișierului, iar pentru finalizare se apasă butonul Finish.

Imaginea 3.7 – Fișierele PHP după crearea lor

Imaginea 3.8 – Bara de navigare printre fișiere

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.

Imaginea 3.9 – Prezentare generală phpMyAdmin

În imagine 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. Mai sunt prezentate diferite informații despre sistem, precum și o bară de meniu pentru a executa diferite comenzi.

Imaginea 3.10 – Creare bază de date

În momentul în care se creează baza de date, trebuie să atribuim un nume și o interclasare pentru recunoașterea diacriticelor.

Imaginea 3.11 – Creare tabel

După ce s-a creat baza de date, trebuie să definim și un tabel, care conține un nume și numărul de coloane.

Imaginea 3.12 – Realizarea coloanelor

Următoarea etapă este crearea 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.

Imaginea 3.13 – Coloanele tabelului

Acestea sunt coloanele tabelului. Se pot realiza multe operații în această secțiune, printre care operația de schimbare, ștergere și selectare multiplă a coloanelor.

Imaginea 3.14 – Elementele din tabel

Acesta este 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ățiilor

Entitățiile reprezintă variabilele de bază al proiectului. De acest fișier, depind multe alte fișiere ale proiectului.

<?php

//Aici se creează clasa aferentă

class EntitateCafea

{

public $id;

public $nume;

public $tip;

public $pret;

public $gen;

public $tara;

public $imagine;

public $despre;

//Generare constructor prin care pasăm fiecare element in 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->imagine = $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 incearcă stergerea unui obiect

function Confirmare(id)

{

// Contruirea alertei

var cn = confirm("Sunteti sigur ca doriti sa stergeti?");

// Dacă condiția este adevărată, șterge elementul si reîncarcă

if(cn)

window.location = "AnsambluCafea.php?delete=" + id;

}

</script>

<?php

require ("Model/BazeDeDate.php");

//Această clasă conține diferite funcții pentru website

class ControlareWeb {

function CreareTabelAnsamblu() {

$rezultat = "

<table class='TabelAnsamblu'>

<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>";

$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 = 'submit' 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);

$rezultat = "";

//Generează un tabel de cafele pentru fiecare entitate din array

foreach ($TablouCafea as $Cheie => $cafea) {

$rezultat = $rezultat.

"<table class = 'coffeeTable'>

<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>Preț: </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 intr-un dosar

function PrimesteImagini() {

//Selectare dosar

$handle = opendir("Imagini/Cafea/");

//Citește toate fișierele și stochează numele in array

while ($imagine = readdir($handle)) {

$imagini[] = $imagini;

}

closedir($handle);

//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, $imagine);

}

}

//Creează o valoare de tip <select><option> si returnează rezultatul

$rezultat = $this-> CreareOptiuneValori ($TablouImagine);

return $rezultat;

}

//Inserare obiect de tip cafea

function InserareCafea() {

$nume = $_POST["txtNume"];

$tip = $_POST["ddlTip"];

$pret = $_POST["txtPret"];

$gen = $_POST["txtGen"];

$tara = $_POST["txtTara"];

$imagine = $_POST["ddlImagine"];

$despre = $_POST["txtDespre"];

$cafea = new EntitateCafea(-1, $nume, $tip, $pret, $gen, $tara, $imagine, $despre);

$ModelCafea = new ModelCafea ();

$ModelCafea -> InserareCafea($cafea);

}

//Actualizează un obiect de tip cafea

function ActualizareCafea($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);

}

function PrimesteTipCafea() {

$ModelCafea = new ModelCafea ();

return $ModelCafea ->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. Însă mai întai, am creat un fișier separat care conține datele de autentificare în baza de date.

<?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ține 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ă intr-un tablou

function PrimesteTipCafea() {

require ('DateLogareBD.php');

//Deschide conexiune si 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]);

}

//Inchide conexiunea si returnează rezultatul

mysql_close();

return $tipuri;

}

//Primește obiectele din EntitateCafea de la baza de date si le returnează intr-un array

function PrimesteCafeaDupaTip ($tip) {

require (' DateLogareBD.php');

//Deschide conexiunea si selectează baza de date

mysql_connect($host, $user, $passwd) or die(mysql_error);

mysql_select_db($database);

$query = "SELECT * FROM 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];

//Creează obiecte de tip cafea si le stochează in array

$cafea = new EntitateCafea($id, $nume, $tip, $pret, $gen, $tara, $imagine, $despre);

array_push($TablouCafea, $cafea);

}

//Închide conexiunea si returnează rezultatul

mysql_close();

return $TablouCafea;

}

function PrimesteCafeaDupaId ($id) {

require ('DateLogareBD.php');

//Deschide conexiunea si selectează baza de date

mysql_connect($host, $user, $passwd) or die(mysql_error);

mysql_select_db($database);

$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];

//Creează cafea

$cafea = new EntitateCafea($id, $nume, $tip, $pret, $gen, $tara, $imagine, $despre);

}

//Închide conexiunea si returnează rezultatul

mysql_close();

return $cafea;

}

function InserareCafea (EntitateCafea $cafea) {

$query = sprintf("INSERT INTO cafele

(nume, tip, pret,gen,tara,imagine,despre)

VALUES

('%s','%s','%s','%s','%s','%s','%s')",

mysql_real_escape_string($cafea->nume),

mysql_real_escape_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/" . $cafea->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($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/" . $cafea->imagine),

mysql_real_escape_string($cafea->despre));

$this->PerformQuery($query);

}

function StergereCafea($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($query) or die(mysql_error());

mysql_close();

}

}

?>

3.5.4 Proiectarea CMS-ului

Un controller CMS este un sistem de management, proiectat pentru a oferi suport management-ului de informații si 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 si șterge conținut de pe o pagină web, fără intervenția webmaster-ului.

Pentru website-ul meu, am creat un astfel de controller, care permite adăugarea, modificarea si ștergerea conținutului de pe website, cât și din baza de date MySQL.

Schema bloc reprezintă modul de comunicare cu diferite module ale proiectului. Modulul Entitate conține variabilele principale, modulul Model conține funcțiile de conectare și interacționare 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 Overview, conțin coduri HTML care creează 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 formularului 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();

$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->PrimesteCafeaDupaId($_GET["update"]);

//Creare formular 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->PrimesteTipCafea()).

"</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' name='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' value='Confirmă'>

</fieldset>

</form>";

}

//În cazul în care dorim să creem un obiect nou, atunci se v-a executa acest set

//de instrucțiuni

else

{

$continut="<form action='' method='post'>

<fieldset>

<legend>Adaugă o cafea nouă</legend>

<label for='name'>Nume: </label>

<input type='text' class='inputField' name='txtName' /><br/>

<label for='tip'>Tip: </label>

<select class='inputField' name='ddlTip'>

<option value='%'>Toate</option>"

.$controlareCafea-> CreareOptiuneValori ($controlareCafea->PrimesteTipCafea()).

"</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='inputField' name='ddlImagine'>"

.$controlareCafea-> PrimesteImagini().

"</select></br>

<label for='despre'>Descriere: </label>

<textarea cols='70' rows='12' name='txtDespre'></textarea></br>

<input type='submit' value='Confirmă'>

</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["txtNume"]))

{

$controlareCafea->InserareCafea();

}

}

include './Template.php';

?>

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 imagini, pentru a putea fi utilizate în scopul adăugării acestora pe website și in baza de date.

<?php

$title = "Incarcă o imagine nouă";

$continut= '<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/" . $_FILES["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 './Template.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 date.

<?php

$title = "Administrare cafele";

include './Controller/ControlareCafea.php';

//Creare obiect de tip ControlareCafea

$controlareCafea = new ControlareCafea();

//Afișarea tabelului de cafele

$continut= $controlareCafea->CreareTabelAnsamblu();

//Pentru ștergerea unui element din tabel

if(isset($_GET["delete"]))

{

$controlareCafea->StergereCafea($_GET["delete"]);

}

include './Template.php';

?>

3.5.4.4 Modul de funcționare

În continuare, am să prezint și o schema bloc, pentru a ilustra modul prin care acest management comunică cu celelalte elemente care compun un website.

După cum se poate observa, management-ul de conținut include șabloanele website-ului și articolele de conținut din baza de date, mai apoi, datele sunt transmise spre generatoarele de conținut HTML, CSS si JavaScript, care, ulterior, toate aceste date ajung la webserver.

3.5.5 Formularul de contact

Formularul de contact este un spațiu destinat utilizatoriilor cu scopul de a adresa un mesaj sau diferite intrebă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ă de contact.

<?php

$title = "Contact";

$continut='

<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: [anonimizat]<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 'template.php';

?>

3.6 Realizarea design-ului

Pe lângă faptul că am realizat funcționarea website-ului, este necesar realizarea unui design, al unui aspect, pentru a oferi un mod de utilizare atractiv si prietenos. Pentru a realiza 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 trebui să includă și un fișier de tip css, în care sunt definite stilurile fiecărui element de pe site.

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title><?php echo $title; ?></title>

<link rel="stylesheet" type="text/css" href="Styles/Stylesheet.css" />

</head>

<body>

<div id="wrapper">

<div id="banner">

</div>

<nav id="navigation">

<ul id="nav">

<li><a href="index.php">Acasă</a></li>

<li><a href="Coffee.php">Cafele</a></li>

<li><a href="Despre.php">Despre</a></li>

<li><a href="contact.php">Contact</a></li>

<li><a href="Management.php">Administrare</a></li>

</ul>

</nav>

<div id="content_area">

<?php echo $continut; ?>

</div>

<div id="sidebar">

</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.

//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

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/baner_cafea.jpg);

background-repeat: no-repeat;

background-size: cover;

border: 5px solid #dedede;

height: 200px;

}

//Definirea ariei de conținut

#content_area

{

float: left;

width: 750px;

margin: 20px 0 20px 0;

padding: 10px;

}

//Definirea banner-ului lateral

#sidebar

{

float: right;

width: 215px;

height: 300px;

margin: 20px 10px;

padding: 10px;

border: 2px solid #E3E3E3;

background-image: url(../Imagini/pentru_sidebar.jpg);

}

//Definirea câmpului Persoana de contact

#contact

{

float: right;

width: 215px;

height: 300px;

margin: 20px 10px;

padding: 10px;

border: 2px solid #E3E3E3;

background-image: url(../Imagini/fundal_gri.png);

-moz-border-radius: 50px;

-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

#navigation

{

height: 60px;

border: 3px solid #E3E3E3;

margin-top: 20px;

text-shadow: 0.1em 0.1em #333;

background-image: url(../Imagini/bar_background.png);

}

#nav

{

list-style: none;

}

#nav ul

{

margin: 0;

padding: 0;

width: auto;

display: none;

}

#nav li

{

font-size: 24px;

float: left;

position: relative;

width: 180px;

height: 50px;

}

#nav a:link, nav a:active, nav a:visited

{

display: block;

color: #fff;

text-decoration: none;

}

#nav a:hover

{

color: lightblue;

}

//Definirea imaginii pe stânga

.imgLeft

{

float: left;

width: 200px;

height: 150px;

margin: 0px 10px 10px 0;

padding: 10px;

-moz-border-radius: 50px;

-webkit-border-radius: 50px;

border-radius: 50px;

}

//Definirea imaginii pe dreapta

.imgRight

{

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

.map {

float: left;

width: 200px;

height: 150px;

margin: 0px 10px 10px 0;

padding: 10px;

}

//Definirea tabelelor

.coffeeTable

{

width: 750px;

height: 250px;

margin: 10px 10px 10px 0;

border: 3px solid #E3E3E3;

border-radius: 10px;

moz-border-radius: 10px;

}

.coffeeTable tr th, .coffeeTable tr td

{

text-align: left;

padding: 0px 5px 0 5px;

}

.coffeeTable 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

.overViewTable

{

width: 700px;

}

.overViewTable tr

{

padding: 4px;

}

.overViewTable td

{

padding: 4px;

border: 1px solid #E3E3E3;

}

3.7 Prezentarea website-ului

3.7.1 Design

Interfața website-ului este atractivă, modernă și simplă. Sunt utilizate culori care să fie apropiate de ideea generală a website-ului. De asemenea, layout-ul este bine structura, iar paginile urmează același design pentru a urmări mai ușor informațiile.

Imaginea 3.15 – Prezentare generala a website-ului

3.7.2 Structură și mod de utilizare

Website-ul prezintă 3 zone: antet, conținut si subsol. În antet se află o bară de meniu orizontală, care conține butoanele: Acasă, Cafele, Despre, Contact, Administrare. Numărul redus de butoane din meniu oferă automat un confort plăcut în navigarea website-ului.

Imaginea 3.16 – Antetul site-ului

Imaginea 3.17 – Subsolul site-ului

Subsolul paginii este simplă, având un mesaj cu “Toate drepturile rezervate”.

Imaginea 3.18 – Pagina de cafele

În pagina „Cafele”, sunt așezate în mod egal, toate elementele care se află în baza de date. Fiecare element, împreuna cu poza și toate caracteristiciile proprii, sunt așezate separat, în containere, 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.

Imaginea 3.19 – Formularul de contact

Pagina „Contact” este organizat pe două coloane: în stânga este formularul de contact, iar în dreapta sunt detalii despre persoana de contact.În pagina „Administrare”, se află 3 legături catre diferite pagini. Acesta este management-ul de conținut. De aici, putem adăuga, încărca, șterge și actualiza elemente.

Imaginea 3.20 – Adăugare element nou

Acesta este 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 Descriere, și un buton de confirmare al datelor introduse.

Imaginea 3.21 – Încărcarea unui fișier

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 date.

Imaginea 3.22 – Elemente existente pe website

În pagina de „Administrare”, există un tabel care conține elementele existente în baza de date și pe website, cu posibilitatea de actualizare, respectiv ștergere al unui element.

3.8 Studiu comparativ al performanțelor

De ce PHP și nu altceva? Există sute de moduri si limbi de a dezvolta un website. Eu am ales PHP deoarece sunt familiarizat cu acest limbaj si mă ajută să dezvolt mai rapid lucrul. Rezultatul și scopul folosirii acestui 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 avansată 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ă in programarea noastră. Una dintre cele mai importante caracteristici pe care o oferă acest stil de programare este Moștenirea, care permite creearea de clase noi, care sunt extensii pentru clasele existente. Clasele extinse pot avea mai multe funcții si variabile, și de asemenea, pot să redefinească funcțiile si variabilele deja definite in clasa de bază.

Motivul principal pentru care este utilă organizarea codului in clase este evitarea coliziunilor dintre funcții si 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 si 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 deobicei au funcții, deci clasele au de asemenea, cod procedural. Trecerea codului în OOP este simplu. Se declară o clasă apoi se plasează funcțiile globale si variabilele în interiorul declarației. Apoi, trebuie să schimbăm accesele la variabile si funcții folosind operatorul $this->. Acest operator inseamă obiectul current atunci când suntem în interiorul unei funcții din clasă. De exemplu dacă avem o variabilă globală si o funcție, doar schimbăm referința către ele cu operatorul $this->.

Sunt de asemenea alte caracteristici ale OOP precum constructori si destructori, modificatori de acces, funcții statice si 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 si 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 intreținut si de upgradat, codul este segregat dacă MVC 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 si multă practică pentru perfecțiune;

Am pomenit despre MVC printre avantajele utilizării programării orientate pe obiecte. Acest MVC, care înseamnă Model View Controller, este o arhitectură software, care este utilizată in ingineria software, în care principiile sale fundamentale este bazată pe ideea că logica unei aplicații trebuie separate 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:

Principiul este de a separa aplicația în 3 părți principale, și anume: Model, View și Controller. O explicație simplă si 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.

Mai departe, voi arăta un exemplu cu diferența dintre cele două stiluri de programare, programarea procedurală si programarea orientată pe obiecte.

În concluzie, programarea procedural folosește o listă de instrucțiuni pentru a spune calculatorului pas cu pas ce să facă, iar in programarea orientate pe obiecte, toate problemele sunt rezolvate folosind obiecte. Un obiect este o component a unui program care știe cum să efectueze acțiuni specific și știe cum să interacționeze cu alte elemente din program, iar aceste obiecte sunt unitățiile central ale OOP.

O metodă in programarea orientate pe obiecte este ca o procedură in programarea procedural. Diferența este că metoda este o parte dintr-un obiect, și de asemenea, in OOP, codul se organizează folosind obiecte, iar mai apoi atribuim obiectelor proprietăți pentru a face diferite lucruri.

Concluzii

de completat…

BIBLIOGRAFIE

[1] https://ro.wikipedia.org/wiki/Internet

[2] http://www.internetworldstats.com/stats.htm

[3] GROSSECK , Gabriela, 2014, INTERNET – istoric, evoluție, perspective, Facultatea de Sociologie și Psihologie Universitatea de Vest din Timișoara

[4] ANGHEL, Traian , 2011, Tot ce trebuie sa stii despre Internet, Ed Polirom

[5] GRALLA Preston, Ilustr. TROLLER Michael, 2003, Cum functioneaza internetul, Ed ALL

[6] SCOTT, Mitchell, 2009, Cum sa creezi un site web, editura Teora

[7] SURCEL, T., 2005, Tehnologii Web si baze de date, Tribuna Economica, București

[8] http://php.net/manual/ro/reserved.keywords.php

[9] CIOCÂRLIE, H; 2013, Universul limbajelor de programare. Ed. A 2-a rev. – Timișoara: Orizonturi Universitare

[10] ULLMAN, Larry, 2005, PHP și MySQL pentru site-uri web, Editura Teora, București 

[11] SIMION, I., 2007, Proiectarea paginilor Web, Editura Teora, București.

[12] ANGHEL, Traian, 2005, Programarea in PHP, Ghid practic, Ed Polirom

[13] KEITH, Jeremy, 2010, HTML5 for web designers, A Book Apart Publisher

[14] SCHIFREEN, Robert, 2009, How to create Web sites and applications with HTML, CSS, Javascript, PHP and MySQL, Oakworth Business Publishing Ltd, UK

[15] PREDA, G., 2014, Aplicatii cu baze de date, Editura Matrixrom 

[16] VELICANU, M., 2009, Sisteme de baze de date evoluate, Editura ASE, București

[17] DUCKETT, Jon, 2011, HTML and CSS: Design and Build Websites Paperback ,  Wiley Publisher

[18] CEDERHOLM, Dan, 2015, CSS3 for web designers, second edition, A Book Apart Publisher

[19] BEAIRD, Jason, 2011, Principii de web design atractiv, 3d media communications

DECLARAȚIE DE AUTENTICITATE

A

LUCRĂRII DE FINALIZARE A STUDIILOR

Titlul lucrării CONCEPEREA DE PAGINI WEB BAZATE PE TEHNOLOGIILE PHP ȘI MYSQL

Autorul lucrării NICEVIC 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 Universității din Oradea, sesiunea Iuliu 2016 a anului universitar 2015 – 2016.

Prin prezenta, subsemnatul (nume, prenume, CNP) NICEVIC, MIRSAD, CNP [anonimizat], 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 legii române Și a convențiilor internaționale privind drepturile de autor.

Oradea,

Data Semnătura

Similar Posts