Aplicatie Pentru Realizarea Comertului On Line

CUPRINS

CAPITOLUL I – Introducere

Tema proiectului

Obiective

Aspecte originale

Structura lucrării

CAPITOLUL II – Tenhologii utilizate

Principii teoretice

Pagini Web Statice

Pagini Web Dinamice

Design responsive

PhpMyAdmin și XAMPP

HTML

CSS

Bootstrap

Ajax și Jquery

PHP

Interpretorul PHP

Sinataxa PHP

Variabile

Constante

Tipuri de date

Operatori

Instrucțiuni

Tablouri

Funcții

Lucrul cu formulare HTML

COOKIES

SESIUNI

MYSQL

CAPITOLUL III – Aplicație pentru realizarea comertului on-line

Descrierea aplicației

Interfață web

Interfață cu utilizatorul -Tipuri de utilizatori

Functionalizati ale aplicației

Înregistrare utilizator/administrator

Autentificare utilizator/administrator

Schimbare parolă utilizator/administrator

Delogare utilizator/administrator

Parolă uitată utilizator

Activare cont utilizator

Pagină utilizator

Pagină produs

Căutare produse

Compară produse

Adăugare produse în lista de favorite

Rezervare produs

Adăugare în coș

CAPITOLUL IV – Rezultate și concluzii

Concluzii

Dezvoltari și cercetari viitoare

CAPITOLUL V – Bibliografie

CAPITOLUL I – INTRODUCERE

Tema proiectului

Trebuie să recunoaștem că trăim într-o societate modernă, informatizată, în care tehnologia s-a integrat rapid și a evoluat în permanență. Așadar, am ajuns ca în prezent, aceasta să ne înconjoare pretutindeni, și să fie utilizată de toate tipurile și categoriile de oameni. Prin urmare, de la copii de doar câțiva ani care folosesc telefoanele părinților pentru a se juca, până la bătrânii care prin intermediul calculatoarelor comunica cu nepoții sau copii aflați la depărtare de casă, toți au început să constientize necesitatea tehnologiei.

Să ne gândim numai cât de mult s-a schimbat lumea odată cu evoluția tehnologiei. Înainte de apariția calculatoarelor, orice tip de evidentă era păstrat în registre completate de mână. Pe lângă faptul că, există riscul deteriorării sau dispariției acelor registre, lucru care era iremediabil, acestea ocupau mult spațiu, iar în cazul în care se dorea găsirea unei informații din trecut, căutarea ar fi durat destul de mult timp. După apariția calculatoarelor, pentru a-și ține evidența, era sufficient ca oamenii să introducă datele în calculator, să le salveze pe un disc, iar accesarea lor ar fi fost posibilă oricând și mult mai repede decât în mod tradițional.

Odată cu dezvoltarea tehnologiei și apariția calculatoarelor, a apărut problema interconectării acestora, astfel descoperinduse și dezvoltanduse idea de internet(rețele interconectate).

World Wide Web, prescurtat WWW, deseori numit “web” este o aplicație multimediala și iterative a internetului, cu o interfață de utilizator foarte atrăgătoare din punct de vedere grafic, practică și ușor de folosit.

Apariția internetului a provocat o dezvoltare bruscă a mediului online, astfel încât, în anul 2009, erau înregistrate aproxim 46.500 de site-uri, conform unui studiu realizat de trafic.ro. Așadar tot mai multe întreprinderi au început să realizeze oportunitatea și să își dezvolte afacerea pe internet.

Dezvoltarea întreprinderilor pe internet, concurența numeroasă în majoritatea domeniilor, și nevoia de a atrage cât mai mulți clienți, a atras după sine necesitatea de a se proiecta site-uri cu noi funcționalități și aspecte originale, cât mai impunătoare și care să stârnească curiozitate, dar totuși ușor de înțeles și folosit de către utilizatori. Pentru a satisface aceste nevoi au fost dezvoltate diverse programe și limbaje de programare. Odată cu creșterea cerințelor, a crescut și complexitatea programelor,respectiv a limbajelor de programare folosite de acestea, ajungându-se ca, în ziua de azi de acest lucru să se ocupe perosoane cu anumite cunoștințe în domeniu.

Am ales ca temă a acestei lucrări “Publicarea datelor pe Web” datorită impactului puternic pe care îl are web-ul în viețile noastre și a vastelor posibilități pe care le oferă această temă atât din punctul de vedere al tehnologiei, cât și al aplicabilitatii.

Ce înțelegem prin publicarea datelor pe web?Din punctul meu de vedere publicarea datelor pe web reprezintă afișarea, prin diverse scripturi, a datelor stocate intro bază de date sau pur și simplu introduse într-un fișier, pe pagini web în diverse moduri, sub diverse forme, dar poate semnifică și împărtășirea unei informații pe un site de socializare, sau încărcarea unei poze pe un site de media. Chiar și așa, în spatele acestor lucruri aparent banale stau defapt tot programe dezvoltate de persoane specializate , pentru a crea o interfață ușor de folosit pentru utilizatori.

Obiective

Obiectivele generale ale lucrării de față sunt:

Descrierea facilităților utilizării comerțului online

Prezentarea tehnologiilor utilizate pentru realizarea aplicației

Dezvoltarea unei aplicații pentru realizarea comerțului on line

Principalul obiectiv al acestei lucrări este acela de a prezenta atât teoretic cât și practic modalități, programe, limbaje de programare utilizate la publicarea datelor pe web. Pentru a realiza obiectivul propus , am dezvoltat o aplicație de realizare a comerțului online, care, le oferă utilizatorilor, în funcție de categoria din care fac parte, accesul la anumite funcționalități, astfel:

Vizitatorilor li se oferă posibilitatea să vizualizeze produsele dorite, să se informeze cu privire la specificațiile acestora și chiar să le compare , să vizualizeze comentariile celorlalți utilizatori fără posibilitatea de a-și exprima părerea printr-un comentariu, să își creeze un cont de utilizator pentru a beneficia și de alte drepturi

Utilizatorilor autentificați li se oferă posibilitatea să achiziționeze produsele dorite, să își exprime părerea în legătură cu acestea, să își rezerve produsele dorite cu intenția de a le achiziționa în maxim 3 zile de la data rezervării acestora, să își personalizeze un cont propriu unde pot urmării ultimele comenzi și detaliile acestora și a produselor pe care le-au adăugat listei lor de favorite, să compare două produse aparținând aceleiași categorii.

Utilizatorilor înregistrați dar neautentificați, sau înregistrați dar care nu și-au activat contul, în concluzie nu se pot autentifica li se oferă posibilitatea să dispună de aceleași facilități ca și vizitatorii

Administratorilor li se oferă posibilitatea să acceseze datele din spatele întregului proiect și anume datele utilizatorilor, produselor, comenzilor și a tuturor datelor afișate utilizatorilor

Aspecte originale

Pentru a oferi aplicabilitate temei publicarea datelor pe web, am proiectat o aplicație pentru realizarea comerțului online. Aplicația poartă numele de BUY-E (buy on internet) și reprezintă un magazin online pentru comercializarea aparatelor electronice și electrocasnice. Această aplicație cuprinde atât elementele specifice unui magazin de profil, precum și sistemul de management al utilizatorilor (autentificare, înregistrare, delogare și așa mai departe), panoul de control al administratorului, funcțiile de comparare și cumpărare de produs, cât și două proprietăți originale și anume:

Actualizarea stocului pentru fiecare produs în timp real. Prin urmare, în momentul în care un utilizator plasează o comandă aceasta este preluată de către administrator care trebuie să o confirme pentru ca aceasta să ia curs. În momentul confirmării comenzii de către administrator din stocul produsului/produselor comandate se scade cantitatea comandată din fiecare produs. Când un alt utilizator verifică stocul produsului respectiv, i se va afișa noul stoc.

Rezervarea produselor. De câte ori s-a întâmplat ca atunci când îți dorești un produs să nu ai bani, iar când ai, produsul respectiv să nu mai fie pe stoc? Pentru a evita astfel de lucruri m-am gândit la posibilitatea de a rezerva produsele. Pentru a nu apărea probleme de genul: un utilizator a rezervat 100 de produse pe o perioadă nedeterminată de timp, am rămas fără produse pe stoc, iar cele 100 de produse rămân blocate până la cumpărarea lor de către acel utilizator, fiecare utilizator va avea posibilitatea să rezerve produsele dorite (în limita a 3 produse) pe o perioadă de 3 zile. Dacă în aceste 3 zile produsele nu au fost cumpărate acestea se reîntorc în stoc.

Structura lucrarii

În continuare, lucrarea este structurată pe 3 capitole, după cum urmează:

În Capitolul 2 – „Tehnologii web” – sunt prezentate tehnologiile utilizate pentru dezvoltarea proiectului. Pentru a crea o aplicație web, trebuie să dezvoltăm atât partea grafică, cea care facilitează comunicarea utilizator-server , interfața, cât și partea funcțională, cea care nu este vizibilă utilizatorilor, dar fără de care, aplicația ar reprezenta defapt doar o înșiruire de pagini statice.

În Capitolul 3 – „Aplicație pentru realizarea comerțului online” – este detaliată metoda de implementare a proiectului și gândirea din spatele acesteia. Capitolul cuprinde o prezentare mai detaliată a tipurilor de utilizatori și facilitățile acestora în funcție de statutul pe care aceștia îl posedă în interiorul aplicației (administrator, vizitator, utilizator înregistrat,utilizator autentificat), alături de funcționalitățile aplicatei de realizare a comerțului online, prezentarea interfeței și modului de realizare a acesteia și o scurtă descriere a ceea ce presupune aplicația propriu zisă.

Ultimul capitol – „Concluzii” – cuprinde concluziile generale ale studiului realizat și activitățile propuse pentru îmbunătățirea aplicației.

2. CAPITOLUL II – TEHNOLOGII UTILIZATE

Construcția World Wide Web este pe baza unui protocol numit Hypertext Transfer Protocol  (HTTP). HTTP este un protocol mic și rapid care se potrivește foarte bine sistemelor informatice multimedia și distribuite în salturile între site-uri. Web-ul constă în pagini cu informații de pe gazde care rulează software de tip server Web. Gazda este de multe ori identificată cu serverul Web, lucru care nu este corect. Serverul Web este un software, nu calculatorul în sine. Un Web server este un program care furnizează pagini Web la cerere. Fișierul solicitat poate fi codul sursă HTML al unei pagini Web, o imagine GIF, un fișier Flash, un document XML, sau un fișier AVI. Browserul Web este cel care determină ceea ce trebuie cerut, nu serverul Web. Conexiunile la serverul Web stabilesc pe măsură ce sunt accesate, se solicită o cere a unei pagini de la un server Web, o conexiune IP este stabilită prin Internet între gazda solicitantă și gazda pe care rulează serverul Web. Pagina Web cerută este transmisă prin acea conexiune, iar aceasta este întreruptă de îndată ce pagina este primită.

Internetul reprezintă o mulțime globală de calculatoare interconectate, similar unei rețele locale, dar la o scară mult mai largă. Elementul primar al Internet-ului este World Wide Web (cunoscut sub denumirea de Web sau WWW ).

WWW este un suport pentru text, grafică, animație și sunet. Documentele destinate Web-ului sunt cunoscute sub numele de pagini Web. Pentru a înțelege mai bine World Wide Web se pornește de la modul în care este organizată informația în mediile tipărite. Aceste medii reprezintă un model adecvat pentru web și modul său de organizare.

Paginile Web oferă posibilități multiple și interesante: paginile de informații se pot regăsi pe calculatoare răspândite în lumea întreagă. Paginile în sine pot fi documente foarte complexe, interesante și atractive. Paginile Web sunt memorate pe HDD-ul unui server specializat și gestionate printr-un software special și sunt regăsite și afișate prin intermediul navigatoarelor Web (browser-e).

Navigatorul Web afișează paginile de Web prin interpretarea unor marcatori definiți cu ajutorul unui limbaj special denumit HTML (HyperText Markup Language) și utilizați pentru a codifica pagina de Web cu informația de afișat. Marcatorii au diferite semnificații. De exemplu aceștia semnifică modul în care vor fi așezate diversele părți ale paginii sau stabilesc legături între documente/fișiere. Tipic, o pagină de Web este legată de o diversitate de fișiere cum ar fi fișiere text, grafice sau multimedia. Mecanismul prin care sunt create căile de acces între documente este denumit hipertext, prezentat anterior. Atunci când utilizatorul acționează prin clic de mouse asupra unei legături, cum ar fi o porțiune de text, un element grafic, etc, navigatorul încarcă fișierul la care punctează această legătură și îl afișează. Legăturile din cadrul textului sunt ușor de identificat deoarece majoritatea navigatoarelor, implicit, colorează diferit de restul textului aceste legături și le subliniază.

Un site Web este definit ca o colecție coerentă de informații prezentată sub forma unor pagini Web, fișiere multimedia, documente și de alte tipuri, între care există legături.

Deși cea mai mare parte a informațiilor din World Wide Web este stocată în pagini Web scrise folosind limbajul HTML, există un număr destul de mare de documente provenite din alte tipuri de servicii de publicare a informațiilor din Internet.

Principii teoretice

Paginile web sunt create cu ajutorul unor programe web. Pagina web este unitatea de bază a internetului. Fiecare informație, imagine, clip și așa mai departe este cuprinsă într-o pagină web.

Paginile web se împart în trei categorii:

pagini web statice

pagini web dinamice

pagini web cu conținut dinamic.

Pagini Web Statice

Paginile statice sunt formate din documente specifice fixe care sunt formate din text și limbaj de marcare. O cerere către server generează pagina stocată în browser, care este de cele mai multe ori un document HTML și care este afișată în forma exactă în care a fost concepută. Singurul rol al serverului este acela de a furniza pagina, fără să îi aducă acesteia modificări.

Un website static, este format din pagini web. Website-urile simple, de prezentare, sunt, de obicei, site-uri statice. Acest tip de website prezintă aceleași informații tuturor vizitatorilor. Site-ul va prezenta aceleași informații, structurate după formule consacrate, pentru perioade lungi de timp. Deși un website static poate fi actualizat periodic, acest proces se face manual și poate necesita anumite cunoștințe specifice de limbaj HTML, de editare de imagine etc.

Principalele caracteristici ale paginilor Web statice sunt:

conțin doar elemente HTML;

codul sursă vizualizat în navigator este identic cu cel al fișierului stocat pe disc;

nu oferă interactivitate.

Avantajele folosirii paginilor web statice:

Se pot proiecta rapid

Sunt ieftine de dezvoltat

Sunt ieftine de pus pe host

Dezavantajele folosirii paginilor web statice:

Necesită cunoștințe specifice pentru actualizarea site-ului

Actualizarea se face manual

Pagini Web Dinamice

O pagină dinamică cere un efort mare din partea serverului. Astfel, serverul nu doar furnizează pagina, însă adaugă în aceasta conținut care este generat în mod dinamic. Această funcționalitate a fost implementată serverelor înca de la începuturile site-urilor create dinamic. În prezent, serverul interpretează conținutul pe care utilizatorul îl caută și asamblează un document specific pe care îl trimite în browser-ul spre afișare. În esență, pentru un site dinamic, serverul creează fiecare pagină pe care o transmite în browser.

Un website dinamic este compus din pagini construite dinamic, al căror conținut este variabil, în funcție de diverse condiții din website sau condiții impuse de vizitator. Un website dinamic conferă mult mai multă flexibilitate comparativ cu unul static, dar presupune utilizarea unui limbaj de programare de nivel înalt precum PHP, ASP, Python, Perl etc. De cele mai multe ori, în combinație cu limbajul de programare, se utilizează și structuri de date avansate, denumite baze de date. Ca să ieșim puțin din partea tehnică a acestor tipuri de website-uri, să menționăm că ele sunt, la ora actuală, cele mai răspândite deoarece permit automatizarea creării de pagini web, fiind mult mai simplu de a crea un șablon de pagină, un cod de generare a paginilor și o bază de date cu informațiile din pagini, decât să creezi sute de mii de pagini statice HTML individuale.

Paginile Web dinamice se caracterizează prin următoarele:

conținutul lor este creat dinamic și poate diferi la accesări diferite; de exemplu la același URL conținutul paginii poate varia în funcție de anumiți parametri cum ar fi locația geografică a utilizatorului, ora, paginile vizitate anterior, profilul utilizatorului;

oferă interactivitate;

posibilități de interacțiune.

Tehnologii care permit realizarea de pagini dinamice pe partea de client:

scripturi pe partea de client – sunt secvențe de program incluse în pagina HTML care se execută de către navigator.

DHTML (Dynamic HTML) – este o tehnologie dezvoltată de Microsoft care combină HTML, foi de stiluri (CSS) și script-uri.

Applet-uri Java – reprezintă aplicații de dimensiune redusă, scrise în limbajul Java. Codul binar al aplicației este descărcat pe mașina client de pe server și executat local, în mașina virtuală Java (JVM).

Controale ActiveX – sunt componente binare incluse în paginile Web pentru a oferi interactivitate. Sunt asemănătoare applet-urilor, însă spre deosebire de acestea rulează pe platforma Windows și au fost dezvoltate în special pentru Internet Explorer.

Elemente multimedia – sunt dezvoltate în general folosind produsul Macromedia Flash. Acestea se prezintă sub formă de fișiere SWF multimedia și sunt incluse în pagina Web prin intermediul marcatorului <OBJECT>. Pentru a putea rula pe partea de client aceste fișiere este necesară instalarea unui plug-in denumit Macromedia Shockwave Player.

Caracteristicile generale ale paginilor Web dinamice generate pe partea de server, indiferent de limbajul de scripting folosit sunt:

necesită un procesor pentru paginile dinamice sau un mediu de execuție;

într-o pagină de script (ASP, JSP, PHP) pot fi îmbinate limbajul HTML și secvențe de cod

secvențele de cod sunt executate pe partea de server, înainte de a trimite pagina la client

există astfel posibilitatea de a particulariza paginile în mod dinamic

oferă posibilitatea de interacțiune cu baze de date diferite.

au acces la toate resursele serverului Web (fișiere, rețea).

Design responsive

Conceptul de Responsive Design a fost introdus pentru prima oară de către Ethan Marcotte în 2010, în articolul său, Responsive Web Design, publicat pe A List Apart. Acesta se referă la capacitatea unui website de a se adapta la diferite rezoluții și dispozitive pe care este afișat (PC-uri, laptopuri, tablete, smartphones etc), fără a suferi degradări majore.

Această abordare vine în ajutorul celor care s-au văzut nevoiți să facă o mulțime de versiuni ale site-ului, pentru ca acesta să poată fi accesat de pe iPad, Blackberry, Kindle, netbook, iPhone și așa mai departe. Odată adoptat acest concept, site-ul ar trebui să recunoască tipul dispozitivului pe care este afișat și să răspundă automat la preferințele utilizatorului. Astfel, nu ar mai fi nevoie de mai multe versiuni ale site-ului pentru fiecare gadget pe care îl folosim.

Pentru a dezvolta un site responsive, este nevoie de:

Griduri fluide

Imagini flexibile

Media Queries

Sistemul flexibil de griduri se bazează pe calculul proporțiilor și se asigură că toate elementele din layout sunt redimensionate unul față de celălalt. Nu se mai măsoară dimensiunile în pixeli, ci în unități relative și procente.

Imagini flexibile. Acestea își pot modifica lățimea și înălțimea în funcție de rezoluția și de dimensiunea gridului. Pentru a oferi informația repede și frumos, imaginile pot fi salvate pe server în seturi de 3-4 dimensiuni, din care va fi încărcată mai apoi imaginea potrivită, în funcție de dimensiunea ecranului pe care este afișat site-ul.

Media Queries. Acestea reprezintă o metodă eficientă de a încărca diferite stiluri CSS pentru diferite rezoluții, pentru a oferi vizitatorului o experiență cât mai bună.

3 avantaje aduse de Web Responsive Design

Singura versiune de site care funcționează bine pe orice dispozitiv.

Posibilitatea de sharing a aceluiași URL între diverse dispozitive.

Layout-ul se adaptează la browser, eliminând astfel scroll-ul orizontal.

3 dezavantaje aduse de Web Responsive Design

Timp prelungit pentru dezvoltare, respectiv costuri mai mari.

Dificultăți datorate faptului că acest concept introduce un nou nivel de complexitate layout-urilor

Apar mai multe probleme la compatibilitatea între browsere

Phpmyadmin & XAMPP

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.

XAMPP este un pachet de programe free software, open source și cross-platform web server, care constă în Apache HTTP Server, MySQL database și interpretoare pentru scripturile scrise în limbajele de programare PHP și Perl.

Numele XAMPP este un acronim pentru: X (de la "cross", care înseamnă cross-platform) , Apache HTTP Server, MySQL, PHP, Perl.

Acest program este lansat sub termenii licenței GNU și acționează ca un web server capabil de a servi pagini dinamice.

Utilizare

În mod oficial, designerii XAMPP au avut intenția de a-l utiliza numai ca utilitar de dezvoltare, pentru a permite designerilor și programatorilor web să își testeze munca pe calculatoarele proprii, fără a avea nevoie de acces la Internet. Pentru a face posibil acest lucru, multe caracteristici de securitate importante sunt dezactivate în mod implicit. În practică, totuși, XAMPP este uneori utilizat pentru a servi pagini web în World Wide Web. Un utilitar special este asigurat pentru a proteja prin parolă cele mai importante părți ale pachetului. XAMPP deasemeni asigură suport pentru crearea și manipularea bazelor de date în MySQL și SQLite între utilizatori.

HTML

HTML (HyperText Markup Language) este limbajul utilizat în World Wide Web pentru descrierea hipertextelor. HTML nu este un limbaj de programare propriu-zis, ci doar un limbaj de descriere, conținând elemente ce permit construirea paginilor Web.

HTML furnizează mijloacele prin care conținutul unui document poate fi adnotat cu diverse tipuri de metadate și indicații de redare.

Indicațiile de redare pot varia de la decorațiuni minore ale textului, cum ar fi specificarea faptului că un anumit cuvânt trebuie subliniat sau că o imagine trebuie introdusă, până la scripturi sofisticate, hărți de imagini și formulare.

Metadatele pot include informații despre titlul și autorul documentului, informații structurale despre cum este împărțit documentul în diferite segmente, paragrafe, liste, titluri etc. Și informații cruciale care permit că documentul să poată fi legat de alte documente pentru a forma astfel hiperlink-uri (sau web-ul).

Limbajul HTML este derivat din SGML (Standard Generalized Markup Language – limbaj standard generalizat de marcare) dar este mult mai simplu fiind destinat numai paginilor web, având caracteristici specifice limbajelor descriptive:

documentele HTML sunt de tip text (ASCII) putând fi create cu orice editor de texte (Notepad, Wordpad);

documentele HTML pot fi vizualizate cu diferite browsere și sunt independente de platformă de lucru;

HTML utilizează pentru descrierea documentelor web tag-uri (etichete sau marcaje) specifice pentru fiecare element descris, tag-urile stabilesc atât structura documentului cât și aspectul acestuia.

Noțiuni de bază

Componența unui document HTML este:

versiunea HTML a documentului

zona head cu etichetele <head> </head>

zona body cu etichetele <body> </body> sau <frameset> </frameset>

Versiunea HTML poate fi:

HTML 4.01 Strict <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

HTML 4.01 Transitional <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

HTML 4.01 Frameset<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"

HTML 5 <! DOCTYPE HTML>

Zona head conține titlul paginii între etichetele <title> și </title>, descrieri de tip <meta>, stiluri pentru formatarea textului, script-uri și legături către fișiere externe (de exemplu script-uri, fișiere de tip CSS sau favicon).

Zona body găzduiește practic toate etichetele afișate de browser pe ecran.

Elementele de marcare

Tipuri de elemente de marcare în HTML:

Marcare structurală. Descrie scopul unui text.

Marcare pentru prezentare. Descrie cum apare un text, indiferent de funcțiile sale. Marcare pentru hiperlink. Leagă părți ale unui document cu alte documente

Elemente speciale (widget). Creează obiecte, cum ar fi butoanele și listele.

Formatarea textului

Formatarea textului care apare într-un document HTML se poate face:

La nivel de bloc – pot conține și alte elemente de formatare și încep de la linie nouă;

La nivel de caracter – conțin doar text sau alte elemente de formatare la nivel de caracter.

Gruparea mai multor elemente HTML la nivel de bloc se realizează cu ajutorul tag-urilor <DIV> și </DIV>.

Formatarea paragrafelor

În HTML delimitarea paragrafelor se realizează cu ajutorul tag-urilor <P> și </P>, eticheta de sfârșit fiind opțională. Tag-ul <P> admite atributele:

ALIGN = LEFT │ RIGHT │ CENTER │JUSTIFY

TITLE

LANG

DIR

Formatarea la nivel de caracter

Precizarea informațiilor referitoare la fontul utilizat de browser pentru vizualizarea textului se realizează cu ajutorul tag-urilor <FONT> și </FONT>.Atributele admise de eticheta <FONT> sunt:

SIZE = valoare – stabilește dimensiunea caracterelor.

COLOR = culoare.

FACE = lista_fonturi – definește o listă de fonturi separate prin virgulă, dintre care browser-ul îl va alege pe primul disponibil în ordinea preferințelor (altfel va utiliza fontul implicit).

Dimensiunea implicită a fontului se poate modifica utilizând tag-ul <BASEFONT>.

Aplicarea unor efecte asupra textului

Pentru a aplica unei zone de text un anumit efect, se încadrează textul între eticheta de început și cea de sfârșit, corespunzătoare efectului respectiv.

Formatarea textului se poate face la nivel fizic utilizând următoarele tag-uri:

<B> text </B> – aplicã stilul bold textului.

<I> text </I> – aplicã stilul înclinat textului.

<U> text </U> – aplicã stilul subliniat textului.

<STRIKE>text</STRIKE> – produce "tăierea" cu o linie a textului conținut

<TT>text</TT> – afișează textul în fontul teletype (neproporțional), nu este cunoscut de toate browser-ele

În HTML se pot aplica și efecte logice, în concordanță cu semnificația textului respectiv:

<BIG>text</BIG> – afișează textul cu dimensiune mai mare decât fontul de bază

< SMALL>text</ SMALL > – afișează textul cu dimensiune mai mică decât fontul de bază

<DFN>text</DFN> – identifică un termen de definiție și-l scrie cu caractere diferite de textul înconjurător

<EM>text</EM> – evidențiază textul specificat, de obicei prin scrierea italică

<Hn>text</Hn> – aplică unul dintre cele șase formate predefinite de antet

<KBD>text</KBD> – aplicã textului menționat un font similar intrării de la tastaturã, deci un font neproporțional

<SAMP>text</SAMP> – aplicã textului din container un font asemănător ieșirii de calculator (neproporțional).

<STRONG>text</STRONG> – produce o evidențiere pronunțată a textului

<SUB>text</SUB> – mutã textul selectat mai jos decât linia de bază a textului precedent și aplicã un font mai mic (face trecerea în indice inferior)

<SUP>text</SUP> – mutã textul selectat mai sus decât linia de bazã a textului precedent și aplicã un font mai mic (face trecerea în indice superior)

Formatarea la nivel de comunicare se face cu ajutorul tag-urilor:

<ADDRESS [ALIGN=left|center|right]>

</ADDRESS> – permite vizualizarea unei informații de adresã, uzual o adresã de e-mail

<CATE>text</CATE> – indicã o referință, cum ar fi un nume de carte, articol, numele unui autor. Referința este diferențiată fatã de textul curent.

<CODE>text</CODE> – aplicã textului un font neproporțional precum cel de calculator (clasic)

<LISTING>text</LISTING> – aplicã textului un font similar ieșirilor de calculator, este utilizat pentru compatibilitate cu versiuni mai vechi

<VAR>text</VAR> – produce o evidențiere a textului, uzual prin trecerea în italice.

Pentru inserarea de citate există două etichete:

<BLOCKQUOTE> – utilizate pentru citate lungi

<Q> – utilizate pentru citate scurte care nu conțin mai multe paragrafe.

Ambele necesită etichetă de sfârșit, textul cuprins între cele două etichete fiind un citat.

Utilizarea listelor

Utilizarea listelor este necesară pentru prezentarea informațiilor în mod structurat. Se

pot utiliza trei tipuri de liste:

Listele neordonate (Unordered List) – Aceste liste sunt încadrate între tag-urile <UL> și </UL>, fiecare element al listei fiind precedat de tag-ul <LI> (List Item) care introduce înaintea elementului o bulină. Atributul COMPACT arată că distanța dintre bulină și text poate fi redusă (este posibil ca această opțiune să nu funcționeze pe orice browser).

Listele ordonate (Ordered List) – sunt utilizate atunci când elementele listei trebuie prezentate într-o anumită ordine. Aceste liste sunt încadrate între tag-urile <OL> și </OL>, fiecare element al listei fiind precedat de tag-ul <LI>.

Listele de definiții (Definition List) – sunt cele în care intrările sunt formate din două paragrafe: primul corespunzător termenului iar al doilea, identat, corespunzător definiției termenului. Crearea unei astfel de liste este marcată cu tag-urile <DL> și </DL>.

Inserarea tabelelor în documente HTML

Tabelele permit organizarea informațiilor într-un document HTML. Inserarea unui tabel se face prin intermediul tag-urilor <TABLE> și </TABLE>.

Tag-ul TABLE admite următoarele atribute:

SUMARRY = text – specifică o descriere a rolului și structurii tabelului, aceste informații nu sunt vizualizate în pagină Web;

ALIGN = LEFT │ RIGHT │CENTER – specifică alinierea tabelului în document;

WIDTH = valoare – specifică lățimea întregului tabel; valoarea poate fi specificată în număr de pixeli sau în procente;

HEIGHT = valoare – specifică înălțimea întregului tabel; valoarea poate fi specificată în număr de pixeli sau în procente;

BORDER = valoare – specifică în număr de pixeli grosimea liniei chenarului din jurul tabelului;

COLS = valoare – specifică numărul de coloane ale tabelului;

CELLSPACING = valoare – specifică spațiul dintre celule și cel dintre celule și marginea tabelului;

CELLPADING = valoare – specifică spațiul dintre chenarul celulei și spațiul conținutul ei; valoarea poate fi specificată în număr de pixeli sau în procente;

Conținutul elementului TABLE este constituit din liniile tabelului. Specificarea unei

linii se realizează cu ajutorul elementului TR (Table Row), între eticheta de început <TR> și cea de sfârșit </TR> (opțională) fiind descrise celulele de pe linia respectivă. Specificarea celulelor care constituie o linie se realizează prin intermediul elementelor TH (Table Header), pentru celulele care constituie antetul tabelului (capul de tabel), respectiv TD (Table Data) pentru celulele care conțin informațiile din tabel.

Elementele TH și TD admit următoarele atribute:

ROWSPAN = număr_de_linii – specifică numărul de linii acoperite de celula respectivă; valoarea implicită este 1; valoarea 0 semnifică faptul că această celulă acoperă toate liniile începând cu cea curentă;

COLSPAN = număr_de_coloane – specifică numărul de coloane acoperite de celula respectivă; valoarea implicită este 1; valoarea 0 semnifică faptul că această celulă acoperă toate coloanele începând cu cea curentă;

WIDTH = valoare – specifică lățimea celulei în număr de pixeli;

HEIGHT = valoare – specifică înălțimea celulei în număr de pixeli;

Inserarea legăturilor în documente HTML

Principala caracteristică a hipertextelor o constituie utilizarea legăturilor (links). Un link este o conexiune către o altă resursă Web (un alt hipertext sau o imagine, o secvență video sau audio, un program etc.), resursă care poate fi accesată din fereastră browser-ului printr-un simplu clic.

Limbajul HTML conține multiple elemente prin intermediul cărora se poate crea o legătură către resurse Web:

IMG – creează o legătură către o imagine;

LINK – specifică legături către resurse utile;

A – creează o legătură către o resursă Web într-un document HTML;

APPLET – creează o legătură către un program executabil pe calculatorul utilizatorului.

Inserarea imaginilor în documente HTML

Elementul IMG permite inserarea imaginilor, APPLET permite inserarea de applet-uri scrise în limbajul Java iar elementul OBJECT permite inserarea elementelor multimedia într-un document HTML.

Elementul IMG

Elementul IMG permite inserarea imaginilor. Acesta nu are conținut și nu admite tag de sfârșit. Specificarea imaginii ce urmează a fi inserată se face prin intermediul atributului:

SRC = URL – care specifică adresa fișierului care conține imaginea. Cele mă utilizate formate de imagini pentru păgâni web sunt:.gif și. Jpeg;

ALT = text – specifică un text alternativ care va fi afișat în locul imaginii de browser-ele care nu pot vizualiza imagini;

HEIGHT = dimensiune – înălțimea imaginii;

WIDTH = dimensiune – lățimea imaginii;

Dimensiunea poate fi exprimată în număr de pixeli sau procente (referitoare la spațiul disponibil și nu la dimensiunea imaginii);

ALIGN = valoare – specifică modul de aliniere a imaginii în raport cu textul. Valoarea poate fi: TOP, MIDDLE, BOTTOM, LEFT, RIGHT;

BORDER = număr_pixeli – specifică grosimea chenarului în care va fi încadrată imaginea;

HSPACE = dimensiune – specifică spațiul inserat în stânga și în dreapta imaginii;

VSPACE = dimensiune – specifică spațiul inserat în partea de sus și în partea de jos a imaginii.

CSS

CSS (cascading style sheet – foi de stil în cascadă) se ocupă în general cu aspectul și controlul grafic al elementelor din pagină, cum ar fi: textul, imaginile, fondul, culorile și așezarea acestora în cadrul ferestrei paginii. CSS folosește stiluri, acestea înglobează, sub un anumit nume, atribute de formatare care se aplică asupra unui element individual din pagină, asupra unui grup de elemente sau la nivelul întregului document.

CSS funcționează cu HTML, însă nu este HTML. El extinde funcționalitățile HTML, permițând redefinirea etichetelor HTML existente. Prin utilizarea CSS aspectul documentului pe ansamblu, sau a unui element individual din interiorul sau, poate fi controlat mult mai ușor. Stilurile pot fi aplicate asupra unui element, a unui document sau chiar asupra unui întreg site web. Un dezavantaj ar fi ca unele navigatoare nu sunt compatibile CSS, astfel că documentele HTML sunt afișate că și cum CSS n-ar exista, dar cele mai cunoscute și utilizate browsere, cum ar fi: Mozilla Firefox, Internet Explorer, Opera și altele, sunt compatibile CSS. Fișierul va permite separarea conținutului HTML de stilul de afișare în pagină. Ca de obicei, codul HTML este utilizat pentru aranjarea conținutului în pagină, însă toată prezentarea (fonturi, culori, fundaluri, borduri, etc) se realizează din fișierul CSS. Așadar se pot folosi CSS-urile în două moduri, interne sau externe.

Stilurile interne

Folosind această metodă, fiecare fișier HTML va conține codul CSS folosit la stilizare. Asta înseamnă că atunci când se dorește o schimbare de stil (mărimea fontului, culoare, etc) modificarea va trebui operata în toate paginile ce conțin acel stil.

Stilurile externe

Un fișier CSS extern poate fi realizat cu orice editor simplu de text (Notepad, Wordpad, etc) sau cu editoare avansate gen Dreamweaver. Fișierul CSS nu conține sub nici o formă cod HTML, ci doar cod CSS. Fișierul trebuie salvat cu extensia .css. Inserarea fișierului extern în paginile HTML se face foarte ușor, prin plasarea unui link (legătură) în secțiunea <head> </head> a fiecărei pagini pe care dorim să folosim stilul respectiv. Iată un exemplu de inserare a unui fișier extern.css într-o pagină HTML:

<link rel="stylesheet" type="text/css" href="Calea către fișierul.css"/>

Folosind metoda fișierelor CSS externe, toate paginile HTML vor folosi același fișier de stil. Asta înseamnă că dacă se dorește o schimbare care să aibă efect în toate paginile, este de ajuns să se modifice un singur fișier, și anume cel de stil (.css), și efectul se va observa pe toate paginile HTML ce folosesc acel fișier.

Obiectele (regulile) CSS

Există trei tipuri principale de obiecte CSS: selector, clasă și identificator.

Selectorul HTML se folosește pentru a redefini modul de afișare a conținutului etichetei HTML. Un selector HTML reprezintă partea etichetei HTML care indică navigatorului tipul de etichetă. Definirea unui selector HTML folosind CSS are ca rezultat redefinirea etichetei HTML. Selectorul și eticheta deși par identice, nu sunt.

Clasa este un obiect care poate fi aplicat oricărei etichete HTML. O clasă trebuie creată în interiorul etichetei HTML înainte de a fi definită într-un cod CSS. Crearea clasei în interiorul etichetei se face simplu, prin specificarea cuvântului class și numele clasei:

<h1 class="nume_clasa"> Text </h1>

Apoi în interiorul codului CSS, clasa trebuie definită prin adăugarea unui caracter punct (.) înaintea numelui acesteia, ca în exemplu următor:

. Nume_clasă {font-family:"Arial"; font-size:15px;}

Numele aceleiași clase poate fi atribuit mai multor etichete HTML din aceeași pagină, și toate vor prelua același stil css.

Obiectele de tip identificator (ID) sunt asemănătoare cu clasele. Pot fi aplicate oricărei etichete HTML, dar spre deosebire de clase, numele unui identificator trebuie atribuit numai unei singure etichete HTML dintr-o pagină, pentru altă etichetă se adăugă un ID cu nume diferit. Ca și clasa, identificatorul trebuie întâi creat în interiorul etichetei HTML. Modul de creare este simplu, prin specificarea cuvântului id și numele clasei, ca în exemplu de mai jos:

<h1 id="nume_id"> Text </h1>

În interiorul codului CSS, identificatorul este definit prin adăugarea unui caracter diez (#) înaintea numelui, ca în exemplu următor:

#nume_id {font-family:"Arial"; font-size:15px;}

Componentele unui obiect CSS

Obiectele CSS, indiferent de tipul lor, au în componență următoarele elemente:

Selectorii – identifică un obiect; pot fi selectori de etichete HTML, clase sau identificatori.

Proprietățile – identifică o proprietate a obiectului; se referă în special la aspect.

Valorile – sunt atributele unei proprietăți; pot fi cuvinte cheie, valori numerice sau procentuale, tipul valorii depinzând de proprietate.

Sintaxa generală a unei reguli CSS este următoarea:

selector {proprietate: valoare;}

Proprietățile și valorile constituie definiția regulii (obiectului) CSS. Acestea se regăsesc sub forma de perechi, despărțite de caracterul două puncte”:”, fiecare pereche se termina cu un caracter punct și virgulă ";".

Definirea selectorilor

Selectorii HTML pot fi definiți prin adăugarea unui număr de definiții compatibilie cu eticheta HTML la care se referă, având următoarea forma generală:

selector_HTML {proprietate1: valoare1; proprietate2: valoare2;…}

După redefinirea etichetei HTML, stilurile etichetelor respective din documentul HTML vor fi modificate automat. Prin redefinirea unei etichete, proprietățile prestabilite existente nu sunt anulate, ci se adăugă altele noi.

Utilizarea selectorilor de tip clasă oferă posibilitatea configurării unor stiluri care se pot aplica doar acelor elemente care sunt etichetate cu clasa respectivă.

Sintaxa generală de definire a unei clase CSS este:

. Nume_clasă {proprietate1: valoare1; proprietate2: valoare2;…}

Există cazul în care o clasă este asociată unui selector HTML, ceea ce înseamnă că acea clasă poate fi folosită doar cu eticheta HTML respectivă. Pentru a defini o clasă care să afecteze în mod direct un anume selector HTML, se folosește următoarea sintaxă:

selector_HTML.Nume_clasă {proprietate1: valoare1; proprietate2: valoare2;…}

Selectoarele de clasă sunt acceptate de toate navigatoarele. Numele unei clase este recomandat să fie diferit de cuvantele rezervate JavaScript.

Asemănător cu selectorii de clasă se definesc și identificatorii (id-ul). Aceștia sunt folosiți pentru crearea de stiluri care pot fi atribuite unei singure etichete HTML dintr-o pagină.

Sintaxa generală de definire a unui identificator este:

#identificator {proprietate1: valoare1; proprietate2: valoare2;…}

Identificatorii permit definirea unui element sub forma unui obiect, fiind folosiți doar o singură dată în cadrul unei pagini web pentru identificarea tag-ului respectiv, astfel poate fi manipulat și cu ajutorul funcțiilor JavaScript.
Numele unui identificator e recomandat să fie diferit de cuvintele rezervate JavaScript.

Determinarea ordinii execuției

Deoarece există mai multe moduri de a aplica stilurile, pot aparea situații în care unei etichete să-i fie aplicate mai multe stiluri. Foile de stil din două sau mai multe surse, folosite simultan, pot cauza contradicții. De aceea există câteva reguli care determină ordinea execuției (numită și cascadă), acestea sunt:

Regulile CSS scrise în interiorul paginii HTML, în cadrul etichetei "style" din secțiunea "head" au o prioritate mai mare decât cele scrise într-un fișier extern, iar regulile scrise în interiorul etichetelor au o prioritate mai mare decât cele din cadrul etichetei "style" din secțiunea "head".

Existența atributului „! Important”– conferă prioritate maximă la afișare definiției în care este utilizat.

Sursa regulilor – există numeroase navigatoare care permit utilizatorului să-și definească propriile foi de stil. Totuși, foile de stil ale autorului le anulează pe cele ale vizitatorului dacă acestea din urmă nu au valoarea "! Important".

Specificitate – cu cât o regulă dispune de mai mulți selectori HTML, de clasă și de identificator, cu atât prioritatea ei crește. ID-urile au valoarea 100, clasele au valoarea 10, iar selectorii HTML au valoarea 1.

Momentul apariției – cu cât un stil apare mai târziu, cu atât importanța lui este mai mare. Astfel, definițiile unei etichete copil au prioritatea mai mare și anulează toate stilurile precedente cu care intra în conflict.

Configurarea fonturilor

Alegerea potrivită a fonturilor și folosirea acestora în cadrul paginilor web este importantă și poate atrage critici și comentarii din partea vizitatorilor, mai ales dacă formatarea clasică prin scris normal, aldin sau cursiv nu este folosită corespunzător. CSS include facilități de control asupra aspectului fonturilor, prin posibilitatea de a stabili familia de fonturi, atributele îngroșat și înclinat, dimensiunea literelor precum și spațiul dintre linii.

Există cinci familii de fonturi de bază:

serif – au un ornament (serif) plasat la terminația literei, care îi oferă o distincție specială. Sunt folosite pentru tipărire, chiar dacă textele sunt mai mari sau mai mici. Nu sunt indicate pentru afișarea textelor pe ecran.

sans serif – sunt fonturi care nu folosesc serife, fiind indicate pentru conținut text general.

monospace – fonturile monospatiate pot avea serife, ele se deosebesc prin faptul că fiecare literă ocupă aceeași cantitate de spațiu. Sunt cele mai indicate pentru textele care trebuie citite cu exactitate, ca de exemplu liniile de program.

cursive – imită scrisul de mână, într-o manieră stilizată. Sunt indicate în scopuri decorative, nefiind recomandate pentru scrierea unor texte mai lungi.

fantasy – nu se încadrează în nici una dintre categoriile de mai sus, fiind fonturi care au un caracter predominant ornamental (reprezentând ilustrații sau pictograme).

Stabilirea fontului

Fontul folosit pentru afișarea unui text poate fi stabilit prin proprietatea "font".
Pentru definirea fontului în cadrul unei reguli, trebuie specificată, după selectorul din cadrul foii de stil, proprietatea font-family urmată de numele fontului sau a fonturilor (despărțite prin virgulă). Este bine ca numele fonturilor să fie încadrate între ghilimele simple sau duble, mai ales dacă numele acestora conține spații.

Forma generală fiind următoarea:

selector {font-family:"nume_font1", "nume_font2",…, nume_generic}

Când este specificată o listă de fonturi, navigatorul încearcă să folosească primul font din listă, dacă nu este găsit parcurge listă până în momentul în care întâlnește un font instalat. Dacă nu există fonturi echivalențe, textul vă fi afișat cu fontul prestabilit de browser.

Stabilirea dimensiunii fontului

Cu ajutorul CSS se poate stabili dimensiunea fontului folosind valori absolute (exprimate în diferite unități de măsură: pixeli, centimetri), procentuale, său chiar relative.

Pentru a defini dimensiunea fontului în cadrul unei reguli trebuie specificată proprietatea font-size urmată de o valoare a dimensiunii care poate luă una din următoarele tipuri de valori:

unitate de măsură – exprimată în pixeli, puncte, inci său centimetri

expresie absolută – xx-small, x-small, small, medium, large, x-large și xx-large

expresiile smaller său larger, că raport cu elementul părinte

procent – un număr exprimat în procente (cu %), care indică mărimea textului în raport cu dimensiunea elementului părinte

Iată formă generală a codului CSS pentru stabilirea dimensiunii fontului:

selector {font-size: valoare}

Text înclinat

Atributul "font-style" permite scrierea textelor înclinate în două moduri: "cursiv" și "oblic". Noțiunile pot fi confundate, însă cursivul se referă la versiunea unui font a cărui caractere au o înclinare spre dreapta, iar oblicul este un font înclinat forțat spre dreapta.

Pentru a crea caractere cursive în cadrul unei reguli trebuie precizata proprietatea font-style, astfel:

selector {font-style: valoare}

Unde "valoare" poate fi unul din următoarele cuvinte: normal, italic său oblique
Grosimea fontului

Îngroșarea este una dintre metodele utilizate des pentru scoaterea în evidență a unui text. CSS conferă mai multă flexibilitate în utilizarea textului îngroșat decât elementul HTML <b>, prin posibilitatea introducerii unei valori proprietății font-weight, după cum urmează:

bold – scrie fontul folosind caractere îngroșate

bolder – mărește grosimea fontului relativ la grosimea curentă

lighter – micșorează grosimea fontului față de grosimea curentă

normal – elimină formatarea cu caractere aldine (îngroșate)

Forma generală pentru stabilirea grosimii fontului este următoarea:

selector {font-weight: valoare}

Majuscule mici

Majusculele mici sunt folosite de obicei în cadrul titlurilor, ele fiind obținute prin convertirea literelor mici în majuscule cu o dimensiune mai mică decât majusculelor normale. Astfel se obțin cuvinte în care toate literele sunt scrise cu majuscule însă prima literă este mai înaltă decât celelalte.

Stabilirea unei reguli pentru majuscule mici se realizează prin utilizarea proprietății font-variant cu valoarea small-caps. Prin folosirea valorii normal, vor fi anulate celelalte valori moștenite ale proprietății font-variant.

Formă generală este următoarea:

selector {font-variant: valoare}

Valori multiple pentru font

Deseori este util să fie precizate toate elementele fontului într-o singură definiție.
Pentru a se realiza acest lucru este folosită proprietatea "font" urmată de valorile pentru celelalte proprietăți, separate prin spațiu.

Sintaxa generală este următoarea:

selector {font: val_font-family val_font-style val_font-variant val_font-weight val_font-size val_height}

Dacă o anumită valoare din listă este omisă, navigatorul va folosi valoarea prestabilită.
Configurarea textului

Textele alcătuiesc o bună parte din paginile web. Metodele de afișare a textelor prin controlul nu numai a fontului, dimensiunii și culorilor, ci și prin alte elemente, pot îmbunătăți aspectul pagini și pot atrage atenția asupra anumitor elemente din text.

Mărimea (tipul) literelor

Există cazuri în care se dorește afișarea textului cu un anume tip de litere. Folosind CSS, se poate specifica explicit că textul să apară cu majuscule inițiale, majuscule, minuscule, combinat său așa cum a fost el scris.

Cu ajutorul proprietății text-transform se poate controla mărimea literelor din text, indiferent de modul cum a fost el scris inițial.

Pentru a schimba tipul literelor dintr-un text, proprietatea text-transform vă fi urmată de o valoare care poate fi:

capitalize – pentru că primul caracter din fiecare cuvânt să fie scris cu majusculă;

uppercase – pentru că toate caracterele să fie scrise cu majuscule;

lowercase – pentru că toate caracterele să fie scrise cu litere mici;

none – pentru că textul să fie afișat așa cum este.

Sintaxa generală este:

selector {text-transform: valoare}

Alinierea textului

Un text poate fi aliniat de la marginea din stânga, din dreapta, centrat său la ambele margini (stânga-dreapta). Proprietatea text-align oferă posibilitatea controlului asupra alinierii textului.Definirea alinierii se face specificând după proprietatea text-align una din valorile: left, right, center sau justify.

Formă generală este:

selector {text-align: valoare}

Proprietatea poate fi aplicată numai elementelor la nivel de bloc (DIV, UL, Hx, p), valoarea sa implicită fiind în majoritatea cazurilor stabilită la valoarea "left".
Alinierea pe verticală a textului

Cu ajutorul proprietății vertical-align se poate preciza poziția unor elemente (în linie) în raport cu textul din jurul lor. Asta înseamnă că proprietatea poate fi folosită doar cu etichete în linie care nu determina un salt la linie nouă, de obicei utilizându-se cu eticheta "span".

Sintaxa pentru utilizarea proprietății vertical-align este:

selector {vertical-align: valoare}

Pentru definirea alinierii pe verticală a textului se folosește una din următoarele opțiuni:

super – pentru scrierea textului în stil exponent, deasupra liniei de bază;

sub – pentru scrierea textului în stil indice, sub linia de bază;

baseline – pentru scrierea textului pe linia de bază;

una din valorile: "top", "middle", "bottom", "text-top", "text-bottom" – pentru a alinia textul relativ la alinierea părintelui acestuia;

valoare procentuală – care ridică său coboară linia de bază a elementului proporțional cu dimensiunea fontului elementului părinte.

Formarea paragrafelor

Cu ajutorul proprietății text-indent se poate stabili ce spațiu suplimentar este înserat la începutul primei linii de text dintr-un paragraf. Pentru aceasta, proprietatea text-indent este urmată de o valoare exprimată într-o unitate de măsură (pixeli său cm) sau în procente (proporțional cu lățimea paragrafului).

Sintaxa generală este:

selector {text-indent: valoare}

Valorile pozitive determină o indentare tipică (spre dreapta), în timp ce valorile negative determină o indentare înspre margine.
Aplicarea elementelor decorative

CSS permite ornarea textului prin scoaterea lui în evidență în patru moduri: subliniere, supraliniere, tăierea textului cu o linie sau crearea de texte care clipesc.

Aplicarea de elemente ornamentale unui text se realizează prin proprietatea text-decoration, urmată de una din valorile:

underline – pentru a sublinia textul

overline – pentru a trasa o linie deasupra textului

line-through – pentru a tăia textul cu o linie

blink – pentru a face textul să apară și dispară intermitent

Formă generală este:

selector {text-decoration: valoare}

Pentru a elimina decorațiile se folosește valoarea "none".

Configurări pentru culori și fundal

Dacă HTML permitea configurarea unor culori și elemente grafice de fundal doar pentru anumite elemente, CSS permite definirea culorii și a fundalului pentru orice element din pagină web

Se poate schimba fundalul întregii pagini, său pentru un anumit element din pagină, fie el de tip DIV, paragraf, imagine, tabel sau formular.
Culoarea fundalului

Pentru a schimba culoarea fundalului se utilizează proprietatea background-color, urmată de o valoare care reprezintă numele culorii său valoarea RGB, exprimată în cod hexa.

Sintaxa generală este:

selector {background-color: valoare}

Dacă se folosește valoarea "transparent" navigatorul vă afișa culoarea prestabilită său cea a elementului părinte.
Pentru schimbarea fundalului întregii păgâni se aplică această proprietate selectorului "body".
Imaginea de fundal
Puteți utiliza pentru fundal și o imagine, pentru aceasta se folosește proprietatea background-image, urmată de adresa URL a locației imaginii.
Sintaxa generală este:

selector {background-image: url ('adresa_URL');}

Unde "adresa_URL" este calea și numele imaginii care vă fi folosită

Repetarea imaginii de fundal
Pe lângă posibilitatea afișării unui element grafic că fundal, CSS oferă și un mod de repetare a acestuia. Pentru a repeta imaginea de fundal se folosește proprietatea background-repeat, urmată de o valoare care poate avea una din următoarele opțiuni:

repeat – pentru a repeta imaginea pe toată suprafața elementului respectiv;

repeat-x – pentru a repeta imaginea numai pe orizontală;

repeat-y – pentru a repeta imaginea numai pe verticală;

no-repeat – pentru a afișa imaginea o singură dată, fără repetare.

Formă generală este:

selector {background-repeat: valoare}

Controlul imaginii de fundal
CSS poate defini modul de tratare a fundalului la derularea paginii, pentru aceasta se folosește proprietatea background-attachment cu opțiunea "fixed", pentru a lipi imaginea de fundal de fereastra navigatorului său opțiunea "scroll", pentru a permite derularea imaginii de fundal alături de elementul corespunzător atunci când vizitatorul derulează pagina.
Sintaxa generală este:

selector {background-attachment: valoare}

Poziția imaginii de fundal
Pentru a poziționa imaginii de fundal în funcție de colțul din stânga-sus al elementului se utilizează proprietatea background-position urmată de două valori (coordonate x și y) separate prin spațiu, 'x' pentru poziția orizontală și 'y' pentru cea verticală.
Formă generală a acestei proprietăți este:

selector {background-position: valoare}

Coordonatele x și y pot fi exprimate ca valori absolute sau ca procente. Se pot folosi și cuvintele cheie: "left", "center" său "right" pentru coordonată x; respectiv "top", "center" său "bottom" pentru coordonată y.
Stabilirea simultană a proprietăților fundalului
Toate proprietățile fundalului pot fi configurate cu ajutorul proprietății background.

Se poate stabili simultan printr-o listă de valori proprietățile fundalului, enumerate în orice ordine și separate prin spațiu.
Când se utilizează proprietatea background, nu este necesar să fie specificate toate proprietățile, cele nespecificate fiind stabilite la valoare lor implicită.
Sintaxa generală este:

selector {background: val_bg-color val_bg-img val_bg-repet val_bg-attach val_bg-position}

Stabilirea culorii din prim-plan

Proprietatea color poate schimba culoare oricărui element, fie el text, linie orizontală său element de tip formular.
Sintaxa generală pentru utilizarea acestei proprietăți este:

selector {color: valoare}

Valoarea culorii poate fi:

numele culorii – una din cele 16 culori predefinite (red, green, blue, white, silver,…)

valoare în hexa – sub formă #rrggbb

valoare RGB – sub formă rgb (r, g, b), unde r, g, b pot fi reprezentate prin numere întregi cuprinse între 0 și 255 său procente de roșu, verde și albastru cu valori între 0% și 100%.

Controale pentru chenare și afișarea elementelor

Indiferent dacă o etichetă este de sine stătătoare său imbricată în alte etichete, aceasta poate fi tratată că un element distinct pe ecran și poate fi controlată prin intermediul CSS.
Orice element creat într-o foaie de stil este prezentat în propriul lui cadru. Noțiunea de element se referă la componentele unui document HTML, configurate prin intermediul etichetelor HTML.
Caseta (cadrul elementului) dispune de numeroase proprietăți, între care se numără: marginile, chenarul, completarea (umplerea, cunoscută că "padding"), lățimea și înălțimea, care pot fi modificate cu ajutorul CSS.
Elementele HTML au patru laturi (sus, dreapta, jos și stânga) la care se pot aplica proprietățile CSS specifice, restul proprietăților CSS (font, text, culoare, fundal) se aplică în conținutului casetei. Conținutul poate include texte, liste, formulare său imagini.

Lățimea și înălțimea unui element

Lățimea și înălțimea elementelor pot fi specificate cu ajutorul proprietăților width și height. În mod prestabilit acestea sunt determinate automat de către navigator, fiind egale cu necesarul afișării întregului conținut. Pentru definirea lățimii și înălțimii se folosesc următoarele tipuri de valori:

valoare de tip numeric, de obicei în pixeli;

un procent, care stabilește o valoare proporțională în funcție de cea a elementului părinte;

valoarea auto, care folosește lățimea și înălțimea calculată de navigator, și care reprezintă cantitatea de spațiu maxim pe care o poate ocupa elementul pentru afișarea întregului conținut.

Sintaxa generală pentru configurarea lățimii și înălțimii este:

selector {width: valoare; height: valoare}

Marginile unui element

Proprietatea ” margin” permite stabilirea distanței dintre un element și alte elemente alăturate, prin specificarea unei valor pentru marginea din fiecare latură (sus, dreapta, jos, stânga). Dacă specificați cele 4 valori în aceeași definiție, acestea reprezintă marginile elementului în următoarea ordine: sus, dreapta, jos, stânga.
Dacă specificați doar o valoare, aceasta vă fi aplicată tuturor marginilor. În căzul în care specificați două său trei valori, atunci valorile care lipsesc sunt copiate după valorile marginilor opuse.
Sintaxa generală pentru configurarea marginilor unui selector este:

selector {margin: valoare/valori;}

Chenarul unui element

Proprietatea „border” permite stabilirea simultană a atributelor chenarului pentru toate cele patru laturi ale casetei. Aceasta folosește 3 valori distincte, pentru a configura lățimea (grosimea), stilul și culoarea liniei bordurii.
Sintaxa generală pentru definirea chenarului este:

selector {border: val_grosime val_stil val_culoare;}

Un atribut care poate fi folosit în configurarea chenarului este „border-width”, acesta furnizează o metodă rapidă pentru stabilirea lățimii celor patru laturi din jurul unei casete.
Sintaxa generală este:

selector {border-width: valoare;}

Aspectul bordurii poate fi stabilit prin atributul „border-style”; stilul este aplicat celor patru margini și este definit astfel:

selector {border-style: valoare;}

Un alt atribut care poate fi utilizat în configurarea chenarului este „border-color”, acesta stabilește culoarea pentru toate cele patru laturi ale chenarului și folosește pentru valoarea ei un singur cuvânt cheie exprimat în cod hexa, valoare RGB său numele culorii.
Sintaxa generală este:

selector {border-color: valoare;}

Se poate stabili culoarea fiecărei margini și separat, folosind proprietățile:

border-top-color, border-right-color, border-bottom-color și border-left-color

Adăugarea spațiului în interior, în jurul elementului

Proprietatea „padding”adăugă o cantitate de spațiu suplimentar în jurul conținutului elementului, în interiorul chenarului, între bordură și conținut.
Forma generală pentru utilizarea acestei proprietăți este:

selector {padding: valoare/valori;}

Valoarea pentru completarea spațiului poate fi una din următoarele:

valoare de tip lungime

valoare procentuală – crează umplerea în raport cu lățimea elementului părinte.

Când specificați toate cele patru valori, ele sunt aplicate în ordinea: sus, dreapta, jos, stânga. Dacă specificați doar o valoare, aceasta vă fi aplicată tuturor celor patru direcții. Dacă specificați două său trei valori, atunci valorile care lipsesc sunt copiate după valorile laturilor opuse.
Elemente float

CSS oferă posibilitatea de a "înfășura" anumite elemente în jurul altora. Acest lucru se face prin intermediul proprietății float, care determină o mutare forțată a elementului în direcția dată de valoarea menționată, lăsând loc liber în spațiul opus direcției, care vă fi ocupat de următorul element din codul HTML.
Sintaxa generală pentru utilizarea acestei proprietăți este:

selector {float: valoare;}

Unde "vaoare" poate fi" left, right și none
Afișarea și ascunderea elementelor

Proprietatea „display” poate stabili dacă un element vă fi de tip block, incluzând linii noi deasupra și dedesubtul său, dacă este inclus în linie, dacă este tratat sub formă de listă său dacă elementul este afișat său nu.
Sintaxa generală pentru această proprietate este:

selector {display: valoare;}

Unde "valoare" poate fi una din următoarele opțiuni:

list-item – plasează în prima linie a textului un indicator pentru articole de tip listă, dar și un salt deasupra și dedesubtul articolului;

block – definește eticheta că fiind de tip bloc și plasează un salt la linie nouă deasupra și dedesubtul ei;

inline – definește eticheta că o etichetă în linie și elimina caracterele de salt la linie nouă;

none – determina ascunderea elementului și neafișarea lui de către navigator; codul acestuia este încărcat însă conținutul său nu e afișat în pagina.

Proprietatea display nu trebuie confundată cu visibility. Spre deosebire de visibility care nu afișează elementul dar lasă liber spațiu pentru element, sintaxa display: none elimina complet elementul din pagina.

Stabilirea modului de poziționare

Prin utilizarea proprietății „position” se poate specifica poziția elementului în pagină web. Un element poate avea una din următoarele valori de poziționare: static, relative, absolut și fixed. Tipul de poziție indică navigatorului cum să trateze amplasarea unui element într-o fereastră.
Poziționarea statică
Valoarea inițială, prestabilită, a poziționării elementelor în fereastra este "static".
Când nu este specificată o poziționare "relativă", "absolută" său "fixă"; elementele sunt dispuse unul după altul în interiorul documentului.
Sintaxa pentru specificarea poziționării static este:

selector {position: static}

Poziționarea relativă
Un element cu poziționare "relativă" este amplasat la locul său în cadrul ferestrei sau a elementului părinte, în sensul că el apare după toate elementele dinaintea sa, respectiv înaintea tuturor elementelor amplasate după el.
Sintaxa pentru specificarea poziționării relative este:

selector {position: relative}

Poziționarea absolută
Poziționarea „absolută” are că efect crearea unui element neafectat de restul documentului, plasarea lui în fereastra fiind făcută într-o locație precisă, definită prin intermediul coordonatelor x și y, indiferent de pozițiile altor elemente.
Sintaxa pentru specificarea poziționării absolute este:

selector {position: absolute}

Poziționarea fixă
Poziționarea „fixă” a unui element este aproximativ la fel cu cea absolută, cu diferența că la derularea paginii elementul fixat rămâne pe poziția lui inițială, fără a se derula.
Sintaxa pentru specificarea poziționării fixed este:

selector {position: fixed}

Includerea unui element absolut într-un element relativ

Un element poate fi poziționat exact în cadrul unei ferestre, sau el poate fi inclus într-un element cu poziționare relativă. În cazul includerii unui element poziționat absolut într-un element poziționat relativ, elementul absolut este poziționat folosind că origine colțul din stânga-sus al elementului relativ.

Includerea unui element relativ într-un element absolut

Când un element poziționat absolut este inclus într-un element poziționat relativ, primul folosește că origine colțul din stânga-sus al părintelui. În cazul în care un element poziționat relativ este plasat în interiorul unui element poziționat absolut, acesta se vă deplasa o dată cu elementul absolut.

Stabilirea vizibilității unui element

Proprietatea visibility poate controla faptul că un element să fie vizibil său nu. Chiar dacă elementul este invizibil, el vă ocupa un spațiu liber în pagina, acolo unde ar fi trebuit să fie afișat.
Sintaxa pentru folosirea acestei proprietăți este următoarea:

selector {visibility: valoare}

Unde "valoare" poate fi:

hidden – ascunde elementul de la afișarea pe ecran;

visible – afișează elementul;

inherit – vizibilitatea elementului este moștenită de la elementul părinte.

Definirea poziției depășirii

Uneori elementele nu sunt în totalitate conținute în casetele lor, caseta nefiind suficient de mare, astfel că o parte a conținutului nu este afișată său depășește marginea stabilită. Proprietatea overflow permite tratarea conținutului în exces, controlând astfel modul de afișare său nu al acestuia.
Forma generală a proprietății overflow este:

selector {overflow: valoare;}

Unde "valoare" stabilește unde vă fi plasată depășirea, folosind una din valorile:

visible – extinde caseta elementului astfel încât să încapă tot conținutul său, ignorând delimitarea suprafeței vizibile. Este opțiunea prestabilită.

hidden – ascunde conținutul care nu încape în caseta elementului, și împiedica apariția barei de derulare.

scroll – adăugă întotdeauna bare de derulare elementului, pentru că să se poată accesa tot conținutul elementului.

auto – barele de derulare apar doar atunci când este necesar.

Pseudo clase

Pseudo-clasele permit adăugarea de stiluri CSS doar la anumite elemente ale aceluiași selector, id sau clasă.
De exemplu, când definiți un stil pentru un anumit tag HTML sau pentru o clasă, conținutul din toate aceleași tag-uri sau aceeași clasă vor avea acel stil, iar dacă doriți să definiți un stil diferit pentru primul (sau ultimul) din acele tag-uri ori pentru primul conținut definit de aceeași clasă, puteți realiza ăsta folosind pseudo-clasele.

Sintaxa pentru utilizarea pseudo-clasei este următoarea:
                Element: pseudo-clasa {proprietate: valoare;}

Unde "element" este un selector, id său clasă, iar "pseudo-clasa" este una din expresiile următoare:

active – Adaugă un stil unui element când acesta este activat (acționat prin click pe el)

first-child – Adaugă un stil unui element care este primul din acel tip de elemente

focus – Folosit pentru input-urile de formulare, le adăugă un stil când acestea sunt active (după click și cursorul de text în ele)

hover – Adaugă un stil unui element când mouse-ul se afla deasupra lui

lang (cuvânt) – Adaugă un stil unui element care are atributul lang="cuvânt" (nu e suportat de Safari și IE mai mic de 8)

last-child – Adaugă un stil unui element care este ultimul din acel tip de elemente

link – Adaugă un stil unui link nevizitat

visited – Adaugă un stil unui link vizitat

BOOTRSTAP

Bootstrap este un framework front-end puternic creat special pentru dezvoltarea de design responsiv rapid și ușor. În el sunt incluse elemente HTML și CSS des întâlnite în webdesign precum formulare, butoane, tabele, meniuri de navigare, meniuri dropdown, alerte, ferestre modale, tab-uri, slidere, si asa mai departe.

Framwevork-ul dezvoltat inițial de Twitter, ajuns acum la versiunea 3 si permite realizarea de site-uri web responsive, care se adaptează la orice rezoluție de dispozitiv: desktop, tablete și telefoane mobile.

Este în momentul de față cel mai utilizat framework pentru dezvoltarea interfețelor web devenind foarte rapid standardul în crearea template-urilor pentru principalele sisteme CMS cum sunt WordPress și Joomla.

Utilizare

Putem spune deci că Boostrap este un instrument utilizat pentru a gestiona cât mai bine faza inițială a unui proiect deoarece putem conta pe o serie de componente care pot fi reutilizate pentru a nu fi nevoiți să începem de la zero.

AJAX și JQuery

AJAX ( Asynchronous JavaScript And XML) a fost creat în anul 2005 de echipa de la Google și alți webdeveloperi. AJAX nu este un nou limbaj de programare, ci mai degrabă este o modalitate de a folosi vechile limbaje pentru a crea aplicații web mai bune, mai rapide și mai user-friendly. AJAX-ul folosește următoarele standarde web: XML (e folosit pentru a transfera datele între server și client, nefiind însă singurul mod de a a realiza acest lucru), DOM (pentru manipularea și accesarea codului), JavaScript (pentru răspunderea la eveniemnte și interacțiunea cu browser-ul), CSS și HTML.
Standardele web folosite în AJAX sunt bine definite și sunt suportate de majoritatea browser-elor. Un mare atu al aplicațiilor AJAX este faptul că nu sunt dependente de platformă sau de browser.

Jquery este o platformă de dezvoltare JavaScript, concepută pentru a ușura și îmbunătăți procese precum traversarea arborelui DOM în HTML, managementul inter-browser al evenimentelor, animații și cereri tip AJAX. JQuery a fost gândit să fie cât mai mic posibil, disponibil în toate versiunile de browsere importante existente, și să respecte filosofia "Unobtrusive JavaScript". Biblioteca a fost lansată în 2006 de către John Resig.

Caracteristici

JQuery folosește o combinație de XPath și sintaxa CSS selector. JQuery se poate folosi pentru a rezolva următoarele probleme specifice programării web:

Selecții de elemente în arborele DOM folosind propriul motor de selecții open source Sizzle, un proiect născut din jQuery

Parcurgere și modificarea arborelui DOM (incluzând suport pentru selectori CSS 3 și XPath simpli)

Înregistrarea și modificarea evenimentelor din browser

Manipularea elementelor CSS

Efecte și animații

Cereri tip AJAX

Extensii

Utilități – versiunea browser-ului, funcția each.

JQuery este o librărie de funcții JavaScript. JQuery simplifica foarte mult programarea JavaScript. Librăria jQuery conține următoarele caracteristici:

HTML element selections

HTML element manipulation

CSS manipulation

HTML event functions

JavaScript Effects and animații

HTML DOM traversal and modification

AJAX

Utilități

Adăugarea librăriei jQuery în Pagină Web

Librăria jQuery este stocată într-un singur fișier JavaScript, conținând toate metodele jQuery. Poate fi adăugată la o pagină web cu următorul mark-up:

<head>

<script type="text/javascript" src="jquery.js"></script>

</head>

Sintaxa jQuery

Sintaxa jQuery este special concepută pentru selectarea Elementelor HTML și efectuarea de actiunicu aceste elemente.

Sintaxa de bază este:

$ (selector). Acțiune ()

Funcția Document. Ready

$ (document). Ready (function (){

//funcțiile jQuery vin aici…

});

Aceasta este pentru a preveni executarea codului jQuery înainte de încărcarea completă a documentului. Selectorii jQuery vă permit selectarea și manipularea elementelor HTML ca un grup sau ca un element singular.

Selectorii jQuery

Un punct cheie este învățarea modului în care jQuery selectează exact elementele la care doriți să aplicați efecte. Selectorii jQuery vă permit să selectați Elemente HTML (sau grupuri de elemente) în funcție de numele elementului, numele atributului sau conținut.

Selectorii jQuery de Elemente

JQuery folosește Selectori CSS pentru a selecta Elemente HTML.

$ ("p") selectează toate elementele <p>.

$ ("p. intro") selectează toate elementele <p> cu class="intro".

$ ("p#demo") selectează toate elementele <p> cu id="demo".

Selectorii jQuery de Atribute

JQuery folosește expresii XPath pentru a selecta elemente cu anumite atribute.

$ (" [href] ") selectează toate elementele cu un atribut href.

$ (" [href='#'] ") selectează toate elementele cu valoare href egală cu "#".

$ (" [href! ='#'] ") selectează toate elementele cu atribut href DIFERIT de "#".

$ (" [href$='. Jpg'] ") selectează toate elementele cu atribut href ce se termină cu ".jpg".

Selectori jQuery de CSS

Selectorii jQuery de CSS pot fi utilizați pentru a modifica proprietăți CSS ale elementelor HTML.

$ (this) Elementul HTML curent

$ ("p") Toate elementele <p>

$ ("p. intro") Toate elementele <p> cu class="intro"

$ ("p#intro") Toate elementele <p> cu id="intro"

$ ("p#intro: first") Primul element <p> cu id="intro"

$ (". Intro") Toate elementele cu class="intro"

$ ("#intro") Primul element cu id="intro"

$ ("ul li: first") Primul element <li> al primei <ul>

$ ("ul li: first-child") Primul element <li> al tuturor <ul>

$ (" [href$='. Jpg'] ") Toate elementele cu un atribut href care

Se termină cu ".jpg"

$ ("div#intro. Head") Toate elementele cu class="head" în

Interiorul unui element <div> cu id="intro"

JQuery este conceput pentru a manipula evenimente.

Funcții jQuery de Evenimente

Metodele jQuery de manipulare a evenimentelor sunt funcții esențiale în jQuery.

Gestionarii de evenimente sunt metode ce se apelează când "se întâmplă ceva" în HTML. Termenul "triggered (sau "fired") de un eveniment" este adesea utilizat. În mod uzual se introduce codul jQuery al metodei de gestionare a evenimentului în secțiunea <head>.

Conflictele de Nume în jQuery

JQuery folosește semnul $ ca o scurtătură pentru jQuery. Și alte librarii JavaScript folosesc semnul dolar pentru funcțiile lor. Metoda jQuery noConflict () specifcă un nume personalizat (precum jq), în loc de semnul dolar.

Evenimente jQuery

Metode jQuery pentru evenimente:

$ (document). Ready (function) Leagă o funcție de evenimentul ready al unui document (când document este încărcat complet)

$ (selector). Click (function) Declanșează, sau leagă o funcție de evenimentul click al

Cu jQuery, puteți ascunde și afișă Elemente HTML folosind metodele hide () și

show (). Atât hide () cât și show () pot prelua 2 parametri opționali: viteza și callback.

Sintaxa:

$ (selector). HIde (viteza, callback)

$ (selector). Show (viteza, callback)

Parametrul de viteza specifică viteza de ascundere/afișare, și poate lua următoarele valori: "slow", "fast", "normal", sau un numar de milisecunde. Parametrul callback este numele unei funcții ce va fi executată după finalizarea funcțiilor hâde (sau show)..

JQuery Toggle

Metoda jQuery toggle () comută vizibilitatea Elementelor HTML folosind metodele show () sau hide (). Elementele afișate sunt ascunse iar cele ascunse sunt afișate.

Sintaxa:

$ (selector). Toggle (viteza, callback)

Parametrul viteza poate lua următoarele valori: "slow", "fast", "normal", sau un numar de milisecunde.

Funcții jQuery Fade – fadeIn, fadeOut, fadeTo

Metodele jQuery fade schimba în mod gradual opacitatea elementelor selectate.

JQuery are următoarele metode fade:

$ (selector). FadeIn (viteza, callback)

$ (selector). FadeOut (viteza, callback)

$ (selector). FadeTo (viteza, opacity, callback)

Parametrul viteza poate lua următoarele valori: "slow", "fast", "normal", sau un numar de milisecunde. Parametrul opacity din metoda fadeTo () permite decolorarea la un anumit nivel de opacitate. Parametrul callback reprezintă numele unei funcții ce va fi executată după ce funcția curentă se termină.

Modificarea Conținutului HTML

JQuery conține metode (funcții) puternice pentru modificarea și manipularea elementelor HTML și a atributelor.

$ (selector).html (content)

Metoda html () schimbă conținutul (innerHTML) Elementelor HTML selectate.

Adăugarea de conținut HTML

$ (selector). Append (content) Metoda append () adaugă la sfârșit conținut Elementului HTML curent.

$ (selector). Prepend (content) Metoda prepend () adaugă la început conținut Elementului HTML curent.

$ (selector). After (content) Metoda after () introduce HTML după toate elementele care se potrivesc.

$ (selector). Before (content) Metoda before () introduce conținut HTML înainte de toate elementele care se potrivesc.

Metoda jQuery css ()

JQuery are o metodă importants pentru manipulare CSS: css ()

Metoda css () are trei sintaxe diferite, pentru a efectua diferite operațiuni.

css (nume) – Obține valoarea proprietății CSS

css (nume, valoare) – Setează proprietăți și valori CSS

css ({properties}) – Setează proprietăți și valori CSS multiple

Metodele jQuery height () și width ()

JQuery are două metode importante pentru manipularea dimensiunii.

height ()

width ()

Metoda height () stabilește înălțimea tuturor elementelor corespunzătoare.

Metoda width () stabilește lățimea tuturor elementelor corespunzătoare.

Proprietăți CSS Descriere

$ (selector).css (nume) Obține valoarea proprietății de stila primului element corespunzător

$ (selector).css (nume, valoare) Stabilește valoarea unei singure proprietăți pentru elementele corespunzătoare

$ (selector).css ({properties}) Stabilește multiple proprietăți pentru elementele corespunzătoare

$ (selector). Height (valoare) Stabilește înălțimea elementelor corespunzătoare

$ (selector). Width (valoare) Stabilește lățimea elementelor corespunzătoare

AJAX și jQuery

JQuery are o bogată librărie de metode (funcții) pentru dezvoltare AJAX. Cu jQuery AJAX, puteți obține date în format TXT, HTML, XML sau JSON de la un server, folosind atât HTTP Get cât și HTTP.

Metoda jQuery load () este o funcție AJAX simplă (dar foarte puternică). Are următoarea sintaxa:

$ (selector). Load (url, dată, callback)

Parametrul selector este utilizat pentru a defini elementele HTML ce se doreste a fi modificate, și parametrul url pentru a specifica o adresă web a datelor.

Numai când trebuie să trimiteți date la server aveți nevoie de parametrul dată. Numai dacă aveți nevoie să accesați o funcție la terminare veți folosi parametrul callback.

PHP

PHP este un limbaj de programare interpretat. Numele PHP provine din limba engleză (Php: Hypertext Preprocessor). Folosit inițial pentru a produce pagini web dinamice, este folosit pe scară largă în dezvoltarea paginilor și aplicațiilor web. Se folosește în principal înglobat în codul HTML, dar începând de la versiunea 4.3.0 se poate folosi și în mod „linie de comandă” (CLI), permițând crearea de aplicații independente. Este unul din cele mai importante limbaje de programare web open-source și server-side, existând versiuni disponibile pentru majoritatea web serverelor și pentru toate sistemele de operare. Conform statisticilor este instalat pe 20 de milioane de site-uri web și pe 1 milion de servere web.

PHP însemna inițial Personal Home Page. PHP a fost început în 1994 ca o extensie a limbajului server-side Perl, și apoi ca o serie de CGI-uri compilate de către Rasmus Lerdorf, pentru a genera un curriculum vitae și pentru a urmări numărul de vizitatori ai unui site. Apoi a evoluat în PHP/FI 2.0, dar proiectul open-source a început să ia amploare după ce Zeev Suraski și Andi Gutmans, de la Technion au lansat o nouă versiune a interpretorului PHP în vara anului 1998, această versiune primind numele de PHP 3.0. Tot ei au schimbat și numele în acronimul recursiv de acum. Apoi Suraski și Gutmans au rescris baza limbajului, producând astfel și Zend Engine în 1999. În mai 2000 a fost lansat PHP 4.0, având la bază Zend Engine 1.0.

Popularitatea de care se bucură acest limbaj de programare se datorează următoarelor caracteristici :

Familiaritatea : sintaxa limbajului este foarte ușoară combinând sintaxele unora din cele mai populare limbaje Perl sau C;

Simplitatea : sintaxa limbajului este destul de liberă. Nu este nevoie de includere de biblioteci sau de directive de compilare, codul PHP inclus într-un document executându-se între marcajele speciale;

Eficiența : PHP-ul se folosește de mecanisme de alocare a resurselor, foarte necesare unui mediu multiutilizator, așa cum este web-ul;

Securitate : PHP-ul pune la dispoziția programatorului un set flexibil și eficient de măsuri de siguranță;

Flexibilitate : fiind apărut din necesitatea dezvoltării web-ului, PHP a fost modularizat pentru a ține pasul cu dezvoltarea diferitelor tehnologii. Nefiind legat de un anumit server web, PHP-ul a fost integrat pentru numeroasele servere web existențe: Apache, IIS, Zeus, server, etc.;

Gratuitate : este probabil cea mai importantă caracteristică a PHP-ului.

Dezvoltarea PHP-ului sub licența open-source a determinat adaptarea rapidă a PHP-ului la nevoile web-ului, eficientizarea și securizarea codului.

Limbajul PHP s-a inspirat din multe alte limbaje; el a pornit ca limbaj de programare procedural, cu sintaxă asemănătoare cu C sau Perl, iar odată cu versiunea 3 i s-au adăugat facilități de programare orientată pe obiect, multe dintre ele asemănătoare sau identice cu cele din Java sau C++. Toate acestea fac că limbajul PHP să fie, în ziua de astăzi, accesibil programatorilor de orice formație.

PHP este folosit în principal în două scopuri:

generarea dinamică a paginilor web – interpretorul PHP este folosit de către serverul web pentru a genera pe loc (parțial sau integral) paginile web care sunt apoi livrate clienților

realizarea de scripturi pentru administrare de sistem – prin intermediul versiunii în linia de comandă a interpretorului PHP

Interpretorul PHP

Programele PHP pot fi rulate prin intermediul interpretorul PHP în două moduri:

din linia de comandă. În acest caz, interpretorul PHP este un executabil de sine stătător. Pentru a executa un fișier PHP, se lansează interpretorul dandu-i-se ca argument fișierul dorit, iar output-ul execuției va fi afișat pe ecran

prin intermediul serverului web. PHP poate lucra cu principalele servere web folosite în ziua de astăzi. Interfațarea PHP cu un server web presupune o reconfigurare a acestuia din urmă; in cele mai dese cazuri, interpretorul PHP este adăugat că modul al serverului, așadar reconfigurarea consta din cel puțin 2 aspecte:

încărcarea modulului PHP

configurarea serverului să recunoască fișierele PHP și să le execute cu ajutorul acestui modul

Atunci când generarea dinamică a unei pagini web este făcută de către un script PHP rulat prin intermediul serverului web,lansarea în execuție a interpretorului PHP se face ca urmare a cererii unui client, iar scriptul poate lua decizii în funcție deinformatii provenite din diferite surse (server, sistemul său de operare, clientul care a făcut cererea etc). Parametrii în funcție de care scriptul PHP poate lua decizii pot fi încadrați în 3 categorii:

date produse intern de către interpretorul si date externe acestuia

informații locale – provenite de la server sau de la sistemul de operare. Aceste informații nu depind de clientul care a făcut cererea ce a determinat rularea interpretorului PHP

informații despre server: numele serverului, softul de server web folosit, adresa și portul serverului etc.

informații provenite de la sistemul de operare, prin intermediul variabilelor de mediu

informații provenite de la clientul web

caracteristici ale clientului (adresa și port, browser folosit, tipuri de conținut pe care acesta la accepta etc)

date provenite de la client (de exemplu, informațiile introduse de utilizator într-un formular HTML)

Informațiile locale devin disponibile interpretorului PHP prin mecanisme interne ale serverului web sau ale sistemului de operare în care acesta rulează:

variabilele de mediu – fiecare proces din sistemul de operare dispune de așa-numitul "environment" – un set de informații sub formă de perechi nume-valoare, care pot fi moștenite sau setate la pornirea procesului și la care are procesul în cauză are acces

informațiile despre server – interfața între modulul PHP și serverul web este de așa natură gândită încât serverul poate transmite interpretorului PHP informații despre sine

Informațiile de la client ajung în posesia interpretorului PHP prin intermediul mesajelor HTTP ce circula intre client și server. Când clientul trimite serverului un mesaj HTTP ce conține informație, acesta din urmă recepționează mesajul și pasează informația interpretorului PHP, care o poate apoi folosi pentru a lua decizii în momentul generării paginii web.

În protocolul HTTP, dialogul între client și server consta din:

cereri ale clientului, în care acesta solicita serverului o anumită resursa

răspunsuri ale serverului, ce conțin datele corespunzătoare resursei solicitate.

Serverul nu trimite date către client decât ca urmare a unei cereri a acestuia din urmă.

O cerere HTTP conține:

resursa solicitată de către client – de obicei, sub forma unui URL sau URI (ex: /products/index.php – calea relativă la document root)

tipul de cerere – există mai multe tipuri de cereri HTTP, însă cele prin intermediul cărora interpretorul PHP poate primi date de la client sunt două: GET și POST (ele vor fi detaliate în cadrul acestui material). Tipul de cerere specifică operația aplicată resursei cerute; în funcție de aceasta, cererea poate să conțină sau nu date de la client, cererea poate produce sau nu modificări pe server si asa mai departe.

(opțional) informații de la client – fie caracteristici ale clientului, fie date introduse de către utilizator

Interpretorul PHP memorează datele externe recepționate pe căile descrise mai sus în variabile predefinite cu domeniu de vizibilitate global (superglobals). Valorile acestor variabile pot fi apoi folosite în cadrul scriptului PHP pentru a genera pagină web, în două feluri:

includerea informațiilor în cauză în pagină web

folosirea informațiilor pentru a lua decizii ce determina conținutul paginii web

Cele mai importante variabile de tip superglobal ce memorează informații externe interpretorului PHP:

$_ENV – tablou cu informațiile extrase din variabilele de mediu (environment)

$_GET – tablou cu informațiile provenite prin intermediul cererii HTTP de tip GET

$_POST – tablou cu informațiile provenite prin intermediul cererii HTTP de tip POST

COOKIE – informații pe care serverul le-a stocat anterior pe client sub formă de cookie și care îi sunt retrimise cu ocazie cererilor următoare

$_SERVER – informații despre server (adresa, nume, port, soft etc) și despre cererea curentă (tip de cerere, URÎ, calea în sistemul de fișiere către resursa solicitată etc)

$_FILE – tablou cu informații despre fișierele trimise de utilizator (din formulare care permit upload de fișiere)

$_REQUEST – tablou asociativ cu informații cumulate (GET+POST+cookie)

Fiecare script PHP rulat prin intermediul serverului web este lansat în execuție în urma unei cereri emise de către un anume client web. Fiecare script rulat astfel va conține în variabilele predefinite enumerate mai sus informațiile legate de acel client particular și de cererea sa. Cu alte cuvinte, dacă mai mulți clienți efectuează cereri către același server web solicitând o aceeași adresă ce are ca efect execuția unui script PHP, fiecare instanță a scriptului în cauză va conține alte valori pentru variabilele predefinite – cele proprii clientului a cărui cerere a determinat rularea scriptului.

Sintaxa PHP

PHP este un limbaj HTML-embedded – el a fost gândit să fie inserat în cadrul paginilor web și rulat pe server în momentul în care este solicitată respectiva pagină. Interpretorul PHP parcurge fișierul primit spre execuție, executând numai porțiunile de cod PHP și ignorându-le pe cele HTML.

Taguri PHP ,instrucțiuni, delimitatori

Condiția ca porțiunile de cod PHP să fie recunoscute ca atare de către interpretor este ca ele să fie delimitate de o pereche de tag-uri (marcatoare de început/sfârșit de cod PHP). Există 4 tipuri de tag-uri:

<?php instrucțiuni_php; ?> – modalitatea recomandată și cel mai des întâlnită, disponibilă întotdeauna

<script language="php"> instrucțiuni_php; </script> – modalitate disponibilă necondiționat, însă nu întotdeauna agreata de către editoare

<? instrucțiuni_php; ?> – așa-numitele "short tags". Folosirea lor nu este recomandată deoarece:

ele pot fi dezactivate din fișierul de configurare al PHP, așadar nu sunt întotdeauna disponibile

în cazul inserării de cod PHP într-un fișier XML sau XHTML, acest gen de tag poate intra în conflict cu tag-urile tradiționale XML

<% instrucțiuni_php %> – așa-numitele "ASP tags". Pot fi și ele dezactivate din fișierul de configurare, de aceea, pentru portabilitate, nu este recomandabilă folosirea lor

Textul din afara celor 2 taguri este lăsat neschimbat, fiind ulterior interpretat de browser. Se pot folosi și alte etichete în funcție de configurația serverului web, dar acestea nu sunt recomandate.

Un program PHP este format dintr-un ansamblu de instrucțiuni, care pot fi de două feluri:

instrucțiuni simple – în cele mai dese cazuri sunt instrucțiuni de o linie, deși pot fi împărțite în mai multe linii dacă programatorul o dorește. Ele se încheie întotdeauna cu “;” cu excepția cazului în care instrucțiunea în cauză este ultima dinaintea delimitatorului de final al secțiunii de cod PHP

instrucțiuni compuse (bloc) – reprezintă un ansamblu de instrucțiuni delimitate prin {}. Acolada de închidere ține loc de “;” .Lipsa delimitatorului “;” între instrucțiuni generează erori.

Comentarii PHP

Comentariile sunt porțiuni de text inserate în codul sursă al unui program cu scop pur informativ (documentarea codului) și care sunt ignorate de către interpretorul PHP. Pentru a fi tratate ca atare, ele trebuie marcate folosind una dintre modalitățile următoare:

comentarii de o linie, variant 1 – încep cu //. Interpretorul va ignora porțiunea de linie începând cu //, fie până la sfârșitul liniei, fie până la întâlnirea tagului de închidere a secțiunii PHP (excepție: când sunt folosite tagurile <script>…</script>, tagul de închidere nu încheie comentariul)

comentarii de o linie, varianta 2– încep cu #. Același comportament ca cele de mai sus

comentarii de mai multe linii – /*..*/ Interpretorul va ignora porțiunea de script cuprinsă între tag-ul de start /* și tag-ul de final */

Variabile

Variabilele în programare sunt zone de memorie în care se stochează date și la care programatorul se referă folosind un nume (o etichetă text). Când programul rulează, datele sunt încărcate în memorie la o anumită adresa (de obicei alta de fiecare dată), pe care programatorul nu o poate cunoaște în momentul scrierii programului. Variabilele îi dau posibilitatea acestuia de a se referi la zonele de memorie în care sunt stocate datele programului folosind nume, independent de locația efectivă în care vor fi ele memorate la rularea programului.

O particularitate a variabilelor PHP este aceea că o variabilă poate primi succesiv valori de tipuri diferite.

Numele dat unei variabile începe întotdeauna cu simbolul $ urmat de o literă sau caracterul „_". Nu poate fi precedat niciodată de o cifră. Restul caracterelor care formează numele variabilei pot fi litere, cifre sau liniuțe de subliniere. În PHP, sunt considerate litere toate caracterele cuprinse între 'a' și 'z', cele cuprinse între 'A' și 'Z', precum și cele care au codul ASCII cuprins între 127 și 255.

Declararea variabilelor

În PHP, variabilele nu se declară înaintea folosirii! Neexistând declarare, orice variabilă poate fi folosită direct, cu riscul ca ea să nu fi fost definită anterior. O variabilă nedefinită sau ștearsă va avea valoarea NULL (case-insensitive), care în funcție de context se poate converti automat la șirul vid "", 0, false etc. Putem verifica dacă o variabilă a fost sau nu definită folosind funcția isset().

Afisarea variabilelor

PHP oferă un set bogat de funcții și construcții ale limbajului care permit afișarea valorii variabilelor oricare ar fi tipul de date al acestora.

Printre funcțiile și construcțiile disponibile se numără:

echo(strâng $arg1, …) – construcție a limbajului. Poate primi unul sau mai multe argumente separate prin virgulă, pe care le convertește la string (dacă e cazul) înainte de a le afișa valoarea.

print(strâng $arg) – asemănător cu echo, dar primește un singur argument și returnează întotdeauna 1.

print_r(mixed $expression [, bool $return] ) – printează sau returnează valoarea expresiei (în funcție de valoarea lui $return). Nu printează tipul de date al expresiei, spre deosebire de var_dump(). Este în general util la afișarea tablourilor, deoarece afișează în mod recursiv fiecare element al tabloului (spre deosebire de echo și print care ar afișa doar "Array").

var_dump(mixed $expr1,…) – cea mai completă funcție; afișează atât tipul de date cât și valoarea expresiei primite ca argument; pentru tablouri afișează fiecare element și tipul său de date, în mod recursiv.

De obicei nu e nevoie ca variabilele să fie șterse după ce au fost folosite. Totuși,acest lucru se poate face utilizând funcția unset().

Constante

Constantele reprezintă zone de memorie referite prin intermediul unui nume al căror conținut, odată inițializat, nu se mai schimbă. În PHP ele au următoarele caracteristici:

se creează folosind construcția define, ce primește următorii doi parametri, în această ordine:

numele constantei, sub formă de string

valoarea constantei, specificata conform cu tipul de date dorit (vezi tipuri de date)

numele lor este case-sensitive și de obicei este format din majuscule

au vizibilitate automată în întreg scriptul PHP ("global scope")

valoarea unei constante

poate fi doar scalar (integer, float, boolean, strâng)

se citește (se afișează, se folosește în expresii etc) fără prefixarea numelui constantei cu $

lista de constante definite se poate obține cu funcția get_defined_constants()

O constantă stochează o valoare, cum este și o variabilă, dar a această valoare, după ce a fost stabilită nu mai paote fi modificată în script. Constantele sunt create cu ajutorul funcției define(), iar numele constantelor este scris cu majuscule, această opțiune nu este obligatorie, insa va face codul dumneavoastră mai frumos și mai lizibil. O diferență importantă între constante și variabile, este faptul că o constantă nu are în fața ei semnul $.

Pentru a verifica dacă o constantă este definită, se folosește funcția defined

Tipuri de date

Tipurile de date PHP pot fi împărțite în următoarele categorii:

tipuri de date scalare – variabilele de acest tip pot memora o singură valoare la un moment dat

numerice – int și float

int – numere întregi (în baza 10, 2 sau 16). Valoarea maximă depinde de sistem și de tipul de integer. Tipul poate fi "signed" sau "unsigned", adică dependent de semnul + sau – sau independent de acestea. Valorile pentru integer unsigned sunt mai mari decât cele pentru signed. Sistemele pe 32 bits pot crea numere întregi între -2147483648 și 2147483647( 2^31-1 ). Maximul pentru sisteme pe 64 bits este 9223372036854775807

float- cunoscute ca numere reale. Valorile maxime sunt de asemenea dependete de platform, în general cu un maxim de ~1.8e308 cu o precizie de 14 zecimale după virgulă (formatul 64 bits IEEE).

valori de adevăr – boolean- valori logice tip adevărat sau false

șiruri de caractere – string- șiruri de caractere. Înainte de PHP6, un caracter era echivalent cu un byte. Nu există limitări pentru lungimea unui șir, în afara memoriei alocate PHP.

tipuri de date compuse – valoarea unei variabile ce are astfel de tip de date este formată din informații multiple, fiecare putând fi de alt tip de date

array – succesiune de perechi cheievaloare, unde cheia poate fi integer sau strâng iar valoarea poate avea orice tip de date

object – entitate care înglobează atât o colecție de date de diverse tipuri cât și funcțiile necesare prelucrării lor

tipuri de date speciale

resource – tip de date pentru variabile ce memorează informații externe PHP, obținute prin funcții speciale (ex: rezultatul interogării unei baze de date, referință către un fișier deschis etc)

NULL – folosit pentru a indica faptul că o variabilă nu are valoare (fie din cauză că nu a fost definită, fie în urma ștergerii explicite)

Conversii de tip de date

Valoarea unei variabile sau expresii poate fi convertită la un alt tip de date în două situații:

conversia explicită a valorii unei variabile sau expresii, de către programator, folosind operatorul de cast ():

conversie implicită (efectuată automat), atunci când contextul în care se afla expresia sau variabilă cere un anumit tip de date. Mulți operatori, funcții, structuri de control etc. convertesc automat expresiile primite ca operanzi/argumente.

De exemplu, echo convertește argumentele sale la string:

Operatori

Operatorii sunt elemente de limbaj care efectuează o operație asupra uneia sau mai multor valori (numite operanzi) și care produc o valoare finală (rezultatul operației). Vor fi prezentate în continuare principalele categorii de operatori prezenți în limbajul PHP:

Operatori aritmetici

Realizează operațiile matematice de bază. Tipul de date al rezultatului poate diferi de al operanzilor. Toți operatorii aritmetici operează asupra a două expresii (operanzi). Există cinci astfel de operatori:

Adunare(+)

Scădere(-)

Înmulțire(*)

Împărțire(/)

Modulo(rest)(%)

Aceste operații se aplică asupra unor valori care reprezintă tipuri numerice. Dacă unul dintre operanzi nu are tip numeric, atunci el va fi convertit automat la o valoare întreagă. Dacă cel puțin unul dintre operanzi (după efectuarea eventualelor conversii necesare) este un număr real, atunci rezultatul operației va fi tot un număr real, cu excepția operatorului rest, rezultatul operației de determinare a restului este întotdeauna un număr întreg. Dacă ambii operanzi sunt numere întregi, atunci rezultatul va fi un număr întreg, cu excepția împărțirii al cărei rezultat este întotdeauna un număr real. Dacă operatorul rest este aplicat asupra unor numere reale, atunci rezultatul este un număr întreg. Nu este permisă împărțirea la valoarea 0.

Operatori de comparare

Interpretorul PHP pune la dispoziție mai mulți operatori care pot fi folosiți pentru compararea a două valori. Expresiile în care apar astfel de operatori au ca rezultat valori logice (true sau false).

Egal (‘==’) rezultatul este true dacă cele două expresii au aceeași valoare

Identic ('===') rezultatul este true dacă cele două expresii au aceeași valoare și au același tip;

Diferit ('<>' sau '!=') rezultatul este true dacă cele două expresii au valori diferite;

Diferit ('!==') rezultatul este true dacă cele două expresii au valori diferite sau au tipuri diferite

Neidentic ('!===') rezultatul este true dacă cele două expresii au valori diferite și au tipuri diferite

Mai mic ('<') rezultatul este true dacă valoarea primei expresii este mai mică decât valoarea celei de-a doua expresii

Mai mare ('>') rezultatul este true dacă valoarea primei expresii este mai mare decât valoarea celei de-a doua expresii

Mai mic sau egal ('<=') rezultatul este true dacă valoarea primei expresii este mai mică sau egală cu valoarea celei de-a doua expresii;

Mai mare sau egal ('>=') rezultatul este true dacă valoarea primei expresii este mai mare sau egală valoarea celei de-a doua expresii

Se observa că operatorii de testare a egalității și non-egalitatii sunt de două feluri:

non-strict: operatorii == și !=, care fac automat conversii ale operanzilor și compară valorile rezultate. Regulile după care se fac conversiile sunt:

dacă ambii operanzi sunt string:

dacă amândoi conțin numere valide, se face comparare numerică a celor două valori

în caz contrar, compararea este alfabetică

dacă un operând este strâng și unul numeric, stringul este convertit la număr

dacă un operând este boolean, celălalt este convertit la boolean

strict: operatorii === și !==. Cei doi operanzi sunt egali dacă valorile lor sunt egale și sunt de același tip de date, fără nici un fel de conversie

Operatori pentru șiruri de caractere

Operatorii pentru stringuri sunt '.' (punct) pentru concaternare și '.=' (punct și egal) pentru atribuirea prin concatenare. Acești operatori sunt folosiți pentru a uni stringuri.

Operatorii logici

Sunt folosiți pentru crearea unor expresii complexe de tip boolean prin combinarea de valori elementare. Sunt utilizați cu precădere pentru specificarea condițiilor instrucțiunilor decizionale, prin agregarea rezultatelor mai multor operatori de comparare .

Operatorii logici sunt următorii:

&& – ȘI logic. Rezultatul sau este true numai dacă ambii operanzi se evaluează că true. Dacă măcar unul dintre operanzi este false, rezultatul va fi false

| | – SAU logic. Rezultatul sau este true dacă oricare dintre operanzi se evaluează true. Rezultatul este false numai atunci când ambii operanzi sunt false

! – negare (inversarea valorii de adevăr)

and – ȘI logic, dar cu precedenta mai mică decât && și =

or – SAU logic, dar cu precedenta mai mică decât || și =

xor – SAU exclusiv, cu precedenta mai mică decât &&, || și =.

Dacă operanzii au valori egale rezultatul este false, când au valori diferite este true.

Operatorii &&/and și ||/or funcționează cu "scurt-circuitare" – al doilea operând nu se mai evaluează dacă primul este suficient pentru a decide valoarea expresiei..

Operatori la nivel de bit

Sunt folosiți pentru operații aplicate reprezentării în binar a numerelor:

& – ȘI la nivel de bit

| – SAU la nivel de bit

^ – SAU exclusiv lsa nivel de bit

! – negare pe biți (comutarea valorii biților)

<<, >> – deplasare pe biți la stânga sau la dreapta

Operatori de atribuire

Operatorul de atribuire ” =” poate fi folosit de sine stătător său compus cu unul aritmetic. Rezultatul acestui operator este chiar valoarea atribuită. Primul operand asupra căruia este aplicat un astfel de operator de atribuire trebuie să fie o variabilă, iar al doilea poate fi o expresie.

Operatorul ternar

Acest operator folosește 3 operanzi și produce un rezultat care depinde de valoarea de adevăr a primului operand. Expresiile ce joacă rol de operand 2 și 3 trebuie să aibă o valoare – nu este permisă folosirea de instrucțiuni care nu au ca rezultat valori.

Efectul său ar putea fi obținut și prin folosirea instrucțiunii condiționale if, însă cu operatorul ternar scrierea este mai condensată.

Operatori de incrementare și decrementare

Sunt folosiți pentru incrementarea sau decrementarea variabilelor. Operatorul de incrementare (++) are ca efect creșterea cu 1 a valorii unei variabile, iar cel de decrementare (–) are ca efect scăderea cu 1 a valorii variabilei. Tipul variabilei poate fi întreg său real. Dacă operatorul precede variabila, atunci rezultatul expresiei este valoarea obținută după incrementare sau decrementare. Dacă variabila precede operatorul, atunci rezultatul expresiei este valoarea variabilei înaintea incrementării sau decrementării. Cu alte cuvinte, dacă operatorul precede variabila, atunci valoarea variabilei este mai întâi modificată și apoi utilizată, iar dacă variabila precede operatorul, atunci valoarea ei este mai întâi utilizată și apoi modificată.
Acești operatori pot fi utilizați și pentru variabile care conțin șiruri de caractere. Operatorul de incrementare duce la creșterea cu 1 a codului ASCII a ultimului caracter din șir dacă acesta este o literă sau cifră. În cazul în care litera este 'z', respectiv 'Z', sau cifră este '9', atunci ea devine 'a', respectiv 'A', sau cifră '0' și se încearcă incrementarea penultimului caracter. Dacă aceasta este tot '9', 'z' sau 'Z' se aplică același procedeu și se trece la antepenultimul caracter. Procedeul continuă până în momentul în care se ajunge la un caracter care nu este '9', 'z' sau 'Z' sau se ajunge la începutul șirului. În acest ultim caz, la începutul șirului se adaugă caracterul '1', 'a' sau 'A'. Incrementarea nu are nici un efect pentru caracterele care nu sunt cifre sau litere.
Decrementarea șirurilor de caractere nu are nici un efect, valorile variabilelor rămânând nemodificate. Există o singură excepție și anume șirurile care reprezintă numere întregi sau reale. Acestea sunt incrementate sau decrementate potrivit regulilor pentru valorile numerice.

Operatori de execuție

Interpretorul PHP permite executarea unor comenzi sistem prin intermediul operatorului (` `) . Comanda respectivă este cuprinsă între apostroafele inverse (backquotes), iar rezultatul acestei comenzi este un șir de caractere care reprezintă și rezultatul expresiei.

Instrucțiuni

Dacă nu ar exista structuri de control, instrucțiunile unui program s-ar executa secvențial (în ordinea în care apar în codul sursă) până la terminarea acestuia. În programare este nevoie însă de posibilitatea de a lua decizii în funcție de valori ale variabilelor, de a executa repetat porțiuni de cod, de unde și necesitatea instrucțiunilor de control al execuției.

PHP dispune de mai multe instrucțiuni de control al execuției, printre care:

instrucțiuni decizionale – permit executarea unor porțiuni de cod diferite în funcție de condiții stabilite de către programator

instrucțiuni repetitive – oferă modalități de a executa o secvență de instrucțiuni în mod repetat, cu număr de repetiții controlat

instrucțiuni pentru includerea unui fișier într-un script PHP – oferă posibilitatea refolosirii codului și a structurării unei aplicații PHP formate din mai multe fișiere

Instrucțiuni decizionale

Instrucțiunile decizionale permit execuția condiționată a uneia sau mai multor secțiuni de cod în program în funcție de valoarea unei expresii în care participa date alese de către programator.

Structura if

Una dintre cele mai importante structuri în orice limbaj este cea alternativă. În PHP sintaxa acestei structuri este următoarea:

if (condiție) {instrucțiuni;}

Folosirea unei astfel de structuri indică faptul că instrucțiunile se vor executa dacă și numai dacă valoarea expresiei condiție (eventual după conversia la tipul boolean) va fi true.

Construcția else

În foarte multe cazuri dorim să se execute alte instrucțiuni dacă valoarea expresiei condiție este false. În PHP putem utiliza o construcție de tipul else în acest scop. Sintaxa este:

if (condiție) {instrucțiuni #1;} else {instrucțiuni #2;}

Construcția elseif

Uneori, suntem nevoiți să folosim structuri alternative imbricate în diferite scopuri.

Limbajul PHP permite folosirea unei prescurtări și anume construcția elseif. Practic, aceasta înlocuiește un else urmat de un if. Sintaxa acestei structure este:

if (condiție1) {instrucțiuni #1;} elseif (condiție2) { instrucțiuni #2;}else {instrucțiuni #3;}

Structura switch

În anumite cazuri trebuie să efectuăm anumite operații în funcție de anumite valori ale unei expresii. O soluție ar fi folosirea unor structuri if imbricate sau a uneia singure în care apar mai multe construcții elseif.

Pentru început se determină valoarea expresiei și apoi se verifică dacă aceasta apare ca valoare pentru una dintre construcțiile case. În caz afirmativ, toate instrucțiunile începând cu cea corespunzătoare valorii respective (până la sfârșitul blocului swich) vor fi executate. Execuția acestor instrucțiuni poate fi întreruptă dacă este folosită instrucțiunea break. Dacă valoarea expresiei nu corespunde nici uneia dintre valorile corespunzătoare construcțiilor case, se execută instrucțiunile corespunzătoare construcției default. Dacă aceasta lipsește, atunci nu se execută nici o instrucțiune. Trebuie precizat faptul că valorile corespunzătoare construcțiilor case pot fi numere întregi, numere reale sau șiruri de caractere; nu pot fi utilizate obiecte sau vectori.

Sintaxa instrucțiunii:

switch (expresie)

{ case "val_1" : bloc_instuctiuni_1; break;

………

case "val_n" : bloc_instuctiuni_n; break;

default : bloc_instuctiuni_n+1; break;

}

Instrucțiuni repetitive

Instrucțiunile repetitive sunt folosite atunci când dorim execuția repetată a unei porțiuni de cod, în mod controlat:

până când o anumită condiție este îndeplinită sau până când încetează să mai fie adevărată

de un anumit număr de ori

Structura while

Majoritatea script-urilor PHP vor conține cicluri. Pentru a folosi o buclă anterior condiționată vom utiliza structura while.

Sintaxa acestei structuri este:

while (condiție) {instrucțiuni;}

Efectul acestei structuri este executarea instrucțiunii atât timp cât valoarea expresiei condiție (eventual după conversia la tipul boolean) este true. Trebuie observat faptul că este posibil că instrucțiunile din acoladă să nu fie executată niciodată.

Structura do – while

Uneori, dorim să folosim bucle posterior condiționate. În acest scop, în PHP avem la dispoziție structura do – while a cărei sintaxă este:

do {instrucțiuni;} while (condiție);

Singura diferență față de structura while este faptul că valoarea condiției este determinată, de fiecare dată, după executarea instrucțiunii. Ca urmare, instrucțiunea va fi executată cel puțin o dată. Nu există o sintaxă alternativă pentru această structură.

Structura for

Instrucțiunea for este o instrucțiune mai complexă, ce cuprinde 3 secțiuni :

secțiunea 1 – se execută o singură dată, la intrarea în instrucțiunea for. Este folosită în general pentru inițializarea variabilelor folosite în cadrul buclei for

secțiunea 2 – conține o expresie care se evaluează înaintea fiecărei repetiții. Rezultatul ei este de tip boolean; dacă valoarea sa este true, se mai efectuează încă o repetiție, în caz contrar se iese din bucla for

secțiunea 3 – se execută la sfârșitul fiecărei repetiții, după executarea corpului buclei for (setul de instrucțiuni conținut intre acolade). Este folosită în general pentru modificarea variabilelor ce participa în bucla for.

for (expresie #1; condiție; expresie #2) { instrucțiuni;}

Structura foreach

Această structură poate fi folosită pentru a realiza o iterație printre toate elementele unui vector. Așadar, ea nu poate fi folosită decât împreună cu vectorii; utilizarea sa asupra unei variabile de alt tip duce la apariția de erori.

Există două sintaxe acceptate pentru această structură și anume:

foreach (expresie_vectorială aș $valoare){ instrucțiune; }

sau

foreach (expresie_vectorială aș $cheie => $valoare){instrucțiune;}

Instrucțiunea break

Această instrucțiune poate fi folosită pentru a întrerupe forțat execuția unui ciclu sau a secvenței de instrucțiuni corespunzătoare unei structuri switch. Instrucțiunea poate fi urmată de un argument care indică numărul de structuri îmbricate a căror execuție se încheie. Valoarea implicită este 1, deci se întrerupe execuția unei singure structuri.

Instrucțiunea break poate fi utilizată si pentru întreruperea execuției secvențelor de instrucțiuni corespunzătoare structurilor for, foreach, while, do – while și switch.

Pentru cazurile in care dorim ca executia sa "sara" direct la sfarsitul unei repetitii si sa continue cu urmatoarea,exista instructiunea continue. Ca si break, aceasta instructiune poate primi un argument ce specifica, in cazul buclelor imbricate, care este cea care se doreste continuata.

Instrucțiunea continue

Această instrucțiune este folosită pentru a întrerupe execuția secvenței de instrucțiuni din interiorul unui ciclu și trecerea la următoarea iterație. La fel ca și în cazul instrucțiunii break, poate apărea un argument care indică numărul structurilor îmbricate asupra cărora are efect.

Includerea unui alt fișier în fișierul PHP current

PHP oferă instrucțiuni care permit includerea unui în fișierul PHP curent, în momentul execuției sale. Acest lucru este foarte util, de exemplu, atunci când programatorul a definit un set de funcții și dorește să le aibă disponibile în mai multe fișiere PHP; funcțiile pot fi plasate într-un fișier PHP separat, care mai apoi este inclus în toate celelalte fișiere care necesită funcțiile în cauză.

Există 4 instrucțiuni folosite pentru astfel de incluziuni:

include – include fișierul specificat în cel curent, în punctul în care este plasată instrucțiunea include.

dacă fișierul inclus conține (și) cod PHP delimitat corect, acesta este executat.

dacă fișierul inclus nu există sau nu poate fi citit, este emis un warning și execuția scriptului curent continuă cu instrucțiunea de după include.

require – identic cu include, cu o singură excepție: dacă fișierul nu poate fi inclus, require generează eroare fatală și oprește execuția scriptului curent

include_once – că include, însă include fișierul doar dacă acesta nu a fost inclus anterior

require_once – că include_once, însă cu eroare fatală dacă fișierul nu poate fi citit

Tablouri

Un tablou PHP reprezintă o succesiune de elemente sub formă de perechi

cheie-valoare, unde fiecare cheie identifica în mod unic un element. Spre deosebire de alte limbaje, unde elementele unui tablou erau accesate prin intermediul unui index numeric ale cărui valori întregi erau consecutive și începeau de la 0, în PHP indexul (cheia) poate fi integer sau string, iar cheile se pot afla în orice ordine. De asemenea, valorile din tablou pot avea orice tip de date:

Proprietăți ale cheilor tabloului

Cheile din tablou pot fi doar integer sau string! Orice alt tip de date folosit ca cheie (la definirea tabloului sau la accesarea elementelor sale) este convertit automat la unul dintre aceste două tipuri de date:

cheile string care conțin un număr întreg zecimal valid (nu octal, nu hexazecimal!) sunt convertite la integer

cheile float și boolean sunt convertite la integer (false0, true1)

cheia NULL este convertita la șirul vid "", care reprezintă o cheie validă!

În funcție de tipurile de date ale cheilor, tablourile pot fi:

indexate numeric – cheile sunt de tip integer; nu este obligatoriu ca ele să înceapă de la 0, să fie numere consecutive sau să se afle în ordine crescătoare.

asociative – cheile sunt de tip string (atenție! case sensitive!)]

mixte – tablouri care conțin o combinație de chei numerice și string

Deoarece tabloul reprezintă o grupare de valori (date) de diverse feluri aflate sub umbrelă unui nume comun, acesta oferă avantaje precum:

posibilitatea ca o funcție să primească ca argument sau să returneze mai multe valori simultan, sub formă unui tablou

parcurgerea în vederea citirii sau prelucrării datelor componente se poate ușor automatiza, folosind instrucțiuni sau funcții PHP predefinite.

pentru operații uzuale precum sortarea, numărarea, căutarea unui element, exista funcții PHP predefinite.

grație flexibilității tablourilor în PHP a funcțiilor predefinite, tablourile pot fi folosite pentru a simula alte structuri de date precum stiva, coada, arbore, hash table, existând funcții PHP predefinite în acest sens

Accesarea elementelor

Tabloul este practic o listă de variabile care nu mai au nume propriu, independent, ci sunt accesate folosind numele tabloului și cheia corespunzătoare.

Crearea și popularea unui tablou

Folosind construcția array() este modalitatea primară de a crea tablouri, care oferă posibilitatea specificării explicite a valorilor și eventual a cheilor corespunzătoare:

Definiția de tablou este parcursă de la stânga la dreapta; elementele sunt adăugate unul câte unul, ținându-se de fiecare dată cont de cele deja adăugate până atunci. Pentru orice element a cărui cheie nu este precizata se creează automat o cheie numerică, după următoarele reguli:

dacă este prima cheie numerică din tablou, va primi valoarea 0

dacă există deja chei numerice în tablou, însă sunt toate negative, noua cheie va fi 0

dacă există deja în tablou chei numerice >=0, noua cheie va fi egală cu cheia numerică maximă plus unu

Adăugarea/modificarea unui element prin specificarea cheii

Sintaxa folosită pentru accesarea unui element permite și modificarea valorii acestuia. Dacă elementul cu cheia în cauză exista, valoarea sa va fi suprascrisa. Dacă cheia nu exista în tablou, va fi creat un nou element cu cheia precizată. Dacă variabilă tablou nu a fost definită sau a fost ștearsă, va fi creat un tablou cu un element având cheia și valoarea specificata.

Adăugarea unui element fără specificarea cheii

Efectul va fi:

dacă variabilă nu exista, va fi creat un tablou cu un element ce are cheia 0 și valoarea specificata

dacă variabilă există și este de tip tablou, va fi adăugat un nou element cu valoarea specificată, a cărui cheie este generată după aceleași reguli ca și în cazul construcției array()

Parcurgerea unui tablou

Indiferent dacă scopul este simpla citire a valorilor/cheilor sau modificarea acestora, parcurgerea unui tablou PHP se poate face în cel puțin trei moduri:

Cu foreach

Construcția foreach funcționează numai cu tablouri sau cu obiecte care implementează interfața Iterator .

$a = array( "unu" =>1, "doi" =>2, 3=>"trei );

foreach($a as $valoare){echo $valoare;}

Construcția foreach scrisă astfel lucrează pe o copie a tabloului, deoarece $valoare ia pe rând valoarea fiecărui element din tablou și de aceea modificând $valoare nu pot fi alterate elementele tabloului original.

Cu funcții care modifică pointerul intern al tabloului

Fiecare array are un pointer intern care indica elementul curent în iterare – acest artificiu scutește programatorul de a folosi o variabilă externă în acest scop. Pointerul se manipulează indirect, prin funcții:

reset(array &$array) – aduce pointerul la începutul tabloului și returnează primul element, sau FALSE dacă array-ul e gol. Este bine să fie folosit înainte de fiecare parcurgere a tabloului, dacă nu cunoaștem starea sa

current(array &$array) și key(array &$array) – returnează valoarea, respectiv cheia elementului curent fără a mișca pointerul

prev(array &$array) și next(array &$array) – returnează elementul precedent/următor sau FALSE dacă s-a ajuns la capătul tabloului.

each(array &$array) – returnează elementul curent sub forma unui array asociativ și muta pointerul intern la următoarea valoare. Returnează FALSE dacă a ajuns la sfârșitul array-ului.

Cu funcțiile predefinite array_walk() sau array_walk_recursive()

Aceste funcții aplica o funcție specificata de utilizator fiecărui element al tabloului.

Diferența între cele două funcții este că cea de-a doua este potrivită pentru tablouri multidimensionale (pentru fiecare valoare întâlnită care este de tip tablou, funcția array_walk_recursive() va coborî și în adâncimea tabloului respectiv).

Funcții

O funcție reprezintă un bloc de instrucțiuni căruia i se dă un nume, având posibilitatea de a primi date de intrare, de a le prelucra și de a produce date de ieșire. Odată definită, funcția poate fi apelată ori de câte ori este nevoie folosind numele sau, plasandu-i-se date de intrare diferite și putând produce, în consecință, rezultate de ieșire diferite.

Funcțiile sunt una dintre modalitățile fundamentale de a refolosi cod: în loc să scriem aceeași secvență de instrucțiuni de mai multe ori în cadrul programului nostru, vom defini o funcție ce conține acea secvență de instrucțiuni și vom apela funcția în mod repetat folosind numele său.

Din punct de vedere al provenienței lor, distingem două tipuri de funcții în PHP:

funcții predefinite – sunt funcții scrise de către creatorii interpretorului sau ai extensiilor PHP și care sunt deja disponibile programatorului PHP, fără ca acesta să ia vreo măsură specială.

funcții definite de către programatorul PHP

In PHP funcțiile pot fi definite de către utilizator folosind următoarea sintaxă:

function numef ($param1, $param2, …,  $paramN) {

  // instrucțiuni

  }

Numele funcției urmează reguli asemănătoare cu cele pentru numele de variabile: începe cu litera sau underscore și poate conține doar litere, cifre și underscore.

Odată definită, o funcție are vizibilitate globală (în orice context al scriptului PHP).

Apelarea unei funcții se face folosind numele acesteia și specificând între paranteze valorile argumentelor (dacă există), care pot fi valori constante, variabile, constante sau expresii.

Numărul de argumente folosite la apelarea funcției trebuie să fie cel puțin egal cu numărul de argumente specificate la definirea acesteia. În caz contrar, este emis un warning și argumentele lipsa primesc valoarea null:

Când la apelarea unei funcții se pasează ca argument o variabilă, ceea ce primește funcția este de fapt o copie a valorii variabilei, astfel încât funcția nu poate modifica variabilă primită ca argument

În PHP o funcție poate fi definită oriunde în cadrul script-ului și în interiorul unei funcții poate să apară orice secvență validă de cod care include definirea de alte funcții și definiții de clase. Argumentele unei funcții trebuie separate prin virgulă, și, implicit, acestea sunt transmise prin valoare.

Transmiterea parametrilor prin referință

Atunci când dorim ca o variabilă pasată ca argument unei funcții să fie modificată în interiorul funcției, putem defini funcția să facă pasărea argumentelor prin referință.

Pentru a transmite parametri unei funcții prin referință, fapt care implică modificarea valorii parametrilor și păstrarea noii valori după ce execuția funcției s-a încheiat, se folosește operatorul '&' înaintea numelui parametrului formal, în momentul definirii funcției.

Funcții cu număr variabil de parametri

O altă facilitate a limbajului PHP este aceea că oferă programatorului posibilitatea de a utiliza funcții care au un număr nedeterminat de parametri. Funcțiile care folosesc un număr variabil de parametri nu au nici o particularitate în ceea ce privește definirea lor. Aceste funcții se definesc la fel ca cele prezentate anterior, dar pentru a putea accesa parametri se vor folosi următoarele funcții predefinite:

func_num_args( ) – această funcție returnează numărul parametrilor funcției care a apelat-o; dacă această funcție este apelată din exteriorul unei funcții definite de utilizator se va genera un mesaj de avertizare;

func_get_arg(arg_num) – returnează valoarea parametrului care se află pe poziția arg_num în lista de parametri; primul parametru are numărul de ordine 0; dacă este apelată din exteriorul unei funcții definite de utilizator se va genera un mesaj de avertizare;

func_get_args( ) – returnează un tablou unidimensional care conține valorile parametrilor pe care funcția apelantă i-a primit; dacă această funcție este apelată din exteriorul unei funcții definite de utilizator se va genera un mesaj de avertizare.

Valorile returnate de funcții

Instrucțiunea return poate fi folosită pentru a ieși din funcția curentă, cu posibilitatea returnării unei valori.Dacă o funcție nu conține return, ieșirea din ea va avea loc după încheierea execuției instrucțiunilor ce constituie corpul funcției

Instrucțiunea return poate fi folosită în cadrul funcției în două moduri:

fără argumente – cauzează ieșirea forțată din funcție și continuarea execuției cu linia imediat următoare apelului de funcție

cu argument – argumentul poate fi o variabilă sau expresie și reprezintă valoarea returnată de către funcție, care poate fi mai apoi asignata unei variabile sau folosită într-o expresie

Returnarea prin valoare

O funcție poate returna o valoare prin folosirea instrucțiunii return urmată de o expresie a cărei valoare poate avea orice tip de date (scalar, tablou, obiect etc).

Returnarea prin referință

Funcția poate returna prin referința – în acest caz, trebuie folosit & și în numele funcției, și la apelarea ei.

Spre deosebire de majoritatea limbajelor de programare moderne, o funcție PHP poate să returneze o referință la o variabilă care a fost declarată în interiorul funcției, însă acest lucru nu este indicat deoarece, în anumite cazuri, poate duce la efecte neașteptate ale executării unui script PHP. În alte limbaje de programare efectele devin uneori fatale.

Variabilele de tip funcție

O altă facilitate a limbajului PHP în ceea ce privește funcțiile este aceea că suportă variabile de tip funcție. Acest lucru este util atunci când se folosesc liste de funcții pentru prelucrarea anumitor tipuri de date. Pentru a atribui un nume de funcție unei variabile în PHP se folosește aceeași construcție ca în cazul atribuirii unui șir de caractere, și anume, o variabilă va primi ca valoare numele funcției scris între ghilimele simple sau duble.

Variabilele globale nu sunt vizibile automat în interiorul unei funcții. Dacă se încearcă în interiorul funcției folosirea unei variabile cu același nume ca una globală, va fi creată o variabilă locală și toate operațiile se vor efectuă asupra acestei variabile, fără a o afecta pe cea globală. Există două modalități de a acționa asupra variabilelor globale din interiorul funcției:

prin intermediul variabilei predefinite $GLOBALS, care este un tablou asociativ cu variabilele globale definite (vezi tablouri)

“importând" variabilă dorită în interiorul funcției

Lucrul cu formulare HTML

Cererea HTTP de tip GET

Cererea de tip GET este cea trimisă serverului atunci când utilizatorul scrie în browser o adresă și apasă Enter. Este folosită în cele mai dese cazuri pentru a solicita pagini serverului web. Există posibilitatea ca clientul să trimită informații serverului web prin intermediul unei cereri de tip GET folosind asanumitul query string. Query string-ul este o parte opțională a URL-ului; el urmează adresei propriu-zise, începe cu ? și continuă cu perechi nume=valoare separate prin caracterul &.

Browserul web poate ajunge să ceară serverului un URI ce conține query string din diferite motive – iată câteva:

utilizatorul scrie de mâna URL inclusiv query string

utilizatorul da click pe un link a cărui ținta este un URL ce conține și query string

utilizatorul completează un formular HTML care a fost configurat să trimită datele către server prin intermediul unei cereri de tip GET

Dacă, corespunzător URL-ului cerut de client, serverul web lansează interpretorul PHP, acesta plasează automat informațiile primite prin query string în variabilă de tip superglobal $_GET, sub forma unui tablou asociativ ale cărui perechi cheievaloare corespund perechilor nume-valoare din query strâng.

În cererea de tip GET toate datele trimise de utilizator serverului fac parte din URL, ceea ce are următoarele implicații:

datele sunt la vedere

avantaj: în acest fel, utilizatorul poate salva un bookmark către o pagină generată pe baza input-ului sau, pentru că URL-ul conține toate informațiile necesare generării acelei pagini particulare

dezavantaj: nu este recomandabilă transmiterea informațiilor sensibile în acest fel

lungimea datelor pasabile prin intermediul URL-ului este drastic limitată, deoarece lungimea maximă a URL-ului este în general în jurul a 255 de caractere

valorile folosite în query strâng trebuie să treacă printr-un proces de URL encoding, deoarece exista caractere care în URL au semnificație specială (ex: /, &, = etc) sau sunt nepermise

Date fiind cele enumerate mai sus, deducem că cererea de tip GET nu este în general potrivită pentru a transmite serverului web informațiile introduse de către utilizator într-un formular HTML.

Cererea de tip GET a fost gândită pentru a solicita date serverului web fără a modifica starea acestuia. Chiar și atunci când prin intemediul ei se trimit date către server, acestea nu trebuie să producă modificări permanente. Query string-ul este folosit în general pentru a personaliza ceea ce se afișează într-o pagină generată dinamic .

Cererea de tip de tip POST

Dacă cererea de tip GET era în general folosită pentru a solicita resurse serverului (însă cu posibilitatea de a-i transmite acestuia informații în caz de nevoie, ca parte a URL-ului), cererea de tip POST a fost gândită special pentru că clientul să trimită date serverului în vederea procesării. POST este folosit în general pentru expedierea către server a datelor introduse de utilizator într-un formular.

Datele trimise cu POST nu mai fac parte din URL, ci sunt transmise ca payload a mesajului HTTP, consecințele fiind:

datele trimise serverului nu mai sunt vizibile în URL

avantaj: putem folosi POST pentru a transmite informații de autentificare dintr-un formular HTML

dezavantaj: utilizatorul nu mai poate face bookmark unei pagini generate pe baza informațiilor din POST, deoarece URL-ul este insuficient de această dată pentru a reconstrui acea pagină particulară. Dacă utilizatorul completează un formular de mai multe ori, cu date diferite, după fiecare expediere a datelor către server URL-ul vizibil în browser va fi același

limita impusă cantității de date trimise serverului este mult mai sus decât în cazul GET, și este configurabila din setările serverului web și ale interpretorului PHP.

Formularul conține un câmp denumit nume a cărui valoare va fi trimisă serverului în momentul apăsării pe butonul de submit. Un formular HTML este format dintr-un ansamblu de elemente ce permit utilizatorului să ofere input sub diverse forme:

alegerea dintr-o listă de valori impuse

introducerea de mâna a unei valori, a unui șir de caractere etc.

bifarea unei opțiuni independente sau care este parte a unui grup

Fiecare element din formular are o valoare din oficiu și o valoare curentă (ex: un câmp pentru introducerea vârstei are ca valoare inițială șirul vid, urmând ca ea să se schimbe în momentul în care utilizatorul introduce text în acel câmp).

Utilizatorul completează formularul modificând valorile diferitelor elemente componente. Odată informațiile introduse în formular, trimiterea lor către server se face de obicei ca urmare a apăsării pe un buton cu rol de Submit (expediere a datelor).

Tag-ul form poate avea diferite atribute, dintre care de interes pentru noi sunt următoarele:

method – specifică tipul de cerere HTTP care va fi folosită pentru a trimite datele către serverul web când utilizatorul apasă pe butonul de submit. Dacă se folosește GET, toate datele trimise vor fi incluse în URL, sub formă de query strâng (cu toate implicațiile discutate mai sus, la cererea de tip GET). Dacă se folosește POST, URL-ul afișat de browser rămâne neschimbat după apăsarea butonului de Submit, însă datele vor fi recepționate de către server că parte a mesajului HTTP.

action – specifică adresa web a programului care va prelucra datele introduse în formular. Adresa poate indică un alt fișier decât cel în care este definit formularul, sau același – nu este deloc neobișnuit ca un script PHP să efectueze fie prelucrarea datelor, fie generarea codului HTML al paginii web, fie ambele – în funcție de datele provenite de la utilizator.

Iată o listă a principalelor tipuri de elemente ce pot apărea într-un formular HTML:

butoane

cu rol de submit – apăsarea lor determina trimiterea datelor curente ale formularului către server

cu rol de reset – aduc valorile elementelor din formular la cele default

fără rol special – li se pot atașa acțiuni prin intermediul unor limbaje de scripting ce rulează pe client

text – un câmp în care utilizatorul poate scrie/edita text, pe o singură linie

text area – un câmp de introducere/editare de text pe mai multe linii

drop-down list – o listă de elemente predefinite din care utilizatorul poate alege o singură valoare

lista cu selecție multiplă – o listă de elemente predefinite în care utilizatorul poate selecta mai multe valori simultan

checkbox – căsuța care poate fi bifata sau debifata independent de altele

radio button – elementele de acest tip sunt folosite pentru a crea un set de opțiuni din care numai una poate fi selectata la un moment dat; selectarea altei opțiuni o deselectează automat pe cea anterioară

Butonul de submit

Butonul de submit este un element al formularului care are funcție specială: apăsarea sa determina trimiterea datelor curente din formular către server, sub forma unei cereri HTTP de tip GET sau POST (în funcție de valoarea atributului method al elementul form). Se definește cu ajutorul tag-ului HTML INPUT, folosind atributul type cu valoarea "submit". Valoarea atributului value al acestui element reprezintă textul afișat pe buton.

Accesarea datelor din php

Apăsarea butonului de submit determina trimiterea către server a tuturor valorilor curente ale elementelor formularului, sub formă de perechi nume-valoare. Una dintre acestea este și cea formată din valorile atributelor name și value ale butonului, dacă amândouă au fost definite. Dacă programul care prelucrează aceste informații este un script PHP, informațiile vor fi incluse în tablourile $_GET/$_POST.

Elementre pentru introducere text

Iată principalele caracteristici ale acestui tip de elemente de formular:

sunt create folosind tag-ul HTML <input> cu atributul type=text

sunt prezentate utilizatorului sub forma unor câmpuri de editare de text de o singură linie

utilizatorul introduce manual valori în aceste câmpuri

numele elementului din formular:

se definește cu ajutorul atributului name al tag-ului <input>

determina cheia elementului corespunzător din tabloul $_POST/$_GET

valoarea default a elementului se poate specifica cu atributul value

Accesarea datelor din php

După submit, elementul de tip text input determină apariția unui element în tabloul $_GET sau $_POST a cărui cheie este data de valoarea atributului name al tag-ului <input> și a cărui valoare este cea introdusă de utilizator în câmpul de editare afișat în browser (sau șirul vid dacă acesta nu a introdus nimic).

Elemente de tip dropdown list

Un drop-down list se definește cu ajutorul construcției select, conținutul listei fiind compus dintr-o succesiune de elemente option. Elementul option care are atributul selected setat va fi cel selectat din oficiu la afișarea formularului.

Accesarea datelor din php

După submit, la recepționarea datelor, interpretorul PHP va crea în tabloul $_GET/$_POST un element cu următoarele caracteristici:

cheie – valoarea atributului name al tag-ului <select>

valoare – valoarea atributului value al elementului <option> selectat de către utilizator

Elemente de tip selectie multipla

Un astfel de element de formular permite utilizatorului să aleagă mai multe valori simultan dintr-o listă predefinita. Crearea unui astfel de element se face la fel ca în cazul listei cu selecție unică, cu două excepții:

tag-ul <select> trebuie să aibă atributul multiple setat

atributul name al aceluiași tag trebuie să se termine cu paranteze drepte, ca în sintaxa folosită pentru crearea unui element într-un tablou PHP fără specificarea cheii.

Accesarea datelor din php

Dacă valoarea atributului name al tag-ului <select> este scrisă corect (se termină cu paranteze drepte), efectul în interpretorul PHP va fi crearea unui element în tabloul $_GET/$_POST cu următoarele caracteristici:

cheie – valoarea atributului name ale tag-ului <select>

valoare – un tablou indexat numeric, ale cărui valori sunt valorile atributelor value ale opțiunilor selectate de către utilizator

Elemente de tip checkbox

Elementele de tip checkbox reprezintă căsuțe cu două stări – bifat și debifat. Ele sunt folosite în general în formulare pentru a reprezenta opțiuni cu două variante. Se definesc cu ajutorul tag-ului <input>, folosind valoarea "checkbox" pentru atributul type. Dacă este specificat și atributul "checked", căsuța va fi bifata din oficiu:

Accesarea datelor din php

Atunci când datele unui formular care conține checkbox-uri sunt expediate către server și sunt prelucrate de un script PHP:

elementele checkbox bifate de utilizator care au specificate atât atributul name cât și value vor determina apariția în tabloul $_GET/$_POST a unui element ce are ca cheie valoarea atributului name și ca valoare valoarea atributului value al tag-ului <input> corespunzător

checkbox-urile nebifate, sau care sunt bifate dar nu au atribut name NU vor genera intrări în $_GET/$_POSTcheckbox-urile bifate care au atribut name dar nu și value vor trimite către server valoarea "on"

Se observa mai sus ca checkbox-ul corespunzător opțiunii "Căsătorit", care are atât atribut name cât și value, a generat $_POST["căsătorit"] = "da". Checkbox-ul opțiunii "Fumător" a generat valoarea "on", deoarece îi lipsea atributul value, iar checkbox-ul "Gurmand" nu a generat nimic deoarece nu a fost bifat.

Elemente de tip radio button

Un radio button este un element cu două stări (la fel ca checkbox-ul), însă cu următoarea particularitate: putem crea grupuri de elemente de acest fel, impunând că numai unul dintre ele să fie bifat la un moment dat. Selectarea altui buton decât cel curent selectat duce la deselectarea automată a celui curent.

Definirea se face cu ajutorul tag-ului <input>, folosind atributul type cu valoarea "radio". Se poate preciza butonul din grup care să fie bifat din oficiu, folosind atributul checked al tag-ului <input>:

Accesarea datelor din php

Ca mod de accesare a datelor din scriptul PHP ce primește datele formularului, radio button-urile se manifestă la fel ca checkbox-urile: sunt create în tabloul $_GET/$_POST elemente cu perechile name-value, iar dacă atributul value al butonului selectat lipsește, valoarea va fi automat "on".

Elmente de tip text area

Un text area este un element al formularului în care utilizatorul poate introduce și edita text pe mai multe rânduri. Este folosit în general atunci când utilizatorul trebuie să introducă cantități mai mari de text (care eventual conțin caractere newline), caz în care un element input de tip text nu mai este potrivit. Se definește folosind tag-ul <textarea>, care dispune de atribute ce specifică dimensiunea elementului (numărul de linii și de coloane afișate):

Accesarea datelor din php

La submit, un textarea are ca efect crearea unui element în tabloul $_GET/$_POST, perechea sa cheie-valoare fiind formată din valoarea atributului name al tag-ului <textarea> și informația introdusă de utilizator:

Cookies

Cookie-urile reprezintă perechi nume-valoare pe care serverul web le poate stoca pe hard-disk-ul clientului, prin intermediul browserului web. Ele sunt transmise clientului prin intermediul unui header HTTP (Set-Cookie sau Set-Cookie), în cadrul unui răspuns la o cerere a clientului. La următoarele cereri depuse de același client către același server, clientul va trimite automat conținutul cookie-ului către server, care poate folosi datele respective ca și date de intrare ale unei aplicații ce generează o pagină web (asemănător cu informațiile provenite prin GET sau POST). Astfel, cookie-urile sunt un mecanism de propagare a informației de la o cerere la alta.

Iată două utilizări tipice pentru cookie-uri:

un site care conține o secțiune restricționată, accesibilă numai utilizatorilor autentificați, setează un cookie în browserul clientului în momentul în care acesta se autentifica. Cookie-ul conține id-ul clientului și va fi trimis automat serverului la cererile următoare efectuate de client, ceea ce va permite serverului să-l identifice și să-i trateze cererile ca parte a unei sesiuni

un site care permite utilizatorului să specifice preferințe; odată alese, aceste preferințe sunt stocate pe hard-disk-ul clientului într-un cookie și sunt trimise serverului la fiecare cerere ulterioară, ceea ce îi dă acestuia posibilitatea de a genera de fiecare dată pagina în concordanță cu preferințele exprimate anterior de client

Lucrul cu cookie-uri prezintă următoarele caracteristici:

avantaje

un cookie poate memora informație în mod persistent, între două cereri ale clientului, chiar dacă ele sunt efectuate la momente de timp îndepărtate

mecanismul de cookies funcționează în mod transparent pentru utilizator – browserul și serverul web fac operațiile necesare pentru menținerea stării intre cereri

dezavantaje

utilizatorul poate șterge cookie-urile din browser

browserul poate fi configurat să nu accepte cookies sau să le accepte selectiv

browserele oferă de obicei spațiu de stocare drastic limitat pentru cookies

Parametrii unui cookie

Fiecare cookie trimis clientului are următorul set de parametri:

nume – cel prin intermediul căruia vor fi accesate datele de către server atunci când cookie-ul este trimis înapoi de către client

valoare – informațiile stocate în cookie

data de expirare – specifică momentul ștergerii cookie-ului; dacă lipsește, cookie-ul este șters atunci când ușerul închide browserul. Serverul poate schimba acest parametru pentru un cookie deja setat

domeniu și cale – specifică în ce condiții este trimis înapoi cookie-ul către server: numai dacă domeniul este același și URI-ul cerut de client se afla în interiorul caii specificate în cale

secure – pune condiția ca cookie-ul să nu fie transmis serverului decât dacă conexiunea acestuia cu clientul este una criptată (HTTPS)

http only – pune condiția ca cookie-ul să fie accesibil doar serverului web prin intermediul protocolului HTTP, nu și limbajelor de scripting locale.

Parametrii nume și valoare sunt obligatorii, toți ceilalți sunt opționali.

Setare cookie

Numim setarea unui cookie operația prin care serverul trimite un cookie către client prin intermediul headerului HTTP corespunzător, determinând fie crearea cookie-ului în browserul clientului, fie modificarea parametrilor unui cookie setat anterior.

Funcția PHP predefinita folosită în acest scop este setcookie:

setcookie(name,value,expire,path,domain,secure,httponly);

Funcția returnează FALSE dacă scriptul a produs deja output.

Argumentele funcției se mapează pe parametrii unui cookie, cu următoarele mențiuni:

valoarea unui cookie nu poate fi decât scalar

momentul expirării se specifică sub formă de Unix time (numărul de secunde scurs de la 1 ianuarie 1970, care este dată convențională a creării sistemului de operare Unix). Funcția PHP time() întoarce momentul prezentexprimat în acest fel, ceea ce o face foarte potrivită pentru setarea momentului expirării unui cookie

dacă nu este specificat sau setat pe valoarea 0, cookie-ul va expira când utilizatorul închide

browserul

Informatii provenite din cookies

Clientul trimite automat împreună cu cererea HTTP toate acele cookie-uri ale căror parametri domeniu și cale corespund cu URL-ul solicitat în cerere. Dacă URL-ul determina execuția unui script PHP, interpretorul PHP primește de la server informația din cookie și o stochează în variabilă $_COOKIE – un tablou asociativ de tip superglobal. Acest tablou conține câte un element pentru fiecare cookie primit, perechea cheie-valoare fiind reprezentată de numele și valoarea cookie-ului.

Stergerea unui cookie

Ștergerea unui cookie se poate face în diferite moduri:

ca urmare a unei acțiuni a utilizatorului: browserele din ziua de astăzi oferă utilizatorului interfețe facile pentru managementul cookie-urilor, inclusiv ștergerea sau modificarea parametrilor acestora

ca urmare a unei acțiuni efectuate pe server

programatorul poate da valoarea vida cookie-ului (trimițând un cookie cu parametri identici dar având ca valoare șirul vid)

programatorul poate seta momentul expirării cookie-ului în trecut

Sesiuni

O sesiune reprezintă o succesiune de cereri ale unui client web care sunt recunoscute de către server ca venind de la același utilizator. Trebuie înțeles că, deși pentru client experiența este una cursiva (succesiune de pagini accesate), pentru server acestea sunt niște cereri disparate, aflate la distanțe variabile în timp și întrețesute cu cereri ale altor clienți ce efectuează cereri către același server.

O sesiune poate dură:

din momentul în care clientul se conectează la server până când închide browserul

dintr-un moment ulterior primei cereri efectuate de client, până într-un alt moment, anterior închiderii browserului

Cât timp clientul continua să efectueze cereri, sesiunea se menține activă. O sesiune se încheie atunci când utilizatorul a terminat de interacționat cu paginile site-ului sau porțiunii de site ce fac obiectul sesiunii. Serverul nu poate identifica întotdeauna clar momentul de timp în care sesiunea s-a încheiat din punct de vedere al utilizatorului: un interval mare de inactivitate din partea acestuia ar putea indica faptul că utilizatorul zăbovește mai mult timp asupra unei pagini, sau că a închis fereastra de browser. Din acest motiv, pe server se poate configura un timp maxim cât serverul menține sesiunea activa în lipsa unei noi cereri de la client; după ce se scurge acest interval de timp, are loc închiderea automată a sesiunii (session time ouț).

Fiecare sesiune PHP este identificată printr-un session ID – un identificator unic, generat de către interpretor sau setat de către programator. Acesta trebuie trimis de către client serverului la fiecare cerere, astfel încât serverul să poată încadra în aceeași sesiune cererile clientului și să-i ofere acces la informațiile de sesiune. Propagarea sessionID-ului de la o cerere la alta se poate realiza în două feluri:

printr-un cookie stocat pe client. Odată cookie-ul setat, clientul va trimite serverului cookie-ul către server la fiecare cerere ulterioară, și astfel serverul va ști datele cărei sesiuni să le facă disponibile acelui client. Aceasta este modalitatea default de propagare a session ID-ului în PHP

în cadrul URL-urilor pe care le accesează clientul și care trimit către același server. Aceasta presupune că fiecare cerere a clientului (fie ea GET sau POST) să conțină session id-ul clientului, care să poată fi preluat de către server și folosit pentru a identifica sesiunea dorită.

Memorarea informatiilor de sesiune

Informațiile de sesiune în PHP sunt variabile pe care programatorul le definește și care se propagă de-a lungul a doua sau mai multe cereri ale aceluiași client.

Propagarea informațiilor de sesiune presupune:

salvarea informațiilor la încheierea unei cereri a clientului

încărcarea lor la următoarea cerere pe care serverul o recunoaște că venind de la același client

Variabilele de sesiune stau în tabloul asociativ de tip superglobal $_SESSION. Acest tablou este populat automat cu informațiile deja salvate atunci când interpretorul primește de la client un session id și acestui id îi corespunde o sesiune deja existenta. De asemenea, orice element nou adăugat în $_SESSION va fi salvat împreună cu celelalte odată ce execuția scriptului PHP se încheie.

Modulul PHP pentru lucrul cu sesiuni salvează toate variabilele unei sesiuni într-un fișier la încheierea cererii și le încarcă înapoi la următoarele cereri ale clientului. Informațiile de sesiune sunt practic restaurate la fiecare cerere a aceluiași client, indiferent dacă diversele cereri se referă la același script PHP sau la scripturi diferite.

Crearea sau restaurarea unei sesiuni

PHP oferă programatorului funcția session_start(), care poate avea efecte diferite în funcție de caz:

dacă interpretorul a primit de la client un session id, este căutat fișierul sesiune corespunzător:

dacă este găsit, sunt restaurate datele din $_SESSION

dacă nu este găsit, se creează o sesiune nouă cu id-ul specificat

dacă interpretorul nu se afla în posesia session id-ului, este generat un nou session id și se creează o sesiune

Parametrii sesiunii sau ai session cookie-ului se pot obține/seta cu alte câteva funcții PHP, înaintea apelării lui session_start():

session_name([$nume]) – returnează numele session cookie-ului. Apelata cu argument, îl setează.

session_id([$id]) – idem pentru session ID

session_set_cookie_params(int $lifetime [, strâng $path [, strâng $domain [, bool $secure [, bool $httponly]]]])

– stabilește ceilalți parametri ai session cookie-ului (în afară de nume și valoare)

session_get_cookie_params() – returnează parametrii session cookie-ului sub formă de tablou asociativ

Inchiderea unei sesiuni

O sesiune se poate închide în diferite situații:

dacă session cookie-ul este păstrat cu timpul de expirare default, el va fi șters când utilizatorul închide browserul și, implicit, utilizatorul nu va mai putea accesa sesiunea, aceasta urmând să fie ștearsă de pe server după timeout

dacă clientul nu efectuează nici o cerere un timp mai lung decât timeout-ul sesiunii, sesiunea este ștearsă de pe server

programatorul poate închide sesiunea explicit, efectuând următorul set de operații:

golirea tabloului $_SESSION

apelarea funcției session_destroy(), care șterge datele corespunzătoare sesiunii

ștergerea session cookie-ului

Regular expressions

Regular expressions sunt expresii care ne permit să specificăm formatul unui șir de caractere. Scenariile în care apare nevoia de regex-uri sunt în general două:

când dorim să căutăm și să extragem șiruri de caractere cu format cunoscut dintr-un text mai mare.

când dorim să validăm date (să ne asigurăm că anumite informații au format corect).

PCRE(Perl compatible Regular expressions)

Un regex este format dintr-o succesiune de caractere (litere, cifre, semne de punctuație), însă cu următoarele particularități:

intreaga expresie este cuprinsă între două caractere delimitatoare. Caracterul delimitator de început este același cu cel de sfârșit și este ales de către programator. Acest caracter nu are voie să fie alfanumeric sau \ .

unele caractere sau combinații de caractere au în interiorul regex-ului semnificație specială. Scopul acestor construcții speciale este să ne dea posibilitatea de a specifica formatul – iată două exemple:

clase de caractere – litera mare, litera mică, caractere permise pe o anumită poziție a șirului. (ex: numerele de mașină sunt de forma B 80 TGF sau TR 46 FBJ, adică una sau două litere mari, un spațiu, două cifre, un spațiu, trei litere mari)

repetiții ale unui caracter sau sub-expresii (ex: adresa IP, scrisă în general sub forma 192.168.0.15, poate fi scrisă sub forma unor grupuri de 1-3 cifre care se repetă)

În continuare vor fi prezentate principalele construcții speciale și metacaractere folosite pentru construirea de regex-uri.

Clasele de caractere sunt construcții care, folosite în interiorul unui regex, indică faptul că pe respectivă poziție din șirul căutat trebuie să se afle un caracter aparținând unui anume set specificat. Există trei tipuri de metacaractere sau constructii folosite în acest scop:

construcția cu paranteze drepte [ ] – ține locul unui singur caracter. Ne permite să specificăm un set discret de caractere ce se pot afla pe o anumită poziție din șir. Între paranteze, caracterul ^ (accent circumflex) are rol de negare.

punctul – ține locul unui singur caracter. Indică faptul că pe respectivă poziție din șir se poate găsi orice caracter (însă unul singur!) cu excepția newline (\n). Dacă este activată opțiunea DOT-ALL ,punctul corespunde și caracterelor newline.

clase de caractere uzuale, predefinite.

MYSQL

MySQL este un sistem de gestiune a bazelor de date relaționale, produs de compania suedeză MySQL AB și distribuit sub Licența Publică Generală GNU. Este cel mai popular SGBD open-source la ora actuală , fiind o componentă cheie a stivei LAMP (Linux, Apache, MySQL, PHP).

Deși este folosit foarte des împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj major. Există multe scheme API disponibile pentru MySQL ce permit scrierea aplicațiilor în numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum are fi: C, C++, C#, Java, Perl, PHP, Python, FreeBasic, fiecare dintre acestea folosind un tip specific API.

Popularitatea sa ca aplicație web este strâns legată de cea a PHP-ului care este adesea combinat cu MySQL și denumit Duo-ul Dinamic. În multe cărți de specialitate este precizat faptul că MySQL este mult mai ușor de învățat și folosit decât multe din aplicațiile de gestiune a bazelor de date, ca exemplu comanda de ieșire fiind una simplă și evidentă: „exit” sau „quit”.

Bazele de date sunt folosite pentru stocarea informațiilor în vederea furnizării ulterioare în funcție de solicitarea primită. O bază de date este manipulată cu ajutorul unui sistem de gestiune al bazelor de date ("database management system" – prescurtare SGDB). La ora actuală cel mai folosit SGDB (sistem de gestiune al bazelor de date) open-source este MySQL.

Administrarea MySQL se poate face din linie de comandă sau folosind browser-ul și accesând aplicația numită PHPMyAdmin

În MySQL spațiul alocat pe discul serverului este funcție de tipul de date. Câteva din tipurile de date folosite în bazele de date MySQL sunt:

Pentru că baza de date să fuctioneze mai bine coloanelor li s-au adăugat modificatori de coloană.

Tipul de date întregi încep de la valori negative la pozitive. Dacă se adauga opțiunea UNSIGNED, care este un modificator de coloană, nu vor mai fi valori negative ci vor începe de la 0.

Alți modificatori sunt:

AUTO_INCREMENT funcționează cu orice tip întreg. La fiecare rând nou adăugat în baza de date numărul asociat va fi incrementat

NULL înseamnă fără valoare (diferit de spațiu sau zero).

NOT NULL înseamnă că orice înregistrare va fi considerată ceva.

PRIMARY KEY este rolul primei coloane din tabel, totodată reprezentând elementul de referință pentru fiecare linie.

Conectarea la baza de date

De câte ori vom lucra cu MySQL va trebui să ne conectăm la baza de date folosind o anume sintaxă:

Mysql_connect () este funcția prin care ne conectăm la baza de date cu următorii paramatrii: numele serverului, nume utilizator și parola pentru conectarea la baza de date.

Mysql_select_db este funcția care stabilește baza de date la care ne vom conecta, având că parametrii numele bazei de date și identificatorul de acces la conexiunea către serverul MySQL.

Mysql_query este o funcție folosită pentru interogarea unei baze de date. Folosește parametrii: cererea emisă serverului MySQL și identificatorul de acces la baza de date.

Mysql_fetch_row este functia care afiseaza fiecare rand din un talel al bazei de date.

Mysql_num_rows ($sql) functia care returneaza numarul de linii returnate de catre query-ul memorat in variabila $sql primita ca parametru.

Mysql_close ()este functia utilizata la inchiderea conexiunii, având ca argument datele de acces la serverul MySQL.

Cele mai uzuale operații cu bazele de date sunt:

CREATE TABLE – Crearea tabelelor

Bazele de date conțin tabele. Aceste tabele sunt similare cu cele din HTML conținând rânduri și coloane. Fiecare diviziune se numește celula sau câmp și are anumite propritati.
Fiecare tabel din baza de date are un nume sau titlu.
Fiecare coloană din tabel are un nume sau titlu.

Sintaxa pentru crearea tabelului este:

Sintaxa pentru crearea tabelului este:

CREATE TABLE nume_tabel (coloana_1, coloana_2,…, coloana_n);

INSERT este comanda pentru introducerea datelor în baza de date. Cel mai frecvent mod de introducere a datelor este preluarea lor dintr-un formular adecvat structurii bazei de date.

Sintaxa pentru introducerea datelor în tabelul bazei de date este:

INSERT INTO nume_tabel (coloana_1, coloana_2,…, coloana_n) values ('valoare_1', 'valoare_2',…, 'valoare_n');

SELECT – Preluarea datelor

Proprietatea SELECT poate fi utilizată într-o comandă mysql_query pentru a alege anumite informații din tabelul bazei de date.

Sintaxa pentru introducerea datelor în tabelul bazei de date este:

$sql=mysql_query ("SELECT * FROM nume_tabel");

UPDATE

Putem modifica valoarea unei înregistrări din baza de date pentru un anume id cu următoarea sintaxa:

UPDATE nume_tabel SET coloana_1='$nou_coloana_1', coloana_2='$nou_coloana_2',…,

Coloana_n='$nou_coloana_n' WHERE id='$nou_id';

Cunoscând valoarea identificatorului id al unei înregistrări putem actualiza o înregistrare în baza de date, dar mai înainte trebuie să afișăm înregistrările pentru a selecta care se potrivesc solicitărilor noastre.

DELETE

Ștergerea poate fi făcută folosind id-ul înregistrării dorite cu sintaxa:

DELETE FROM nume_tabel WHERE id='$id';

PHP are 3 opțiuni de a lucra cu MySQL:

1. Clasic, cu funcții.

2. Modern, orientat pe obiecte.

3. PDO și orientat pe obiecte

LIKE și NOT LIKE

Dacă dorim să facem o căutare mai generală în baza de date, introducând doar câteva caractere, putem folosi simbolurile LIKE sau NOT LIKE. Caracterul _ anunța că rezultatul va conține încă un caracter în plus iar % înlocuiește zero sau mai multe caractere. Acestea pot fi adăugate la început, la sfârșit sau în ambele părți.

CAPITOLUL III – APLCIAȚIE PENTRU REALIZAREA COMERȚULUI ONLINE

Descrierea aplicației

Aplicația poartă numele de BUY-E(buy on internet) și reprezintă un magazin online pentru comercializarea aparatelor electronice și electrocasnice.

Am ales proiectarea unei aplicații pentru realizarea comerțului online, pentru a arăta faptul că mediul online este mult mai favorabil pentru realizarea comerțului, atât pentru producător cât și pentru consumator si chiar si pentru societate.

Aspecte favorabile:

Pentru companii

Extinderea pe piețele internaționale prin asigurarea de servicii și performanță;

Asigurarea unei deschideri totale în privința relațiilor cu clienții: aceștia pot căpăta o imagine aproape completă asupra tuturor angajaților, ofertanților și partenerilor lor.

Scăderea costului de creare, procesare, distribuire, păstrare și regăsire a informației, până acum bazată pe hârtie, prin crearea unui sit web atractiv cu funcția unui magazin virtual. Siturile web personalizate, sugestiile pentru cumpărare și ofertele speciale personalizate pot într-o oarecare măsură substitui interacțiunile de tip față în față, de tip tradițional;

Creează posibilitatea modelării produselor și serviciilor după nevoile cumpărătorilor și simplificarea procedurilor;

Costuri de comunicație mai mici.

Seriozitate și siguranță. Serverele paralele, redundanța hardware-ului, tehnologia fail-safe, încriptarea informației și firewall-urile pot îndeplini această cerință;

Creșterea competitivității și raționalizarea proceselor de afaceri, prin restructurări interne și prin tehnologii ale informației.

Construirea unui lanț valoric electronic, în care se pune accentul pe un număr limitat de competențe-cheie – opusul unui magazin "cu o singură oprire". (Magazinele electronice pot fi atât speciale cât și generale, dacă sunt programate corect.)

Pentru consumatori

Posibilitatea consumatorilor să cumpere sau să facă tranzacții la orice oră din zi, în tot timpul anului, din aproape orice locație;

Acordă consumatorilor mai multe posibilități de alegere a produselor și prețurilor;

Consumatorilor li se dă siguranță asupra valorii. Vânzătorii pot realiza acest lucru oferind un produs sau o linie de produse care atrage potențialii clienți prin prețuri competitive, la fel ca și în comerțul ne-electronic;

Permite o livrare rapidă a produselor și/sau serviciilor (în anumite cazuri);

Consumatorii pot să primească informații relevante în decursul câtorva secunde, și nu zile sau săptămâni;

Asigurarea motivației consumatorilor de a cumpăra și, la nevoie, de a și returna. Vânzările promoționale pot implica cupoane, oferte speciale sau reduceri. Linkurile de pe alte situri web și programele afiliate de reclame pot fi de asemenea de ajutor;

Face posibilă participarea în licitații virtuale;

Îndemnarea consumatorilor la consum. Comercianții din Internet pot asigura acest tip de ajutor printr-o amplă informare comparativă și prin facilități bune de căutare;

Permite consumatorilor să interacționeze cu alți cumpărători în comunități electronice și să compare experiențele;

Lăsând clienții să se ajute singuri. Asigurând funcționarea unui sit de autoservire, ușor de folosit fără asistență, poate fi de ajutor în acest sens;

Facilitează competiția, ceea ce rezultă în scăderea prețurilor.

Familiarizează consumatorii cu tehnologia și îi ține pe aceștia în pas cu ultimele noutăți.

Pentru societate

Crearea unui "simț comun" al comunității comerciale, de exemplu prin chaturi, foruri ce solicită implicarea clientului, scheme de loialitate și programe de afinitate;

Dă posibilitatea mai multor persoane să lucreze / să cumpere de acasă, ceea ce micșorează traficul rutier și poluarea aerului;

Permite ca anumite mărfuri să fie vândute la prețuri mai scăzute, cu avantajele pentru cei cu venituri mai mici;

Crește eficiența și/sau îmbunătățesc calitatea;

Pune la dispoziție o organizare suficient de atentă și agilă pentru a răspunde rapid la orice schimbări din mediul economic, social și fizic.

Am proiectat aplicatia ca fiind un magazin online, avand functionalitatile unui magazin online si o interfata prietenoasa cu utilizatorul. Ce aduce nou aceasta aplicatie este posibilitatea de a rezerva produsele dorite pe o perioada determinata si realizarea unei pagini de utiliator de unde acesta isi poate vizualiza, sterge comenzile inca neconfirmate, isi poate vizualiza lista produselor favorite , lista produselor rezervate.

Interfața web

Interfața cu utilizatorul -Tipuri de utilizatori

Interfața utilizatorului reprezintă partea vizibilă a sistemului, prin intermediul ei putându-se introduce informații, comenzi și modele (de altfel este singura componentă a sistemului cu care utilizatorul intră în contact).
    O interfață de utilizator performanță este flexibilă, consistență, simplă și adaptabilă.
Termenul de „UȘER INTERFACE” (Interfața Utilizator) este folosit în special în sistemele computerizate sau electronic. Ea este de fapt un „layer” care separă omul de mașină pe care o operează.
Designul unei astfel de interfețe afectează cantitatea de efort pe care ușerul trebuie să o consume pentru a introduce date în sistem și să interpreteze ieșirea sistemului, și cât de mult durează să învețe să-l utilizeze.
   Concluzionând, interfața utilizator este partea unei aplicații software care permite utilizatorului:
– să interacționeze cu calculatorul
– să-și îndeplinească îndatoririle sau sarcinile ce-i sunt cerute (task).

Administrator

Administratorul este perosana responsabilă de mentenanță site-ului. Acesta are acces la toate datele din spatele site-ului și se ocupă de completarea/validare/stegerea lor.Astfel administratorul are acces la Admin Panel (Panoul administratorului) de unde poate:

Ștergere/Modificare utilizatori

Ștergere/Modificare/Adăugare produse

Confirmare/Anulare comenzi

Ștergere/Modificare comentarii

Administratorul nu are dreptul de a adăuga comentarii, de a face comenzi, de a adăuga la favorite sau de a avea profil personal în acest site.

Vizitator

Un utilizator neînregistrat se numește vizitator. Acesta are dreptul de a vizualiza paginile produselor, de a vizualiza comentariile celorlalți, însă nu poate adăuga comentarii, aduaga produse la favorite, plasa comenzi, nu poate deține pagina de utilizator, nu poate accesa pagini care sunt vizibile doar utilizatorilor autentificați.

Utilizator autentificat

Utilizatorii autentificați au acces la mamea majoritate a păgânilor site-ului.

Utilizator înregistrat

Un utilizator înregistrat este un utilizator al cărui cont nu este active, iar până la activarea acestuia, utilizatorul are aceleași drepturi ca și vizitatorul

Functionalizati ale aplicației

Înregistrare utilizator/administrator

În cazul în care utilizatorul nu are cont personal, însă dorește unul, acesta se poate înregistra. Pentru a se înregistra acesta este trimis către pagina register.php unde trebuie să completeze un formular cu datele sale personale.La trimiterea formularului datele sunt înregistrate într-o variabilă $_POST,fiind apoi preluate din aceasta și stocate în variabile locale. Se verifică dacă datele completate sunt nenulle, apoi continuăm cu compararea datelor primite prin intermediul cererii HTTP de tip post cu cele deja existente de la ceilalți utilizatori în tabelul ‘utilizatori’, din baza de date.

În cazul în care nu sunt utilizatori care au același nume de utilizator, email sau telefon(deoarece fiind un magazin online am considerat ca aceste date sunt principalele puncte de legătură cu clientul), în tabelul ‘utilizatori’ este introdus un nou utilizator cu datele preluate din formular . Inițial, la înregistrarea unui client nou în baza de date, câmpul active este setat cu 0, lucru care va determina clientul să își activeze contul pentru a se putea folosi de acesta. Verificăm dacă înregistrarea s-a realizat cu succes, în caz contrar se afișează un mesaj corespunzător. Dacă înregistrarea a avut succes, un email cu un link de activare este trimis utilizatorului la adresa de email cu care s-a înregistrat.

În explicația anterioară , am descris doar cazurile în care se îndeplinesc condițiile, în caz contrar, pentru fiecare condiție afișându-se câte un mesaj corespunzător de eroare.

Dacă la accesarea fișierului register.php, variabilele de sesiune au valori deja stabilite, înseamnă că utilizatorul este autentificat, acesta fiind nevoit să se delogheze pentru a se putea înregistra ca utilizator nou, bineînțeles cu alte date.

Din punctul de vedere al administratorului, inregistrarea se realizeaza asemanator, diferite fiind doar denumirile paginilor si a tabelelor.

Autentificare utilizator/administrator

Pentru a se autentifica utilizatorul, deja înregistrat, trebuie să acceseze pagina login.php. La accesarea acestei pagini utilizatorului i se va afișa un formular de autentificare. În momentul trimiterii formularului, datele din câmpurile acestuia sunt preluate prin intermediul variabilei globale predefinite $_POST(deoarece datele din formular sunt transmise printr-o cerere de tip post) și sunt reținute în variabile(atâtea variabile locale câte câmpuri are formularul).

Pentru a se autentifica utilizatorul va trebui să completeze cele două câmpuri ,de aceea, verificăm dacă conținutul variabilelor locale definite anterior este nenull. Dacă informația primită verifică condiția anterioară, căutăm în tabelul ‘utilizatori’ din baza de date ,utilizatorul al cărui nume de utilizator este egal cu cel preluat din formular. În cazul în care interogarea returnează fix un rezultat, se merge mai departe cu verificarea datelor, fiind necesară verificarea corespondenței dintre parola aflată în baza de date și cea preluată din formular.

Dacă toate acțiunile anterioare au fost realizate cu succes, iar clientul este activ(și-a activat contul prin email pentru a confirma email-ul), se stabilesc valorile variabilelor de sesiune, cât și valorile sesiunii anterioare de comenzi , în cazul în care ultima comandă nu a fost finalizată.

Dacă la accesarea fișierului login.php, variabilele de sesiune au valori deja stabilite, înseamnă că utilizatorul este deja autentificat, acesta fiind nevoit să se delogheze pentru a se autentifica din nou.

Din punctul de vedere al administratorului, inregistrarea se realizeaza asemanator, diferite fiind doar denumirile paginilor si a tabelelor.

Schimbare parolă utilizator/administrator

Pentru ca un utilizator să își reseteze parola acesta trebuie să acceseze pagina resetpass.php. La accesarea acestei păgâni se afișează un formular de resetare. La trimiterea formularului de către utilizator, datele din formular sunt preluate într-o variabilă superglobala $_POST urmând a fi copiate în variabile locale pentru a fi folosite dealungul programului. Verific dacă datele din formular au fost introduse corect, respectiv dacă corespund cu datele din baza de date pentru utilizatorul curent.

Dacă condiția este satisfăcută, iar valorile date câmpurilor parola noua și confirmă parola, coincid, atunci baza de date este modificată, atribuindu-se utilizatorului curent parola setată. Verific dacă modificarea a fost făcută în baza de date. Dacă aceasta a avut loc cu succes, utilizatorului I se afișează un mesaj de succes.

În explicația anterioară , am descris doar cazurile în care se îndeplinesc condițiile, în caz contrar, pentru fiecare condiție afișându-se câte un mesaj corespunzător de eroare.

Dacă la accesarea fișierului resetpass.php, variabilele de sesiune nu au valori deja stabilite, înseamnă că utilizatorul este deja nu este autentificat, acesta fiind nevoit să se autentifice.

Din punctul de vedere al administratorului, inregistrarea se realizeaza asemanator, diferite fiind doar denumirile paginilor si a tabelelor.

Delogare utilizator/administrator

Pentru a se deloga utilizatorul este redirecționat către pagina logout.php, unde sunt eliberate variabilele de sesiune utilizate pentru autentificare utilizând funcția unset(), și este distrusă sesiunea, la delogare afișându-se un mesaj corespunzător. În cazul în care, utilizatorul care dorește delogarea, nu a fost autentificat în prealabil, pagina va generă un mesaj de eroare și va fi redirecționat către login.php.

Din punctul de vedere al administratorului, inregistrarea se realizeaza asemanator, diferite fiind doar denumirile paginilor si a tabelelor.

Parolă uitată utilizator

Pentru ași reseta parola utilizatorul va fi trimis către pagina forgotpass.php. La accesarea acestei pagini va fi afișat un formular. La trimiterea formularului datele vor fi preluate și înregistrate într-o variabila de tip $_POST , apoi fiind copiate în variabile locale. Verificam dacă datele primate nu au valori nulle și dacă există în tabela ‘utilizatori’ o înregistrare având numele de utilizator și email-ul corespunzătoare cu cele preluate din formular.

În cazul în care verificările se realizează cu succes, o parolă aleatoare este generată și criptata utilizând funcția md5(), apoi sunt actualizate datele utilizatorului având numele de utilizator preluat din formular,setând parola ca fiind cea generata anterior. Verific dacă actualizarea parolei s-a realizat cu success. Dacă da, un mail cu noua parolă va fi trimis utilizatorului, acesta alegând dacă o păstrează sau o schimbă.

În explicația anterioară , am descris doar cazurile în care se îndeplinesc condițiile, în caz contrar, pentru fiecare condiție afișându-se câte un mesaj corespunzător de eroare.

Dacă la accesarea fișierului forgotpass.php, variabilele de sesiune au valori deja stabilite, înseamnă că utilizatorul este deja autentificat, lucru care generează un mesaj de eroare. Această pagină poate fi accesată doar dacă utilizatorul este delogat.

Activare cont utilizator

Când un utilizator nou se înregistrează, acesta este introdus în baza de date însă nu își poate folosi contul deoarece orice cont nou necesită activare. Pentru a-și activa contul, acesta trebuie să acceseze link-ul primit prin email automat în momentul înregistrării. Acest link de activare reprezintă de fapt calea către pagina activate.php și un query string compus din doi parametrii având ca valori numele de utilizator și codul utilizatorului respectiv din baza de date( codul reprezentând o valoare aleatoare criptată, unică fiecărui utilizator) .

Din acest link se preiau prin intermediul variabilei $_GET datele cu care ulterior se completează automat formularul afișat. Prin intermediul variabilei $_POST se preiau datele din câmpurile formularelor și se stochează în variabile locale. Prin trimiterea formularului se verifică dacă datele au fost introduse, și dacă corespund cu cele aflate în baza de date. În caz de succes contul este activat, modificându-se baza de date și setând activ =1 pentru utilizatorul cu numele de utilizator utilizat ca parametru, afișându-se un mesaj de succes.

Pagină utilizator

Fiecare utilizator beneficiază de un profil personal, privat, la care nu au acces ceilalți utilizatori. Această pagină cuprinde informații precum :imagine de profil, nume, data înregistrări, lista comenzilor efectuate de către acel utilizator, lista produselor favorite și a celor rezervate, și lista ultimelor comentarii.

Informatii utlizatori

La accesarea profilului de utilizator, se accesează pagina user.php trimițând o cerere de tip GET , care la rândul ei plasează într-o variabilă $_GET id-ul utilizatorului respectiv. Folosind de acest id , se vor selecta din baza de date, toate informațiile utilizatorului curent și se vor afișa. Dacă id-ului transmis că parametru nu îi corespunde nici unui utilizator din baza de date, atunci se va afișa un mesaj corespunzător.

Lista comenzi

Pentru fiecare utilizator se afișează lista comenzilor din tabelul `comenzi` a bazei de date, unde id-ul preluat anterior este egal cu id_user din acest tabel. Pentru fiecare comandă se oferă date complete referitoare la produsele comandate, statusul comenzii, tipul plății, suma totală de plată, cantitatea comandată din fiecare produs.

Lista favorite

Pentru fiecare utilizator se afișează lista produselor favorite din tabelul `favorite` a bazei de date, unde id-ul preluat anterior este egal cu id_user din această tabel. Pentru fiecare produs este afișat numele, prețul, imaginea acestuia.

Lista produse rezervate

Pentru fiecare utilizator se afișează lista produselor rezervate din tabelul `rezervari` a bazei de date, unde id-ul preluat anterior este egal cu id_ușer din această tabelă. Pentru fiecare produs este afișat numele, prețul, imaginea acestuia. Se parcurg toate înregistrările tabelul `rezervari` unde id-ul utilizatorului este același cu cel preluat anterior. Pentru fiecare produs se compară data actuală cu cea a rezervării produsului, dacă diferența dintre dată înregistrării rezervării și data actuală este mai mare de 3 zile, produsul respectiv va fi șters.

Pagină produs

Fiecare produs afișat în intermediul site-ului are o pagină personală cu informații despre produs: nume,prețul înainte de reducere, prețul după reducere, descriere, imagine, specificații și așa mai departe, și o secțiune de afișare respectiv introducere comentarii legate de produsul respectiv de către utilizatori.

Informatii produs

Pentru a afla detalii despre un anumit produs, utilizatorul va accesa pagina produs.php trimițând o cerere de tip GET , care la rândul ei plasează într-o variabilă $_GET id-ul produsului respectiv. Folosind de acest id , se va selecta din baza de date, toate informațiile produsului și se vor afișa. Dacă id-ului transmis că parametru nu îi corespunde nici unui produs din baza de date, atunci se va afișa un mesaj corespunzător.

Comentarii

Pentru fiecare produs vom afișa comentariile din tabela comentarii din baza noastră de date , al căror id_produs corespunde cu id_ul nostru. Dacă dorim adăugarea unui nou comentariu, acest lucru se va face prin intermediul unui formular. La trimiterea formularului, datele preluate din acesta sunt înregistrate într-o variabila de tip $_POST și se introduc în baza noastră de date, cu mențiunea că id-ul produsului va fi preluat din variabila ințială de tip $_GET, iar id-ul utilizatorului va fi preluat din variabilele de sesiune $_SESSION inițializate la autentificare.

În cazul în care un utilizator nu este autentificat, acesta poate vizualiza pagina produsului și comentariile aferente dar nu poate adăuga noi comentarii.

Căutare produse

Căutarea se face în toate produsele bazei de date pe baza unor cuvinte cheie. Acest lucru se face prin intermediul unui formular. Atunci când un utilizator introduce în câmpul formularului datele căutării, acestea sunt despărțite în cuvinte separate de spațiu (’ ’), prin intermediul funcției explode(), și pentru fiecare cuvânt în parte sunt căutate produsele din baza de date care îl conțin cuvântul sau o parte a sa în coloana keywords, și afișate produsele corespunzătoare pentru a-și putea schimba parolă.

Compară produse

Pentru a vedea diferențele dintre două produse ale aceleiași categorii, utilizatorul are posibilitatea de a le compara. Acest lucru se realizează prin apăsarea butonului Compară, lucru care duce la accesarea paginii compara.php alături de un query string compus dintr-un parametru având ca valoare id_ul produsului pe care dorim să îl comparăm. Id-ul produsului este preluat prin intermediul unei variabile de tip $_Get și reținut într-o variabilă locală. Pentru produsul cu id-ul respectiv se afișează toate datele acestuia și toate produsele aparținând aceleiași categorii, oferindu-ne posibilitatea să selectăm un alt produs din aceeași categorie pentru al compară cu primul. La apăsarea butonului pentru selectarea celui de-al doilea produs se face legătura cu aceeași pagină,compara.php, de data aceasta având query stringul compus din doi parametrii, având valorile id-urilor produselor selectate, afișându-se astfel și datele celui de-al doilea produs în paralel cu primul.

Adăugare produse în lista de favorite

Fiecare produs oferă posibilitatea de a fi adăugat în lista de favorite pentru a fi cumpărat ulterior. La apăsarea butonului Adaugă la favorite utilizatorul este redirecționat către favorite.php adăugându-se un query string cu un parametru având ca valoare id-ul produsului. Id-ul produsului este preluat prin intermediul variabilei $_GET și stocat într-o variabilă locală. Verificăm dacă pentru utilizatorul curent (al cărui id este preluat printr-o variabilă de sesiune) există deja produsul cu id-ul preluat anterior. Dacă nu există acesta este introdus în tabela `favorite` din baza de date, și utilizatorul este redirecționat către pagina sa de utilizator de unde poate vizualiza toate produsele favorite. În cazul în care produsul se află deja în tabela de favorite utilizatorului i se va afișa un mesaj de informare.

Un utilizator poate crea o listă de produse favorite, doar în cazul în care este autentificat,altfel acesta fiind redirecționat către pagina de autentificare.

Rezervare produs

Pentru a-și rezerva produsele favorite, utilizatorul accesează prin intermediul unui buton pagina rezerva.php , transmițând prin intermediul unei cereri de tip get, id-ul produsului pe care utilizatorul dorește să îl rezerve. La accesarea paginii,printr-o variabilă superglobala de tip $_GET se preia valoarea transmisă anterior și se verifică dacă utilizatorul cu id-ul respectiv a rezervat deja 3 produse.În cazul în care, această condiție este adevărată se va afișa un mesaj de eroare. În caz contrar, în care utilizatorul a rezervat mai puțin de 3 produse, produsul cu id-ul preluat anterior este introdus în baza de date.

Pentru a putea verifica produsele care au fost rezervate cu mai mult de 3 zile în urmă datei curente, pentru fiecare produs se reține în baza de date, o dată la care acesta a fost înregistrat. Ștergerea produselor ale căror dată de înregistrare este cu mai mult de 3 zile în urmă, se face la afișare, în pagină de utilizator.

Adăugare în coș

CAPITOLUL IV – REZULTATE ȘI CONCLUZII

Concluzii

Dezvoltari și cercetari viitoare

Pe viitor doresc îmbunătățirea funcționalităților apicatiiei și implementarea unor funcționalități noi.

În primul rând ,modul de calculare al stocului produselor la cumpărare va fi schimbat astfel încât stocul curent va fi modificat în momentul în care utilizatorul va trimite comandă către confirmare și nu după confirmare. În momentl actual stocul este modifi cât după confirmarea comenzii de către administrator, astfel dacă de exemplu mai sunt 5 produse în stoc, iar doi clienți comanda ambii câte 3 poduse(deoarece amndurora li se afișează stocul nemodificat acesta modificându-se la confirmare comenzii, lucru care poate dura până la 20 minute), chiar dacă administratorul confirmă ambele comenzi, nu va putea fi onorată decât una.

În al doilea rând, pe viitor voi încerca implementarea unui sistem de recomandare pentru fiecare utilizator, astfel încât pe prima pagină să fie afișate produsele cele mai vizionate de către respectivul utilizator sau unele corespunzătoare ca și categorii, caracteristici, nume.

Un alt lucru oe care doresc să îl realizez este implementarea unei politici de ramburs și anume, dacă un client nu este mulțumit de produsul achiziționat, în termen de 30 de zile acesta va putea fi returnat. În cazul în care acesta a fost folosit (nedeteriorat), sau deteriorat în timpul livrării acesta va într-a într-o categorie specială de produse aflate la reducere.

Pe lângă lucrurile care țin de funcționalitate, pe viitor intenționez să schimb și o parte din backend-ul aplicației și mai precis intenționez să găsesc o modalitate pentru a reduce numărul tabelelor din baza de date, și să îmbunătățesc securitatea datelor și mecanismele de verificare ale acestora.

CAPITOLUL V – BIBLIOGRAFIE

Similar Posts

  • Baza de Date cu Ajutorul Microsoft Access

    Cuprins INTRODUCERE Motivul temei: Implementarea unui sistem facil în gestionarea testelor pe echipamente la nivel de departamente și schimburi, într-o companie. Descrierea companiei: SC. Continental AP SRL face parte din concernul Continental divizia RUBER bazat pe fabricate și semifabricate ce au la baza cauciucul. Fabrica Continetal și-a deschis porțile la Timișoara în 20.10.2000 pornind de…

  • Implementarea Retelelor Virtuale Private Ipv6

    Implementarea Rețelelor Virtuale Private IPv6 Proiect de diplomă Declarație de onestitate academică Prin prezenta declar că lucrarea cu titlul “Implementarea Rețelelor Private Virtuale IPv6”, prezentată în cadrul Facultății de Electronică, Telecomunicații și Tehnologia Informației a Universității “Politehnica” din București ca cerință parțială pentru obținerea titlului de Inginer în domeniul Electronică și Telecomunicații, programul de studii…

  • Analiza Unui Grup de Discutii pe Internet

    Cuprins 1. Introducere………………………………………………………………………………………………….1 2. Arhitectura aplicatiei…………………………………………………………………………………….2 3. Implementare………………………………………………………………………………………………6 3.1 Alegerea limbajului…………………………………………………………………………………….6 3.2 Caracteristici care au impus alegerea limbajului…………………………………………….7 3.3 Alegerea mediului de dezvoltare………………………………………………………………..10 3.3.1 Sockets…………………………………………………………………………………………………10 3.3.2 Datagrame…………………………………………………………………………………………….12 3.3.3 RMI……………………………………………………………………………………………………..13 3.3.3.1 Asemanari intre modelul obiectelor distribuite si cel al obiectelor locale……………………………………………………………………………………………………………15 3.3.3.2 Deosebiri intre modelul obiectelor distribuite si cel al obiectelor locale……………………………………………………………………………………………………………15 3.3.3.3 Activarea obiectelor la…

  • Sistemul Informatic Pentru Gestiunea Unui Depozit de Materiale de Constructii

    LUCRARE DE DIPLOMĂ SISTEM INFORMATIC PENTRU GESTIUNEA UNUI DEPOZIT DE MATERIALE DE CONSTRUCȚII CUPRINS CAPITOLUL I. Introducere 1.1. Scopul Lucrării 1.2. Structura Lucrări 1.3. Sisteme informatice și informaționale. Noțiuni generale CAPITOLUL II. Cerințele și analiza sistemului informațional 2.1. Specificarea cerințelor 2.2. Analiza sistemului informatic 2.2.1. Analiza bazei de date relaționale. Modelul entitate-relație 2.2.2. Analiza aplicației…

  • Trovi – Aplicatie Online Pentru Gestiunea Locurilor de Munca

    CUPRINS Lista figurilor și a tabelelor Introducere Proiectul cu TEMA: „TROVI – aplicatie online pentru gestiunea locurilor de muncă” a fost realizat în urma analizei asupra sistemului de activitate a unei agenții ce activează in domeniul forței de muncă și care are nevoie de prezență pe web. Lucrarea se fundamentează pe analiza sistemului existent, analiza…

  • Servicii Disponibile pe Internet

    1.ELEMENTE DE BAZĂ PRIVIND REȚELELE 1.1 Ce este o rețea de calculatoare ? Rețeaua este cea mai importantă componentă a tehnologiilor actuale. Fără ajutorul unei rețele (locale) ar fi imposibil sa utilizăm chat-urile, Internetul, telefoanele mobile sau chiar televiziunea prin cablu. O rețea de calculatoare reprezintă un grup de echipamente de calcul care pot partaja…