Implementarea Magazinului Virtual

FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT ”IOAN SLAVICI” TIMIȘOARA

UNIVERSITATEA ”IOAN SLAVICI” TIMIȘOARA

FACULTATEA DE INGINERIE

DOMENIUL CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEI

FORMA DE ÎNVĂȚĂMÂNT ZI

Coordonator științific:

Asist. Dr. Ing. Ciprian-Bogdan CHIRILĂ

Student:

Maran Andrei

2015

Cuprins

Introducere

Context

Magazinul virtual este un tip de comunitate online și reprezintă corespondentul virtual

al entității reale care asigură desfacerea produselor și serviciilor, precum și interacțiunea dintre ofertant și client. Magazinul virtual a cunoscut o dezvoltare rapidă încă de la apariția conceptului și a reușit, în scurt timp, să penetreze întreaga piață de desfacere de bunuri și servicii.

Magazinele virtuale și comerțul electronic din întreaga lume înregistrează un ritm de dezvoltare deosebit de dinamic. Pe lângă eliminarea stresului cauzat de aglomerație și de lipsa timpului, cei care folosesc magazinele virtuale au posibilitatea de a alege dintr-o mare varietate de produse la prețuri similare sau chiar mai mici față de cele din magazinele clasice, permițând de asemenea clienților să compare produsele, să verifice prețurile și să câștige timp.

Unul dintre cele mai mari avantaje al magazinelor online este modul în care se fac cumpărăturile. Cu un clic de mouse se poate cumpăra orice: cărți, electrocasnice, produse IT, accesorii pentru telefonul mobil, cosmetice, etc.

Programul acestor magazine este non-stop, costurile de „amenajare” și întreținere sunt mult mai scăzute iar aria de acoperire fiind practic nelimitată, livrarea produselor făcându-se prin intermediul serviciilor de curierat care sunt uneori și gratuite la comandarea unor produse mai costisitoare. O altă facilitate care s-a pus la îndemâna utilizatorilor acestor servicii este plata produselor prin intermediul cardurilor bancare, și de asemenea implementarea unor sisteme de securitate pentru tranzacțiile cu aceste carduri. Sistemul de securitate creat de compania Romcard în colaborare cu MasterCard și Visa se numește 3D Secure, fiind folosit la tranzacțiile prin cardul bancar.

„Dacă ești foarte ocupat și nu ai timp de pierdut în trafic sau la cozile din supermarket, ești bine venit să-ți faci cumpărăturile la magazinele online”. Cam așa sună spoturile publicitare ale magazinelor virtuale. Cert este că în ultima vreme s-a înregistrat o creștere semnificativă a comerțului online.

Potrivit studiilor de cercetare realizate în anul 2007 în România, aproximativ o treime din utilizatorii de internet au folosit cel puțin o singură dată magazinele virtuale. În sistemul ePayment din România, aproximativ 70% din tranzacțiile online sunt efectuate de către români, iar 30% din străinătate.

Pentru românii care nu au folosit comerțul electronic, există și ghiduri de cumpărături online. Aici se pot găsi informații despre valoarea leului virtual, sfaturi în alegerea unui cadou și recomandări de magazine online nou apărute în România.

Magazinul virtual trebuie să răspundă unei necesități concrete:

costuri de marketing mai scăzute: trimiterea informațiilor printr-un magazin virtual este mult mai puțin costisitoare decât tipărirea și trimiterea acestora;

distribuirea mai rapidă a informațiilor: într-un magazin virtual informațiile se pot actualiza permanent;

servirea mai bună a clienților: un magazin virtual oferă clienților acces la informații și servicii 24h pe zi, 7 zile pe săptămână, facilitând plasarea comenzilor, verificarea stadiului în care se află comenzile, răsfoirea unui catalog online, etc.;

creșterea vânzărilor: cu un magazin virtual accesibil la nivel global pot fi prezentate produsele sau serviciile pe noile piețe, la care ar fi prea costisitor să se ajungă în alte moduri.

Oferirea unui avantaj unic, propriu fiecărui magazin virtual:

cunoștințe de specialitate și informații: costul scăzut al publicării informațiilor într-un magazin virtual permite furnizarea mai multor informații decât prin intermediul tiparului. Se pot oferi instrucțiuni detaliate pentru utilizarea produselor, analize ale tendințelor care îi afectează pe consumatori, liste cu întrebările puse în mod frecvent (FAQ) și alte tipuri de informații;

comunicarea: găzduind un avizier pentru mesaje sau oferind legături de email angajaților cheie ai companiei, se poate oferi cadrul pentru discuții despre produse, se pot pune întrebări și obține răspunsuri;

urmărirea comenzii: posibilitatea de a le permite clienților sau angajaților care se ocupă de vânzări să controleze inventarul și să descopere dacă un anumit lucru se află sau nu în stoc;

estimări sau rapoarte instantanee, prin punerea la dispoziție a unui formular în care clienții pot să specifice anumite lucruri pe care le comanda și apoi să obțină un preț estimativ sau o pagină care arată prețul la zi al anumitor produse.

Modele de magazine virtuale:

magazinul electronic universal (emall): este o colecție de magazine electronice reunite într-o organizare comună;

aprovizionarea electronică (e-procurement): este necesară pentru procurarea bunurilor și serviciilor de către marile companii și autorități publice, prin organizarea de licitații;

piața unui terț (3rd party market-place): se manifestă printr-o interfață utilizator pentru catalogul de produse ale companiei, interfața care aparține unui terț;

comunitățile virtuale (virtual communities), în care valoarea cea mai importantă este dată de membrii săi (clienți sau parteneri), care adaugă informații proprii pe un mediu de bază furnizat de companie;

furnizorii de servicii cu valoare adăugată (value chain service provider) sunt specializați pe funcții specifice: asigurarea logisticii, plata electronică, expertiză în managementul producției și a stocurilor;

platformele de colaborare cuprind un set de instrumente și un mediu informațional pentru colaborarea între companii, putând avea funcții specifice(de exemplu concepția sau proiectarea în colaborare);

brokerajul de informații și alte servicii cuprinde cataloage de clienți clasificați pe profil, vânzarea de oportunități de afaceri, consultanța în domenii specializate.

Caracteristicile unui magazin virtual

Designul. Un bun design al unui magazin virtual accentuează identitatea firmei, oferă informații utile într-un mod convenabil și încurajează vizitele ulterioare.

Claritatea. Fiecare pagină principală a unui magazin virtual ar trebui să fie ca o vitrină a unui magazin care vinde mărfuri cu amănuntul. Este bine ca magazinele virtuale să conțină atât elemente grafice, cât și text pentru o mai bună evidențiere a conținutului.

Simplitatea. Organizarea magazinului virtual ar trebui să fie logică și evidentă în sine. Denumirile folosite să fie cât mai clare, iar magazinul să fie cât mai ușor de parcurs.

Rapiditatea. Timpul este foarte prețios pentru cel ce practică navigarea pe Internet. Magazinul virtual ar trebui să livreze informațiile cât mai repede, pentru ca utilizatorul să petreacă un timp cât mai scurt în fața calculatorului pentru a aștepta încărcarea graficii și a textului din pagină.

Atractivitatea. Există o mulțime de modalități pentru a face din vizitarea magazinului virtual o experiența unică. Se recomandă folosirea cuvintelor evocatoare, orientate către oameni, folosirea imaginilor grafice de mici dimensiuni pentru a fragmenta paginile vizual și a crea o anumită dispoziție, folosirea unui stil și a unei identități care să se potrivească cu identitatea companiei.

Securitatea. Clientul trebuie să se simtă cât mai confortabil în magazinul virtual. Pentru a mări confortul clientului în magazinul virtual, pot fi folosite modalități pentru oferirea de garanții care sa nu dea loc la neînțelegeri și folosirea de metode care să ofere clienților o securitate cât mai sporită în privința datelor personale și a comenzilor.

Tot mai mult accent se pune pe ușurarea muncii. Se dorește crearea unui software cu ajutorul căruia să poată fi create site-uri de comerț electronic, doar prin simpla completare a unor câmpuri referitoare la aspectul interfeței, fără a fi nevoit sa ști prea multe despre Web design.

Domeniul temei

Magazinul virtual este un tip de afacere care oferă facilități atât clienților cât și ofertanților. El asigură accesul la bunuri și servicii indiferent de locația geografică fiind disponibil 24 de ore din 24.

Cu ajutorul acestora se rezolvă multe probleme, cum ar fi lipsa de timp, comoditatea, stresul din trafic, prin intermediul lor putând fi achiziționate diverse produse foarte simplu, doar prin câteva click-uri și navigând pe internet.

Tema proiectului

Se dorește realizarea unui magazin virtual pentru comercializarea produselor IT.

Site-ul va fi conectat la o bază de date MySql, din care sunt încărcate informațiile despre produsele din gestiune (producătorul, categoria, descrierea produsului, prețul acestuia și disponibilitatea). Aceste produse pot fi căutate (sortate) după categorie sau producători. Fiecărui produs ii este asociat pe pagină o descriere, prețul corespunzător, disponibilitatea și un buton de adăugare în coșul de cumpărături.

În partea de sus a paginii se vor găsi butoane pentru contul utilizatorului, coșul de cumpărături, ofertele speciale și un link pentru descărcarea ofertei curente. Pentru a putea face cumpărături, utilizatorul trebuie să se înregistreze și ulterior să se autentifice. De asemenea vor exista link-uri pentru crearea unui nou cont și pentru recuperarea parolelor.

În momentul accesării coșului de cumpărături se vor putea vizualiza cumpărăturile făcute, se pot șterge unele produse sau se poate finaliza comanda.

De asemenea va exista un algoritm de căutare al produselor după categorie, după anumite cuvinte sau după producător.

Meniul principal conține următoarele butoane (link-uri):

Despre noi – conține date despre firma LaptopOnline, care va utiliza acest magazin virtual;

Cum cumpăr – conține date despre navigarea pe site, despre cum se ajunge la produsul dorit și pașii pe care trebuie să fie parcurși până la finalizarea comenzii;

Contact – conține un formular pe care clientul poate intra in contact pe e-mail cu departamentul de suport al firmei , impreuna cu numerele de telefon ale diferitelor departamente

Categorii – o listă cu produsele aflate în stocul firmei;

Contul meu – conține informațiile personale ale utilizatorului autentificat, cat si istoricul comenzilor finalizate si informatii despre comenzile in curs

Coșul meu – conține produsele care dorește utilizatorul să le cumpere;

Oferte speciale – o listă cu produsele de la oferte speciale.

Studiu bibliografic

Pentru documentarea temei alese am apelat la anumite site-uri de la firme renumite în domeniu precum și la cărți de specialitate și pagini de internet.

Unul dintre site-urile cele mai cunoscute din România de comerț online este EMAG (Fig. 2.1) :

EMAG (www.emag.ro)

Fig. 2.1 Magazinul online EMAG

Acest magazin virtual oferă o gamă variată de produse cum ar fi:

Produse IT (Laptopuri, Desktop PC, componente PC);

Comunicații (Telefoane mobile, Centrale telefonice);

Foto Video (Aparate foto, Camere video);

Electronice (Televizoare, Navigație GPS, Sisteme Home Cinema);

Birotică (Laminatoare, Calculatoare de birou);

Jocuri și console;

Electrocasnice, etc.

Site-ul este foarte bine structurat, fiind pus accent pe fiecare detaliu. Pagina de start conține promoțiile săptămânii, cele mai vândute produse, noutățile, categoriile de produse ale magazinului și informații folositoare cumpărătorilor. Fiecare produs ales spre vizualizare conține o descriere amănunțită a funcțiilor sale, prețul, disponibilitatea și o poză a acestuia.

Comandarea produselor se face după cum urmează:

Folosind meniul din stânga, se navighează prin categoriile de produse sau lista producătorilor. Odată găsit un produs care se dorește să se achiziționeze se apasă butonul „Adaug în coș”. La adăugarea produselor în coș, se va încărca automat pagina coșului de cumpărături, unde se pot revedea lista produselor, se poate actualiza cantitatea sau din stânga, se navighează prin categoriile de produse sau lista producătorilor. Odată găsit un produs care se dorește să se achiziționeze se apasă butonul „Adaug în coș”. La adăugarea produselor în coș, se va încărca automat pagina coșului de cumpărături, unde se pot revedea lista produselor, se poate actualiza cantitatea sau se poate renunța la unul sau toate produsele selectate. După alegerea produselor, se completează detaliile privind livrarea comenzii, în partea de jos a paginii, sub "Coșul de cumpărături". Se poate alege plata la livrare, prin ordin de plată, în rate sau direct cu cardul online. În funcție de modalitatea preferată, se vor primi instrucțiuni suplimentare, dacă e cazul. Se poate efectua plata online cu cardul, în condiții de siguranță deplină. Cardurile acceptate la plată sunt cele emise sub siglele VISA (Classic și Electron) și MASTERCARD (inclusiv Maestro).

După fiecare comandă plasată, datele de livrare sunt salvate pentru a putea fi folosite ulterior. În contul deschis cu ocazia unei comenzi, se poate vedea statusul acesteia in timp real, ce dată de livrare s-a stabilit, dacă și când s-a livrat comanda, și multe altele.

In ultimi ani eMAG a lansat eMAG Marketplace.

eMAG Marketplace este sistemul prin intermediul caruia partenerii eMAG afiseaza propriile oferte pe eMAG.ro, iar clientii eMAG pot comanda simultan o gama mult mai larga de produse, de la oricare dintre acesti parteneri, totul dintr-un singur cont de client. Toti partenerii acceptati in eMAG Marketplace sunt atent evaluati si monitorizati pentru a respecta standardele de calitate cu care clientii eMAG sunt obisnuiti.

Fiecare produs afisat pe eMAG poarta o eticheta dupa cum urmeaza:
1. Produs vandut si livrat de eMAG – produsul respectiv este vandut direct de compania care detine eMAG, Dante International SA, si este insotit de toate serviciile dezvoltate de eMAG.
2. Produs vandut si livrat de PartenerX – produsul respectiv este vandut de PartenerX, o companie independenta, acceptata in eMAG Marketplace pe baza unei analize a calitatii serviciilor si produselor. Comanda ta este transmisa acestui partener, iar produsele comandate sunt livrate direct de catre acesta din urma, impreuna cu toate documentele legale.

Conditiile comerciale, taxele asociate comenzilor, retururile si garantiile pot fi diferite pentru fiecare partener in parte si nu sunt aceleasi cu cele care insotesc produsele vandute direct de catre eMAG. Aceste informatii sunt specificate in pagina fiecarui partener.

Un alt magazin virtual care poate fi luat ca și referință este cel.ro (Fig. 2.2) :

Laptop Direct (www.laptop-direct.ro)

Fig. 2.2 Magazinul virtual CEL

Acest magazin sa orientat pe o gama mai mica de produse fata de EMAG , acoperand doar gama pieselor de schimb pentru laptopuri

Baterii

Incarcatoare

Tastaturi

Display-uri

Coolere

Memorii

Hdd-uri, etc.

In comparatie cu magazinul anterior acesta se bazeaza mai mult spre simplitate oferind clientilor posibilitatea de a cumpara produsul dorit fara a fi asaltat de oferte , reclame sau alte anunturi menite sa atraga atentia catre alte produse decat cele pe care le cauta clientul

Modalitățile de plată și livrare sunt similare cu cele ale magazinului virtual prezentat anterior, EMAG, diferenta fiind la modalitatea de comanda care este mult simplificata . Nu este nevoie de cont iar finalizarea comenzi se face intr-un singur pas .

Un alt magazin virtual, de piese de laptopuri, este laptopdepo.ro (Fig. 2.3):

LaptopDepo (www.laptopdepo.ro)

Fig. 2.3 Magazin virtual LaptopDepo

Acest magazin a dus simplitatea pana la extrem , prima pagina fiind doar o bara de cautare .

Algoritmul de cautarea fiind foarte bine conceput daca produsul cautat de client se afla in gama de produse ale magazinului acesta fiind

Fundamentare teoretică

3.1 Internetul

Termenul internet provine din împreunarea artificială și parțială a două cuvinte englezești: interconnected = interconectat și network = rețea.

Cuvântul are două sensuri care sunt strâns înrudite, în funcție de context:

Substantivul propriu „Internet” (scris cu majusculă) desemnează o rețea mondială unitară de calculatoare și alte aparate cu adrese computerizate, interconectate conform protocoalelor (regulilor) de comunicare „Transmission Control Protocol” și „Internet Protocol”, numite împreună „stiva TCP/IP”. Precursorul Internetului datează din 1965, când Agenția pentru Proiecte de Cercetare Înaintate de Apărare – a Ministerului Apărării, Department of Defense sau DoD din SUA (Defence Advanced Research Projects Agency, en:DARPA) a creat prima rețea de computere interconectate sub numele ARPAnet.

Super-rețeaua Internet din zilele noastre, care de mult a împânzit întreg globul pământesc, a rezultat din extinderea permanentă a acestei rețele inițiale Arpanet. Azi pe glob există un singur Internet, care însă este uriaș; el oferă utilizatorilor săi o multitudine de informații și servicii precum e-mail, www, FTP, Găzduire web (web hosting) și multe altele, unele dintre ele fiind numai contra cost.

Internetul a fost dezvoltat de către o agenție finanțată de către guvernul Statelor Unite Advanced Research Projects Agency (ARPA), în forma ARPANet – o rețea între mai multe computere din unele instituții americane, ce lucrau pentru această agenție. ARPANet a fost pus în funcțiune ca reacție la succesul sovietic al lansării satelitului Sputnik în spațiu în 1957. Unul din obiectivele ARPANet era crearea unei rețele, care să nu fie distrusă datorită atacurilor asupra sistemului.

De aici a rezultat un proiect de rețea, unde rețeaua însăși era permanent în pericol de atac. În consecință, doar un minimum de informații era cerut de la computerele client în rețea oricând transmisia de date întâlnea un obstacol, sau una dintre adrese era de negăsit, se găsea o altă cale către adresa căutată.

Toate acestea au fost codificate într-un protocol care reglementa transmisia de date pe Internet. În forma sa finală, acesta era TCP/IP (Transmission Control Protocol/Internet Protocol), care este și acum baza Internetului. TCP/IP face posibil ca modele diferite de calculatoare, folosind sisteme diferite de operare, cum ar fi UNIX, Windows, MacOS etc. să poată comunica unele cu altele.

Internet-ul "civil" a început ca o rețea de patru computere între Universitățile din Utah, Santa Barbara și Los Angeles și Institutul de Cercetare din Stanford. În curând, cercetători din alte instituții de stat au devenit interesați. Deoarece folosirea computerelor era costisitoare, ei au văzut imediat avantajele folosirii în comun a unei rețele.

La sfârșitul anilor 60 și începutul anilor 70, când Internetul număra în jur de 50 de computere, s-au dezvoltat primele dintre servicii, folosite și azi pentru transferul informației: File Transfer Protocol pentru trimiterea și regăsirea fișierelor, Telnet pentru accesarea și folosirea bazelor de date, a bibliotecilor și a cataloagelor din toată lumea, E-Mail pentru trimiterea mesajelor personale.

Internetul era în mod categoric în continuă creștere. Cu noi grupuri de utilizatori care se alăturau, în următoarea decadă, Internetul a crescut la o rețea de 200 de calculatoare. Partea militară era organizată într-o rețea separată, Milnet.

În același timp, au apărut alte rețele, mai ales în sectorul academic. Importantă printre acestea era USENET sau User's Network, care a început în 1979, când câteva computere UNIX au fost conectate împreună. În această rețea erau sute de grupuri de discuții despre orice subiect imaginabil, oamenii făceau schimb de noutăți și imagini, în ciuda distanțelor mari. Alte rețele s-au dezvoltat de-a lungul USENET-ului. Toate formau baza unui spațiu de comunicație radical democratic. 10 ani după ce USENET își începuse dezvoltarea, Internetul a crescut la 80.000 de computere. A început să fie un factor de luat în considerare în politică. Și curând, expresia "Information SuperHighway" (autostrada informației) a devenit uzuală. În această metaforă, Internetul era văzut ca o importantă infrastructură pentru transportul unor bunuri vitale – informațiile.

În anii '80 și începutul anilor '90, când Internetul era folosit doar de un număr mic de cercetători, arată mult diferit față de prezent. Principalele aplicații erau poșta electronică și grupurile de discuții, plus diverse rutine de căutare și mecanisme de transfer al fișierelor. Toate comunicațiile existau doar ca text sau numere, și liniile de comandă trebuiau memorate și tipărite.

Când poșta electronică, dar mai ales programele de căutare și de transfer al fișierelor au trebuit să facă față unor cerințe mai complexe, s-au dezvoltat noi navigatoare. Software-ul pentru fiecare trebuia să fie obținut și configurat separat. Folosirea internetului la acea vreme era foarte dificila datorita metalimbajului dificil, era restrânsă la un grup mic de utilizatori din universități și institute de cercetare.

În 1989 a intervenit marea schimbare, când Tim Berners Lee de la CERN (Centrul European pentru Fizică Nucleară) din Geneva a pus bazele dezvoltării primului prototip al World Wide Web (WWW). Scopul inițial al WWW-ului era destul de limitat, era destinat să fie o platformă internă de comunicații pentru cercetătorii din întreaga lume care lucrau pentru CERN. Sarcina principală era să asigure un sistem care să facă legătura între varietatea de platforme ale diverselor calculatoare. Soluția de bază era ideea de a face legătura între documente. Pentru a putea deosebi aceste documente și pentru a le regăsi, fiecare are o adresă unică. Aceasta este Unique Resource Locator (URL). URL-urile constau într-un protocol de transmitere (în cazul WWW-ului acesta este HyperText Transfer Protocol – http), urmat de www (în cele mai multe cazuri) și de domeniu (de exemplu numele serverului și numele paginii).

Datorită acestora web-ul s-a dezvoltat foarte rapid, posibilitățile de a prezenta datele au crescut. Au apărut poze și animații pe situri web, urmate de sunete . Doar un mic pas mai era necesar pentru a aduce cataloage, directoare și formulare de comandă pe situri web. Astfel, câțiva ani mai târziu s-a născut E-Commerce(comerțul electronic).

Peste 50% dintre internauți au început să utilizeze internetul în perioada 2000-2004; anul 2000 fiind de departe cel mai prolific din acest punct de vedere (+16% noi utilizatori). Se observă că vârsta indivizilor la momentul primei utilizări a internetului se înscrie pe un trend descrescător, utilizatorii intrând în contact cu acest mediu de la vârste din ce în ce mai fragede.

Pentru 91% dintre persoanele intervievate la un sondaj de corporația eResearch, accesarea internetului reprezintă o obișnuința zilnică. Frecvența utilizării internetului corelează puternic cu achiziția de produse online, internauții care accesează internetul cel puțin săptămânal tind să facă mai multe achiziții online comparativ cu utilizatorii de internet cu mai puțină experiență (Fig. 3.1) .

Fig. 3.1 Frecvența utilizării internetului

Internetul este accesat în principal de acasă. Este de remarcat însa că accesul la internet din zonele cu internet wireless ca și accesul de pe telefonul mobil încep să câștige teren în preferințele internauților (Fig. 3.2) .

Fig. 3.2

Principalele motive ale utilizării internetului sunt: oferta bogata de informații și utilizarea facilă. Interacțiunea cu prietenii și distracția urmează în top și ocupă poziții similare (Fig. 3.3) .

Fig. 3.3

Potrivit unui comunicat de presă al fundației ECDL în 2008 aproximativ 83 % din populația globală nu folosea Internetul .

Potrivit unui studiu întocmit de firma de cercetare on-line InternetWorldStats, în noiembrie 2007 rata de penetrare a Internetului în România a atins nivelul de 31,4 % din totalul populației, estimată la 22,27 milioane de locuitori, iar numărul de conexiuni broadband era de 1.769.300 .

Între 2007 – 2011 numărul conexiunilor la Internet în gospodăriile românești a crescut de la 22 % la 47 %; cifrele corespunzătoare la nivelul Uniunii Europene au fost 54 % și 73 %

Într-un alt raport al Autorității de Reglementare în Comunicații, pentru piața de comunicații electronice, la sfârșitul anului 2008, aproximativ una din trei gospodării dispunea de servicii de acces la internet în bandă largă. Conform raportului Eurostat, doar 13% din gospodării beneficiază de servicii broadband și o treime din locuințe au conexiune la internet. Mai departe, cel mai popular serviciu pentru românii care accesează internetul este poșta electronică, 24% din aceștia utilizând acest mediu de comunicare (53% în UE) și 14% citesc presa online. Dacă 17% (50% în UE) dintre utilizatori caută informații despre bunuri și servicii, 16% (28% în UE) descarcă, ascultă sau urmăresc muzică și filme.

Comerțul electronic reprezintă 2% din cifra de afaceri totală a firmelor, față de 12% în UE. Numai 3% dintre firme derulează tranzacții de vânzare pe internet, comparativ cu media UE de 16%, iar 4% dintre agenții economici realizează achiziții online, față de 28% în UE.

3.2 Comertul Electronic

Comerțul electronic (în engleză: e-Commerce ) este activitatea de cumpărare sau vânzare prin intermediul transmiterii de date la distanță cu ajutorul internetului. Prin intermediul Internetului se dezvoltă o relație de servicii și schimb de mărfuri între furnizorul acestora și viitorul cumpărător. În anii 1990 compania IBM, printr-o campanie publicitară, a făcut popular și termenul echivalent Electronic Business. Un termen înrudit este E-Trade, care se referă la tranzacțiile bursiere electronice (online).

Utilizarea tuturor mijloacelor electronice pentru participarea la o activitate de comerț electronic poartă denumirea de tranzacție electronică.

Strâns legate de comerțul electronic pot fi și alte activități online, de exemplu servirea cumpărătorilor, livrarea mărfii (dacă e vorba de medii electronice), conducerea unei organizații prin mijloace electronice sau si colaborarea cu partenerii de afaceri .

În activitatiile comerciale clasice se disting următoarele etape:

informarea comercială referitoare la tranzacție și anume cercetarea de marketing;

încheierea contractului comercial general;

comandarea/vânzarea produsului sau a serviciului;

plata.

În cadrul comerțului electronic pot fi tranzacționate bunuri și servicii digitale (fiind excluse fazele logistice), iar locul în care sunt tranzacționate aceste bunuri digitale poartă denumirea de piață electronică (în engleză e-marketspace) – contextul virtual în care cumpărătorii și vânzătorii se găsesc unii pe alții și tranzacționează afaceri electronice.

3.3.1 Categoriile comerțului electronic

Comerțul electronic permite participarea atât a persoanelor juridice si fizice, cât și a statului sau a instituțiilor acestuia. În funcție de relațiile dintre acești participanți se disting mai multe categorii de comerț electronic.

B2B (business-to-business)

Este un model de comerț electronic în care toți participanții sunt companii sau alte organizații. În România domeniul B2B este o afacere foarte promițătoare, datorită penetrării internetului în firme la nivel înalt. Studii recente arată că în România există mai mult de 1,1 milioane de utilizatori care intră pe Internet de la locul lor de muncă (inclusiv școli și universități), și peste 42.000 de domenii de nivel înalt sunt înregistrate.

B2C (business-to-consumer)

Model de comerț electronic în care companiile vând la cumpăratori individuali – persoane fizice.

În România, piața electronică B2C se află încă într-un stadiu de formare. Consumatorii încă experimentează online, dar sunt încă multe obstacole ce trebuie să fie învinse înainte de a se schimba comportamentul clienților; aceste probleme sunt legate de crearea securității tranzacțiilor, asigurarea protecției clienților, mărirea vitezei de transfer în rețea sau chiar asigurarea accesului la Internet.

Majoritatea utilizatorilor Internet particulari au acces la Internet prin intermediul locului lor de muncă, și numai circa 200.000 de oameni dispun de un acces personal. Office of National Statistics din Marea Britanie susține că vânzările B2C pe glob au depășit 10 miliarde de dolari în 2001, piața fiind în plină expansiune.

C2B (consumer-to-business)

Acest model de comerț electronic se referă la persoanele fizice (consumatori) care utilizează Internetul pentru a-și vinde produsele sau serviciile firmelor și pentru a căuta vânzători care să liciteze pentru produsele sau serviciile de care au nevoie.

C2C (consumer-to-consumer)

Acest model se referă la consumatorii care vând direct la alți consumatori. Un exemplu din acest domeniu care are un succes enorm în întreaga lume este sistemul eBay.

E-government

Această formă de comerț electronic este întâlnită în următoarele forme: B2G (business to government), G2B (government to business), G2C (government to consumer). Aici prin "government" se înțelege administrația statului respectiv.

B2G (business-to-government)

Guvernele utilizează canale de comerț electronic pentru creșterea eficienței operațiunilor și îmbunătățirea serviciilor oferite cetățenilor-clienți. O arie de interes pentru guverne în domeniul afacerilor este intensificarea utilizării Interentului și a rețelelor VAN, pentru diseminarea informației, a oportunităților, cotațiilor primite de la vânzători/furnizori de bunuri și servicii.

Între anii 1980-1990 câteva guverne inovatoare au început să utilizeze B2G, folosind sistemul dial-up în transmiterea "bulletin board services" (BBS), care asigură accesul online la cererile curente de informații, oportunități, consultanță. Acestă abordare a implicat din partea beneficiarului serviciilor BBS adaptarea la aceeași tehnologie software pentru a putea utiliza informația.

Departamentul (ministerul) de Apărare al Statelor Unite, pentru a atinge o audiență națională și internațională largă, și-a proiectat rețeaua VAN proprie. Această soluție a cerut ca furnizorii să se aboneze la serviciile rețelelor de provideri de internet și să utilizeze capacitățile de comunicare cum ar fi software-ul necesar transmisiilor EDI.

Implicarea administrațiilor statale în comerțul electronic are un efect catalitic pe plan local, în mediul de afaceri dintr-o anumită țară. Guvernele, chiar și în cele mai mari economii de piață, constituie cumpărătorii cei mai mari de bunuri și servicii de la sectorul privat. Construirea unei mase critice de cumpărători online, în vederea sprijinirii apariției unei comunități de afaceri prin comerțul electronic, solicită o implicare activă din partea guvernelor, nu numai din punct de vedere legislativ, ci și ca participant la comerțul electronic, ca o sursă ideală de training și asistență tehnică pentru noile firme de e-commerce.

G2B (government-to-business)

Model de comerț electronic în care o instituție guvernamentală cumpără sau vinde bunuri, servicii sau informații de la persoanele juridice.

G2C (government-to-consumer)

Acoperă relații guvern-cetățeni la nivel de informare și prestare servicii publice (exemplu: plata taxelor online).

Beneficiile comerțului electronic

Având ca suport rețeaua Internet și eventual și utilizarea unor pachete de programe software specifice, comerțul electronic a avut și are avantaje și beneficii pentru firme, consumatori individuali și societate.

Pentru companii

Extinderea pe piețele internaționale prin asigurarea de servicii și performanță;

Creează posibilitatea modelării produselor și serviciilor după nevoile cumpărătorilor și simplificarea procedurilor.

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;

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.

Creșterea competitivității și raționalizarea proceselor de afaceri, prin restructurări interne și prin tehnologii ale informației.

Seriozitate și siguranță. Serverele paralele, redundanța hardware-ului, tehnologia fail-safe, încriptarea informației și firewall-urile pot îndeplini această cerință;

Costuri de comunicație mai mici.

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;

Familiarizează consumatorii cu tehnologia și îi ține pe aceștia în pas cu ultimele noutăți.

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.

Permite consumatorilor să interacționeze cu alți cumpărători în comunități electronice și să compare experiențele.

Pentru societate

Dă posibilitatea mai multor persoane să lucreze / să cumpere de acasă, ceea ce micșorează traficul rutier și poluarea aerului;

Crearea unui "simț comun" al comunității comerciale, de exemplu prin chaturi, foruri ce solicită implicarea clientului, scheme de loialitate și programe de afinitate;

Permite ca anumite mărfuri să fie vândute la prețuri mai scăzute, cu avanateje pentru cei cu venituri mai mici;

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.

Crește eficiența și/sau îmbunătățesc calitatea;

3.3 HTML

HTML este prescurtarea de la Hypertext Markup Language, ceea ce reprezintă de fapt limbajul pe care browserele de internet îl înțeleg si cu ajutorul lui pot fi afișate paginile web.

HTML a fost dezvoltat de Tim Berners-Lee la CERN în 1989. HTML este un limbaj bazat pe SGML (Standard Generalized Markup Language), o așa-numită aplicație a acestuia. SGML este un standard internațional (ISO-8879) aprobat în 1986. HTML a fost inițial văzut ca o posibilitate pentru fizicienii care utilizează calculatoare diferite să schimbe între ei informație prin mijlocirea internetului. Erau prin urmare necesare câteva condiții esențiale: independența de platformă, posibilități hipertext și structurarea documentelor. Hipertext se traduce prin faptul că orice cuvânt, frază, imagine sau element al documentului văzut de un utilizator (client) poate face referință la un alt document sau chiar la paragrafe din interiorul aceluiași document, ceea ce ușurează mult navigarea între părțile componente ale unui document sau între multiple documente. Structurarea riguroasă a documentelor permite convertirea acestora dintr-un format în altul precum și interogarea unor baze de date înglobând aceste documente.

Structura unui document HTML

Tag-urile

Tag-urile nu sunt altceva decât niște marcaje sau etichete pe care limbajul HTML le folosește alături de texte pentru a ajuta browser-ul de internet să afișeze corect conținutul paginii web. Aceste tag-uri (etichete) pot fi de doua feluri:

– tag-uri pereche (un tag de început și unul de încheiere). Exemple: <HTML> și </HTML>; <TITLE> și </TITLE>; <HEAD> și </HEAD>;

– tag-uri singulare (nu au un tag de încheiere). Exemple: <HR>, <BR>.

<HTML> – cu acest tag începe orice document HTML. Prin folosirea acestui tag îi spunem browser-ului că este vorba de un fișier HTML pentru a-l putea afișa;

<HEAD> – între aceste tag-uri sunt trecute, pe lângă titlul paginii, diverse informații folositoare pentru browser-ul de internet;

</HEAD> – acesta este tag-ul de încheiere al tag-ului <HEAD> ;

<TITLE> – cu ajutorul acestei perechi de tag-uri se poate da un titlu documentului. Astfel, textul care va fi scris între aceste tag-uri va fi afișat în bara de titlu a documentului;

</TITLE> – este tag-ul de încheiere al tag-ului <TITLE>. Arată sfârșitul titlului documentului;

<BODY> – odată cu acest tag începe conținutul paginii web. Tot ce se va scrie între tag-urile <BODY> și </BODY> va fi afișat, de către browser, pe ecranul monitorului;

</BODY> – îi spune browser-ului că a terminat de scris conținutul paginii. Tot ceea ce va fi scris după acest tag nu va mai fi afișat;

</HTML> – este tag-ul de încheiere al tag-ului <HTML>. Codul oricărui document se termină cu acest tag.

Atributele

Atributele pot fi definite ca niște proprietăți ale tag-urilor. Atributele se pun numai în tag-ul de început. Dacă un tag nu are nici un atribut, atunci browser-ul va lua în considerare valorile implicite ale tag-ului respectiv.

Exemple:

Atributul BGCOLOR care se folosește cu tag-ul <BODY> indică ce culoare va avea fondul viitoarei pagini web. Fondul unei pagini web are în mod implicit culoarea albă, dar de exemplu dacă se vrea fondul paginii să fie portocaliu se va folosi pentru atributul BGCOLOR codul culorii orange: #FF9900:

<BODY BGCOLOR="#FF9900">

Dacă se dorește folosirea unor proprietăți proprii pentru trasarea unei linii orizontale se va apela la atributele tag-ului <HR>. Aceste atribute sunt următoarele: ALIGN – pentru alinierea liniei, COLOR – pentru culoarea liniei, SIZE – pentru grosimea liniei și WIDTH – pentru lungimea liniei.

Pentru a trasa o linie roșie (COLOR="#FF0000"), cu o lungime de jumătate din valoarea implicită (WIDTH="50%") și puțin mai groasă decât cea implicită (SIZE="5%") ce va fi aliniată în centrul paginii (ALIGN="center"), se va folosi următoarea linie de cod:

<HR COLOR="#FF0000" WIDTH="50%" SIZE="5%" ALIGN="center">

Crearea legăturilor în HTML

Navigarea în cadrul site-urilor este posibilă cu ajutorul link-urilor (legăturilor).

Legătura către o altă pagină

Pentru a folosi legături în paginile web, trebuie să se folosească perechea de tag-uri <A> și </A>. Numele acestor tag-uri vine de la cuvântul anchor care se traduce ancora. Tag-ul <A> va trebui folosit împreună cu atributul HREF. Linia de cod pentru inserarea unei legături în cadrul unei pagini web va avea următoarea formă:

<A HREF=numelepaginii.html>Textul legăturii</A>

Legătura către un site

Pentru a putea adăuga o legătură către un site particular. Trebuie folosită următoarea linie de cod:

<A HREF="adresa site-ului">Textul legăturii</A>

Legătura către o adresă de e-mail

Dacă se dorește ca utilizatorii paginii web să își poată scrie părerile lor despre site, de exemplu, atunci trebuie ca în cadrul paginii să existe o legătură către o adresă de e-mail.

Forma generală a unei legături către o adresă de e-mail este următoarea:

<A HREF="mailto:adresa de e-mail">Trimite un e-mail</A>

Utilizarea unei imagini ca legătură

Pentru a folosi o imagine ca legătură între tag-urile <A> și </A>, va trebui scrisă adresa imaginii:

<A HREF=numepagina.html><IMG SRC="adresa imaginii"></img></A>

Tabele în HTML

Tabelele sunt foarte importante pentru realizarea unei pagini web. Cu ajutorul lor, pe lângă crearea propriu-zisă a tabelelor, se pot controla mult mai bine elementele din cadrul paginilor web.

Pentru a crea un tabel, trebuie folosite tag-urile <TABLE> și </TABLE>. Tot ce va fi scris între aceste tag-uri va forma un tabel. După tag-ul <TABLE> urmează tag-ul <TR> care vine de la "Table Row" (rândul tabelului) și reprezintă introducerea unui rând în cadrul tabelului. Tot ce va fi scris între tag-urile <TR> și </TR> va forma un rând al tabelului. După crearea unui rând, trebuie să se adauge în cadrul acestuia, câteva celule, cu ajutorul tag-urilor <TD> și </TD>.

Pentru a stabili dimensiunea unui tabel, unui rând sau a unei celule, se folosesc atributele WIDTH pentru lățime și/sau HEIGHT pentru înălțime. Pentru alinierea datelor din cadrul tabelului se folosește atributul ALIGN cu una dintre valorile "left", "center" sau "right". Pentru a alinia datele tabelului pe verticală se folosește atributul VALIGN însoțit de una dintre valorile "top", "middle" sau "bottom".

Pentru a schimba culoarea unei celule, unui rând sau chiar a întregului tabel se folosește atributul BGCOLOR împreună cu codul culorii alese.

Crearea formularelor folosind HTML

Formularele reprezintă o metoda de interactivitate cu utilizatorii paginii web. Prin intermediul unui formular se pot obține date importante de la vizitatorii paginii. După ce formularul a fost completat, utilizatorul apasă un buton de trimitere, iar datele introduse în formular sunt primite sub forma unui e-mail sau datele vor fi procesate cu ajutorul unui limbaj de programare și adăugate într-o bază de date.

Pentru a folosi un formular în pagina web, va trebui să se folosească tag-urile <FORM> și </FORM>. Între aceste tag-uri vor fi introduse toate elementele formularului.

Tag-ul <FORM> are doua atribute foarte importante: ACTION și METHOD. Cu ajutorul atributului ACTION i se spune browser-ului ce se va întâmpla cu datele introduse în formular. Astfel, valoarea atributului ACTION poate fi o adresa URL a unui script, scris într-un limbaj de programare, care va interpreta datele și le va introduce într-o bază de date, dacă este cazul, sau poate fi o adresă de email, caz în care datele introduse în formular vor fi trimise prin email la adresa respectiva.

Atributul METHOD, așa cum îi spune și numele, precizează metoda de trimitere a datelor și poate avea două valori. Valoarea implicită a acestui atribut este GET, cu ajutorul acestei metode putând fi trimise cantități mici de date, cea mai folosită metoda fiind POST.

Elementele unui formular trebuie introduse, în majoritatea cazurilor, cu ajutorul tag-ului <INPUT>. Atributele cele mai importante ale acestui tag sunt următoarele:

– TYPE – tipul elementului

– NAME – numele elementului

– VALUE – valoarea elementului

Elementele ale unui formular pot fi:

– câmpurile de editare

– butoanele radio

– casetele de validare

– casetele de fișiere

– listele de selecție

– butoanele submit și reset

CSS

CSS provine din engleză și este acronimul de la Cascading Style Sheet care este un standard pentru formatarea elementelor unui document HTML (formatare text, background sau aranjare în pagină).

În comparație cu era anilor 90, când controlul prezentării unei pagini se făcea prin tag-uri HTML, divizate între ele în mai multe fișiere, ce confereau o muncă enormă în cazul unei actualizări, CSS vine cu un nou standard, și anume ca printr-un singur fișier (o convenție între programatori este să se folosească numele general 'style.css' ) – să fie controlat întreg aspectul proiectului WEB.

Beneficiile sintaxei CSS sunt:

formatarea este introdusa într-un singur loc pentru tot documentul

editarea rapidă a etichetelor

datorită introducerii într-un singur loc a etichetelor se obține o micșorare a codului paginii, implicit încărcarea mai rapidă a acesteia

Sintaxa CSS este structurată pe trei nivele:

nivelul 1 fiind proprietățile etichetelor din documentul HTML, tip inline;

nivelul 2 este informația introdusă în blocul HEAD, tip embedded;

nivelul 3 este reprezentat de comenzile aflate în pagini separate, tip externe;

CSS 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, însa 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 său, poate fi controlat mult mai ușor. Stilurile pot fi aplicate asupra unui element, a unui document sau chiar asupra unui întreg site web.

Cele mai cunoscute și utilizate browsere, cum ar fi: Mozilla Firefox, Internet Explorer, Opera, și altele, sunt compatibile CSS.

Codurile CSS pot fi scrise în interiorul paginii sau într-un fișier extern cu extensia".css". Codul CSS, ca formă generală, este alcătuit din: obiectul care va fi formatat.proprietățile acestuia și valoarea (sau atributele) fiecărei proprietăți.
Când este adăugat în documentul HTML, trebuie scris în cadrul unui tag <style> în secțiunea HEAD a documentului HTML, după cum se vede în formula generală de mai jos:

<html>
<head>
<title>Titlul</title>

<style type="text/css">

    obiect_css {

        proprietate:valoare;

        alta_proprietate:valoare;

    }

</style>

</head>

<body>

… Conținut …

</body>
</html>

Sintaxa codului CSS: Perechile proprietate:valoare se scriu între acoladele obiectului CSS pe care-l definesc, între "proprietate" și "valoare" trebuie să fie un caracter două-puncte (:) iar la sfârșitul perechii se adaugă un caracter punct-și-virgulă (;). Când este adăugat într-un fișier extern ".css", codul CSS se scrie la fel, dar nu se mai adaugă tag-ul <style>.

PHP

Numele PHP provine din limba engleză și este un acronim recursiv : Php Hypertext Preprocessor.

PHP este un limbaj de programare server-side foarte popular. Popularitatea sa a crescut neîncetat, numeroase statistici estimând că PHP este printre cele mai folosite limbaje de programare server-side. Aceasta se datorează următoarelor avantaje ale limbajului:

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;

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

Flexibilitatea : 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 existente: Apache, IIS, Zeus, server, si altele;

Gratuitatea : 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.

Scurt istoric al limbajului PHP

La fel ca multe alte proiecte software importante, PHP s-a născut sub forma unui mic utilitar care avea scopul rezolvării unei simple problemă particulară. În 1995, un programator pe nume Rasmus Lerdorf și-a publicat CV-ul în pagina sa Web. Pentru ca să poată urmări cine i-a vizitat pagina, Rasmus a introdus în pagină un tag special și a scris în Perl un script CGI care să colecteze informații despre vizitatori. Acest cod l-a numit PHP (Personal Home Page) tools. Mai târziu, în cadrul unui proiect "de serviciu", a trebuit să realizeze o interfață între clienții de pe Web și o bază de date. A recurs la aceeași idee: tag-uri HTML proprii, procesate de un script CGI (de data aceasta scris în C) care le înlocuia cu conținutul care trebuia inserat în pagină, numind aceste tag-uri "Form Interpreters" (FI) deoarece rolul lor era de a prelua datele transmise prin formulare HTML și de a le transforma în variabile simbolice pe care le folosea apoi pentru interogarea bazei de date.

Mai târziu a reunit codul PHP cu FI și l-a făcut public sub numele PHP/FI. Aceasta a fost de ajuns, restul sarcinii rămânând comunității programatorilor, care au corectat, dezvoltat și extins această idee în regim open source, depășind cu mult scopul său inițial. Deși numele PHP s-a păstrat, semnificația sa a devenit alta, cea de „Hypertext Preprocessor”. Ajuns între timp la versiunea 6, PHP este un limbaj de scripting server-side foarte solid, cu multe funcții predefinite, implementat pe numeroase platforme, conlucrând cu toate serverele Web importante și dispunând de interfețe pentru majoritatea bazelor de date utilizate.

Descriere

PHP este un limbaj de script care funcționează alături de un server Web.

Față de alte limbaje script, precum Javascript, la PHP codul se execută pe server. Dacă pe serverul Web se află un script similar, clientul nu va primi decât rezultatul execuției scriptului, fără a avea nici o posibilitate de acces la codul care a produs rezultatul. Server-ul poate fi configurat să prelucreze (analizeze) toate fișierele HTML ca fișiere PHP. Astfel nu există nici un mijloc de a distinge paginile care sunt produse dinamic de paginile statice. Cele mai bune lucruri în folosirea PHP-ului sunt că este foarte simplu pentru un începător, dar oferă o mulțime de facilități avansate pentru un programator profesional. Deși dezvoltarea PHP-ului este axată pe partea de scripting ce rulează pe server, se pot face multe lucruri cu acesta.

Crearea unui script PHP

Un script PHP poate fi foarte simplu sau foarte complex. Totuși, crearea chiar și a unui script PHP complex este extrem de simplă, necesitând numai un editor de texte obișnuit.

Pentru a crea scripturi PHP, majoritatea programatorilor PHP folosesc un editor de texte obișnuit. Se poate folosi orice editor de texte se dorește. Sub Microsoft Windows, programatorii PHP folosesc frecvent programul Windows Notepad. Se poate folosi WordPad sau chiar un procesor de texte, precum Microsoft Word. Totuși, dacă se folosește un instrument diferit de Notepad, trebuie să se ia anumite măsuri pentru a salva scriptul sub formă de document text; în caz contrar, fișierul script conține informații de formatare care vor deruta serverul PHP.

Dacă se folosește UNIX sau Linux, se pot crea scripturi PHP folosind un program precum vi, emacs sau pico. Programul în sine nu contează, atâta vreme cât poate crea fișiere text ASCII.

Fiecare program PHP include două linii speciale, care indică serverului PHP că textul cuprins între cele două linii este alcătuit din instrucțiuni PHP. Practic, aceste linii pot fi asimilate copertelor unei cărți, care păstrează unitatea programului PHP.

După crearea unui script, acesta se salvează sub formă de fișier text, cu un nume care respectă următoarele reguli:

Numele fișierului trebuie să fie alcătuit numai din caractere minuscule, cifre și liniuțe. Utilizarea spațiilor și a altor caractere fiind interzisă.

Extensia numelui fișierelor trebuie să fie . php.

Programele PHP execută trei categorii de operații elementare:

Obțin date de la un utilizator;

Execută prelucrări ale datelor, respectiv obțin accesul la datele stocate în fișiere și baze de date și le manipulează;

Afișează date astfel încât un utilizator să le poată vizualiza.

După crearea un script PHP, acesta va trebui executat. Dacă scriptul PHP nu s-a creat pe un server unde este instalat PHP, mai întâi scriptul trebuie să fie încărcat într-un server. După încărcarea fișierului care conține scriptul, se poate obține accesul la acesta. Se lansează un browser Web și se deschide adresa URL asociată scriptului. Adresa URL trebuie să fie alcătuită din adresa URL identificată de administratorul de sistem, urmată de un slash (/), urmată de numele fișierului care conține scriptul. [McC02]

Elementele constructive ale limbajului PHP

Numere și șiruri

Programele de calculator manipulează datele, care reprezintă informații. Programele PHP folosesc două categorii principale de date: numere și șiruri. Numerele sunt compuse mai ales din cifre, în timp ce un șir poate conține orice caracter, inclusiv cifre, litere și simboluri speciale.

Decizia privind modul de stocare a datelor este importantă, în mod caracteristic, datele se stochează sub formă de numere atunci când se dorește executarea unor operații matematice asupra datelor, deoarece numerele sunt stocate într-un mod care permite efectuarea de calcule. Pe de altă parte, șirurile sunt stocate folosind o modalitate care facilitează înțelegerea lor de către operatorul uman. Datele trebuie stocate sub formă de șiruri dacă formatul acestora nu este numeric sau dacă se dorește ca operatorul uman să fie capabil de a introduce sau de a vizualiza datele.

PHP folosește două categorii de numere: întregi și duble. Numerele întregi reprezintă numerele fără parte fracționară folosite la numărare, plus zero și numerele negative. Cu alte cuvinte, în PHP termenul de întreg are aceeași semnificație ca și în matematică. De exemplu, numărul 100 poate fi reprezentat în PHP sub formă de întreg. Numerele duble, spre deosebire de întregi, reprezintă valori numerice care pot include fracții zecimale, ca de exemplu 2,5. Numerele duble sunt sinonime cu numerele reale din matematică.

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

Spre deosebire de întregi și de numere duble, care conțin cu precădere cifre, șirurile pot conține orice caracter. Ca atare, șirurile sunt utile pentru stocarea datelor care nu pot fi calculate, precum nume și adrese.

De asemenea, șirurile pot fi utilizate pentru stocarea datelor numerice. Reprezentările sub formă de numere întregi și duble sunt folosite, în general, numai în interiorul calculatoarelor; de regulă, datele sunt introduse în calculatoare și afișate de către acestea sub formă de șiruri.

Pentru a specifica un șir în PHP, caracterele care alcătuiesc șirul sunt incluse între ghilimele duble; de exemplu, șirul reprezentând numele fizicianului care a formulat teoria relativității este "Albert Einstein". Un șir poate conține și date numerice, de exemplu, "3.14159".

PHP facilitează includerea în șiruri a unor caractere speciale, precum caracterele de salt la linie nouă sau retur de car, prin furnizarea de secvențe escape care reprezintă caractere speciale. Secvențele escape folosite în PHP sunt:

\n salt la linie noua

\r retur de car

\t caracter de tabulare pe orizontală

\\ backslash

\$ simbolul dolarului

\” ghilimele duble [McC02]

Tipuri de date, Variabile, Constante, Operatori

Toate variabilele, în PHP încep su semnul dolar ($). PHP reține tipul informației stocate în variabilă. Nu este necesară o declarare a variabilelor la începutul programului. Tot ce trebuie făcut este doar folosite și ele există.

Tipuri de date

Tipurile de date cele mai folosite în PHP sunt următoarele:

boolean;

integer;

floating-points;

string;

array;

null.

Boolean

Este cel mai simplu tip de date. O variabilă de tipul boolean poate avea doar două valori: TRUE sau FALSE (ADEVARAT sau FALS), poate lua valori întregi care să le reprezinte pe cele de mai sus. Astfel, valoarea 0 înseamnă FALSE, iar orice altă valoare întreagă diferită de 0 inseamnă TRUE.

Integer

Reprezintă mulțimea numerelor întregi Z = {…, -2, -1, 0, 1, 2, …}. Variabilele de acest tip pot fi inițializate cu numere întregi specificate în format zecimal (în baza 10), hexazecimal (în baza 16) sau octal (în baza 8).

Floating-points

Reprezintă numerele în virgulă mobilă. Dimensiunea acestui tip de date este foarte mare, și este dată de numere ce pot fi scrise pe 64 de biți (numărul maxim este în jurul valorii de 10 la puterea 20). Dezavantajul este că are o precizie scăzută la ultimele cifre.

String

String reprezintă un șir de caractere. În limba română acest tip de date se numește tipul Tablou și reprezintă o structură ordonată pe mai multe dimensiuni. Datele conținute într-un Array pot fi de tipuri diferite.

Null

Valoarea specială NULL reprezintă o variabilă care nu are nici o valoare. Sintaxa de atribuire a acestei valori unei variabile este următoarea:

$a = Null;

Valoare null trebuie scrisa în forma aceasta Null, cu N mare.

Variabile

Toate variabilele sunt precedate de semnul dolar ($). Numele variabilelor este case-sensitive, adică ține cont de litere mari sau mici. Numele unei variabile trebuie să înceapă cu o literă sau liniuță de subliniere ( _ ) urmată de oricâte litere, cifre sau liniuțe de subliniere.

În PHP este permisă atribuirea unei valori prin referință. Aceasta înseamnă că noua variabilă va fi o referință spre variabila originală. Modificarea variabilei noi va duce la modificarea celei originale, și invers. Această atribuire are loc mult mai rapid, iar efectul se observă mai ales în structuri care se repetă. Pentru o astfel de atribuire se foloseste semnul (&) în fața valorii atribuite.

Variabilele declarate în cadrul unui program nu sunt valabile și în interiorul funcțiilor definite de utilizator. Variabilele globale sunt valabile în tot programul, iar variabilele locale sunt valabile doar în cadrul structurii definite de utilizator.

Constante

Constanta este un identificator pentru o valoare simplă. Cum spune și numele, valoarea acesteia nu se modifică pe durata execuției scriptului. Numele constantei este case-sensitive, ca și în cazul variabilelor. Prin convenție, constantele se scriu întotdeauna cu litere mari.

Constantele pot conține numai date de tipul: boolean, integer, floating-point și string.

Există cateva diferențe între constante și variabile:

– constantele nu au semnul dolar ($) în față;

– constantele pot fi definite și accesate oriunde, fără a ține cont de regulile de la variabile;

– constantele nu pot fi redefinite.

Operatori

Operatori aritmetici

$a + $b adunare

$a – $b scădere

$a * $b înmulțire

$a / $b împărțire

$a % $b modulo

Operatori de atribuire

$a = 3; //$a ia valoarea 3

$a += 5; //$a ia valoarea 8, adică 3 + 5.

$c = ($b = 4) + 5; //$b primește valoarea 4, iar $c valoarea 9

$b = "Hello ";

$b .= "World!"; //atribuie lui $b valoarea "Hello World!", este echivalent cu $b = $b . "World!".

Operatori la nivel de bit

$a & $b Și

$a | $b Sau

$a ^ $b Sau-Exclusiv

~ $a Not (Negare)

$a << $b Rotire la stanga (muta bitii lui $a cu $b pozitii spre stanga)

$a >> $b Rotire la dreapta (muta bitii lui $a cu $b pozitii spre dreapta)

Operatori de comparare

$a == $b egal cu

$a === $b identic cu

$a != $b deferit

$a <> $b diferit

$a !== $b neidentic

$a < $b mai mic

$a > $b mai mare

$a <= $b mai mic sau egal

$a >= $b mai mare sau egal

Operatori de incrementare/decrementare

++$a Pre-incrementare (adună 1 la $a, apoi returnează $a)

$a++ Post-incrementare (returnează $a, apoi adună 1 la $a)

–$a Pre-decrementare (scade 1 din $a, apoi returnează $a)

$a– Post-decrementare (returnează $a, apoi scade 1 din $a)

Operatori logici

$a and $b Și

$a or $b Sau

$a xor $b Sau-Exclusiv

! $a Not (Negare)

$a && $b Și

$a || $b Sau

Structuri de control

Structurile de control sunt scheletul limbajelor de programare. PHP are incluse structurile de control necesare funcționării unui limbaj.

Programele PHP iau decizii prin evaluarea unor expresii condiționale și execută instrucțiuni bazate pe rezultatele acestor evaluări.

Scrierea instrucțiunilor PHP condiționale

Majoritatea programelor utile nu se comportă în exact același mod la fiecare rulare a acestora, în schimb, programele iau decizii, executând uneori o operație și alteori alta, în funcție de circumstanțe.

Programele PHP iau decizii prin evaluarea unor expresii condiționale și execută instrucțiuni bazate pe rezultatele acestor evaluări. Expresiile condiționale sunt asimilate ca având una din două valori: true (adevărat) sau false (fals).

Regulile care definesc rezultatul unei expresii condiționale sunt următoarele:

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

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

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

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

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

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

Se pot forma expresii condiționale complexe prin unirea a două expresii condiționale cu ajutorul unui operator logic.

Instrucțiunea "if"

Expresiile condiționale sunt esențiale pentru scrierea instrucțiunilor condiționale, prin care se iau decizii.

Una dintre cele mai simple și folosite instrucțiuni condiționale este instrucțiunea if.

Sintaxa instrucțiunii:

If(condiție){

        Instrucțiune(1);

          Instrucțiune(2);

          ………………

}

După if urmează o pereche de paranteze rotunde în interiorul cărora se plasează condiția, adică o expresie logică a cărei rezultat poate fi TRUE sau FALSE. Dacă și numai dacă rezultatul expresiei logice (condiția) este TRUE se vor executa instrucțiunile: Instrucțiune(1), apoi Instrucțiune(2), etc.

Dacă rezultatul expresiei logice dintre parantezele rotunde este FALSE, setul de instrucțiuni dintre acolade nu se va executa, iar controlul programului va trece mai departe.

Exemplu:

<?php
$număr = 12;

if ($număr > 10)

          echo "Acesta este un număr mai mare decât 10";

?>

Atunci când este executat scriptul, instrucțiunea if evaluează expresia condițională $număr > 10, care este adevărată (TRUE) numai dacă valoarea variabilei $număr este mai mare decât 10. Dacă valoarea variabilei $număr este mai mare decât 10, se va executa instrucțiunea echo, în caz contrar programul va trece mai departe.

Instrucțiunea "else"

Dacă se dorește executarea unei instrucțiuni atunci când o condiție este TRUE și o altă instrucțiune când condiția este FALSE. Instrucțiunea else permite acest lucru, după cum urmează:

If(condiție) {

          Instrucțiune(1);

          Instrucțiune(2);

          ………………

}

else {

          Instrucțiune(3);

          Instrucțiune(4);

          ………………

}

În acest caz dacă expresia logică din paranteze este adevărată se vor executa instrucțiunile: Instrucțiune(1); Instrucțiune(2), iar dacă valoarea expresiei logice are valoarea FALSE se vor executa instrucțiunile: Instrucțiune(3); Instrucțiune(4);

Instrucțiunea asociată unei instrucțiuni if sau else poate fi ea însăși o instrucțiune if. O asemenea instrucțiune if se numește "instrucțiune if imbricată".

Exemplu:

<?php

$număr = 88;

if ($număr > 10)

    if ($număr > 100)

          echo "Acesta este un număr mai mare decât 100";

    else

          echo "Acesta este un număr mai mic decât 100, dar mai mare decât 10";

else

          echo "Acesta este un număr mic";

?>

O instrucțiune corelată atât cu instrucțiunea if, cât și cu instrucțiunea else, este instrucțiunea elseif.

Exemplu:

<?php

$număr = 88;

if ($număr > 100 )

          echo "Acesta este un număr mai mare decât 100";

elseif ($număr > 10)

          echo "Acesta este un număr mai mic decât 100, dar mai mare decât 10";

elseif ($număr > 1)

          echo "Acesta este un număr mic";

else

          echo "Acesta este un număr foarte mic";

?>

Instrucțiunile switch, break și default

Instrucțiunea if permite luarea unei decizii în două sensuri. Pentru a putea lua o decizie în mai multe sensuri, se pot folosi mai multe instrucțiuni if , else sau elseif. Cu toate acestea, când se dorește ca programul să aleagă dintr-un set de alternative care pot fi reprezentate prin valori întregi, instrucțiunea switch este o opțiune mai convenabilă.

Sintaxa instrucțiunii:

switch($numar)

case(1):

instr1;

break;

case(2):

instr2;

break;

case(3):

instr3;

break;

default:

Invalid code;

Exemplu:

$number = 27;

switch ($number % 3)

{

case 0:

echo "Numarul este divizibil cu 3";

break;

case 1:

echo "Numarul nu este divizibil cu 3, restul impartirii este 1";

break;

case 2:

echo "Numarul nu este divizibil cu 3, restul impartirii este 2";

break;

}

Instrucțiunea for

O alternativă cu o funcționalitate mai ridicată pentru utilizarea buclelor este structura repetitivă for. Sintaxa este foarte asemănătoare cu cea din limbajele C/C++ și Java și anume:

for (expresie #1; expresie #2; expresie #3)

instrucțiune

Prima expresie este evaluată o singură dată, înainte de începerea execuției ciclului. Instrucțiunea este executată cât timp cea de-a doua expresie are valoarea true. De fiecare dată, după executarea instrucțiunii, este evaluată cea de-a treia expresie. Oricare dintre cele trei expresii poate lipsi; în cazul în care o expresie lipsește, se consideră că ea are valoarea true.

Pentru structura for poate fi folosită și următoarea sintaxă alternativă:

for (expresie #1; expresie #2; expresie #3):

instrucțiune

endfor;

Exemplu:

<?php

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

echo $i."<br>";

}

?>

Se inițializează variabila i cu valoarea 1, se verifică dacă este mai mică sau egală cu 10 iar apoi se incrementează. La fiecare iterație se tipărește variabila i.

Instrucțiunile while și do while

Practic, instrucțiunile while și do while reprezintă versiuni "manuale" ale instrucțiunii for. Dacă o instrucțiune for are trei expresii, o instrucțiune while sau do while are una singură, și anume expresia de test. Așa cum se întâmplă de obicei, expresiile unei instrucțiuni for sunt opționale; fără o expresie de inițializare sau o expresie pas, o instrucțiune for operează în același mod ca o instrucțiune while. În consecință, următoarele două instrucțiuni sunt echivalente:

<?php
for ( ; $i <= 3; ) $suma += $i; 
while ($i <= 3) $suma += $i;
?>

Când se folosește o instrucțiune while, trebuie să se furnizeze un mecanism oarecare, analog expresiei de incrementare a instrucțiunii for, care actualizează variabilele la care se face referire în expresia de test. De asemenea, trebuie inițializate toate valorile folosite în expresia de test.
Secvența de execuție a unei instrucțiuni while este următoarea:
1. Se evaluează expresia test.
2. Dacă rezultatul este false, se trece la etapa 5.
3. Se execută corpul buclei.
4. Se trece la etapa 1.
5. Se părăsește bucla, prin executarea următoarei instrucțiuni secvențiale.

Exemplu:

<?php
$n = 0;
$suma = 0;
while ($n <= 3)
   {
   $suma = $suma + $n;
   $n++;
   }
echo "Suma este $suma.";
?>

Instrucțiunea do while este oarecum asemănătoare instrucțiunii while. Diferența este aceea că instrucțiunea do while își execută corpul înainte de a-și evalua expresia de test. Astfel, corpul buclei unei instrucțiuni do while este întotdeauna executată cel puțin o dată; corpul unei instrucțiuni while este omis dacă expresia de test are inițial valoarea false.

Secvența de execuție a unei instrucțiuni do while este următoarea:
1. Se execută corpul buclei.
2. Se evaluează expresia de test.
3. Dacă rezultatul este adevărat, se trece la etapa 1.
4. Se încheie execuția buclei, prin executarea următoarei instrucțiuni secvențiale.

Exemplu:

<?php
$suma = 0;
$n = 1;
do
   {
   $suma += $n;
   $n++;
   }
while ($n <= $numar);
echo "<br>Suma intregilor cuprinsi intre 1 si $numar este $suma.";
?>

Instrucțiunile while și do while sunt foarte asemănătoare. Utilizarea instrucțiunii do while este o chestiune de comoditate, nu de necesitate. Se pot scrie aplicații php folosind doar instrucțiuni while.

MySQL

MySQL este un sistem de gestiune a bazelor de date relațional, produs de compania suedeză MySQL AB și distribuit sub Licența Publică Generală GNU. Este cel mai popular SGBD(Sistem de Gestiune a Bazelor de Date) open-source.

Este folosit foarte des împreună cu PHP, cu MySQL se putându-se 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 ar fi: C, C++, C#, Borland Delphi, Java, Perl, PHP, Python, FreeBasic, etc., fiecare dintre acestea folosind un tip specific API. O interfață de tip ODBC denumită MyODBC permite altor limbaje de programare ce folosesc această interfață, să interacționeze cu bazele de date MySQL cum ar fi ASP sau Visual Basic.

O bază de date este o colecție structurată de date, un program ce poate stoca o cantitate foarte mare de informații și o poate organiza într-un format ce este ușor accesibil în mod direct sau de către un alt program. O bază de date este formata din unul sau mai multe tabele.

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

Î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:

Comenzi asupra tabelelor

Tabelele sunt cele mai importante obiecte dintr-o bază de date relațională. Toate datele sunt stocate în tabele organizate sub formă de linii și coloane. Fiecare tabelă corespunde unei relații din schema relațională a bazei de date.

Proiectarea unei baze de date presupune, în primul rând, stabilirea colecției de tabele și a descrierii tabelelor împreuna cu toate proprietățile asociate. Înainte de crearea unei tabele noi trebuie luate o serie de decizii de proiectare referitoare la:

tipurile de date care vor fi stocate în tabelă;

coloanele tabelei și tipul de dată (eventual lungimea) pentru fiecare coloană;

coloanele care acceptă sau nu valori NULL;

constrângeri, reguli, valori implicite;

indecși necesari, coloanele care formează cheia primară sau sunt parte a unei chei străine.

Odată proiectată baza de date se poate trece la crearea tabelelor în care vor fi stocate datele. Stocarea datelor se face în tabele care sunt grupate în unul sau mai multe fișiere a bazei de date.

Crearea tabelelor

Sintaxa pentru crearea tabelei este:

CREATE TABLE[nume_baza_de_date.[proprietar].|proprietar.]nume_tabel({<def_coloana> |<constrangere_tabela>}[, n]);

Coloanele vor fi separate prin virgulă iar fiecare coloană va avea un nume și tip.

nume_baza_de_date – este numele bazei de date în care se creează tabela. Dacă nu se specifică, tabela va fi creată în baza de date curentă;

proprietar – este numele utilizatorului care va fi proprietarul tabelei. Dacă lipsește, atunci proprietarul va fi utilizatorul curent;

nume_tabel – este numele tabelei care se creează;

def_coloana – se referă la definiția completă a unei coloane împreună cu constrângerile impuse asupra sa.

constrangere_tabela – se referă la constrângeri exprimate la nivel de coloană sau se exprimă mai avantajos la nivel de tabelă.

Constrângerile asociate unei tabele se pot defini fie la nivel de coloană, fie la nivelul tabelei. Constrângerile sunt proprietăți speciale prin care se asigură integritatea datelor. Anumite constrângeri au ca efect crearea de indecși pentru tabele si coloanele acestora. În SQL se pot defini următoarele categorii de constrângeri:

NOT NULL, prin care se interzic valorile NULL pentru o anumită coloană

PRIMARY KEY este constrângerea de integritate a relației care impune valori unice și nenule pentru coloanele care fac parte din cheia primară

UNIQUE impune valori unice pentru una sau mai multe coloane, este de fapt mecanismul de definire al cheilor candidate din tabelă;

FOREIGN KEY este constrângerea de integritate a referințelor, valorile cheii străine trebuie să fie o submulțime a valorilor cheii dintr-o tabelă referită;

constrângeri CHECK, prin care se impune ca valorile dintr-o anumită coloană să satisfacă o expresie logică specificată, este o formă de realizare (parțială) a integrității domeniului prin restricționarea valorilor care pot fi atribuite unei coloane.

Ștergerea unei tabele

Prin instrucțiunea DROP TABLE se realizează ștergerea din baza de date a unei tabele împreună cu toate datele conținute, constrângerile, indecșii si tregger-ele asociate. Toate vederile sau procedurile stocate care fac referire la tabela care se va șterge trebuie șterse în mod explicit prin instrucțiuni DROP VIEW sau DROP PROCEDURE.

Sintaxa instrucțiunii este următoarea:

DROP TABLE nume_tabela

unde: nume_tabela – este numele tabelei care se șterge.

Introducerea datelor în tabele

INSERT este comanda pentru introducerea uneia sau mai multor înregistrări într-o tabelă a bazei de date.

Sintaxa este următoarea:

INSERT [INTO] nume_tabela (coloana_1, coloana_2,…, coloana_n) VALUES ('valoare_1', 'valoare_2', …, 'valoare_n');

unde: [INTO] – este cuvânt cheie opțional;

nume_tabela – este numele tabelei în care se face inserarea;

coloana_1…coloana_n – coloana sau coloanele în care se face inserarea;

VALUES – precede lista de valori de inserat. În această listă trebuie să existe cate o valoare pentru fiecare coloană specificată în lista de coloane.

Ștergea înregistrărilor unui tabel

Ștergerea înregistrărilor unei tabele se realizează cu instrucțiunea DELETE.

Sintaxa acesteia este:

DELETE [ FROM ] {nume_tabela } [FROM { <sursa_tabela> }[ ,…n ]] [ WHERE { <conditie_cautare> }]

unde:

FROM – cuvânt cheie opțional care precede numele tabelei din care se face ștergerea.

nume_tabela – este numele tabelei din care se face ștergerea.

FROM sursa_tabela – prin aceasta se poate specifica o cuplare de mai multe tabele care se poate folosi în locul unei fraze SELECT care sa fie imbricată in clauza WHERE a instrucțiunii DELETE.

WHERE – specifică condițiile prin care se identifică înregistrările care urmează a fi șterse. În lipsa acesteia se șterg toate înregistrările din tabelă.

<conditie_cautare> – reprezintă orice condiție care poate fi inclusă in clauza WHERE

Selectarea unui tabel

Clauza SELECT specifică atributele relației rezultat.

Sintaxa este următoarea:

SELECT [ ALL | DISTINCT ][ TOP n [ PERCENT] ] { * | {nume_tabel | alias_tabel}.* | {nume_coloana | expresie | IDENTITYCOL | ROWGUIDCOL } [[AS] alias_coloana] | alias_coloana = expresie } [ , n]

unde:

ALL – înregistrările duplicat pot sa apară în relația rezultat. ALL este opțiunea implicită.

DISTINCT – se elimină înregistrările duplicat din relația rezultat.

TOP n [ PERCENT] – fi returnate numai primele n înregistrări din rezultat. Dacă se specifică și PERCENT , atunci vor fi returnate numai primele n procente din înregistrări găsite.

*- vor fi incluse în rezultat toate atributele din toate tabelele și vederile menționate în clauza FROM

nume_tabel | alias_tabel.* – se includ în rezultat numai atributele din tabela specificată.

nume_coloana – este numele unei coloane. Numele de coloană trebuie prefixate cu numele tabelei din care provin ori de câte ori existâ ambiguități.

expresie – poate fi un nume de coloană, o constantă, o funcție, orice combinație a acestora realizată prin operatori, ori o frază SELECT imbricată.

IDENTITYCOL – returnează coloana cu proprietatea IDENTITY. Dacă în clauza FROM sunt referite mai multe tabele care au un atribut de tip IDENTITY, atunci IDENTITYCOL se va prefixa cu numele tabelei corespunzătoare, sub forma Tabela. IDENTITYCOL.

ROWGUIDCOL – returnează coloana cu valorile identificatorului global unic de înregistrare pentru tabelele care au proprietatea ROWGUIDCOL. Dacă în clauza FROM sunt referite mai multe tabele care au această proprietate, atunci ROWGUIDCOL se prefixează cu numele tabelei.

alias_coloana – este un nume alternativ cu care se poate înlocui numele unui atribut. alias_coloana poate fi folosit în clauza ORDER BY, dar nu și in clauzele WHERE, GROUP BY sau HAVING.

Modificarea structurii unui tabel

Instrucțiunea ALTER TABLE modifică definiția unei tabele realizând orice combinație din a următoarelor categorii de operații:

modificarea definiției unei coloane sau constrângeri;

adăugarea/ștergerea unei coloane sau constrângeri;

activarea/dezactivarea unei constrângeri sau a unui trigger.

Implementarea magazinului virtual

4.1 Specificații și analiza cerințelor

Se cere să se implementeze un magazin virtual pentru un computer shop ce distribuie un număr de aproximativ 500 produse. Se cere că produsele sa fie organizate arborescent pe trei nivele de categorii, subcategorii și produsele propriu zise. Totodată se vor oferi facilitățile utilizator de înregistrare, coș virtual, comentare a produselor. Pe partea de administrare se cer facilități de gestionare a datelor și de configurare cât mai detaliată a manierei de vizualizare a produselor pe bază de categorii și subcategorii. Administratorul va avea posibilitatea de a seta filtre pe baza unor valori predefinite la categoriile și subcategoriile de produse.

Dat fiind faptul că avem de a face cu un magazin de dimensiuni relativ reduse am optat pentru o soluție PHP+MySQL. Scriptul PHP are avantajul vitezei și a disponibilității suportului pe serverele din internet. MySQL este un motor de baze de date ce poate oferi funcționalitățile de inserare, actualizare si interogare a datelor la un cost relativ redus.

Întâi se va proiecta o schemă a bazei de date, iar pe urmă se vor dezvolta modulele aplicației pe două nivele utilizator și administrator.

4.2 Schema bazei de date

Baza de date conține câteva tabele ce modelează conceptele unui magazin virtual adică :

produsele comercializate ;

pozele asociate produselor ;

descrierile produselor ;

coșul de cumpărături în care se pot selecta produse în diverse cantități;

categoriile produselor ;

comentariile făcute de vizitatori referitor la produse ;

filtrele prin care vizitatorii își pot crea propria vizualizare asupra produselor dorite;

paginarea în cazul în care filtrarea oferă rezultate ce nu pot fi afișate pe o singură pagină html;

setări generale sub forma nume=valoare;

subcategorii;

clienții.

Tabela bought

În figura este prezentată tabela bought ce va stoca produsele cumpărate de un client. Tabela conține:

cheia primară;

cheia produsului cumpărat;

cantitatea, adică numărul de bucăți;

CREATE TABLE IF NOT EXISTS `bought` (

`id` int(11) NOT NULL auto_increment,

`product_id` int(11) NOT NULL,

`quantity` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Tabela categories

Tabela categoriilor de produse conține următoarele câmpuri:

cheia primară;

numele categoriei, de exemplu: notebook, calculatoare, servere;

numărul de ordine al categoriei. De exemplu prima categorie ce se dorește a fi afișată în pagină este cea a notebook-urilor, deoarece s-a sesizat o creștere a interesului clienților pentru acestea, astfel ele se vor afișa primele pe pagină.

CREATE TABLE IF NOT EXISTS `categories` (

`id` int(11) NOT NULL auto_increment,

`category` varchar(255) NOT NULL,

`order` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

Tabela comments

Tabela comentariilor este utilizată de un mecanism de marketing și conține următoarele coloane:

cheia primară;

cheia utilizatorului care a făcut comentariul;

cheia produsului ce a fost comentat;

votul acordat de utilizator pentru produsul respectiv;

textul comentariului scris de utilizator;

data și ora la care a fost făcut acest comentariu.

CREATE TABLE IF NOT EXISTS `comments` (

`id` int(11) NOT NULL auto_increment,

`user_id` int(11) NOT NULL,

`product_id` int(11) NOT NULL,

`vote` int(11) NOT NULL,

`comment` longtext NOT NULL,

`date` datetime NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Tabela filters

Tabela filtrelor este dedicată facilității de căutare a produselor. Filtrele se pot aplica succesiv. De exemplu suntem interesați de produsele din categoria notebook dar numai cele de la HP.

CREATE TABLE IF NOT EXISTS `filters` (

`id` int(11) NOT NULL auto_increment,

`spec_id` int(11) NOT NULL,

`value` varchar(255) NOT NULL,

`order` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Tabela pages

CREATE TABLE IF NOT EXISTS `pages` (

`id` int(11) NOT NULL,

`title` varchar(255) NOT NULL,

`content` longtext NOT NULL

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Tabela photos

Tabela fotografiilor conține următoarele coloane:

cheia primară;

cheia produsului caruia îi corespunde fotografia;

numele fișierului ce conține fotografia stocată într-un director predestinat.

CREATE TABLE IF NOT EXISTS `photos` (

`id` int(11) NOT NULL auto_increment,

`product_id` int(11) NOT NULL,

`photo` varchar(255) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

Tabela products

Tabela produselor prezintă următoarele coloane:

cheia primară;

categoria din care face parte produsul;

subcategoria din care face parte produsul;

numele produsului;

conținutul ;

prețul exprimat în ron;

prețul exprimat în euro;

oferta – mesaj de ofertare în cazul în care produsul este la promoție;

stoc – informație despre prezența produsului în stoc;

brand – numele producătorului;

codul intern al produsului.

CREATE TABLE IF NOT EXISTS `products` (

`id` int(11) NOT NULL auto_increment,

`categorie` int(11) NOT NULL,

`subcategorie` int(11) NOT NULL,

`name` varchar(255) NOT NULL,

`content` longtext,

`pret_ron` varchar(32) NOT NULL,

`pret_eur` varchar(255) NOT NULL,

`oferta` varchar(32) NOT NULL,

`stoc` varchar(32) NOT NULL,

`brand` varchar(64) NOT NULL,

`cod` varchar(64) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Tabela settings

Tabela setărilor conține perechi de tipul nume valoare ce pot avea diverse semantici. Coloanele acestei tabele sunt :

cheia primară;

numele variabilei / specificației;

valoarea variabilei / specificației.

CREATE TABLE IF NOT EXISTS `settings` (

`id` int(11) NOT NULL auto_increment,

`setting` varchar(255) NOT NULL,

`value` varchar(255) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Tabela specs

Tabela specificațiilor stochează specificațiile corespunzătoare unei categorii sau subcategorii. Coloanele acestei tabele sunt următoarele:

cheia primară;

tipul care poate fi titlu (date despre procesor) sau valoare (tip procesor, model procesor, frecventa procesor);

indicele părintelui (categorie sau subcategorie);

switch care spune dacă apare sau nu pe prima pagină specificația respectivă;

câmp întreg ce specifică ordinea de apariție a specificației într-un tabel virtual.

Spre exemplu un hard disk SAMSUNG HD083GJ va avea următoarele specificații: interfața, capacitate, buffer, viteză de rotație, dimensiune, greutate.

CREATE TABLE IF NOT EXISTS `specs` (

`id` int(11) NOT NULL auto_increment,

`type` varchar(255) NOT NULL,

`parent_id` int(11) NOT NULL,

`title` int(11) NOT NULL,

`first` int(11) NOT NULL,

`label` varchar(255) NOT NULL,

`order` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Tabela specs_products

Tabela stochează valorile specificațiilor produselor:

cheia primară;

cheia specificației;

cheia produsului;

valoarea specificației.

Revenind la hard disk-ul SAMSUNG HD083GJ, vom avea următoarele valori pentru specificațiile enumerate anterior: Serial ATA 2, 80 GB, 8 MB, 7200rpm, 5.3 inch, 200 g.

CREATE TABLE IF NOT EXISTS `specs_products` (

`id` int(11) NOT NULL auto_increment,

`spec_id` int(11) NOT NULL,

`product_id` int(11) NOT NULL,

`value` varchar(255) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Tabela subcategories

Tabela subcategoriilor produselor conține următoarele coloane:

cheia primară;

identificatorul categoriei la care subcategoria aparține.

CREATE TABLE IF NOT EXISTS `subcategories` (

`id` int(11) NOT NULL auto_increment,

`category_id` int(11) NOT NULL,

`subcategory` varchar(255) NOT NULL,

`order` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Tabela users

Această tabelă modelează utilizatorii sau clienții magazinului. Câmpurile sunt:

cheia primară;

identificatorul utilizatorului;

adresa de email a utilizatorului;

parola acestuia;

numele utilizatorului;

codul numeric personal;

adresa de corespondență;

localitatea de reședință;

codul poștal;

județul;

3 câmpuri pentru numere de telefon;

numele firmei în cazul când utilizatorul este reprezentantul unei societăți comerciale;

codul de identificare fiscal;

banca cu care firma lucrează;

numărul de cont al firmei;

codul de la registrul comerțului;

adresa sediului social;

localitatea sediului social;

județul sediului social;

codul poștal al sediului social ;

numele administratorului.

CREATE TABLE IF NOT EXISTS `users` (

`id` int(11) NOT NULL auto_increment,

`user` varchar(255) NOT NULL,

`email` varchar(255) NOT NULL,

`password` varchar(255) NOT NULL,

`nume` varchar(255) default NULL,

`cnp` varchar(32) default NULL,

`adresa` varchar(255) default NULL,

`localitate` varchar(64) default NULL,

`codpostal` varchar(16) default NULL,

`judet` varchar(64) default NULL,

`telefon1` varchar(32) default NULL,

`telefon2` varchar(32) default NULL,

`telefon3` varchar(32) default NULL,

`nume_firma` varchar(64) default NULL,

`cif` varchar(16) default NULL,

`banca` varchar(64) default NULL,

`cont_banca` varchar(32) default NULL,

`reg_com` varchar(32) default NULL,

`sediu_social_adresa` varchar(255) default NULL,

`sediu_social_localitate` varchar(64) default NULL,

`sediu_social_judet` varchar(64) default NULL,

`sediu_social_codpostal` varchar(16) default NULL,

`admin` int(11) NOT NULL,

`garantie` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

4.3 Implementare

Site-ul magazinului virtual este scris în PHP. Fiecare pagină PHP este alcătuită din secțiuni ce sunt încărcate dinamic și totodată refolosite. Ne vom referi la aceste pagini folosind numele de module.

Modulul index.php

Reprezintă pagina de start a magazinului virtual. Această pagină ca de altfel majoritatea paginilor din site sunt construite prin includerea headerului, a ofertei speciale și a footerului. Modulele folosite de acesta sunt:

html_header.php;

loadSpecial.php;

html_footer.php.

Modulul html_header.php

În partea de header se încarcă imaginile grafice din partea de prezentare a site-ului. De asemenea în acest modul sunt incluse următoarele funcționalități:

căutarea produselor pe baza categoriilor;

căutarea produselor pe baza unui cuvânt cheie.

Acestea vor fi descrise pe rând în cele ce urmează.

Listarea categoriilor

În figura 4.3.1 este listat codul ce utilizează modulul „html_categories.php” pentru a afișa categoriile și subcategoriile prezente în baza de date.

<div class="header"><h1>Categorii</h1></div>

<div class="container"><div class="content">

<? include "html_categories.php"; ?>

</div></div>

<div class="footer"><!–-></div>

Fig. 4.3.1

Căutarea de produse pe baza categoriilor

În figura 4.3.2 este prezentat codul PHP responsabil de prezentarea unei cutii de căutare a produselor pe baza categoriilor existente în baza de date. Se poate remarca faptul că se folosește pentru selecție un formular HTML ce este încărcat cu informații din baza de date cu ajutorul unui query de selecție.

<!– SEARCH –>

<form action="products.php" method="GET">

<select class="topInput" name="c">

<?$Q = mysql_query("SELECT * FROM `categories` ORDER BY `category`") or die(mysql_error());

while($R = mysql_fetch_array($Q)){

echo '<option value="'.$R['id'].'">'.$R['category'].'</option>';}?>

</select>

<input type="image" src="images/button_ok.gif" width="31" height="20" border="0" align="absmiddle">

</form>

<!– /SEARCH –>

Fig. 4.3.2

Căutarea avansată de produse pe baza cuvintelor cheie

În figura 4.3.3 este prezentat codul HTML ce afișează un formular de căutare a produselor pe baza unui cuvânt cheie. Acțiunea de căutare este executată de modulul search.php ce va avea ca și parametru variabila search setată pe cuvântul cheie.

<!– SEARCH KEYWORDS –>

<form action="products.php" method="GET">

<input type="text" name="search" class="topInput">

<input type="image" src="images/button_ok.gif" width="31" height="20" border="0" align="absmiddle" /><br>

<a href="search.php" class="style3">Cautare avansata</a>

</form>

</div></td><!– /SEARCH KEYWORDS –>

Fig. 4.3.3

Modulul html_footer.php

Acest modul înglobează funcționalități cum ar fi:

calculul prețului total al tuturor produselor din coșul de cumpărături într-o variabilă ce va fi utilizată ulterior;

afișarea unei casete de autentificare pentru clienții magazinului;

afișarea unui meniu special de administrare pentru utilizatorul cu rol de administrator;

afișarea informațiilor legate de coșul de cumpărături numărul de produse și prețul total al acestora calculat anterior;

afișarea unor link-uri informative despre modalitățile de a face cumpărături pe site;

afișarea listei producătorilor cu care magazinul colaborează cu posibilitatea de a

vedea ce produse de la un anumit producător sunt disponibile în magazin.

Calculul prețului produselor din coș

În figura 4.3.4 este listat codul PHP ce însumează prețul în ron pentru fiecare produs. În variabila de sesiune „basket” este reținută lista identificatorilor de produse. Prin intermediul unei interogări SQL se extrage prețul fiecărui produs din tabela de produse și se însumează.

<?

$basketItems = sizeof($_SESSION['basket']);

$basketPrice = 0;

if(isUserLogged()){

foreach($_SESSION['basket'] as $i=>$product_arr){

$prod_id = $product_arr[0];

$prod_quantity = $product_arr[1];

$Q = mysql_query("SELECT * FROM `products`

WHERE `id`='$prod_id'") or die(mysql_error());

$R = mysql_fetch_array($Q);

$basketPrice += $R['pret_ron']*$prod_quantity;

}

}

?>

Fig. 4.3.4

Caseta de autentificare

În figura 4.3.5 avem listat codul corespunzător facilității de autentificare. Formularul conține două câmpuri de editare unul pentru numele de utilizator, iar celalalt pentru parolă. Acțiunea la apăsarea acelui formular este dată de execuția modulului curent „index.php” dar de data aceasta cu datele utilizatorului completate. În cazul în care utilizatorul si-a uitat parola se activează prin link modulul „user_forgotPass.php”. Iar dacă utilizatorul nu are cont atunci se poate opta pentru crearea acestuia pe baza link-ului spre modulul „user_add.php”.

<!– BEGIN RIGHTBOX –>

<div class="rightBox">

<div class="header loginHeader"><h1>Autentificare</h1></div>

<div class="container">

<div class="content">

<div id="login">

<form action="index.php" method="POST">

<input name="user" class="loginInput" value="User" id="userNameLogin" />

<br/>

<input name="pass" type="password" class="loginInput" />

<input type="image" src="images/but_0k_2.gif" width="31" height="20" border="0"/><br />

<?

if(isset($loginErrors) && $loginErrors){

echo '<span style="color: red; font-size: 10px;">Userul si parola sunt incorecte</span><br />';}

?>

<div class="loginLinks">

<a href="user_forgotPass.php" class="style3">Parola uitata?</a> <span class="style3">|</span>

<a href="user_add.php" class="style3">Creare cont nou</a>

</div></form></div></div></div></div>

<!– END RIGHTBOX –>

Fig. 4.3.5

Meniul de administrare

În figura 4.3.6 este prezentat codul PHP ce generează meniul oferit utilizatorului administrator. Administratorul poate:

adăuga, șterge, modifica produse, funcționalitate realizată de modulul „admin_productAdd.php”;

adăuga, șterge, modifica, ordona categorii și subcategorii, funcționalitate implementată de modulul „admin_categories.php”;

adăuga, șterge, modifica și ordona specificațiile produselor, funcționalitate prezentă în modulul „admin_specsSelect.php”;

adăuga, șterge, modifica filtre ce pot ajuta la vizualizarea produselor dintr-o anumită subcategorie pe baza unor valori particulare ale specificațiilor, modulul responsabil cu acest lucru fiind „admin_filters.php”;

încărca prețurile la produse dintr-un fisier text generat de programul Excel, în modulul „admin_settings.php”;

editarea câtorva informații dinamice, cum ar fi secțiunile „Despre noi”, „Cum cumpăr”, „Termene și condiții” etc. Acest lucru se realizeaza în modulul „admin_modify.php” ce utilizează cutii de editare speciale importate din biblioteci predefinite.

<div class="header loginHeader">

<h1>Contul Meu</h1></div>

<div class="container">

<div class="content">

<div id="login">

<?

echo 'Bun venit, <b>'.$_SESSION['nume'].'</b><br /><br /><a href="user_datePersonale.php">Setari cont</a><br /><a href="user_signOut.php">Iesire cont</a>';

if($_SESSION['admin']){

?>

<h2>Administrare</h2>

<a href="admin_productAdd.php">Adauga produs</a><br />

<a href="admin_categories.php">Categorii</a><br />

<a href="admin_specsSelect.php">Specificatii</a><br />

<a href="admin_filtersSelect.php">Filtre</a><br />

<a href="admin_settings.php">Setari</a><br />

<a href="admin_stats.php">Statistici</a><br />

<h2>Texte</h2>

<a href="admin_modifyPage.php?id=17">Despre Noi</a><br />

<a href="admin_modifyPage.php?id=22">Cum Cumpar</a><br />

<a href="admin_modifyPage.php?id=18">Termeni si Conditii</a><br />

<a href="admin_modifyPage.php?id=19">Text jos stanga</a><br />

<a href="admin_modifyPage.php?id=20">Text jos dreapta</a><br />

<a href="admin_modifyPage.php?id=21">Text produs dreapta</a><br />

<a href="admin_modifyPage.php?id=23">Info Contact</a><br />

&nbsp;<br />

<?

}

?>

</div></div>

Fig. 4.3.6

Informații despre produsele din coș

În figura 4.3.7 este listat codul corespunzător afișării unor informații sumare despre stadiul actual al cumpărăturilor. Sunt listate numărul produselor prezente în coș și prețul total al acestora folosindu-ne de variabila calculată anterior.

<div id="basketLeft">

<h1>Cosul meu</h1>

<p>

<strong><?=$basketItems?></strong> Produse<br />

Pret total:

<strong><?=formatPrice($basketPrice)?> RON</strong>

<br />

<a href="basket.php">Vezi produsele</a>

</p>

</div>

Fig. 4.3.7

Informații despre modalitățile de cumpărare

În figura 4.3.8 este listat codul unei sectiuni din pagină ce ajută utilizatorul să se orienteze în ceea ce privește politica de cumpărare, manierele de plată și datele de identificare ale firmei.

<div class="rightBox">

<div class="header infoHeader"><h1>Informatii</h1></div>

<div class="container"><div class="content">

<a href="page.php?id=17" class="info">Despre Noi</a>

<a href="page.php?id=22" class="info">Cum Cumpar</a>

<a href="contact.php" class="info">Contact</a>

</div></div>

</div>

Fig. 4.3.8

Lista producătorilor

În figura 4.3.9 este prezentat codul PHP care interoghează baza de date cu privire la prducătorii care au produse în magazinul virtual. Pe baza unei interogări SQL sunt iterate toate produsele și sunt colectate numele producătorilor acestora fără a avea repetiții.

<div class="rightBox">

<div class="header prodHeader"><h1>Producatori</h1></div>

<div class="container"><div class="content">

<? $Q = mysql_query("SELECT DISTINCT(LCASE(`brand`)) as `the_brand` FROM `products` ORDER BY `brand`") or die(mysql_error());

while($R = mysql_fetch_array($Q)){

echo '

<a class="info" href="products.php?b='.$R['the_brand'].'">'.uc_words(stripslashes($R['the_brand'])).'

</a><br />';

}

?>

</div></div>

<div class="footer"><!–-></div>

</div>

Fig. 4.3.9

În figura 4.3.10 se poate vedea cum este generată lista producătorilor strict legată de produsele din magazin. Evident dacă se dorește se poate urmări un link și se pot afișa doar produsele fabricate de un anumit producător.

Fig. 4.3.10

Modulul html_categories.php

Are ca rol principal listarea arborescentă a categoriilor și subcategoriilor. Categoria activă va fi evidențiată prin setarea unui alt tip de background. Se vor lista categoriile și pentru fiecare categorie în parte se listează maxim 3 subcategorii. Dacă cumva a fost selectată una din categorii atunci subcategoriile acesteia vor fi listate în totalitate.

Fig. 4.3.11

În figura 4.3.11 este prezentat rezultatul execuției acestui modul în regim de listare a maxim 3 subcategorii pentru fiecare categorie existentă în baza de date.

Modulul contact.php

În figura 4.3.12 se poate vedea vizualizarea rezultată în urma execuției modului de contact. Formularul are rolul de a prelua de la orice vizitator al site-ului înregistrat sau nu un mesaj și adresa de email pe care se poate formula un eventual răspuns. Rezultatul execuției modulului curent este stocat în variabila de sesiune "message" ce va putea fi folosită ulterior.

După apăsarea butonului de confirmare se execută modulul message.php ce este prezentat în continuare.

Fig. 4.3.12

Modulul message.php

Acest modul afișează mesajul produs de execuția modulului contact.php. De regulă este un mesaj în care se specifică faptul că textul introdus de utilizator a fost preluat de sistem.

<?

include "includes.php";

session_start();

$css = "page.css";

include "html_header.php";

echo '<div class="bigBox">';

echo '<h1>GaRoTech</h1>';

echo '<p>'.$_SESSION['message'].'</p>';

echo '<p>&nbsp;</p>';

echo '</div>';

include "html_footer.php";

?>

Modulul admin_specsSelect.php

În acest modul sunt executate două interogări imbricate pentru a lista categoriile și subcategoriile acestora în vederea editării specificațiilor. Reamintim că specificațiile reprezintă metamodelul unui produs corespunzător unei categorii sau subcategorii. Spre exemplu un harddisk pentru un sistem desktop prezintă următoarele caracteristici:

interfață SATA sau IDE;

capacitate (exprimată in GB);

dimensiune buffer (8, 26, 32 MB);

viteză de rotație (rpm);

dimensiune;

greutate.

Aceste caracteristici sunt stocate și ele în baza de date și pot fi oricând modificate. Astfel că dacă se dorește se poate adăuga sau șterge o specificație.

echo '<div class="bigBox"><h1>Specificatii – Alegeti categoria / subcategoria</h1>';

# GET CATEGORII

$Q = mysql_query("SELECT * FROM `categories`") or die(mysql_error());

while($R = mysql_fetch_array($Q)){

echo '<div class="category">';

echo '<div class="categName"><a href="admin_specs.php?type=c&id='.$R['id'].'">'.$R['category'].'</a></div>';

echo '</div>';

$Q1 = mysql_query("SELECT * FROM `subcategories` WHERE `category_id`='".$R['id']."'") or die(mysql_error());

while($R1 = mysql_fetch_array($Q1)){

echo '<div class="subcategory">';

echo '<div class="categName"><a href="admin_specs.php?type=s&id='.$R1['id'].'">'.$R1['subcategory'].'</a></div>';

echo '</div>';

}

}

Fig. 4.3.13

În figura 4.3.13 este prezentat codul care afișează categoriile împreună cu subcategoriile acestora și permite administrarea specificațiilor corespunzătoare lor.

Modulul admin_specs.php

În acest modul sunt listate toate specificațiile, adică metainformațiile unei categorii sau subcategorii. După cum se poate observa și în figura 4.3.14 se pot adaugă sau șterge specificații. Se poate seta ordinea lor prin intermediul numărului de ordine atașat. Totodată mai specificăm ca nu toate specificațiile au asociată o valoare. Unele au rolul de eticheta pentru a putea grupa mai multe specificații într-o secvență unitară. Se mai poate decide dacă o specificație să fie afișată sau nu pe prima pagină în contextul în care în prezentarea superofertelor suntem interesați doar de afișarea unor specificații considerate mai interesante din punct de vedere comercial si nu a tuturor.

Fig. 4.3.14

Modulul admin_specEdit.php

În acest modul php se poate modifica numele unei specificații și vizibilitatea acesteia pe prima pagină (figura 4.3.15).

Fig. 4.3.15

Modulul admin_categories.php

Este un modul ce permite editarea categoriilor și a subcategoriilor. În figura 4.3.16 se pot vedea primele categorii și subcategorii listate. Ele pot fi selectate pentru o eventuală ștergere. Totodată fiecare este prevăzută cu un număr de ordine ce va fi utilizat la vizualizarea ordonată a acestora ori de către ori este nevoie de ele.

Fig. 4.3.16

În figura 4.3.17 se pot vedea butoanele necesare pentru ștergere respectiv modificarea ordinii și a link-urilor de adăugare a unei categorii și subcategorii.

Fig. 4.3.17

Modulul admin_filtersSelect.php

Acest modul PHP are rolul de a lista categoriile pentru care ulterior se pot edita filtrele de vizualizare. Reamintim că prin filtru se înțelege un set de constrângeri valorice impuse asupra specificațiilor produselor pentru a focaliza căutarea pe o anume direcție. Spre exemplu în figura 4.3.18 avem un filtru setat pentru bufferul harddisk-urilor desktop. Astfel se poate opta pentru filtrarea harddisk-urilor cu o anumită dimensiune pentru buffer fie 8 MB, 2 MB sau 16 MB.

Fig. 4.3.18

Modulul admin_filters.php

În acest modul ne putem defini care să fie valorile pentru care să se poată face filtrarea. Se poate observa că ordinea valorilor de filtrare poate fi schimbată și respectiv adăugate și șterse filtre pentru orice specificație din setul atașat fiecărei categorii sau subcategorii.

Fig. 4.3.19

4.4 Instalare

Pentru partea de instalare se copiază fișierele php în directorul dedicat al serverului Apache, de regulă folosind un client FTP. Pentru inițializarea bazei de date se folosește un script de creare a tabelelor și de inițializare a liniilor acestora. Pe serverul Apache se recomandă instalarea distribuției de apache XAMPP, disponibilă gratuit, ce instalează automat MySQL, PHP și Perl.

Concluzii

În această lucrare am dezvoltat un magazin virtual bazat pe limbajul PHP și serverul de baze de date MySQL. Produsele ce sunt vândute în acest magazin sunt împărțite pe categorii și subcategorii. Orice categorie și subcategorie are un set de caracteristici comune și un set de caracteristici specifice.

Pe partea de client se pot vizualiza produsele cu toate caracteristicile lor. Ele se pot filtra după valori specifice ale caracteristicilor. Produsele se pot vizualiza și după producătorul acestora. Produsele se pot selecta și introduce în coșul virtual de cumpărături.

Pe partea de administrare este concentrată cea mai mare parte a funcționalității acestui site. Se poate gestiona produsele, categoriile acestora, specificațiile lor, filtrele folosite la vizualizare. Pentru un produs se poate gestiona setul de caracteristici comune, setul de caracteristici specifice și imaginile produselor. O atenție deosebită s-a acordat editării textului din secțiunile „Despre noi”, „Cum cumpăr” , „Termene si condiții”, „Informații de contact”. Pentru editarea textului s-au folosit funcții din biblioteca JavaScript „wysiwyg” ce permite editarea și formatarea unui text ce apoi să fie stocat în baza de date.

Dezvoltând acest produs în tehnologia PHP se păstrează o complexitate relativ redusă a design-ului față de alte tehnologii de exemplu Java. Scriptul se execută rapid pe server oferind pagini la o viteză destul de mare. De asemenea serverul nu necesită configurații hardware deosebite. Într-o formulă low cost se poate utiliza un simplu calculator personal echipat cu Linux și configurat cu un server Apache. Un exemplu de sistem de operare recomandat este Ubuntu Linux LTS (LongTerm Support).

Majoritatea site-urilor de hosting oferă support pentru PHP si MySQL chiar și gratuit pe când pentru tehnologia Java numărul providerilor este mai redus. În schimb dacă logica de business crește în complexitate s-ar putea ca scriptul să nu mai poată fi extins în manieră facilă și atunci sistemul se pretează a fi rescris folosind tehnologia obiectuală, layere de persistență și pagini dinamice aferente JSP sau ASPX.

Bibliografie

[Ang06] Anghel Traian. Programarea în PHP: Ghid practic. Cuvânt înainte de Sabin Buraga. Editura Polirom, Iași, 2005-2006.

[Bur03] Buraga Sabin; Ginghină Ciprian; Manolache Bogdan. Aplicații Web la cheie : Studii de caz implementate în PHP. Editura Polirom, Iași, 2003.

[Dar06] Darie Cristian; Bucică Mihai. PHP 5 și MySQL pentru comerț electronic : Ghid practic

pentru construirea unui magazin virtual. Traducere de Cora Radulian și Radu Biriș. Editura Teora, București, 2006. XXV, 598 p. Titlul original în lb. eng.: Beginning PHP 5 and MySQL E-Commerce: From Novice to Professional.

[Ghe03] Marin Gheorghe; Cață Marian; Atodiresei Anca. Limbajele MySQL și PHP: Programare Web sub Windows. Tribuna Economică, București, 2002.

[Hol05] Holzner Steven. Inițiere în PHP 5. Traducere de Florin Moraru. Editura Teora, București, 352 p, 2005, Titlul original în lb. engleză: Spring into PHP 5.

[Iva10] Valentin Ivascu, Initiere in PHP si MySQL website, http://www.oriceon.com

[Jal10] Mihai Jalobeanu Curs de PHP șși MySQL,

http://www.itim-cj.ro/~jalobean/Cursuri/phpmysql/index.html

[McC02] Bill McCarty. PHP 4. Traducere de Mihai Mănăstireanu. București : Teora, 2002. 448 p. Titlul original: PHP 4 a Beginner's Guide.

[Mel05] Meloni Julie C. Învață singur PHP, MySQL și Apache : Toate într-o singură carte. Andrei Georgescu, Dan-Andrei Dimitriu, Oana Păun. București : Corint, 2005. 610 p. Titlul original în lb. eng.: Sams Teach Yourself PHP, MySQL and Apache All in One.

[Tud03] Sorin Tudor; Huțanu Vlad. Crearea și programarea paginilor Web : HTML + CSS +JavaScript + Photoshop + PHP. București : L & S Soft, 2003. 312 p. Bibliogr. p.304.

[Ull06] Ullman Larry. PHP și MySQL : Pentru site-uri Web dinamice. Traducere de Cristian Mocanu și Florin Moraru. București : Teora, cop. 2006. XX, 572 p.Titlul original în lb. eng.: PHP and MySQL for Dynamic Web Sites.

[Wel03] Welling Luke; Thomson Laura. Dezvoltarea aplicațiilor Web cu PHP și MySQL. Traducere de Ionică Bledea. București : Teora, 2003, cop. 2004. XL, 816 p. Titlul orig. în lb. eng.: PHP and MySQL Web development.

[***10, a] XAMPP website, http://www.apachefriends.org/en/xampp.html , 2010

[***10, b] PHP website, http://ro.php.net/, 2010.

[***10, c] Wikipedia website, http://ro.wikipedia.org/wiki/Php, 2010.

[***10, d] MySQL website, http://www.mysql.com, 2010.

[***10, e] Wikipedia website, http://ro.wikipedia.org/wiki/MySQL, 2010.

[***10, f] Comunitatea PhpRomania website, http://www.phpromania.net, 2010.

[***10, g] Jurnalul Național website,

http://www.jurnalul.ro/stire-it/romania-fata-cu-internetul-516853.html

[***10, h] Cursuri online website, http://www.ecursuri.ro/cursuri/html-introducere.php

[***10, i] Tutoriale website,

http://www.tutoriale.far-php.ro/index.php?p=scrierea-instructiunilor-while-si-do-while&language=ro

Bibliografie

[Ang06] Anghel Traian. Programarea în PHP: Ghid practic. Cuvânt înainte de Sabin Buraga. Editura Polirom, Iași, 2005-2006.

[Bur03] Buraga Sabin; Ginghină Ciprian; Manolache Bogdan. Aplicații Web la cheie : Studii de caz implementate în PHP. Editura Polirom, Iași, 2003.

[Dar06] Darie Cristian; Bucică Mihai. PHP 5 și MySQL pentru comerț electronic : Ghid practic

pentru construirea unui magazin virtual. Traducere de Cora Radulian și Radu Biriș. Editura Teora, București, 2006. XXV, 598 p. Titlul original în lb. eng.: Beginning PHP 5 and MySQL E-Commerce: From Novice to Professional.

[Ghe03] Marin Gheorghe; Cață Marian; Atodiresei Anca. Limbajele MySQL și PHP: Programare Web sub Windows. Tribuna Economică, București, 2002.

[Hol05] Holzner Steven. Inițiere în PHP 5. Traducere de Florin Moraru. Editura Teora, București, 352 p, 2005, Titlul original în lb. engleză: Spring into PHP 5.

[Iva10] Valentin Ivascu, Initiere in PHP si MySQL website, http://www.oriceon.com

[Jal10] Mihai Jalobeanu Curs de PHP șși MySQL,

http://www.itim-cj.ro/~jalobean/Cursuri/phpmysql/index.html

[McC02] Bill McCarty. PHP 4. Traducere de Mihai Mănăstireanu. București : Teora, 2002. 448 p. Titlul original: PHP 4 a Beginner's Guide.

[Mel05] Meloni Julie C. Învață singur PHP, MySQL și Apache : Toate într-o singură carte. Andrei Georgescu, Dan-Andrei Dimitriu, Oana Păun. București : Corint, 2005. 610 p. Titlul original în lb. eng.: Sams Teach Yourself PHP, MySQL and Apache All in One.

[Tud03] Sorin Tudor; Huțanu Vlad. Crearea și programarea paginilor Web : HTML + CSS +JavaScript + Photoshop + PHP. București : L & S Soft, 2003. 312 p. Bibliogr. p.304.

[Ull06] Ullman Larry. PHP și MySQL : Pentru site-uri Web dinamice. Traducere de Cristian Mocanu și Florin Moraru. București : Teora, cop. 2006. XX, 572 p.Titlul original în lb. eng.: PHP and MySQL for Dynamic Web Sites.

[Wel03] Welling Luke; Thomson Laura. Dezvoltarea aplicațiilor Web cu PHP și MySQL. Traducere de Ionică Bledea. București : Teora, 2003, cop. 2004. XL, 816 p. Titlul orig. în lb. eng.: PHP and MySQL Web development.

[***10, a] XAMPP website, http://www.apachefriends.org/en/xampp.html , 2010

[***10, b] PHP website, http://ro.php.net/, 2010.

[***10, c] Wikipedia website, http://ro.wikipedia.org/wiki/Php, 2010.

[***10, d] MySQL website, http://www.mysql.com, 2010.

[***10, e] Wikipedia website, http://ro.wikipedia.org/wiki/MySQL, 2010.

[***10, f] Comunitatea PhpRomania website, http://www.phpromania.net, 2010.

[***10, g] Jurnalul Național website,

http://www.jurnalul.ro/stire-it/romania-fata-cu-internetul-516853.html

[***10, h] Cursuri online website, http://www.ecursuri.ro/cursuri/html-introducere.php

[***10, i] Tutoriale website,

http://www.tutoriale.far-php.ro/index.php?p=scrierea-instructiunilor-while-si-do-while&language=ro

Similar Posts