World Wide Web

CUPRINS

1.INTRODUCERE

2.WORLD WIDE WEB

2.1. Funcționare WWW

2.2 Hiperlinkuri

3.LIMBAJE FOLOSITE

3.1.PHP

3.1.1.Scrierea scriptului PHP

3.1.2. Executarea unui script PHP

3.1.3. Executarea unui fișier PHP

3.1.4. Variabile PHP

3.1.5. Variabile Globale PHP

3.1.6. Operatori PHP

3.1.7. Instrucțiuni Conditionale PHP

3.1.8. Funcții și Proceduri PHP

3.2.HTML

3.3.CSS

3.4.JAVASCRIPT

3.4.1. Sintaxă JavaScript

3.5.AJAX

3.6.JSON

3.6.1. Sintaxă JSON

3.7. JQUERY

3.7.1. EASYUI

4.NOȚIUNI DEPRE BAZELE DE DATE

4.1.MySQL

4.1.1. Proiectarea unei baze de date

4.2.APACHE

5.PREZENTAREA APLICAȚIEI

Bibliografie

1.INTRODUCERE

Dorința de monitorizare a progresului și de a avea o vedere de ansamblu asupra unei afaceri este dorința oricărui deținător de companie, fie ea una imobiliară sau farmaceutică, acest lucru realizându-se de-a lungul timpului, dar într-o manieră mult prea particulară și cu un folos mult prea concret.

Astfel, am decis să realizez această aplicație software care oferă detinatoriilor de companii ce și-au dorit dintotdeauna și anume realizarea vânzărilor într-un format electronic, lipsindu-se de costurile aferente documentelor în format analog, dar mai mult de atât, aplicația oferă monitorizarea progresului angajaților și a produselor vândute de către aceștia, putând să genereze rapoate legate de progres.

Acest sistem software va reprezenta o aplicație pentru monitorizarea vânzărilor realizate de către angajații unei firme, care se ocupă decomercializarea de diferite produse,dar și pentru calcularea comisioanelor aferente acestor vânzări.

Aplicația are utilitate de nivel general, acest lucru reprezentând un beneficiu și anume, ea foate fi folosită de către oricine deține o întreprindere,mică sau mare, care are nevoie de o monitorizare în timp real a produselor vândute și a eficienței angajaților, în funcție de nivelul fiecărui angajat în parte.

Aplicația nu este limitată în ceea ce privește gama de produse pe care poate să le administreze, din acest motiv poate fi folosită într-un spectru variat de domenii.

Deoarece aplicația dorește să monitorizeze și progresul angajaților, userii cu un nivel superior pot furniza în orice moment al lunii(nu doar la sfârșit de luna, cum se obișnuiește) un raport în funcție de câte produse au fost vândute de către aceștia.Pe lângă acest raport, userii cu privilegii mai mari pot seta targeturi pentru anumite produse sau anumiți angajați, iar acestea sunt actualizare în timp real și oferă companiei o imagine de ansamblu asupra productivității în orice moment dat.

Ceea ce aduce inovator această aplicație este portabilitatea prin care se caracterizează, ea nefiind adresată doar unei anumite categorii de companii ci putând fi utilizată la fel de bine de către o companie farmaceutică, spre exemplu, cât și de către una care furnizează mobilă.

2.WORLD WIDE WEB

Termenul World Wide Web abreviat WWW(W3), denumit în variantă scurtă web („pânza de păianjen”), reprezintă totalitatea site-urilor și a documentelor de tipul hipertext legate între ele, care pot fi accesate prin rețeaua de Internet.Termenul „web”, folosit în abrevierea WWW are ca rol ilustrarea modului în care sunt „legate” site-urile între ele și anume sub forma unei pânze de păianjen, astfel că un utilizator aflat pe o pagină poate deschide o altă pagină legată prin hiperlink, paginile interconectându-se și formând o rețea.

Tim Berners-Lee, fost angajat la CERN, este considerat că fiind inventatorul internetului din ziua de azi, astfel că pe data de 12 martie 1989 a scris o propunere pentru ceea ce va urma să devină World Web Wide.Inițial, propunea avea în vedere doar sistemul de comunicații de la CERN, dar Berners-Lee a realizat faptul că acest concept poate fi implementat și la scară mai mare.

Termenii Internet și World Wide Web sunt folosiți frecvent astăzi, în același context fără a se face mare diferență între ei, cu toate că sunt două lucruri separate.Internetul este o rețea globală de calculatoare interconectate, pe când World Wide Web este unul din serviciile care rulează pe Internet. World Wide Web este o colecție de documente legate prin hiperlink și URL accesate de browser-ul web, din server-ul web unde documentul este ținut. Astfel, pentru a vizita un site trebuie să se introducă adresă URL a site-ului sau să se acceseze hiperlinkul care leagă acea pagină dorită.

Fig. 2.1. Reprezentare Web

sursa:http://en.wikipedia.org/wiki/File:WorldWideWebAroundWikipedia.png

2.1. Funcționare WWW

Pentru că serviciul web să funcționeze, Berners-Lee împreună cu echipă sa au trebuit să realizeze componentele necesare serviciului web și anume:

protocolul de intercomunicații HTTP (Hypertext Transfer Protocol) care conține stiva de protocoale OSI, prin care serverul web comunică cu browserul clientului;

limbajul HTML(Hypertext Markup Language), standard de definire și prezentare a paginilor web;

URI (Uniform Resource Identifier), sistem universal de identificare a resurselor din web, folosit pentru a identifica și regăsi paginile web;

Acestea sunt cele 3 standarde care au fost definite inițial, dar ele sunt urmate de CSS(Cascading Style Sheets), JavaScript și de protocolul de transfer HTTPS(Hypertext Transfer Protocol Secure).

Pentru a arata cum functionează un browser, când accesează o pagină vom considera următorul exemplu de URL ”http://paginahtml.org/www”. Pentru început, browersul transformă URL-ul site-ului și anume ”paginahtml.org” într-o adresă de protocol a internetului, folosind DNS(Domain Name System). Acesta analizează și returnează adresă IP(Internet Protocol) care o să fie de forma 192.168.2.10. În momentul acesta, browserul trimite o solicitare HTTP prin intermediul internetului către computerul de la acea adresă. Atunci când se trimite solicitarea la acea adresă este specificat portul TCP, care esterecunoscut de către serviciul HTTP, pentru a nu se confunda solicitarea trimisă cu alte protocoale pe care rețeaua ar putea să le mai utilizeze.Protocolul HTTP folosește în mod normal numărul de port 80. În cele din urmă cererea poate să fie ca cea din exemplul următor:

GET /www/1.1

Host: paginahtml.org

Fig. 2.1.1

Atunci, calculatorul trimite web-serverului cererea și asteaptă răspunsul la portul 80. Dacă totul este în regulă, atunci serverul trimite un răspuns HTTP înapoi la browser, indicând succesul cererii:

HTTP/1.0 200 OK

Content-Type: text/html; charset=UTF-8

Fig. 2.1.2

După acest pas, urmează trimiterea conținutului acelei pagini, iar acesta este redat sub forma limbajului HTML, dar pe care browserul îl interpretează și îl afișează în modul dorit de către realizatorul site-ului.Fără interpretarea browserului, utilizatorul ar avea afișat în fața monitorului o înșiruire de taguri precum <html><body></body></html> pe care acesta ar trebui să le compileze.

Desigur, aceste cereri funcționează doar atunci când avem de a face cu un site care conține doar text, nu și poze, imagini, videoclipuri sau scripturi, care afectează modul în care se văd elementele site-ului. Pentru acestea, browserul va face cereri adiționale corespunzătoare cu tipul de media cu care trebuie să opereze.

2.2 Hiperlinkuri

Pentru a comunica cu alte pagini din același site sau din diferite site-uri, un site se folosește de hiperlinkuri.De asemenea, cu ajutorul hiperlinkurilor se poate realiza conectarea la documentele descărcabile, documentele sursă și alte resurse web.

Un hiperlink este compus din două elemente, care îl definesc și anume: o ancoră și o destinație.

Ancora care definește hiperlinkul este deobicei un buton, dar poate să fie la fel bine și un text sau o poză.Ancorele care sunt text, sunt folosite deobicei pentru a marca, în textul scris, o referință către altă pagină care ar putea să conțină mai multe detalii legate de cuvântul ancoră.

În codul HTML un hiperlink arată astfel:

<a href=”http://paginahtml.org/www/poze”>Click aici sa descarci poza</a>

Fig. 2.2.1

În Fig.2.2.1, ancora este textul „Click aici să descarci poza”, iar destinația este data de hiperlinkul „http://paginahtml.org/www/poze”, astfel că în momentul în care se va da click pe text, o cerere se va trimite la serverul web, aceasta se va analiza și se vor trimite informațiile aflate pe pagina „paginahtml.org/www/poze”, care în cazul de față va face parte tot din site-ul inițial, dar ar putea să fie un hiperlink către un alt site.

În modul acesta de interconectare, se realizează web-ul de site-uri legate între ele prin hiperlinkuri,îmbrăcând imaginea unei pânze.

Cu toate acestea, în de-a lungul timpului multe hiperlinkuri dispar, sau sunt realocate sau le esteschimbat conținutul, astfel că aceste linkuti devin învechite sau se transformă în așa numitele”linkuri moarte”. Deci, se poate spune că hiperlinkurile sunt de scurtă durată, iar din acest motiv se fac eforturi pentru a se arhiva site-urile, pentru a se ține o evidență a acestora. Cel mai mare efort este depus de către Arhiva de Internet(Internet Archive), care este o bibliotecă virtuală non-profit care stochează site-uri încă din anul 1996.

3.LIMBAJE FOLOSITE

În realizarea acestei aplicații, am folosit o serie de limbaje de programare și anume Php, HTML, CSS, JavaScript, Ajax, Json și JQuery, care vor fi prezentate în detaliu în paginile ce urmează.

3.1.Php

Php este un limbaj de programare server-side, creat în scopul dezvoltării aplicațiilor web, dar poate fi utilizat, deasemenea și în alte scopuri generale de programare.

Numele limbajului este un acronim, inițial semnificând”Personal Home Page”, dar acum este cunoscut sub numele de PHP:Hypertext Procesor, care este un acronim recursiv, deoarece PHP din definiția acronimului poate fi explicitat și el la fel, continuîndu-se la infinit.

PHP este un limbaj de programare web foarte popular, datorită sintaxei destul de simple, care poate fi învățată destul de ușor, dar și datorită rapidității de execuțiea codului.Din aceste motive, în luna Ianuarie 2013, aproximativ 240 de milioane de site-uri web și 2.1 milioane de servere utilizau PHP.

Un alt avantaj al limbajului este acela că poate fi combinat cu ușurință cu codul HTML, din paginile site-urilor sau poate fi folosit în combinație cu diferite framework-uri și engine-uri.

Scripturile de PHP sunt de dimensiuni variabile. Acestea pot fi uneori de doar câteva linii de cod, iar alteori ele pot ajunge la câteva mii de linii.Indiferent cât de mare este un script, acesta poate fi editat și modificat prin folosirea unui editor de text simplu precum Notepad, deoarece compilarea este executată de către server, editorul neavând nicio obligație în acest sens.

După cum am spus, se poate folosi orice editor de text pentru a creea sau modifica un script de PHP, cu toate acestea există diferite editoare preferate de către programatori, care oferă anumite beneficii. În general, pentru scripturi mai scurte, de maximum 20 linii de cod, este recomandată folosirea Notepad-ului, deoarece este rapid și folosește puține resurse. În caz contar, atunci când se dorește crearea unui script mai complex este bine să se folosească un editor de texte care oferă anumite beneficii. Din categoria de editoare care oferă beneficii creeării de scripturi PHP, face

parte editorul Sublime Text 2 Editor, care pus la dispoziția publicului gratuit. Acesta oferă un set de beneficii cum ar fi:

folosirea de culori diferite pentru anumite funcții specifice limbajului Php sau al variabilelor;

oferă indentare, pentru a avea o imagine de ansamblu mai bună a scriptului la care lucrați;

oferă posibilitatea descriderii unui folder care conține mai multe scripturi, de unde puteți accesa mai rapid un anume script, care ar interacționa cu scriptul la care lucrați momentan;

fiind creeat pentru limbajul PHP, editorul recunoaște anumite funcții, oferind auto-complete, pentru ele nemaifiind nevoie să scrieți toată funcția; acest aspecteării de scripturi PHP, face

parte editorul Sublime Text 2 Editor, care pus la dispoziția publicului gratuit. Acesta oferă un set de beneficii cum ar fi:

folosirea de culori diferite pentru anumite funcții specifice limbajului Php sau al variabilelor;

oferă indentare, pentru a avea o imagine de ansamblu mai bună a scriptului la care lucrați;

oferă posibilitatea descriderii unui folder care conține mai multe scripturi, de unde puteți accesa mai rapid un anume script, care ar interacționa cu scriptul la care lucrați momentan;

fiind creeat pentru limbajul PHP, editorul recunoaște anumite funcții, oferind auto-complete, pentru ele nemaifiind nevoie să scrieți toată funcția; acest aspect este valabil și pentru variabilele deja folosite, oferind fluiditate și optimizare a modului în care scrieți scriptul;

3.1.1.Scrierea scriptului PHP

Pentru a scrie un script PHP trebuie indicat unde exact se utilizează limbajul. Acest lucru este realizat și prin ajutorul tagurilor specifice limbajului, mai exact:

<?php

/*sciptul in sine */

?>

Fig.3.1.1.1

Între aceste 2 taguri se poate scrie scriptul, browserul știind să îl interpretezi ca atare. Putem consideră cele 2 taguri ca fiind o încapsulare a scriptului de restul codului, care poate să mai existe în pagină.Pe lângă aceste taguri, se mai poate folosi variantă mai scurtă:<? ?>, care este adesea folosită în combinație cu codul HTML și poate avea doar pe o singură linie.

<? /*scriptul php pe o singura linie*/ ?>

Fig.3.1.1.2.

Pe lângă aceste taguri, pe care trebuie să le aibă un script, fișierul trebuie să fie salvat cu extensia „php”.

Întregul script php este construit din instrucțiuni, care sunt executate și din această cauza trebuie specificat unde se termină o instrucțiune. Acest lucru este realizat cu ajutorul simbolului „;”. Toate instrucțiunile trebuie să aibă la sfârșit simbolul „;”, excepție făcând ultima instrucțiune din script, care nu trebuie neapărat să aibă „;”, deoarece nu mai urmează nimic după aceasta și nu există ambiguitate cu privire la locul unde ar trebui să se termine.

După cum am mai spus, scripturile PHP se pot combină cu cele HTML, de fapt acest lucru se întâmplă destul de des. Pentru a introduce un script PHP în interiorul celui HTML, nu trebuie decât să adăugăm tagurile „<?php ?>”, iar între acestea se poate scrie un script PHP.

<html>

<head>

Combinatie HTML cu PHP

</head>

<body>

 Script HTML

<?php

 echo"Script PHP in interiorul HTML";

 ?>

 </body>

 </html>

Fig.3.1.1.3

3.1.2. Executarea unui script PHP

În executarea unui script PHP sunt executate 3 operații:

Se iau datele de la utilizator;

Datele ajung la server, unde sunt manipulate conform scriptului; Se cer permisiuni pentru manipularea datelor din bază de date, dacă aceste date trebuie manipulate;

Serverul returnează datele prelucrate și le afișează utilizatorului;

<?php

$a=2;

$b=3;

$c=$a+$b;

 echo$c;

 ?>

//se va afisa 5;

Fig.3.1.2.1.

După cum am exemplificat în Fig.3.1.1.1., mai întâi se trimit datele „$a” și „$b”, după care serverul le prelucrează și execută operația de adunare, pentru ca în final, cu ajutorul funcției „echo” să afișeze pe ecran rezultatul adunării, mai exact 5.

Apoi, în Fig.3.1.2.1. se poate observa „//”, care comentează textul care urmează. Acest lucru este foarte folositor, mai ales dacă pe un script lucreză mai multe persoane, cu scopul de a comenta anumite variabile sau operații, care au loc în script fără a mai analiza și operația în sine. Această metodă de comentare este valabilă doar pentru o singură linie de script.

Pentru a comenta mai multe linii de script se folosesc caracterele „/*”și „*/”, între care orice este scris nu este compilat și rămâne în codul sursă al scriptului. Folosind această metodă se pot scrie oricâte linii.

3.1.3. Executarea unui fișier PHP

Pentru a executa un fișier cu extensia „.php” trebuie scrisă, într-un browser, adresa unde poate fi găsit fișierul și anume adresă URL unde se află, de exemplu: ”http://www.paginaphp.com/script_php.php”.

3.1.4. Variabile PHP

Limbajul PHP, spre deosebile de alte limbaje de programare nu are nevoie de o declarare explicită a tipului de date în care se încadrează o variabilă, astfel că pentru a declara o variabilă PHP nu trebuie decât să fie denumită, iar tipul de date îi va fi atribuit în mod automat.

Având acest lucru în vedere, variabilele se împart în două categorii:

numere;

șiruri de caractere sau de numere;

Astfel că, declarea variabilelor cade în sarcina utilizatorului, pentru a se evita eventualele probleme provocate de adunarea unui întreg cu un șir de caractere.

Pe lângă faptul că variabilele se declară fără a le fi specificat tipul, ele pot fi declarate în orice loc din script, neexitand un loc anume pentru declararea variabilelor.

Având acestea în vedere, numerele sunt împărțite la rândul lor în două categorii și anume: întregi și duble. Numerele întregi reprezintă numerele cu semn,fără parte fracțională, incluzându-l și pe zero. Pe de altă parte, cele duble sunt cele care conțin virgulă, iar acestea mai sunt cunoscute și ca numere cu virgulă mobilă.

Există totuși o limitare la cât de mari pot să fie numerele în PHP. Acestea pot lua valori cuprinse între -2.147.483.648 și 2.147.483.647, inclusiv.

În general, numerele duble sunt stocate folosindu-se formatul standard ”IEEE-64”, care furnizează 64 de biți. Acest format ne permite să stocăm valori, care pot merge până la 1,8 x 10 la puterea 308, sub formă de numere duble și furnizează aproximativ 14 cifre după punctul zecimal (sau cifre semnificative) de precizie.

Variabilele de tipul număr sunt declarate prin punerea simbolului „$” în fața variabilei pe care vrem să o creăm astfel în PHP:

$var;

$numar;

Fig.3.1.4.1.

După semnul „$” trebuie să urmeze o literă sau semnul „_ ”, orice altceva nefiindacceptat.

Variabilele se pot suprascrie în orice moment și sunt case-sensitive, adică se face distincție între ”$A” și ”$a„.

Atribuirea de valori unei variabile se face prin operatorul „=”, care nu trebuie confundat cu semnul „=” din matematică, pentru egaliate PHP folosindu-se „==”.

$var= 1;

$numar= -178;

Fig.3.1.4.2.

În declararea variabilelor se pot folosi și alte variabile declarate anterior sau o combinație de valori, declarate anterior sau nu.

$var= 1;

$numar= -178;

$rez=$var+$numar;

Fig.3.1.4.3.

Deasemenea, se pot declara asemănător șiruri de caractere care nu sunt calculabile.

$var= `Numele meu este Simene Robert`;

Fig.3.1.4.4.

Variabila „$var” din Fig.3.1.4.4. conține șirul de caractere „Numele meu este Simene Robert”.Cu aceste variabile nu se pot executa operații aritmetice precum adunare sau scăderea.

Pe lângă numere și șiruri de caractere, o variabila PHP poate să fie un vector uni sau multi-dimensional. Vectorul astfel creat, poate să conțină orice valoare fie ea număr sau șir de caractere. Un vector se declară astfel:

$vector= array( 0,1,2,3 );

Fig.3.1.4.5.

Având vectorul declarat, pentru a interoga o valoare din acesta, apelăm vectorul astfel:

$vector[1];

Fig.3.1.4.6.

Vectorul din Fig.3.1.4.6. conține valoarea de pe poziția 1 și anume valoarea 1, doarece în PHP numerotarea pozițiilor începe de la poziția 0.

În PHP exită posibilitatea de a șterge o variabilă creată prin procedura „unset()”, care deblochează spațiul de memorie alocat variabilei precizate sau se poate atribui variabilei valoarea „null”.

$var= 1;

Unset($var);

$var=null;

Fig.3.1.4.7.

3.1.5. Variabile Globale PHP

Limbajul PHP conține anumite variabile globale, deja declarate cu anumite funcții implementate. Aceste variabile sunt scrise cu litere mari sau încep cu caracterul „_” și continuă denumirea cu litere mari, de exemplu:

$_POST;

$_SESSION;

$GLOBALS;

Fig.3.1.5.1.

Din acest motiv este recomandat ca variabilele declarate de user să aibă litere mici și să înceapă cu o literă, nu cu caracterul „ _”, pentru a nu se creea confuzii.

Variabila „$_POST” din Fig.3.1.4.1. este o variabilă globală foarte importantă în PHP, deoarece aceasta stochează informațiile dintr-un formular folosit în fișier și poate să transmită informațiile din acel formular, către alt script PHP din alt fișier pentru o prelucrare. Acest lucru se realizează pentru obținerea unui script cât mai curat și mai aranjat și pentru a nu se pune procesarea de informații în același fișier cu colectarea de informații.

3.1.6. Operatori PHP

Limbajul PHP oferă o serie de operatori, asemănători cu celelalte limbaje de programare și permite calcule aritmetice în atribuiri sau afișări, fără a mai fi nevoie de o variabilă auxiliră pentru stocarea rezultatului.

Operatorii aritmetici folosiți sunt:

”+” Adunare

”-” Scădere

”*” Înmulțire

”/” Împărțire

După cum este de așteptat, aceștia sunt operatorii folosiți în majoritatea limbajelor de programare.

În cazul unei operații, valoarea nouă poate să fie stocată într-o variabilă nouă, ca în Fig.3.1.6.1.:

$var= 1;

$var2=2;

$rez=$var+$var2;

Fig.3.1.6.1.

Sau o variabilă din operație poate să ia valoarea rezultatului, modificându-și valoarea inițială în cea rezultată:

$var= 1;

$var2=2;

$var=$var+$var2;

Fig.3.1.6.2.

În cazul din Fig.3.1.6.2., variabila „$var” nu va mai avea valoarea „1” ci va avea valoarea rezultatului și anume „3”.

Deasemenea, o variabilă poate să își modifice și tipul de date după ce a fost inițializată:

$var= 1;

$var2=2;

$var=$var/$var2;

Fig.3.1.6.3.

În Fig.3.1.6.3. se poate observa că variabila „$var” era de tipul întreg, înainte de operație iar după această, ea vaavea o valoare în virgulă mobilă, mai exact 0,5.

În afară de operatorii clasici, PHP mai are o serie de operatori care ușurează muncă unui programator și anume:

”%” Modulo;

”++” Incrementare;

”—” Decrementare;

”.” Concatenare;

Operatorul „%” realizează returnarea restului împărții a celei de-a doua variabile. Cu toate că returnează restul, operația care stă la bază rezultatului este cea de împărțire.

Operatorul „++” este responsabil de incrementare și crește o variabila cu valoarea 1. Acesta poate fi folosit că sufix pentru o variabila sau că prefix pentru această.

În cazul în care este folosit mai întâi ca sufix, se realizează incrementarea, iar apoi se realizează operațiile aferente. În cazul în care este prefix, se va realiza incrementarea după operațiile aferente. Acest lucru se poate observa și din Fig.3.1.6.4.:

$var= 1;

$var2=2;

$var3=++$var+$var2;//$var3=4(2+2);$var=2;

$var=1;

$var3=$var+$var2++;//$var3=3(1+2);$var2=3;

$var3–;//$var3=3;

Fig.3.1.6.4.

Același lucru este valabil și pentru operatorul „–”, care realizează decrementarea cu 1 sub aceleași aspecte. În contrast cu ceilalți operatori, acesta are nevoie doar de un singur operand, pe când ceilailți necesită cel puțin doi operanzi.

Operatorul de concatenare se aplică atât numerelor cât și stringurilor și are rolul de a uni două variabile.Exemplu:

$v1=1;

$v2=2;

$v3=$v1.$v2;

echo $v3//$v3=12

Fig.3.1.6.5.

În exmplul din Fig.3.1.6.5., se poate observa faptul că în variabila „$v3” se află rezultatul celor două valori concatenate nu adunate, ci mai exact alipite.

În cazul în care într-o operație sunt folosiți mai mulți operatori, ordinea operațiilor este cea naturală și anume, înmulțireși apoi adunare.

3.1.7. Instructiuni Conditionale PHP

Ca orice alt limbaj, PHP este un limbaj format din instrucțiuni condiționale, cu ajutorul cărora se iau decizii logice în baza cărora se formeză un script.

Scripturile PHP iau decizii prin analizarea unor expresii condiționale și execută intrucțiunile bazate pe rezultatele acestor valori. O expresie poate avea doar două valori de adevăr, adică: adevărat (TRUE) sau fals (FALSE). Pentru că o expresie să fie adevărată, valoarea acesteia trebuie să fie diferită de zero, astfel că orice valoare diferită de zero este considerată TRUE. O expresie este falsă atunci când valoarea ei este egală cu zero.

Limbajul PHP are o serie de operatori relaționali:

a <b : Adevărat, dacă valoarea lui ”a” este mai mică decât valoarea lui ”b”.

a >b : Adevărat, dacă valoarea lui ”a” este mai mare decât valoarea lui ”b”.

a <=b : Adevărat, dacă valoarea lui ”a” este mai mică sau egală cu valoarea lui ”b”.

a >=b : Adevărat, dacă valoarea lui ”a” este mai mare sau egală cu valoarea lui ”b”.

a ==b : Adevărat, dacă valoarea lui ”a” este egală cu valoarea lui ”b”.

a !=b : Adevărat, dacă valoarea lui ”a” este diferită de valoarea lui ”b”.

a===b : Adevărat, dacă ”a” și ”b” sunt identice, cu alte cuvinte, dacă ”a” și ”b” au același tip și dacă valoarea lui ”a” este egală cu valoarea lui ”b”.

a !==b : Adevărat, dacă ”a” și ”b” nu sunt identice, cu alte cuvinte, dacă „a „ și ”b” nu sunt de același tip sau dacă valoarea lui ”a” este diferită de valoarea lui ”b”.

Valorile adevărat (TRUE) si fals (FALSE) sunt valori booleene, care corespund valorilor „ 1 ” respectiv „ 0 ”.

Regulile pentru determinarea rezultatului unei expresii condiționale sunt:

Constantele true și false își iau respectiv valorile lor booleene corespunzătoare.

O expresie condițională, care constă dintr-o valoare nedefinită are valoarea false; în caz contrar, rezultatul depinde de tipul valorii, în speță numeric, șir, tablou sau obiect.

O expresie condițională, care constă dintr-o valoare numerică are valoarea false dacă valoarea este zero; în caz contrar, are valoarea true.

O expresie condițională, care constă dintr-o valoare de tip șir are valoarea false dacă șirul este vid; în caz contrar, are valoarea true.

O expresie condițională, care constă dintr-o valoare de tip tablou sau obiect are valoarea false dacă tabloul sau obiectul sunt vide; în caz contrar are valoarea true.

O expresie condițională alcătuită dintr-un operator relațional și din operanzii săi, ia valori în conformitate cu rezultatul comparației (numerice sau nu).

Având aceste reguli în vedere se pot forma expresii condiționale complexe, cu mai mulți operatori logici ca în Fig.3.1.7.1.:

$v1=1;

$v2=2;

($v2>$v1) OR (($v2>1) AND ($v1>2));

Fig.3.1.7.1.

În Fig.3.1.7.1. se analizeaza întâi expresia „($v2>$v1)”, având valoarea „1” după care „(($v2>1) AND ($v1>2))”, care are valoare „ 0 ”, iar în final se face operația „1 OR 0 ”, acesta având valoarea „1”.

Pe lânga operatorii relaționali, PHP dispune și de o serie de operatori logici:

a AND b : Adevărat, dacă atât ”a”, cât și ”b” sunt adevărate.

a && b : Adevărat, dacă atât ”a”, cât și ”b” sunt adevărate.

a OR b : Adevărat, dacă minimum una din expresiile ”a” și ”b” este adevărată.

a || b : Adevărat, dacă minimum una din expresiile ”a” și ”b” este adevărată.

a XOR b : Adevărat, dacă numai una din expresiile ”a” și ”b” este adevărată.

!a : Adevărat, dacă ”a” este falsă.

La fel cum în matematică operațiile au anumită prioritate, la fel și în PHP, operatorii au o anumită prioritate după care se execută:

! ~ ++ — (int) (double) (șir de caractere ) (array) (object)

* ; / ; %

+ – .

<<=;>>=

= = != = = = ! = =

&

|

&&

||

?:

=; +=; -=; *=; /=; .=; %=;&=; | =;∧=; ~=;<<=;>>=

And

Xor

Or

După cum se poate și observa, cu cât un operator este mai aproape de vârful listei, cu atât prioritatea acestuia este mai ridicată. În cazul în care doi operatori de același nivel sunt întâlniți într-o expresie, ordinea de execuție este de la stânga la dreapta. Pentru a evita eventualele greșeli cauzate de acest motiv, se pot folosi parantezele rotunde „ ( ) ”, care rescriu prioritatea din expresia scrisă. În cazul în care se folosesc parantezele rotunde, mai întâi se execută expresiile din paranteză, după care se execută operațiile din afara acesteia. Acest lucru este foarte bine evidențiat în Fig.3.1.7.2.:

$v1=1;

$v2=2;

($v2>$v1) OR ($v2>1) AND ($v1>2);//rezulatul este 1

// 1 OR 1 AND 0

// 1 OR 0

// 1

(($v2>$v1) OR ($v2>1)) AND ($v1>2);//rezulatatul este 0

// 1 OR 1 AND 0

// 1 AND 0

// 0

Fig.3.1.7.2.

În prima expresie din Fig.3.1.7.2. se poate observa faptul că operatorul „AND” se execută primul, deși operatorul „OR” este primul plasat, asta deoarece precedenta operatorului „AND” este mai mare, spre deosebire de cea de-a doua expresie, în care se execută mai întâi ce este în paranteză (operatorul „OR”), după care se execută operatorul „AND”. Având acestea, se poate creea orice precedentă dorită de către programator.

Pe lângă operatorii logici și cei relaționali, PHP mai vine în ajutorul programatorului cu o serie de instrucțiuni logice, care împreună cu operatorii formează instrucțiuni complexe.

Prima, dintre cele mai importante instrucțiuni logice, este instrucțiunea „IF”, care execută două operații. După executarea operației, în funcție de rezultat se pot executa operații aferente rezultatului. Mai exact, dacă rezultatul este adevărat (TRUE), atunci se execută instuctiunea cu setul de instrucțiuni aflate după expresia evaluată. În caz contrar, se execută operațiile aflate pe ramura”else” a instrucțiunii „IF”.

În Fig.3.1.7.3. este arătată formă generală a instrucțiunii „IF”, care în exemplul de față o să intre pe ramura „ELSE”, deoarece expresia evaluată „($v1>$v2)” are valoarea ”Fals”.

$v1=1;

$v2=2;

If($v1>$v2){//set de instructiuni}

Else {//set de instructiuni}

Fig.3.1.7.3.

Instrucțiunile „IF” pot fi imbricate, deci după evaluarea unei instrucțiuni, se poate verifica altă instrucțiune, până la ajungerea scopului dorit.

O instrucțiune asemănătoare cu „IF” este instrucțiunea „SWITCH”, care este definită astfel:

$v1=1;

Switch($v1)

{

case(1):

echo „ mic”;

break;

case(2):

echo „mediu”;

break;

case(3):

echo „mare”;

break;

default:echo „Acesta nu este un cod valabil”;

}

Fig.3.1.7.4.

Acțiunea unei instrucțiuni „SWITCH” este determinată de valoarea unei expresii întregi și nu de valoarea unei expresii condiționale. Numele variabilei este notatîntre parantezele care urmează după cuvântul cheie „SWITCH”. Aceasta instrucțiune poate fi foarte utilă în momentul în care avem niște valori determinate, pe care programul ar putea să le aibă.

Cu toate că aceste două instrucțiuni par destul de folositoare, ele realizează un număr finit de pași prestabiliți de utilizator.În unele situații acești pașinu corespund cerințelor unui program, așa că se vor folosi instrucțiunile repetitive: „FOR”, „WHILE” și „DO WHILE”.

Instrucțiunea „FOR”, definită în Fig.3.1.7.5. afișează numerele de la 1 până la 9 inclusiv. Se poate observa faptul că instrucțiunea are 3 parametrii și anume inițializarea, instrucțiunea de oprire și pasul de incrementare. Cu toate acestea, pentru a fi validată instrucțiunea este necesar doar pasul de oprire, restul fiind opționale. În cazul în care se execută mai mult de o singură operație în interiorul instrucțiunii „FOR”, trebuie puse acoladele pentru a specifica faptul că acele instrucțiuni aparțin blocului „FOR”.

FOR ($i=1;$i<10;$i++){

Echo $i;

}

Fig.3.1.7.4.

În Fig.3.1.7.5. se află declarația instrucțiunii „WHILE”. Instrucțiunea evaluează expresia de după cuvântul cheie „WHILE” și execută ce se află în blocul ei, cât timp expresia este adevărată. Este necesar un plus de atenție, deoarece instrucțiunea poate cicla la infinit, dacă condiția nu este pusă bine. Fig.3.1.7.5. afișează numerele de la 0 la 9, iar când indicele „$i” ajunge la valoarea 10 instrucțiunea încetează ciclarea.

$i=0;

WHILE ($i<10){

Echo $i;

$i++;

}

Fig.3.1.7.5.

$i=0;

DO {

Echo $i;

$i++;

}WHILE ($i<10)

Fig.3.1.7.6.

Asemănătoare cu instrucțiunea „WHILE” este instrucțiunea „DO WHILE”, care realizează același lucru având totuși o diferență. Această diferență rezultă din faptul că operațiile din blocul „DO WHILE” se execută cel puțin o dată, chiar dacă condiția nu este adevărată, deoarece evaluarea expresiei de oprire este făcută la sfârșitul blocului și din acest motiv, această instrucțiune este adeseori evitată. Definiția expresiei se poate obseva în Fig.3.1.7.6., unde se realizează afișarea cifrelor de la 0 la 9.

3.1.8. Funcții și Proceduri PHP

Pentru a crea un script PHP eficient este nevoie de un element nou și anume funcțiile. Funcțiile vin în ajutor atunci când trebuie să se efectueze aceleași operații de mai multe ori, dar cu date diferite. Dacă nu am folosi funcțiile, ar trebui să scriem operațiile de fiecare data când se schimbă datele, dar dacă folosim o funcție trebuie doar se apelăm funcția cu datele dorite.

Procedurile sunt asemănătoare cu funcțiile, dar spre deosebire de acestea, o procedura nu returnează nimic, pe când o funcție trebuie să returneze tot timpul o valoare. Procedurile și funcțiile se apelează folosind numele acestora, împreună cu datele de intrare dorite.

Singura diferență dintre o procedură și o funcție este faptul că valoarea unei funcții poate fi atribuită unei variabile sau folosită într-o expresie logică, pe când o procedura nu, din simplul fapt că o procedură nu returnează nimic.

Limbajul PHP are funcții și proceduri pre-declarate. De exemplu „echo()” este o procedură în cadrul limbajului, care afișează conținutul dintre paranteze, iar „count()” este o funcție care returnează numărul de caractere pe care le are variabila trimisă că input.

Pe lângă aceste funcții și proceduri definite de limbaj, se pot defini funcții și proceduri de către useri.

Funcțiile preiau un Input și returnează un Output, în funcție de necesitățile programatorului. O funcție definită de un user este formată din cuvântul cheie „function”, urmat de numele funcției, după care se pune lista de paramatrii între paranteze rotunde. După declararea unei funcții trebuie puse acoladele, în interiorul cărora se vor executa operațiile dorite. După ce se scriu toate operațiile, trebuie ca funcția să returneze o valoare, astfel că în interiorul acoladelor trebuie scris cuvântul-cheie „return”, urmat de variabila care se dorește a fi utilizată ca output. O funcție poate returna doar o singură valoare ca output, dar aceasta nu trebuie să fie neapărat un număr, ea putând să fie la fel de bine un vector sau o matrice, deci se pot trasmite mai multe informații, iar colectarea lor din acea variabila rămâne în sarcina programatorului. Nu este obligatoriu ca o funcție să primească un input, dar este obligatoriu că acesta să returneze o valoare, fie ea și null.

function licenta($i);

{

If ($i>=0) return $i;

else return -1;

}

$a=licenta(2);

echo $a;//se afiseara 2

Fig.3.1.8.1.

În Fig.3.1.8.1. este declarată funcția „licenta($că)”, având variabilă parametrul „$i”. Funcția întoarce valoarea variabilei „$i”,dacă aceastaeste pozitivă sau-1dacă acesta este negativă. Deoarece funcțiile returnează o valoare, acestea trebuie atribuite unei variabile sau folositeîntr-o expresie logică.

Procedurile sunt asemănătoare cu funcțiile, singură diferență fiind aceea că procedurile nu returnează nimic, ceea ce înseamnă că nu necesită output, ci doar imput.

Pentru a defini oprocedură trebuie scris cuvântul cheie „procedure”, urmat de numele procedurii și lista de parametriiopționali, după care de operațiile din blocul procedurii.

procedure licenta2($i);

{

If ($i>=0) echo $i;

else echo -1;

}

licenta2(2);//se afiseaza 2

licenta2(-3);//se afiseaza -1

Fig.3.1.8.2.

După cum se observă și în Fig.3.1.8.2., procedura se apelează cu numele acesteia, după care se execută ce se află în blocul procedurii și anume afișarea.

Având aceste în vedere, putem observa faptul că funcțiile și procedurile folosesc variabilele din declararea lor, dar aceste valori nu sunt modificare în interiorul funcțiilor sau al procedurilor, deoarece în momentul în care se apelează o funcție cu o valoarea, acelei valori îi este făcută o copie cu care lucrează funcția,valoarea inițială din variabilă rămânâd intactă. Acest lucru se poate schimba cu ajutorul referințelor.

Atunci când o variabila este trimisă cu referință către un subprogram, acelei variabile nu îi mai este făcută o copie, ci este chiar ea prelucrată în acel subprogram. Pentru a trimite cu referință o variabilă, trebuie pus semnul „&” înainte de variabilă, cum se poate observa și în Fig.3.1.8.3.. Se poate pune referință și atunci când se apelează funcția în program sau în declarația funcției, în ambele cazuri se va lucra cu variabila în cauză, nu cu o copie a acesteia.

Această este o modalitate prin care se poate returna mai mult de o variabilă, atunci când se apelează o funcție.

Totuși, este necesară atenția în momentul în care se trimite o variabilă prin referință, deoarece ea poate fi alterată în moduri în care programatorul nu dorește, astfel pierzându-se informații.

function prin_valoare($x)

{

$x = 1;

}

function prin_referinta(&$x)

{

$x = 1;

}

$y = 0

prin_valoare($y);

echo „$y”;//se afiseaza 0

$y = 0

prin_valoare(&$y);

echo „$y”; //se afiseaza 1

$y = 0

prin_referinta($y);

echo „$y”;//se afiseaza 1

Fig.3.1.8.3.

3.2. HTML

Pentru a creea o pagină web, trebuie folosit limbajul de marcare HTML care este citit și interpretat de către browser.

HTML este acronimul folosit pentru Hypertext Markup Language. El este folosit pentru a prezența informațiile într-o pagină web, într-un mod cât mai lizibil și mai aranjat.

Pentru a utiliza HTML, nu este nevoie decât de un simplu editor de text, deoarece etichetele pe care HTML le folosește sunt interpretate de către browserul pe care îl foloseșteutilizatorul.

Etichetele folosite sunt în marea lor majoritate etichete-pereche și anume, fiecare etichetă are încă o etichetă-pereche, care delimitează locul unde aceasta afectează textul. Etichetele sunt de forma: <etichetă> conținut </>.

Limbajul HTML nu este unul case-sensitive, ceea ce înseamnă că nu contează dacă se folosesc litere mici în scrierea lor.

Orice HTML are nevoie de etichete fundamentale, care sunt reprezentate Fig.3.2.1.

<html>

<head>

<title>

</title>

</head>

<body>

</body>

</html>

Fig.3.2.1.

Prima etichetă „<html>” este cea care conține defapt toate celelate etichete, ea determinând partea unde se folosesc etichetle.

În cadrul etichetei „<head>” se află etichetele care au legătură cu titlul pagini web și cu unformatiile folosite în cadrul căutării acesteia pe internet, dar mai mult de atât aici sunt scrise clasele folosite de către CSS linkuri către diferite pagini care ajută la stilizarea site-ului. Tot în acesta etichetă sunt link-urile care ai trimitere la un fișier care poate conține programe Javascript care pot afecta modul în care apare elementele de pe site.

Tot în cadrul acestei etichete se află eticheta „<title>”, care conține titlul paginii, titlu care apare browser.

În cadrul etichetei „<body>” apare textul propriu-zis și celelate elemente precum formularele, imaginile, videoclipurile dorite pe site.

Defapt, putem spunecă întregul conținut al site-ului se află între aceste etichete.

Acestea sunt cele maiesențialeetichete pe care o pagină web trebuie să le aibă, dar desigur nu singurele.În momentul actual, s-a ajuns la versiunea HTML5 a limbajului care oferă o multitudine de etichete, ușurând munca oricărui programator.

3.3. CSS

Pentru a stiliza o pagină, trebuie folosit standardul pentru formatarea elementelor HTML ale acelei pagini.

CSS este un acronim pentru Cascading Style Sheets, care are capacitatea de a modifica elementele unei pagini web, pentru a arata într-un mod cât mai plăcut.

CSS are o sintaxă foarte simplă și folosește o serie de cuvinte cheie, pentru a specifica anumite proprietăți pe care un element le poate încorpora. În ciudă sintaxei foarte ușoare, limbajul CSS este considerat unul dintre cele mai grele limbaje, deoarece pentru a ajunge la un efect complex este necesară, nu numai cunoșterea de cuvinte cheie care pot fi atribuite unui element, dar și o experiența vastă pentru a ști cum interacționează între ele aceste elemente în momentul în care anumite atribute sunt alocate. Din această cauză, în momentul în care se crează o pagină web, sarcina stilizării este destinată unei persoane diferite de cea care programează pagina.

Pentru a integra CSS în pagina web, trebuie ca elementului care se dorește a fi modificat, să îi fie atribuită o clasă sau un id. Clasa poate să fie comună mai multor elemente, pe când id-ul trebuie să fie unic pentru fiecare element în parte. După ce s-a făcut atribuirea cu o clasă sau un id, în dreptul numelui acelei clase, respectiv id sunt puse atributele cheie pe care userul dorește să le aibă. Numele claselor și atributele acestora, trebuie puse între etichetele <style></style>. Aceastea sunt,la rândul lor,puse între etichetele <head></head> din pagina web. În Fig.3.3.1 este dat un exemplu referitor la cum sunt realizateaceste atribute.

<html>

<head>

<style>

.nume{

Border 2px solid #111111;

}

</style>

</head>

<body>

<div id=”1” class=”nume”>

Continut

</div>

</body>

</html>

Fig.3.3.1.

După cum se poate observa, atributele trebuie puse între acolade, pentru a face diferențierea dintre clase și atributele acestora.

Stilizarea se mai poate realiza și prin creearea unui fișier specific CSS, care trebuie inclus între eticletele <head></head>, acest lucru ducând la aerisirea codului și micșorarea spațiului pe care îl ocupă un fișier.

3.4. JavaScript

JavaScript, prescurtat JS, este un limbaj de programare orientat pe obiecte, care ajută la animare anumitor elemente ale paginilor web.

Asemenea codului de HTML, codul Javascript este compilat de către browserul utilizatorului, astfel că pentru a edita sau creea un program Javascritp, nu este necesar decât un editor de text simplu, precum Notepad, care este oferit de către orice Windows. În ciudă asemănări de nume cu limbajul Java, acestea nu au aproape nimic în comun, exceptând faptul că amândouă au sintaxa apropiată de cea a limbajului C.

Pentru a integra Javascript în pagina web, codul Javascript trebuie scris între etichetele <script></script>, sau se pot integra fișiere de tipul „ .js ” în pagina dorită, efectul fiind același. Diferență dintre cele două metode este aceea că, în prima metodă codul este în același fișier cu pagina, pe când în cea din urmă metodă, codul este separat. Este recomandată folosirea celei de-a două metode, în cazul în care codul este destul de mare, astfel evitându-se aglomerarea unui singur fișier.

Javascript este destul de asemănător cu limbajul PHP, în sensul că și în acest limbaj se folosesc funcții și variabile. Diferența majoră dintre Javascript și PHP este faptul că, în timp ce PHP este executat de server, Javascript este executat de către browser,iar din această cauză validarea informațiilor trimise către server se face cu ajutorul funcțiilor Javascript.

Efectuarea operațiilor de verificare și validare a datelor executate prin Javascript, nu necesită reîncărcarea pagini web și nici trimiterea datelor către server, acest lucru mărind considerabil viteza cu care o pagină web este navigată.

3.4.1. Sintaxă JavaScript

Sintaxa limbajului Javascript este una destul de simplă, ea fiind similară în cea mai mare măsură cu cea a limbajului C.

Pentru a declara o variabila în Javascript, trebuie scris cuvântul cheie „var” precedat de numele variabilei. Asemenea limbajului PHP, după fiecare operație trebuie adăugat simbolul „ ; ”, pentru a explicita unde se termină operația.

Pentru a se face un comentariu, se procedează exact ca în PHP, folosindu-se „ // ”, pentru comentariul pe un singur rând și „ /* */ ”, pentru comentariul pe mai multe rânduri.

Ca orice limbaj de programare și acesta folosește funcții și proceduri. Acestea sunt declarate în aceeași manieră ca în PHP. Mai exact, cuvântul cheie „function” sau „procedure” este urmat de numele subprogramului,acesta fiind urmat la rândul său de lista de parametrii.

Javascript dispune de o varietate de tipuri de variabile, care ajută programatorul în îndeplinirea obiectivului dorit.

3.5. AJAX

După cum am explicat anterior, Javascript ajută la validarea datelor fără a mai fi nevoie de o conxiune la server, asta pentru a preveni reîncărcarea pagini. Acest lucru este un beneficiu substanțial, dar în anumite situații nu este suficient. Pentru a ilusta acest neajuns, să luăm drept exemplu situația în care dorim să construim un auto-complete, în funcție de numele aflate în baza de date.

Acest lucru executat cu Javascript, necesită deținerea datelor din bază de date în fișierul în care se află funcția, iar acest lucru este imposibil dacă este vorba despre un număr foarte mare de date. Dacă dorim să realizăm acest lucru cu ajutorul limbajului PHP, va trebui să reîncărcăm pagina la fiecare literă adăugată, deci va trebui să facem multe cereri către server, ceea ce încărcă serverul și mai mult de atât, pagina web o să meargă extrem de greu. Acest lucru nu este sesizabil atunci când două-trei persoane navighează site-ul, ci atunci când site-ul are un număr de ordinul miilor sau zecilor de mii de accesări.

Din fericire, există o cale de mijloc prin care se poate realiza acest lucru și anume AJAX.

AJAX este un acronim, însemnând „Asynchronous JavaScript and XML” și reprezintă o tehnică de programare pentru a creea pagini web interactive.

După cum a discutat și mai sus, dorim un program care să nu solicite reîncărcarea pagini, dar în același timp, care să preia date din baza de date, fără să le stocheze pe toate local.

AXAJ realizează acest lucru,adică preia datele trecute de user într-o manieră asemănătoare cu Javascript și cu ajutorul acestora accesează o pagină diferită, care interoghează baza de date și trimite un răspuns înapoi funcției, care afișează userului informația fără a mai reîncărca însă pagina.

Acest lucru duce la creșterea interactivitățea și vitezei de care poate dipune pagina web dorită.

În ciudă numelui, folosirea XML-ului nu este necesară, defapt adeseori JSON este folosit pentru a trimite datele, iar pe lângă aceasta cererea nu trebuie să fie asincronă (asynchronous).

3.6. JSON

După cum ammenâionat anterior, pentru a trimite datele prin intermediul AJAX nu trebuie neapărat să se folosească XML, ba chiar mai mult, deseori se folosește JSON, deoarece este mai ușor de operat.

JSON, reprezentând acronimul pentru „JavaScript Object Notation”,este un format de reprezentare și inter-schimb de date, între anume aplicații informatice.

În principiu, JSON este folosit pentru a transmite date între server și aplicația web, fără a mai fi nevoie de reîncărcarea paginii, fiind o soluție alternativă XML-ului.

Cu toate că inițial a derivat din limbajul Javascript, JSON este un format de date independent, iar codul pentru parsare și generare poate fi folosit de o serie de limbaje de programare, în afară de Javascript.

Cu ajutorul JSON se pot trimite un spectru larg de date, aceste incluzând:

Numere întregi și virgulă mobilă ;

Șiruri de caractere Unicode;șirurile sunt delimitate de către ghilimele duble;

Variabile Boolean de tipul adevărat sau fals;

Vectori – o listă de valori de orice tip;

Obiecte – un vector de asocieri neordonat; obiectele sunt delimitate de acolade;

Null – o valuare vidă, folosind cuvântul „null”;

3.6.1. Sintaxă JSON

Sintaxa pentru a utiliza JSON este una destul de simplă și necesită folosirea unor cuvinte cheie.

În Fig.3.6.1.2. se poate observa cum se folosește JSON în PHP, pentru a se trimite datele către un script PHP, cu ajutorul funcției specifice „json_encode”, iar în Fig.3.6.1.1. sunt primite datele procesate de pagina web cu ajutorul funcției „JSON.parse”.

var data = JSON.parse(data_primita);

Fig.3.6.1.1.

echo json_encode($data_trimisa);

Fig.3.6.1.2.

3.7. jQuery

jQuery este o platformă de Javascript construită pentru a simplifica munca programatorului pentru partea client-side a scriptului. jQuery este momentan cea mai populară bibliotecă de Javascript folosită în peste 80% din cele mai vizitate 10.000 site-uri. Faptul că este oferit gratuit și este open-source a sporit popularitatea acestuia, dar mai mult de atât faptul că este foarte ușor de folosit este cu siguranță unul dintre citeriile cheie care i-au adus succesul.

Din cauza arhitecturii specifice jQuery permite programatorilor să dezvolte subaplicatii bazate pe bibliotecă inițială care extind funcțiile de bază jQuery cu funcții specifice plugin-ului.

Extensiile pot fi încărcate la cerere, deci acestea nu ocupă mult spațiu.

Există un set de extensii principale numite jQuery UI (User Interface), care oferă un set de efecte mai complexe decât cele din biblioteca principală. Un alt aspect interesant este faptul că testarea și dezvolatrea componentelor se face în același timp cu dezvoltarea bibliotecii principale, astfel se elimină riscul de incompatibilitate.

3.7.1. EasyUI

jQuery EasyUI este framework care ajută programatorii să construiască pagini web mult mai ușor.

Framework-ul este o particularizare a biblioteci jQuery care oferă, atât programatorilor, cât și utilizatorilor o ușurință în programare și navigare. Acesta dispune de o rapiditate în ceea ce privese viteză de rulare.

Beneficiile folosirii EasyUI sunt următoarele:

Oferă funcționalități esențiale pentru a construi aplicații javascript moderne și interactive;

Folosind EasyUI nu mai trebuie scris atât de mult pentru a realiza anumite operații, ci trebuiesc doar folosite anumite cuvinte cheie, definite de către framework;

Este un framework care poate fi folosit asupra paginilor realizate cu HTML5;

Ajută la salvarea de timp și mărește productivitatea;

Este foarte rapid, dar în același timp puternic;

4.NOȚIUNI DEPRE BAZELE DE DATE

În continuare vom prezenta bazele de date relaționale și modul în care acestea se utilizează precum și serverul Apache. Pentru a crea o aplicație, construirea unei baze de date este prioritară și absolut necesară. De asemenea, vom discuta de aplicațiile server-client care, așa cum sugerează și denumirea, necesită un server care să comunice cu clientul. Serverul poate să ruleze pe același calculator ca și clientul, dar în majoritatea cazurilor rulează pe un calculator diferit, construit special pentru acest lucru.

4.1. MySQL

O bază de date relaționala stochează datele în tabele, iar fiecare tabel stochează

informații despre un anumit tip de entitate. Practic, un tabel poate fi asimilat cu un fișier. De exemplu, o bază de date relațională aferentă unei edituri poate include tabele precum carte și autor.

O bază de date relațională se numește astfel datorită capacității sale de a stabili relații între datele din mai multe tabele.

Aplicația software, care găzduiește o bază de date, se numește sistem de gestiune a bazelor de date (SGBD). Există multe sisteme de gestiune a bazelor de date din surse deschise și comerciale. MySQL este cel mai popular sistem de gestiune a bazelor de date destinat utilizării cu PHP, în mare măsură deoarece este gratuit. Totuși, prin intermediul PHP este posibil accesul la aproape orice SGBD modern. Pentru aceasta, nu aveți nevoie decât de un program – cunoscut sub numele de driver- care se comportă ca o interfață între PHP și baza de date. Multe sisteme de gestiune a bazelor de date sunt asociate cu programe driver care se conformează standardului ODBC

(Open Database Connectivity). Aceste sisteme de gestiune a bazelor de date sunt accesibile prin intermediul caracteristicii ODBC a limbajului PHP.

MySQL reprezintă acronimul pentru „My Structured Query Language”, iar cuvântul „My” provine de la numele fiicei unuia dintre cei care au fondat MySQL.

Datele create cu ajutorul MySQL sunt în general protejate împotriva accesului neautorizat. De exemplu, fișierele care stochează tabelele relaționale pot fi accesibile numai pentru administratorul de sistem și pentru un cont special de utilizator, creat pentru gestionarea bazei de date.

4.1.1. Proiectarea unei baze de date

Pentru a creea o bază de date trebuie create tabele, care vor ocupă bază de date, iar fiecare tabel având o serie de coloane cu anumite prorietăți dorite de autor. Acest procedeu este cunoscut sub numele de entitate-relație. În altă ordine de idei, fiecare tabel are mai multe entități care sunt în relație cu alte entități din alte tabele astfel creându-se tabelele relaționale.

Așadar, primul pas în crearea unei baze de date este denumirea acesteia. După ce se denumește o bază de date se construiesc tabele din care baza este compusă. Un tabel are un nume și o serie de câmpuri specifice. Într-un tabel trebuie să existe o coloană care să fie cheie primară. Aceasta poate să fie alcătuită și din mai multe coloane, astfel construindu-se o cheie primară compusă. Orice tabel trebuie să aibă o singură cheie primară; deasemena nu pot exista tabele fără chei primare.

Pe lângă cheile primare, există chei externe care nu sunt marcate într-un mod specific. O cheie externă reprezintă valoarea unei chei primare dintr-un alt tabel în tabelul curent, în acest mod făcându-se relaționarea cu alt tabel.

Pentru a se construi o bază de date în mod corect, această trebuie normalizată corespunzător. Normalizarea este necesară pentru a evita posibilele ambiguități care se pot crea, atunci când se inserează sau se actualizează o data în tabel.

Exista 5 forme de normalizare a unei baze de date:

Prima formă normală 1NF

A doua formă normală 2NF

A treia formă normală 3NF

Forma normală Boyce-Codd BCNF

A patra formă normală

În general, se folosesc doar primele trei normalizări deoarece acestea elimină ambiguitățile la inserție, actualizare și ștergere de operații pe care o bază de date le face în general.

MySQL acceptă o multitudine de date, o parte din acestea fiind:

BLOB : Date binare arbitrare, cu o lungime maximă de 65535 octeți.

CHAR(m) : Un șir de caractere de lungime fixă, cu un maxim de m caractere, unde m este mai mic decât 256. Pentru obținerea lungimii dorite, se inserează spații finale.

DATE : O dată în format an-lună-zi; de exemplu 2005-12-31.

DECIMAL

DOUBLE

FLOAT(m,d) : Un număr cu virgulă mobilă, cu simplă precizie, având o lățime de afișare egală cu m și un număr de d cifre după virgulă.

ÎNTREG

NUMERIC .

REAL

SMALLINT

TIME

TIMESTAMP

VARCHAR(m) Un șir caracter de lungime variabilă, cu un maximum de m caractere, unde m este mai mic decât 256.

În continuare vom exemplifica anumite comenzi specifice limbajului MySQL cu care se pot creea, insera, actualiza sau șterge date. Aceste comenzi nu sunt case-sensitive, deci se pot scrie atât cu litere mari cât și cu litere mici.

CREATE TABLE tabel (coloana1 tip, coloana2 tip, …);

Fig.4.1.1.1.

În Fig.4.1.1.1. se poate vedea comanda pentru crearea unui tabel nou. Pentru a creea un tabel nou trebuie scris cuvântul cheie „create table”, urmat de numele dorit pentru tabel și perechile nume-coloană tip din tabel.

INSERT INTO tabel (coloana1, coloana2) VALUES (valoare1, valoare2);

Fig.4.1.1.2.

Fig.4.1.1.2. reprezintă comanda pentru inserarea unor valori în tabel. Pentru a insera valori într-un tabel, este necesar cuvântul cheie „insert”, urmat de numele tabelului în care dorim să inserăm. După numele tabelului este setul de coloane în care se vor completa valorile urmat de cuvântul cheie „values”, iar acesta sunt urmat de setul de valori care se doresc a fi inserate.

UPDATE tabel SET coloana1=coloana1, coloana2=coloana2

WHERE conditie;

Fig.4.1.1.3.

Fig.4.1.1.3. reprezintă comanda pentru actualizarea unui tabel. Pentru a actualiza un tabel este necesar cuvântul cheie „update”, urmat de numele tabelului pe care dorim să îl actualizăm. După numele tabelului este cuvântul cheie „set”, urmat de setul de perechi coloană-valoare care se doresc a fi afectate.

DELETE FROM tabel WHERE conditie;

Fig.4.1.1.4.

Fig.4.1.1.4. rprezintă comanda pentru ștergerea din tabel atunci când o condiție este îndeplinită.

Desigur că mai sunt o multitudine de operații care se pot face asupra unei baze de date, cele prezentate sunt însă cele mai des folosite.

Pentru ca limbajul PHP să execute o căutare, acesta dispune de anumite funcții care interacționează cu MySQL. Dintre acestea pot fi reamintite:

Mysql_query(””)- execută comanda sql oferită între ghilimele si oferă rezultatul care trebuie reținut normal intr-o variabilă;

Mysql_error()- oferă eroarea sql în cazul în care una are loc;

Mysql_fetch_array($rezultat)- se parseaza rezultatul unei cautări;

Mysql_numrows()- returnează numărul de randuri care la returnat căutarea antecedentă;

Mysql_connect()- comanda returnează link-ul necesar pentru conectarea la o bază de date;

Mysql_select_db()- prin aceasta comanadă se realizează conectarea la o bază de data;comanda necesita link-ul care este calculat mai sus;

Acestea sunt cele mai folosite funcții, dar nu sunt singurele, PHP dispunând de un volum mai mare care satisface nevoile oricărui program.

4.1. Apache

Apache este un server web HTTP de tipul open-source. Acesta a jucat un rol important în dezvolatrea webului din ziua de astăzi, fiind folosit în mai mult de jumătate din paginile web existente.

Serverul Apache permite autentificarea în bază de date pe DBMS și content negotiation-mecanism, definit în specificație HTTP ce face posibilă editarea diferitelor versiuni ale unui document în același URL.

Apache este dezvoltat de o comunitate deschisă de programatori, sub emblemă Apache Software Foundation.

Arhitectura serverului nu este una singulară, ea oferind o varietate de module multiprocesoare care permit Apache să ruleze pe mai multe infrastucturi.

5. PREZENTAREA APLICATIEI

Aplicația creată este o aplicație de monitorizare a vânzărilor realizate de către o firmă, cu scopul de a crea o imagine de ansamblu a firmei și a productivității acesteia.

Această aplicație este realizată prin folosirea limbajului de programare PHP, cu ajutorul căruia s-a realizat implementarea funcțiilor de stocare a datelor în baza de date. Design-ul aplicației este realizat cu ajutorul HTML și a CSS, care a stilizat aplicația într-un mod cât mai user-friendly. Desigur, aplicația a avut nevoie de ajutorul unor scipturi de Javascript, pentru a deveni mai rapidă și mai accesibilă.

Nu în ultimul rând, jQuery și folosirea framework-ului EasyUI au realizat creearea de interogări în baza de date, fără a mai necesită reîncărcarea paginilor, astfel aplicația putând să ruleze rapid chiar și pentru seturi de date foarte mari.

De fapt, aplicația este concepută sub forma unui site, care poate fi plasat local sau pe un server remote. Folosirea ei local este indicată atunci când firma are doar un singur angajat care se ocupă de contabilitatea firmei, desigur acest lucru este destul de rar întalnit la firme mari. În schimb, în momentul în care sunt mai mult de o persoană care se ocupă cu contabilitatea, punerea aplicației pe un server este necesară, de asemenea și baza de date nu poate să mai fie locală în acest caz.

În cazul în care aplicația este folosită local, aceasta este limitată deoarece ea poate avea trei tipuri de useri și anume:

Administrator – este cel care se ocupă cu administrarea produselor, a userilor dar nu numai;

Operator – este cel care introduce vânzările;

Agent – este cel care poate crea rapoarte sau grafice în funcție de câte vânzări a realizat;

După cum se poate observa, în cazul în care este doar o persoană care foloseste aplicația, aceasta o să aibă funcția de ”Administrator”, deci funcționalitatea celorlalți este irosită, ceea ce limitează aplicația. Desigur, acest lucru nu înseamă că nu poate fi folosită, ci doar faptul că potentialul maxim nu este atins.

Prima pagina este cea de login in, care face logarea utilizatorilor de toate nivelele.

Pentru a se autentifica, un utilizator trebuie să introducă numele contului și parola aferentă acelui cont.

În cazul în care utilizatorul greșeste numele contului sau parola, îi este afișat mesajul: „Datele sunt incorecte”. Acest mesaj este dorit a fi general, deoarece în cazul în care cineva dorește să intre fără a avea un cont sau fără a fi autorizat, nu va fi înștiințat dacă a greșit parola sau numele contului, ci doar faptul că datele introduse sunt incorecte.

Aceasta este o metoda de securitate în plus, folosită pentru a asigura integritatea conturilor.

În cazul în care este completat doar un câmp, utilizatorul este înștiințat cu privire la cîmpul omis, pentru a îl completa.

Dacă utilizatorul scrie parola și numele contului corect, acesta este redirecționat pe pagina principală a aplicației. În funcție de nivelul fiecărui utilizator, este afișată o bara de navigare diferită. Cel care are cele mai multe posibilități este administratorul, care are acces asupra tuturor celorlalți utilizatori, dar și a celorlalți administratori.

Fig.5.1.

După cum se observa și în Fig.5.1., pentru a te loga sunt disponibile câmpurile „Utilizator” și „Parola”, în care se pun datele contului.

În Fig.5.2. este afișat mesajul de eroare, în cazul în care autentificarea nu a avut succes.

Fig.5.2.

Pentru realizarea autentificarii, există un formular care trebuie completat de către utilizator. În mometul în care se face submit, informatiile primite sunt trimise către funcția de autentificare, care verifică integritatea datelor. Funcția este prezentată în Fig.5.3. În această funcție, sunt setate sesiunile fiecărui utilizator în parte, iar dacă totul este bine și căutarea întoarce succes, se face o redirecționare către “logat.php”.

function autentificare($u, $p) {

$q = executa("SELECT * FROM users WHERE user='$u' AND password='$p' and sters='0'");

$nr = mysql_num_rows($q);

if ($nr == 1) {

$_SESSION['auth'] = "da";

$d = mysql_fetch_assoc($q);

$_SESSION['nivel'] = $d['nivel'];

$_SESSION['nume'] = $d['nume'];

$_SESSION['user'] = $d['user'];

$_SESSION['id']=$d['id_utilizator'];

$_SESSION['compania']=$d['comp'];

$_SESSION['companies_list'] = get_user_companies($d['id_utilizator']);

}

header("Location: logat.php");

exit;

} else {

$msg = "Datele sunt incorecte";

return $msg;}

Fig.5.3.

În cele ce urmează, vom arăta caracteristicile fiecarui tip de utilizator și atributele aferente acestuia. Vom începe cu cel mai mare rang pe care un utilizator poate să îl aibă și anume, utilizatorul de tip „Administrator”.

După ce se realizează cu succes autentificarea contului de administrator, acestuia îi este promptată ferestra de control. Fereastra este promptată în funcție de ce nivel se află în variabila „$_SESSION[’nivel’]”, unde este reținut nivelul fiecărui utilizator în parte.

Fig.5.4.

În Fig.5.4 este redată prima pagină, în care este afișat mesajul de întâmpinare „Bine ai venit”, urmat de numele utilizatorului. Este important de reținut că acesta nu este numele contului, ci numele pesoanei care are contul.

Administratorul, fiind cel care are cel mai mare grad de acces, va avea două meniuri. Primul este afișat în Fig.5.4. și conține:

Căutare;

Rapoarte;

Grafice;

Administrare;

Cea din urmă opțiune, va redirecționa utilizatorul către celelalte seturi de opțiuni.

Fig.5.5.

În Fig.5.5. sunt relatate celelate opțiuni pentru contul de administrator, mai exact:

Companie;

Produse;

Comisioane;

Target Companie;

Target Agent;

Agenți;

Opțiunea de căutare pentru administratori oferă posibilatea de a căuta în toate vânzările făcute de către toți angajații firmei, fie ei agenți, operatori sau chiar administratori, mai exact oferă posibilitea de a căuta în toate vânzările făcute, care figurează în baza de date.

Căutarea se poate realiza în funcție de mai multe criterii, cum ar fi: numele, prenumele, cnp-ul clientului, produsul vândut, cnp-ul celui care a făcut vânzarea și nu în cele din urmă intervalul de data în care a fost realizată vânzarea. Se poate realiza o căutarea compusă, care va returna rezultatul care îndeplinește toate criteriile cerute și nu doar unul dintre ele.

Administratorul are posibilitatea de a șterge o vânzare sau poate să o modifice. Acest lucru este realizat prin selectarea vânzării și apăsarea butonului „Editează”, respectiv „Șterge” din colțul dreapta al căutării.

În Fig.5.5. este redată interfața de căutare.

Fig.5.5.

În cazul în care se dorește realizarea unei modificări, va apărea o ferestră de tipul pop-up, în care se vor completa informațiile despre acea vânzare cu posibilitatea modificării acestora. Fereastra are două butoane, unul este butonul de „Cancel”, care revocă acțiunea, iar cel de-al doilea este cel de „Save”, care modifică vânzarea în cazul în care toate condițiile sunt valide. Validitatea condițiilor poate fi modificată după nevoile oricui folosește aplicația. Fig.5.6. conține fereastra care este afișată, în cazul în care o modificare este dorită.

Fig.5.6.

Scriptul pentru adăugare este prezentat în Fig.5.7.

function newvanzare(){

$('#dlg').dialog('open').dialog('setTitle','Creaza vanzare');

$('#fm').form('clear');

url = 'adauga_vanzare.php';

}

function editvanzare(){

var row = $('#dg').datagrid('getSelected');

if (row){

$('#dlg').dialog('open').dialog('setTitle','Modifica vanzare');

$('#fm').form('load',row);

url = 'update_vanzare.php';//?id='+row.id;

}

}

function anuleazavanzare(){

var row = $('#dg').datagrid('getSelected');

if (row){

$.messager.confirm('Confirm','Sigur vrei sa anulezi aceasta vanzare?',function(r){

if (r){

$.post('anuleaza_vanzare.php',{id:row.id},function(result){

if (result.success){

$('#dg').datagrid('reload'); // reload the user data

} else {

$.messager.show({ // show error message

title: 'Error',

msg: result.errorMsg

});

}

},'json');

}

});

}

}

Fig.5.7.

Cea de-a doua opțiune pe care administratorul o are este aceea de generare de rapoarte. Mai exact, administratorul poate să efectueze patru tipuri de rapoarte:

Raport Operator;

Raport Vânzări;

Raport Vânzări Proprii;

Raport Target;

După cum de observa și în Fig.5.8. este afișat un raport, în interiorul aplicației, dar se poate exporta în format „XLS” un raport care poate fi trimis către cineva care nu are acces la aplicație. Există posibilatea de a se face un raport pe o perioadă determinată de timp, pe un anumit an. Desigur, rapoartele se pot modifica pentru a satisface nevoile celui care utilizează aplicația.

Fig.5.8.

În Fig.5.9. este un exemplu de raport, care a fost exportat în format „XLS” și care poate fi trimis către o persoană care nu are acces la aplicație.

Fig.5.9.

Cea de-a treia opțiune pentru contul de administrator, este de a crea grafice. În momentul în care utilizatorul alege opțiunea de a crea un grafic, acesta are o listă de tipul drop-down, din care trebuie să aleagă un produs căruia să îi reprezinte graficul.

Fig.5.10. exemplifică cum este realizat acest lucru pentru un produs. Graficul este creat pentru luna curentă, dar se poate genera și pe mai multe luni dacă utilizatorul aplicației dorește acest lucru.

Fig.5.10.

Ultima opțiune din primul set de opțiuni este butonul de administrare, care în momentul apăsării va redirecționa utilizatorul către setul nou de opțiuni disponibile.

În Fig.5.11. este scriptul pentru a crea graficele.

for ($i = 0; $i < $total_bars; $i++) {

list($key, $value) = each($values);

$x1 = $margins + $gap + $i * ($gap + $bar_width);

$x2 = $x1 + $bar_width;

$y1 = $margins + $graph_height – intval($value * $ratio);

$y2 = $img_height – $margins;

imagestring($img, 0, $x1 + 3, $y1 – 10, $value, $bar_color);

imagestring($img, 0, $x1 + 3, $img_height – 15, $key, $bar_color);

imagefilledrectangle($img, $x1, $y1, $x2, $y2, $bar_color);

}

Fig.5.11.

Prima opțiune nouă este denumită „Companie” și oferă o listă cu toate companiile pe care firma le deține, cu posibilitatea de a crea o companie nouă, de a modifica una deja există sau de a șterge o companie care nu mai există. În Fig.5.12. este afișată interfața prin care se afișează companiile.

Fig.5.12.

Există opțiunea de căutarea a unei companii după următoarele criterii:

Numele companiei

Adresa companiei

Orașul în care se află

Telefonul companiei

Codul companiei

Pentru a se crea o companie nouă, trebuie apăsat butonul „Creeaza sucursala nouă” iar utlizatorului îi este promptată o fereastră cu câmpurile pe care trebuie să le completeze. În funcție de criteriile fiecărei firme sunt anumite câmpuri obligatorii fără de care creearea unei noi companii nu este posibilă. În Fig.5.13. este fereastra care apare în momentul în care se dorește creearea unei noi companii. Pentru a edita o companie, va apărea aceeași fereastră, dar cu câmpurile corepunzătoare completate. Iar pentru a șterge o companie, se apasă butonul „Șterge”, după care este cerută confirmarea. În cazul în care este confirmată ștergerea, compania este înlaturată din baza de date.

Fig.5.13.

Următoarea opțiune pentru utilizatorul de tipul administrator, este cea de „Produse”, unde sunt afișate produsele aflate în baza de date pe care deținătorul firmei le are valabile pentru vânzare. În această secțiune se poate adăuga un produs nou, se poate actualiza un produs în funcție de preț sau alte carateristici ale acelui produs, sau se poate șterge un produs. Ștergerea se poate realiza selectând un produs, din lista și apăsând butonul ”Șterge”, după care se cere confirmarea. Confirmarea se face din motive de siguranță, deoarece se dorește evitarea ștergerii accidentale a produselor.

În Fig.5.14. este ilustrat modul în care produsele sunt afișate, precum și butoanele aferente care au funcționalitatea descrisă. Acestea sunt afișate în colțul din stînga al afișării.

Desigur, există și posibilitatea de căutarea a unui anumit produs. Căutarea este realizată în funcție de nume, categoria din care face parte produsul, compania care oferă produsul respectiv precum și frecvența produsului.

Fig.5.14.

În Fig.5.15. este prezentată ferestra prin care este introdus un produs nou. Aceasta are la bază două butoane: unul pentru confirmare iar celălat pentru a revoca ce s-a scris.

Asemănator ferestrei de creeare este cea de editare, singura excepție fiind aceea că în fereastra de editare câmpurile sunt deja completate cu informațile oferite de către baza de date.

Fig.5.15.

În Fig.5.16. este afișata ferastra de confirmare pentru ștergerea unui produs.

Fig.5.16.

După opțiunea „Produse” este optiunea „Comisioane”, în care sunt gestionate comisioanele fiecărui produs. Acestea sunt aplicate fiecărui produs în cauză. În această secțiune se pot creea comisioane noi, se pot șterge cele existente sau se pot modifica în cazul în care acest lucru este dorit. Secțiunea acesta, după cum se poate observa și în Fig.5.17. are și opțiunea de a căuta după anumite criterii, cum ar fi: numele comisonului, descrierea acestuia, produsul căruia i se aplică comisionul, respectiv data de început și sfârsit, dar nu în cele din urmă valoarea.

Fig.5.17.

În Fig.5.18 este fereastra în care se pot creea comisioane. De menționat faptul că valoarea unui comision poate să fie sub forma unei valori prestabilite sau în procent, în funcție de valoarea vânzări.

Fig.5.18.

Următoarea secțiune este aceea de „Target Companie”, unde se poate observa targetul pentru fiecare companie în parte. Acest target se poate modifica, deoarece pe o perioadă anumite produse, pot să fie mai căutate decât s-a anticipat inițial. În această secțiune se poate creea un target nou pentru o companie sau se poate șterge un target existent. Targeturile au perioadă de valabilitate, iar când un target a expirat acesta nu va mai fi afișat.

În Fig.5.19. se află fereastra pentru targetul de companie.

Fig.5.19.

Fereastra în care se adaugă un target este relatată în Fig.5.20., unde trebuie completat fiecare câmp după care se apasă butonul „Save”, pentru a se salva.

Fig.5.20.

Pe lângă „Target Companie”, există și „Tarteg Agenți”, unde se afișează targetul pentru fiecare agent în parte. Aici se pot impune anume criterii, pe care un agent trebuie să le aibă și câte produse de un anumit tip, ar trebui să vândă pe o perioadă determinată de timp.

În Fig.5.21. este prezentată fereastra în care apar targeturile, pentru toți agenți aflați în baza de date. Și acest target, ca și cel pentru companii, prezentat mai sus, are posibilitatea de a crea un target nou, de a modifica unul existent sau de a șterge unul care este deja în baza de date.

Fig.5.21.

Fig.5.22. conține fereastra de adăugare target pentru agenți, în care toate câmpurile sunt obligatorii pentru validarea datelor, în caz contrat, adăugarea nu are loc.

Fig.5.22.

Ultima sectiune din cadrul administratorului este numită „Agenți” și conține toți agenții, operatorii și administratorii existenți în sistem. Aceasta secțiune oferă toate datele despre fiecare utilizator în parte. Tot în această secțiune se pot oferi privilegii, cum ar fi modificarea nivelului sau dreptul de vânzare, precum și celelalte atribute.

În Fig.5.23. este un exemplu de pagină în care se afișeaza conținutul agenților. Se pot adăuga agenți noi de orice nivel, se pot șterge agenți sau se pot modifica agenți existenți în sistem.

Fig.5.23.

$result = mysql_query("select * from users {$where} LIMIT {$offset}, {$limit}");

$json = array();

$json['total'] = $count;

$json['rows'] = array();

while ($row = mysql_fetch_assoc($result)) {

$el = array();

$el['nume'] = $row['nume'];

$el['utilizator'] = $row['user'];

$el['status'] = $row['status'];

$el['nivel'] = $row['nivel'];

$querysub = "SELECT nume from users where id_utilizator='$row[subordonat]'";

$resultsub = mysql_query($querysub);

$el['adresa'] = $row['adresa'];

$el['companie'] = $companie;

$el['gbs'] = $row['gbs'];

$el['amf_p2'] = $row['amf_p2'];

$el['amf_p3'] = $row['amf_p3'];

$el['id'] = $row['id_utilizator'];

$el['email'] = $row['email'];

$el['iban'] = $row['iban'];

$el['cnp'] = $row['cnp'];

$el['regiune'] = $row['id_regiune'];

$el['data_start'] = $row['datastart'];

$el['data_end'] = $row['dataend'];

$el['id_user'] = $row['id_utilizator'];

if ($row['drept_vanzare']=='0') $el['drept_vanzare'] = "DA";

else $el['drept_vanzare'] = "NU";

$query=mysql_query("SELECT * from denumire_regiuni where id='{$el['regiune']}'");

$nr=mysql_num_rows($query);

if ($nr==1){

$q=mysql_fetch_array($query);

$el['regiune']=$q['denumire'];

}

$json['rows'][] = $el;

}

echo json_encode($json); }

Fig.5.24

În Fig.5.24. este codul prin care se afișează useri, din baza de date precum și datele acestora prin ecodarea cu Json.

Fereastra de adăugare useri este în Fig.5.25., în care nu toate câmpurile sunt obligaritorii, de exemplu adresa de e-mail nu este un câmp care trebuie completat, cu toate că o adresă de e-mail este întotdeauna de ajutor în momentul în care se dorește a contacta un user. În cazul în care toate câmpurile sunt valide, un cont nou este creeat în baza de date.

Fig.5.25.

Această secțiune are posibilitatea de a exporta în aceeași manieră, cum se exportă rapoartele într-un fișier de tipul „XLS”, toți userii care sunt în baza de date împreună cu informațiile acestora, în cazul în care este cerut un desfășurator al angajaților.

Un asemenea export este relatat în Fig.5.26., unde se poate observa faptul că sunt afișate toate detaliile.

Fig.5.26.

În continuare vom prezenta userul de tip „Operator”. Acesta este cel care realizează vânzările, dar asta nu înseamnă că acestea nu pt fi realizate și de administrator. Tipul acesta de utilizator are substanțial mai puține atribute decât cel de administrator, dar este un tip esențial. În general acest utilizator este dedicat celor care se ocupă cu vânzările. Și acest tip de utilizator poate să facă o căutare în vânzări, dar spre deosebire de administrator, el poate să modifice doar vâzările făcute de acesta, la celelalte neavând acces.

În Fig.5.27. este prezentat antetul acestui tip de utilizator, care conține următoarele secțiuni:

Căutare

Adaugă

Rapoarte

Grafice

Date Personale

Fig.5.27.

În cele ce urmează voi prezenta fiecare secțiune în parte și voi începe cu secțiunea de „Căutare”.

Căutarea este identică cu cea prezentată în secțiunea de la administrator, cu o diferență și anume, acest utlizator nu poate să caute alte vânzări în afara de cele efectuate de el.

Urmatoarea secțiune este cea de „Adăugare”, în care se adaugă vânzări de către utilizatori. La începutul zilei, această secțiune este mereu nepopulată, deoarece vânzările care apar aici sunt pe perioada zilei curente și sunt cele făcute de cel care este autentificat. În Fig.2.28. este prezentă interfața de adăugare, care este curent nepopulată deoarece în ziua curentă nu s-au efectuat vânzări.

Fig.5.28.

În momentul în care se dorește să se realizeze o vînzare, trebuie apăsat butonul „Creeaza vânzare”, după care va apărea o fereastră în care trebuie completate datele de vânzare. Datele de vânzare pot varia de la companie la companie, cele folosite în exemplu sunt alese de mine. Din cauză că acest user execută mai multe vânzări, în aceeași zi nu se dorește ca de fiecare dată să fie nevoie să apese butonul pentru a i se prompta fereastra, astfel încât atunci când acesta salvează o vânzare și aceasta este validă, nu se închide fereastra ci se face un refresh și se golesc câmpurile, astfel putând să se creeze o vânzare nouă în aceeasi fereastră. Fereastra este expusă în Fig.5.29.

Fig.5.29.

Următoarea secțiune este acea de „Rapoarte” și în mare măsură seamană cu cea de la tipul administrator, în schimb acest tip de utilizator poate să scoată un raport care să evidențieze vânzările făcute exclusiv de el. Există posibilitatea de a face export la raport, pentru a fi adăugat la un document necesar vânzării. Se pot scoate rapoarte în funcție de o anumită perioadă sau de un anumit județ sau chiar de o anumită perioadă într-un anumit județ. În Fig.5.30 aceasta secțiune este relatată.

Fig.5.30.

Următoarea secțiune este cea de „Grafice”, care funcționează exact ca în cazul contului de administrator, explicarea se află în secțiunea de Administrator.

Ultima secțiune din cadrul utilizatorului de tipul „operator” este cea de „Data Personale”, în care este afișat, așa cum apar și în Fig.5.31. datele contului. Nu sunt afișate toate datele, ci doar numele însoțit de prenume, numele contului, nivelul acestuia, Cnp-ul, e-mail-ul precum și IBAN-ul, dacă acesta are unul. În cazul în care lipsesc informații în legatură cu vreun câmp, acesta rămâne gol.

În această secțiune, utilizatorul are posibilitatea de a-și schimba parola. Pentru a realiza acest lucru, el trebuie să confirme parola existentă și să introducă parola nouă de două ori în câmpuri diferite. Acest lucru este necesar doarece nu se dorește introducerea unei parole eronate și pierderea contului. În cazul în care toate datele sunt valide, parola de pe contul respectiv va fi modificată.

Fig.5.31.

Ultimul tip de utilizator este cel de tipul „Agent”. Acest utilizator este cel mai limitat din cei trei expuși. El este în măsură să scoată rapoarte și grafice. Atributele utilizatorului sunt:

Rapoarte;

Grafice;

Date Personale;

Aceste trei atribute sunt identice cu cele de la operator și nu necesită prezentare deoarece ele au fost prezentate anterior. Putem spune că agentul este un operator, care nu poate să realizeze vânzări.

În Fig.5.32. este afișat antetul, pentru utilizatorul de tipul agent care este destul de sumar.

Fig.5.32.

După cum am spus și anterior, baza de date pentru aplicație este realizată folosind MySQL. În cele ce urmează, voi prezenta structura bazei de date cu ajutorul căreia funcționează aplicația.

Baza de date are denumirea „Vânzări” și este formată din 15 tabele, după cum urmează:

Clienți (id, idJudet, CNP, firstName, lastName, address, phone, tip, idEmployee, sters);

Companies (id,idParent, codeCompany ,name, oras,judet, address, email, phone, idEmployee, sters);

Denumire_regiuni (id, denumire);

Detalii_eroare (id, id_produs, nume);

Judete (id, judet, codsuc, suc, codcomp);

Nivele (id, name, descriere, level);

Produse (id, idCompany, name, description, sters, frecventa, datastart, dataend);

Produse_comisioane (id, idProdusct, name, description, datastart, dateend, sters, value, procent, tip);

Regiuni_judete (id_regiuni, judet, denumire);

Target_companies (id_target, compania, datastart, dataend, tip, value, sters, produs, numetarget, descrieretarget);

Target_levels (id_target, nivel, datastart, dataend, tip, value, sters, produs, numetarget, descrieretarget);

Unitati (id_unitati, codois, judet, oras, denumire, adresa, telefon);

Users (id_utilizator, user, nume, password, nivel, cnp, adresa, email, subordonat, status, sters, comp, datastart, dataend, telefon, drept_vanzare);

Users_companies (id, id_user, id_companie);

Vanzari (id_vanzare, idclient, idEmployee, idprodus, cantity,value, codois, receptionat, codcerere, valoare, idtutisist, datarecreptie, datasistem, sters, detalii_eroare, modificari, comison, anulat);

Primul câmp din fiecare tabel este cheie primară în acel tabel, iar o parte din celelalte sunt chei exterioare. De exmplu câmpul „id_produs” din tabelul „Detalii_eroare” este cheie exterioară pentru câmpul „id” din tabelul „Produse”.

Tabele sunt construite conform formelor normale 1,2 și respectiv 3, deci acestea sunt sigure în caz de inserare, actualizare sau ștergere a unor informații din baza de date.

Anumite câmpuri au valori inițiale, în cazul în care nu se transmit informații spre baza de date, astfel ocupându-se cu acele informații câmpul.

Având în vedere descrierea bazei de date și descrierea aplicației, cred că putem concluziona faptul că aceste două componente lucrează astfel încât aplicația să funcționeze la capacitate maximă.

Bibliografie

1.World Wide Web, Wikipedia, 2014

(http://en.wikipedia.org/wiki/World_Wide_Web)

2.PHP ,2014

(http://en.wikipedia.org/wiki/PHP)

3. Traian Anghel, Programarea în PHP.  Editura Polirom, Bucuresti 2005
4. Douglas Crockford, JavaScript: The Good Parts, O'Reilly Media, Inc. 2008
5.Paul DuBois, "MySQL", Editura Teora, 2001
6.POPESCU I., VELCESCU L.  "Proiectarea bazelor de date", Editura Universitatii din Bucuresti, 2007
7.Luke Welling, Laura Thomson, PHP and MySQL Web Development (4th Edition)

Bibliografie

1.World Wide Web, Wikipedia, 2014

(http://en.wikipedia.org/wiki/World_Wide_Web)

2.PHP ,2014

(http://en.wikipedia.org/wiki/PHP)

3. Traian Anghel, Programarea în PHP.  Editura Polirom, Bucuresti 2005
4. Douglas Crockford, JavaScript: The Good Parts, O'Reilly Media, Inc. 2008
5.Paul DuBois, "MySQL", Editura Teora, 2001
6.POPESCU I., VELCESCU L.  "Proiectarea bazelor de date", Editura Universitatii din Bucuresti, 2007
7.Luke Welling, Laura Thomson, PHP and MySQL Web Development (4th Edition)

Similar Posts