Magazin Online de Componente Pentru Calculatoare
CUPRINS
Cuprins ……………………………………………………………………………………………………………………….2
1. Introducere ………………………………………………………………………………………………………………4
2. Internetul………………………………………………………………………………………………………………….5
2.1 Ce este Internetul ? ………………………………………………………………………………………………5
2.2 Cine plătește pentru serviciile Internet ? ………………………………………………………………5
2.3 Cum funcționează Internetul ?……………………………………………………………………………..6
2.4 De unde vine prescurtarea www ?…………………………………………………………………………6
2.5 Cum funcționează www ?……………………………………………………………………………………..7
3. Limbaje de programare utilizate……………………………………………………………………………….9
3.1. HTML………………………………………………………………………………………………………………..9
3.1.1. Ce înseamnă HTML ?……………………………………………………………………………………9
3.1.2. Crearea unei pagini web simple……………………………………………………………………..9
3.1.2.2 Pași în crearea unei pagini web …………………………………………………………………9
3.1.2.3 Componentele principale ale unei pagini web……………………………………………..9
3.2. PHP………………………………………………………………………………………………………………….11
3.2.1. Ce înseamnă PHP ?……………………………………………………………………………………..11
3.3. MySQL…………………………………………………………………………………………………………….13
3.3.1. Ce este MySQL ?…………………………………………………………………………………………13
3.3.2.Noțiuni de bază…………………………………………………………………………………………… 14
3.3.3. Câmpuri……………………………………………………………………………………………………..16
3.3.4. Crearea unei tabele cu PHP…………………………………………………………………………16
3.3.5. Principiul de funcționare PHP-MySQL………………………………………………………..16
3.4. CSS…………………………………………………………………………………………………………………..17
3.4.1. Ce este CSS ?……………………………………………………………………………………………….17
3.4.2. La ce ajută folosirea CSS-ului ?…………………………………………………………………….17
3.5. Smarty template engine……………………………………………………………………………………..18
3.6. Javascript………………………………………………………………………………………………………….18
3.6.1. JavaScript creat de compania Netscape……………………………………………………………19
3.6.2. JScript creat de compania Microsoft…………………………………………………………..19
3.6.3. Ce puteti face cu JavaScript…………………………………………………………………………….20
3.7. Alte technici și metode folosite în crearea unei pagini web…………………………………..21
3.7.1. XML…………………………………………………………………………………………………………….21
3.7.2. AJAX……………………………………………………………………………………………………………21
3.7.3. RSS………………………………………………………………………………………………………………22
3.8. Instrumente de construcție…………………………………………………………………………………23
4 Prezentarea lucrării……………………………………………………………………………………………………24
4.1. Structura…………………………………………………………………………………………………………..24
4.2. Prezentarea site-ului in mod utilizator……………………………………………………………….24
4.3. Coduri folosite…………………………………………………………………………………………………..30
4.4. Prezentarea site-ului in mod administrator………………………………………………………..47
4.5. Coduri folosite…………………………………………………………………………………………………..49
4.6. Structura bazelor de date………………………………………………………………………………….51
5. Concluzii………………………………………………………………………………………………………………..57
6. Bibliografie…………………………………………………………………………………………………………….58
INTRODUCERE
În ultimii ani programarea a suferit o schimbare de paradigmă de la un peisaj dominat de sisteme izolate la un mediu on-line, în care sistemele sunt conectate în retea. În epoca în care pentru foarte mulți “rețeaua este calculatorul” , limbajele de programare, sistemele de operare și instrumentele de dezvoltare s-au străduit să țină pasul. Astfel programarea web a început să câștige teren, punându-se mare accent pe acest segment din development și pe calitatea aplicațiilor aferente. Aplicațiile web(site-uri) sunt la ora actuală instrumente nelipsite din toate domeniile, acestea reprezentând un mijloc eficient si facil de relaționare pentru satisfacerea diverselor nevoi între parțile implicate.
Lucrarea de față „PCcomponents” are ca scop realizarea unui site web, și mai exact al unui magazin online de componente pentru calculatoare.
În ceea ce privește realizarea acestui site, am folosit tehnologii sau limbaje de programare precum: PHP, HTML, MySQL, CSS, Javascript, Smarty template engine.
Site-ul este organizat sub forma a două moduri și anume:
Utilizator, la care are acces doar vizitatorul site-ului, care poate să caute produse și să navigheze
Administrator, aici are acces doar cel care se ocupă de administrarea site-ului. Pentru a intra în această pagină este nevoie de username și de parolă. Acesta poate adăuga noi produse.
INTERNETUL
2.1. Ce este Internetul ?
Termenul Internet sau internet, poate avea in ziua de astăzi mai multe sensuri, strâns înrudite, dar utilizate în contexte diferite:
numele propriu Internet (cu majusculă) se referă la rețeaua mondială unică de computere interconectate prin protocolul IP (Internet Protocol). Precursorul Internetului datează din 1965, când Defence Advanced Research Projects Agency (en:DARPA) (Agenția pentru Proiecte de Cercetare de Apărare Înaintate – a Ministerului Apărării, Department of Defense sau DoD din SUA) a creat prima rețea de computere interconectate sub numele Arpanet. Super-rețeaua din zilele noastre a rezultat din extinderea rețelei Arpanet.
substantivul comun internet (cu minusculă) desemnează in marea majoritate a cazurilor acceași rețea, însă văzută ca un mediu de comunicare în masă, împreună cu informația și serviciile care sunt oferite utilizatorilor prin intermediul acestei rețele.
Tehnic, termenul mai poate desemna și o rețea de mari dimensiuni ce interconectează rețele autonome. Acest sens corespunde etimologiei engleze a cuvântului internet, care e format prin abrevierea a două cuvinte interconnected – interconectat și network – rețea. Exemple de rețele mare care merita folosința aceasta sunt SIPRNet si FidoNet.
În ziua de astăzi, Internetul este susținut și întreținut de o mulțime de firme comerciale. Se bazează pe specificații tehnice foarte detaliate, ca de exemplu așa-numitele "protocoale de comunicație", care descriu toate regulile de transmitere a datelor în rețea.
Protocoalele fundamentale Internet, care asigură interoperabilitatea între orice două calculatoare, sunt IP, TCP, UDP.
Aceste trei protocoale reprezintă însă doar o parte din nivelul de bază al sistemului de protocoale Internet, care mai include și protocoale de control si aplicative, cum ar fi: DNS, PPP, SLIP, ICMP, POP3, IMAP, SMTP, HTTP, HTTPS, SSH, Telnet, FTP, LDAP, SSL, WAP și SIP.
2.2. Cine plătește pentru serviciile Internet?
Contrar așteptărilor, nimeni nu "plătește" pentru Internet în ansamblul său; nu există nici o firma Internet Inc. care să colecteze plățile de la toate rețelele Internet sau de la utilizatori. În schimb, toată lumea plătește pentru propria sa conexiune. NSF plătește pentru NSFNET, NASA plătește pentru NASA Science Internet. Un colegiu sau o corporație plătește pentru conectarea sa la o rețea regională, care la rândul ei plătește un furnizor național pentru accesul său la o rețea internațională.
2.3. Cum funcționează Internet-ul ?
Înainte de a putea înțelege pe deplin cum să vă orientați în Internet, trebuie să înțelegeți modul de adresare. Tot ceea ce faceți în Internet implică utilizarea unei adrese.
Adresa unui calculator îl identifică în mod unic în Internet și este o succesiune de 4 numere naturale mai mici decit 255, separate prin ".". De exemplu: 193.226.30.1, 193.226.26.30, etc. De mentțonat este faptul că cele mai semnificative sunt numerele din partea stângă. Dezavantajul memorării și folosirii acestor numere de către utilizatori este evident. De aceea s-a recurs la o metodă de asignare a unui nume fiecărui calculator din Internet. Restricția de bază este aceea că nu trebuie să existe în Internet două calculatoare cu același nume (adresă de IP).
Numele sunt folosite doar pentru a ușura utilizarea Internet-ului, calculatoarele "preferând" să lucreze cu adrese în format numeric. Numele calculatoarelor sunt stocate în baze de date distribuite și organizate ierarhic. Sistemul de transformare a unui nume în adresă IP și invers se numește DNS (Domain Name Service). Există doar 7 domenii organizaționale diferite după cum se vede în Tabelul 1.
Tabelul 1.
Domeniu Utilizare
.com entități comerciale
.edu Organizații educaționale
.gov Instituții guvernamentale nemilitare
.mil Organizații militare
.org alte organizații
.net resurse pentru rețea
.int Instituții internaționale (NATO)
În afară de domenii organizaționale există domenii geografice. Dacă domeniul este în afara Statelor Unite, el include un cod care arată țara căreia îi aparține. Fiecare țară are câte un cod, astfel încât privind la numele unui calculator putem afla unde anume se află.
2.4. De unde vine prescurtarea WWW ?
World Wide Web, prescurtat WWW sau chiar numai Web, este doar una dintre numeroasele aplicații de Internet, multimedială și integrativă, cu o interfață de utilizator (GUI) foarte atrăgătoare din punct de vedere grafic, practică și simplu de folosit, inventată de Tim Berners-Lee în 1993.
Ca termeni înrudiți se folosesc:
intranet: o rețea particulară cu aceleași principii de funcționare ca și Internetul, dar cu acces restrâns – de exemplu intranetul sau intraneturile unei firme particulorul” , limbajele de programare, sistemele de operare și instrumentele de dezvoltare s-au străduit să țină pasul. Astfel programarea web a început să câștige teren, punându-se mare accent pe acest segment din development și pe calitatea aplicațiilor aferente. Aplicațiile web(site-uri) sunt la ora actuală instrumente nelipsite din toate domeniile, acestea reprezentând un mijloc eficient si facil de relaționare pentru satisfacerea diverselor nevoi între parțile implicate.
Lucrarea de față „PCcomponents” are ca scop realizarea unui site web, și mai exact al unui magazin online de componente pentru calculatoare.
În ceea ce privește realizarea acestui site, am folosit tehnologii sau limbaje de programare precum: PHP, HTML, MySQL, CSS, Javascript, Smarty template engine.
Site-ul este organizat sub forma a două moduri și anume:
Utilizator, la care are acces doar vizitatorul site-ului, care poate să caute produse și să navigheze
Administrator, aici are acces doar cel care se ocupă de administrarea site-ului. Pentru a intra în această pagină este nevoie de username și de parolă. Acesta poate adăuga noi produse.
INTERNETUL
2.1. Ce este Internetul ?
Termenul Internet sau internet, poate avea in ziua de astăzi mai multe sensuri, strâns înrudite, dar utilizate în contexte diferite:
numele propriu Internet (cu majusculă) se referă la rețeaua mondială unică de computere interconectate prin protocolul IP (Internet Protocol). Precursorul Internetului datează din 1965, când Defence Advanced Research Projects Agency (en:DARPA) (Agenția pentru Proiecte de Cercetare de Apărare Înaintate – a Ministerului Apărării, Department of Defense sau DoD din SUA) a creat prima rețea de computere interconectate sub numele Arpanet. Super-rețeaua din zilele noastre a rezultat din extinderea rețelei Arpanet.
substantivul comun internet (cu minusculă) desemnează in marea majoritate a cazurilor acceași rețea, însă văzută ca un mediu de comunicare în masă, împreună cu informația și serviciile care sunt oferite utilizatorilor prin intermediul acestei rețele.
Tehnic, termenul mai poate desemna și o rețea de mari dimensiuni ce interconectează rețele autonome. Acest sens corespunde etimologiei engleze a cuvântului internet, care e format prin abrevierea a două cuvinte interconnected – interconectat și network – rețea. Exemple de rețele mare care merita folosința aceasta sunt SIPRNet si FidoNet.
În ziua de astăzi, Internetul este susținut și întreținut de o mulțime de firme comerciale. Se bazează pe specificații tehnice foarte detaliate, ca de exemplu așa-numitele "protocoale de comunicație", care descriu toate regulile de transmitere a datelor în rețea.
Protocoalele fundamentale Internet, care asigură interoperabilitatea între orice două calculatoare, sunt IP, TCP, UDP.
Aceste trei protocoale reprezintă însă doar o parte din nivelul de bază al sistemului de protocoale Internet, care mai include și protocoale de control si aplicative, cum ar fi: DNS, PPP, SLIP, ICMP, POP3, IMAP, SMTP, HTTP, HTTPS, SSH, Telnet, FTP, LDAP, SSL, WAP și SIP.
2.2. Cine plătește pentru serviciile Internet?
Contrar așteptărilor, nimeni nu "plătește" pentru Internet în ansamblul său; nu există nici o firma Internet Inc. care să colecteze plățile de la toate rețelele Internet sau de la utilizatori. În schimb, toată lumea plătește pentru propria sa conexiune. NSF plătește pentru NSFNET, NASA plătește pentru NASA Science Internet. Un colegiu sau o corporație plătește pentru conectarea sa la o rețea regională, care la rândul ei plătește un furnizor național pentru accesul său la o rețea internațională.
2.3. Cum funcționează Internet-ul ?
Înainte de a putea înțelege pe deplin cum să vă orientați în Internet, trebuie să înțelegeți modul de adresare. Tot ceea ce faceți în Internet implică utilizarea unei adrese.
Adresa unui calculator îl identifică în mod unic în Internet și este o succesiune de 4 numere naturale mai mici decit 255, separate prin ".". De exemplu: 193.226.30.1, 193.226.26.30, etc. De mentțonat este faptul că cele mai semnificative sunt numerele din partea stângă. Dezavantajul memorării și folosirii acestor numere de către utilizatori este evident. De aceea s-a recurs la o metodă de asignare a unui nume fiecărui calculator din Internet. Restricția de bază este aceea că nu trebuie să existe în Internet două calculatoare cu același nume (adresă de IP).
Numele sunt folosite doar pentru a ușura utilizarea Internet-ului, calculatoarele "preferând" să lucreze cu adrese în format numeric. Numele calculatoarelor sunt stocate în baze de date distribuite și organizate ierarhic. Sistemul de transformare a unui nume în adresă IP și invers se numește DNS (Domain Name Service). Există doar 7 domenii organizaționale diferite după cum se vede în Tabelul 1.
Tabelul 1.
Domeniu Utilizare
.com entități comerciale
.edu Organizații educaționale
.gov Instituții guvernamentale nemilitare
.mil Organizații militare
.org alte organizații
.net resurse pentru rețea
.int Instituții internaționale (NATO)
În afară de domenii organizaționale există domenii geografice. Dacă domeniul este în afara Statelor Unite, el include un cod care arată țara căreia îi aparține. Fiecare țară are câte un cod, astfel încât privind la numele unui calculator putem afla unde anume se află.
2.4. De unde vine prescurtarea WWW ?
World Wide Web, prescurtat WWW sau chiar numai Web, este doar una dintre numeroasele aplicații de Internet, multimedială și integrativă, cu o interfață de utilizator (GUI) foarte atrăgătoare din punct de vedere grafic, practică și simplu de folosit, inventată de Tim Berners-Lee în 1993.
Ca termeni înrudiți se folosesc:
intranet: o rețea particulară cu aceleași principii de funcționare ca și Internetul, dar cu acces restrâns – de exemplu intranetul sau intraneturile unei firme particulare.
extranet: un intranet particular al unei firme, la care însă au acces (parțial) și anumite persoane sau grupe externe, din alte firme, ca de exemplu de la firme furnizoare sau firme-cliente.
Din cauza multelor fuziuni dintre companiile de telefonie și ISP au apărut o serie de probleme în sensul că nu erau clar delimitate sarcinile fiecăruia. Să presupunem că un client sună la ISP printr-o linie telefonică. Modem-ul este o placă din calculatorul clientului care convertește semnale digitale în semnale analogice, care pot circula în rețeaua telefonică. Aceste semnale sunt transferate la punctul de livrare (POP) al ISP-ului unde sunt preluate din sistemul telefonic și transferate în rețeaua regională a ISP-ului. Din acest punct sistemul este în întregime digital și folosește comutare de pachete. Rețeaua regională a ISP -ului este formată prin interconectarea routere-lor din diverse orașe pe care le deservește compania. Dacă pachetul este destinat unei gazde deservite direct de către rețeaua ISP, pachetul va fi livrat direct gazdei. Altfel, el este livrat în continuare operatorului care furnizează companiei ISP servicii de comunicare prin backbone-ul rețelei. În partea superioară a acestei ierarhii se găsesc operatorii principali de la nivelul backbone-ului rețelei, companii cum ar fi AT&T sau SPRINT. Aceștia operează backbone-uri mari cu mii de routere conectate prin fibră optică cu bandă largă de transfer. Corporațiile și firmele de hosting utilizează ferme de servere (mașini care pot servi mii de pagini web pe secundă) conectate direct la backbone. Operatorii încurajază această conectare directă prin închirierea de spații în ceea ce se numește “carrier hotel”, care reprezintă, de cele mai multe ori rack-uri pentru echipamente aflate în aceeași cameră cu router-ul pentru a permite conexiuni scurte și rapide între fermele de servere și backbone-ul rețelei. Dacă un pachet trimis în backbone este destinat unui ISP sau unei companii deservite de aceeași coloană el este transmis celui mai apropiat router. Pentru a permite pachetelor să treacă dintr-un backbone în altul, acestea sunt conectate în NAP-uri (Network Access Point). În principiu un NAP este o cameră plină cu routere, cel puțin unul pentru fiecare backbone conectat. O rețea locală conectează toate aceste routere astfel încât pachetele să poată fi retransmise din orice coloană în orice altă coloană. În afară de conectarea în NAP-uri backbone-urile de dimensiuni mari au numeroase conexiuni directe între routerele lor, tehnică numită conectare privată (private peering). Unul dintre principalele paradoxuri ale Internet-ului este acela că ISP-urile care la nivel public se află în competiție pentru clienți, cooperează în realizarea de conectări private.
2.5 Cum funcționeaza WWW?
Cea mai importantă caracteristică WWW o constituie simplitatea modului de acces la resurse. În mare măsură, aceasta se datorează protocolului de comunicație implementat numit HTTP (HyperText Transport Protocol). O sesiune de transfer se desfășoară astfel:
-Se realizează o conexiune client-server
– Clientul lansează o cerere (request)
– Serverul furnizează clientului răspunsul la cererea formulată
– Serverul încheie conexiunea.
Prima etapă, cea de conectare, este vizibilă prin apariția în bara de stare a browser-ului a mesajului "Connecting to HTTP server". Dacă conexiunea nu se poate realiza apare mesajul de eroare "Can not connect to server", însoțit de motiv. Odată conexiunea la un server HTTP stabilită, clientul lansează cererea. Aceasta specifică tipul de protocol folosit, resursa solicitată (fișierul sau grupul de fișiere) și în ce fel trebuie să răspundă server-ul (metoda). Protocolul împreună cu resursa alcătuiesc un URL (Uniform Resource Locator). Tipul protocolului este partea cea mai importantă a unui URL. Fără acesta browser-ul nu ar ști cum să trateze resursa respectivă.
Prezentăm în continuare protocoalele URL existente:
file – Pe lângă informația accesată prin Internet browserele sunt capabile să afișeze conținutul fișierelor locale; un URL de tip file este de forma:
file://litera_discAcale/nume_fisier.extensie.
ftp – Dacă link-ul pointează către un fișier situat pe un FTP-server cu acces public (anonymous FTP server), atunci resursa trebuie specificată ca fiind de tip ftp:
( exemplu: ftp://ftp.sorosis.ro/pub/windows/www/netscape.zip)
http – Toate documentele scrise în format HTML sunt stocate pe un WWW server.
HTTP se referă la protocolul folosit de aceste servere
gopher – Browserele WWW pot "naviga" și pe servere Gopher folosind această definiție de protocol
mailto – Este un tip special de URL care permite trimiterea mesajelor prin e-mail
news – Linkurile care pointează către un newsgroup trebuie să fie declarate folosind acest protocol
telnet – Pentru a indica faptul că un link necesită deschiderea unei sesiuni telnet URL-ul trebuie să fie de tip telnet. Majoritatea browserelor nu pot deschide sesiuni telnet, dar lansează, în schimb, programe client externe atunci când se selectează un link de acest tip.
wais – Este un tip de protocol (Wide Area Information Server) care permite căutarea de informație în baze de date indexate pornite de la cuvinte descrise în limbaj natural.
Metoda semnifică comanda explicită a clientului către server. Cea mai utilizată este GET, ceea ce semnifică faptul că informația este adusă pe mașina client.
Dacă cererea este acceptată, server-ul produce răspunsul și transferă informația (acest lucru este vizibil în bara de stare a browser-ului, afișându-se progresiv informații de transfer).
Odată transferul încheiat, server-ul închide conexiunea și intră în acțiune, clientul care tratează informația primită încarcă și afișează pagina de informație primită, salvează informația într-un fișier, sau lansează o aplicație numită viewer (de exemplu dacă informația constă într-un fișier de sunet, viewer-ul asociat va fi un sound player). Întotdeauna clientul va ști să trateze un fișier de tip HTML (HyperText Markup Language – limbajul de descriere a documentelor în format hypertext).
LIMBAJE DE PROGRAMARE UTILIZATE
3.1. HTML
3.1.1. Ce înseamnă HTML ?
Reprezintă prescurtarea ce vine de la Hyper Text Markup Language (denumirea oficială a standardului). Un fișier HTML este un fișier text cu extensia ".htm" sau ".html" conținând pe lângă text pur, și instrucțiuni standard de machetare (web design). Efectul machetării este vizibil în browserele de Internet (Internet Exlorer, Netscape Navigator, Opera, etc…). Practic marcajele de tip HTML din cadrul documentului spun browser-ului cum să afișeze conținutul util al fișierului.
Orice document HTML începe cu notația <html> și se termină cu notația </html>. Astfel de perechi de marcaje sau etichete (acolo unde sunt perechi) se numesc în literatura de specialitate TAG-uri. Prin convenție, toate marcajele HTML încep cu o paranteză unghiulară deschisă "<" și se termină cu o paranteza unghiulară închisă ">". Marcajele dintre aceste paranteze transmit comenzi către browser pentru a afișa pagina într-un anumit mod. Unele blocuri prezintă delimitator de sfârșit de bloc, în timp ce pentru alte blocuri acest delimitator este opțional sau chiar interzis.
3.1.2. Crearea unei pagini web simple
3.1.2.2. Pași în crearea unei pagini web
Construirea unei pagini web impune următorii pași:
Editarea fișierului HTML cu ajutorul unui editor de texte simplu sau dedicat. Pentru început se recomandă folosirea unui editor simplu, de exemplu Notepad sau WordPad.
Salvarea fișierului în directorul anterior creat folosind extensia „.html” sau „.htm”. Este recomandabil a se folosi aceeași extensie în toate fișierele HTML. Dar, în cazul nostru. vom folosi doar extensia „.html”.
Vizualizarea paginii cu ajutorul unui browser.
3.1.2.3. Componentele principale ale unei pagini web
Orice pagina HTML este alcatuită din două blocuri principale: HEAD(cap) si BODY(corp).
Tag-ul <HTML>
Primul tag care trebuie să apară într-un fișier HTML este tag-ul <HTML>. El va încadra, alături de tag-ul său corespunzatăr de sfârșit(</HTML) întreaga pagină web.
Tag-ul <HEAD>
Acest tag va marca partea de HEAD(cap) a paginii web. Are tag corespunzător de sfărșit </HEAD>.
Tag-ul <BODY>
Cu ajutorul său încadrăm conținutul paginii web. Are tag corespunzător de sfarșit </BODY>.
Tag-ul <TITLE>
Marchează titlul unui document HTML, cel care va fi afișat în bara de titlu a browser-ului. Are tag corespunzator de sfarșit </TITLE>. Acest tag poate fi folosit numai în interiorul tag-ului <HEAD>. Dacă tag-ul <TITLE> lipsește într-o pagină HTML, atunci în bara de titlu a ferestrei browser-ului va apare numele fișierului.
Așadar, dacă vrem sa creăm o pagina web simplă, specificând numai titlul și un mic text drept conținut vom crea următorul fișier HTML:
Exemplul 2.1: O pagina HTML simpla
In directorul „HTML” vom crea un subdirector „lecția2”. Se va edita un fișier având conținutul prezentat mai jos și se va salva în noul subdirector cu numele „exemplul1.html”. Se va încărca acest fișier în browser; pentru aceasta există doua posibilități: fie se va executa dublu-click pe fișier-ul HTML și acesta se va încărca automat în browser-ul implicit(default), fie se va deschide un browser si se va alege din meniul File->Open fișier-ul dorit.
Observații:
Tag-urile HTML pot conțne "în interiorul" lor alte tag-uri HTML. Se poate observa cum tag-ul <HTML> include tag-urile <HEAD> și <BODY>, iar tag-ul <HEAD> include tag-ul <TITLE>.
Nu contează modul lor de aranjare în fișierul HTML. Se poate ca un tag să înceapă pe un rând și se poate pune tag-ul său corespunzator pe alt rând, etc. Totuși, este bine a se păstra o anumită ordine mai ales atunci când se scriu fișierele HTML "de mână" adică nu cu un editor specializat.
Majoritatea browser-elor, mai ales cele "mai noi", au "învățat" să corecteze, să treacă peste anumite erori ale paginilor HTML. Astfel, cele mai noi versiuni ale browser-elor nu se vor "supăra" daca tag-ul <HTML> lipsește, s.a. m.d. Totuși, pentru a avea garanția că o pagina web creată de dvs. este vizualizată corect și de cei care posedă un browser mai vechi, este bine ca fișierele HTML să fie scrise "ca la carte".
Recapitulare
O pagină web are două parți principale: HEAD(cap) și BODY(corp).
Pentru a marca blocuri de informație dintr-o pagină web folosim tag-uri.
3.2. PHP
3.2.1. Ce înseamnă PHP ?
Reprezintă un limbaj de programare destinat în primul rând Internetului, aducând dinamică unei pagini de web. Este unul din cele mai importante limbaje de programare web open-source și server-side. Numele PHP provine din limba engleză și este un acronim recursiv : Php: Hypertext Preprocessor. Exemple faimoase de utilizare a acestui limbaj sunt PhpBB (forum), PhpNuke(CMS), chiar și MediaWiki, software-ul din spatele Wikipedia. Folosirea PHP poate fi văzută ca o alternativă gratuită la utilizarea unor limbaje comerciale cum sunt ASP de la Microsoft, ColdFusion de la Macromedia, sau chiar JSP de la Sun Microsystems.
PHP-ul este unul din cele mai folosite limbaje de programare server-side, conform unui studiu efectuat de Netcraft în aprilie 2002, apărând pe 9 din cele 37 milioane de domenii cercetate în studiu. De asemenea, există un grafic al creșterii folosirii PHP-ului pe site-ul oficial. Popularitatea de care se bucură acest limbaj de programare se datorează următoarelor caracteristici :
Familiaritatea: sintaxa limbajului este foarte ușoară combinând sintaxele unora din cele mai populare limbaje Perl sau C
Simplitatea: sintaxa limbajului este destul de liberă. Nu este nevoie de includere de biblioteci sau de directive de compilare, codul PHP inclus într-un document executându-se între marcajele speciale
Eficiența: PHP-ul se folosește de mecanisme de alocare a resurselor, foarte necesare unui mediu multiuser, 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, etc
Gratuitatea : este probabil cea mai importantă caracteristică a PHP-ului. Dezvoltarea PHP-ului sub licența open-source a determinat adaptarea rapidă PHP-ului la nevoile Web-ului, eficientizarea și securizarea codului.
PHP este simplu de utilizat, fiind un limbaj de programare structurat, ca și C-ul, Perl-ul sau începând de la versiunea 5 chiar Java, sintaxa limbajului fiind o combinație a celor trei. Datorită modularității sale poate fi folosit și pentru a dezvolta aplicații de sine stătătorare, de exemplu în combinație cu PHP-GTK sau poate fi folosit ca Perl sau Python în linia de comandă. Probabil una din cele mai importante facilități ale limbajului este conlucrarea cu majoritatea bazelor de date relaționale, de la MySQL și până la Oracle, trecând prin MS Sql Server, PostgreSQL, sau DB2. Urmatoarele baze de date sunt suportate de catre PHP:
PHP poate rula pe majoritatea sistemelor de operare, de la UNIX, Linux, Windows, sau Mac OS X și poate interacționa cu majoritatea servereler web. Codul dumneavoastră PHP este interpretat de serverul WEB și generează un cod HTML care va fi văzut de utilizator (clientului –
PHP are un manual oficial întreținut de comunitatea din jurul proiectului. În plus, răspunsurile la multe probleme pot fi găsite printr-o simplă căutare pe internet. Există multe resurse disponibile pentru un programator PHP începător.
În exemplul de mai jos este prezentat cel mai simplu cod scris în PHP, ce afișează ca mesaj „Bună ziua!”
<?php
# comentariu pe o singură linie
// comentariu pe o singură linie
/* comentariu pe mai multe linii
se pot comenta linii de cod php
echo 'acesta este un echo comentat';
*/
echo 'Buna ziua';
?>
3.3. MySQL
3.3.1. Ce este 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 open-source la ora actuală, fiind o componentă cheie a stivei LAMP (Linux, Apache, MySQL, PHP).
Deși este folosit foarte des împreună cu limbajul de programare PHP, cu MySQL se pot construi aplicații în orice limbaj major. Există multe scheme API disponibile pentru MySQL ce permit scrierea aplicațiilor în numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum are fi: C, C++, C#, Borland Delphi, Java, Perl, PHP, Python, FreeBasic, etc., fiecare dintre acestea folosind un tip spefic 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. În sprijinul acestor limbaje de programare, unele companii produc componente de tip COM/COM+ sau .NET (pentru Windows) prin intermediul cărora respetivele limbaje să poată folosi acest SGBD mult mai ușor decât prin intermediul sistemului ODBC. Aceste componente pot fi gratuite (ca de exemplu MyVBQL) sau comerciale.
Licența GNU GPL nu permite încorporarea MySQL în softuri comerciale; cei care doresc să facă acest lucru pot achiziționa, contra cost, o licență comercială de la compania producătoare, MySQL AB.
MySQL este o componentă integrată a platformelor LAMP sau WAMP (Linux/Windows-Apache-MySQL-PHP/Perl/Python). Popularitatea sa ca aplicație web este strâns legată de cea a PHP-ului care este adesea combinat cu MySQL și denumit Duo-ul Dinamic. În multe cărți de specialitate este precizat faptul ca MySQL este mult mai ușor de invățat și folosit decât multe din aplicațiile de gestiune a bazelor de date, ca exemplu comanda de ieșire fiind una simplă și evidentă: „exit” sau „quit”.
Prima versiune a sistemului MySQL a apărut în anul 1995. Ea avea ca scop furnizarea unui back-end (în cazul unei aplicații client/server, porțiune care rulează pe server) pentru site-uri care generau în mod dinamic pagini Web. Încă de la crearea sa, MySQL a avut caracteristici ca rapiditatea, stabilitatea și simplitatea.
MySQL este utilizat împreună cu limbajele de scriptare pe partea serverului, pentru web, în special cu PHP.
3.3.2. Noțiuni de bază
Bazele de date sunt folosite pentru stocarea informatiilor in vederea furnizarii ulterioare in functie de solicitarea primita.
MySQL este un sistem de baze de date functional independent. In PHP exista functii pentru toate operatiile executate asupra bazelor de date MySQL. Administrarea MySQL se poate face din linie de comanda sau folosind browserul si accesand aplicatia numita PHPMyAdmin scrisa in PHP.
Cele mai uzuale operatii cu bazele de date sunt:
In MySQL spatiul alocat pe discul serverului este functie de tipul de date. Cateva din tipurile de date folosite in bazele de date MySQL sunt:
Pentru ca baza de date sa fuctioneze mai bine coloanelor li s-au adaugat modificatori de coloana. Tipul de date intregi incep de la valori negative la pozitive. Daca se adauga optiunea UNSIGNED, care este un modificator de coloana, nu vor mai fi valori negative ci vor incepe de la 0. Alti modificatori sunt:
AUTO_INCREMENT functioneaza cu orice tip intreg. La fiecare rand nou adaugat in baza de date numarul asociat va fi incrementat.
NULL inseamnă fără valoare (diferit de spatiu sau zero).
NOT NULL inseamnă că orice inregistrare va fi considerată ceva.
PRIMARY KEY este rolul primei coloane din tabel, totodata reprezentand elementul de referinta pentru fiecare linie.
3.3.3. Câmpuri
Există o largă varietate de câmpuri și de atribute disponibile în MySQL și vom discuta doar câteva din ele:
Acestea sunt doar câteva dintre câmpurile disponibile. O căutare pe Internet ne poate furniza lista cu toate tipurile de câmpuri permise.
3.3.4. Crearea unei Tabele cu PHP
Să creăm o tabelă din PHP este ceva mai dificil decât cu MySQL. Avem de parcurs următorii pași:
CREATE TABLE nume_tabel {
Fields
}
Câmpurile sunt definite după cum urmează:
fieldname type(length) extra info,
Ultimul câmp introdus nu poate include nici o virgulă.
3.3.5. Principiul de funcționare PHP-MySQL
Browserul web vrea să afișeze o pagina. El cere această pagina serverului web, care văzând că este o pagină de tip PHP o trimite spre prelucrare modulului de PHP instalat. Acesta interpretează codul, vede că sunt cerute date din baza de date, se conecteaza la aceasta, le obține și generează codul html pentru afișarea lor.
3.4. CSS
3.4.1. Ce este CSS ?
Prescurtarea vine de la denumirea oficiala a standardului și anume Cascading Style Sheets (CSS). Fișierele CSS au extensia ".css" definind stiluri pentru paginile HTML. Stilurile indică într-un mod mult mai riguros decat atributele HTML cum să afișeze browser-ul elementele componente ale unui document HTML (text, grafica, formulare, etc…), oferind posibilități mult superioare standardului HTML. Fișierele CSS permit stilizarea în bloc a documentelor HTML cu un efort semnificativ mai mic decat în cazul stilizării elementelor de pagină în cadrul fiecărui document HTML în parte, prin intermediul atributelor tagurilor.
3.4.2. La ce ajută folosirea CSS-ului ?
Folosind CSS, se ajunge la:
1. un control mai fin asupra paginii web
2. scăderea dimensiunii în KB a paginii web, atunci când codul CSS e conținut într-un fișier extern
3. o mai mare comoditate: modificând fișierul CSS extern, se modifică simultan toate paginile web în care acesta e inclus
4. efecte mai sofisticate decât cele produse de codul HTML: suprapunerea unei imagini peste altă imagine, a unui text peste alt text, impresia de relief, efectul hover, afișarea unor fonturi mai mari decât h1 și multe altele.
Dezavantaj: Pagina conținând cod CSS poate arăta diferit în navigatoare diferite, deoarece nu toate browserele interpretează codul CSS.
Dacă se mai adaugă și cod JavaScript, se vor obține efecte și mai sofisticate, chiar de animație. CSS + JavaScript = DHTML ( Dynamic HTML ).
3.5. Smarty template engine.
Deși Smarty este cunoscut ca și un “Template Engine”, el se poate defini mai exact ca și “Template/Presentation Framework”. Smarty îi furnizeaza programatorului și designerului o multitudine de unelte menite să asigure flexibilitatea si acuratețea aplicațiilor. Avantajul numărul unu al folosirii lui Smarty este separarea codului aplicației de partea de prezentare a sa. In acest context codul aplicatiei reprezinta partea logica a aplicației scrisă și întreținuta in cod php. Partea de prezentare este modul in care conținutul este prezentat utilizatorului(codul html,css,javascript). In template codul smarty este delimitat de { }.
Exemplu: “vrem sa afisam continutul unei variabile in browser “
Fisierul index.php
<?php
&smarty = new SmartyQ;
$sir = ‘un exemplu smarty!’;
$smarty->assign(‘sir’, $sir);
$smarty->display(‘index.tpl’);
?>
Fisierul index.tpl
<html>
<head><title>exemplu</title></head>
<body>{$sir}</body>
</html>
Vom avea urmatorul output: un exemplu smarty!
3.6. JavaScript
Limbajul JavaScript a fost inventat de o echipă de la Netscape, care dorea să facă browserul lor să interacționeze mai mult cu utilizatorul și să facă paginile mai dinamice. Deși au nume asemanătoare, limbajele JavaScript sj Java nu au nimic in comun unul cu celalalt. La inceput, când a fost introdus în browserul Netscape Navigator prima variantă de criptare rudimentară, se numea LiveScript. In aceeași perioada, Java era deja lansat și era din ce in ce mai cunoscut și se anticipa a fi un limbaj revoluționar. Ulterior, Netscape a actualizat browserul Navigator pentru a permite rularea de appleturi Java in Navigator 2, dar odata cu aceste actualizari a redenumit LiveScript in JavaScript. Java este un limbaj de programare dezvoltat si comercializat de compania Sun Microsystems. Limbajul Java este descendent al familiei de limbaje de programare C și C++, iar cu ajutorul lui se pot crea diverse aplicatii și se poate controla funcționarea diverselor aparate electronice. Principala utilizare a limbajului Java in domeniul web (client-side), in browserul utilizatorului, este crearea de appleturi, aplicații mici care sunt descarcate prin Internet si ruleaza in cadrul browserului. Datorita compatibilitații interplatformă a limbajului Java, aceste appleturi ar trebui sa ruleze identic pe orice browser care permite executarea de cod Java. Appleturile Java sunt adăugate in pagina web prin folosirea tagului HTML <applet>. Când browserul întalneste acest tag, el descarcă appletul Java de pe server, iar appletul va rula in porțiunea de ecran specificată în tag.
Un script JavaScript este un program inclus intr-o pagina HTML. Deoarece este încadrat de tagul <script>, textul scriptului nu apare pe ecran, dar este rulat si interpretat de catre browser. Tagul <script> este prezent cel mai frecvent in sectiunea <head> a paginii HTML, deși se pot pune si in secțiunea <body>. De obicei, scripturile care urmează să afișeze mesaje pe ecran sunt scrise in <body>. Când Microsoft a văzut că limbajul JavaScript devenea popular, a preferat să-și construiasca un limbaj propriu, foarte similar cu limbajul JavaScript, dar nu chiar identic, denumit JScript.
In continuare este prezentată o scurtă analiză a diferitelor versiuni de browsere și versiunea de JavaScript pe care o are fiecare.
3.6.1. JavaScript creat de compania Netscape
Prima versiune, inițial denumită LiveScript, a fost lansată odata cu browserul Netscape Navigator 2.0. Ea este cunoscută și sub denumirea de JavaScript 1.0. La Navigator 3.0, a fost introdusă versiunea 1.1, care aduce suport pentru imagini, vectori, applet-uri Java și plug-in-uri. La versiunea Navigator 4.0 (cunoscut și cu numele de Netscape Communicator), a fost introdusă JavaScript 1.2. La Netscape 4.5 – JavaScript 1.3. Versiunea JavaScript 1.4 a fost concepută să ruleze exclusiv pe servere. La Netscape 6 a fost adaugat JavaScript 1.5. Proiectul destinat creeri browserului open-source denumit Mozilla, precum si cele derivate de la acesta, cum ar fi Camino pentru Mac OS X, folosesc ECMAScript-262, editia 3, care corespunde versiunii 1.5 de JavaScript (Netscape 6 si versiunile ulterioare se bazează pe Mozilla)
Browser Versiune script
2.0 1.0
3.0 1.1
4.0-4.05 1.2
4.06-4.7 1.3
6.0, 7.0, Mozilla 1.5
3.6.2. JScript creat de compania Microsoft
Prima versiune denumită JScript 1.0, are cateva diferențe față de JavaScript 1.0 și se găsește in browserul Microsoft Internet Explorer (MSIE) 3.01. Pe Windows 95/NT la unele variante de MSIE 3.02 (nu toate) este JScript 2.0 (cred că vă
dati seama ce aiureala este, unele variante cu versiunea JScript 1.0, altele, in aceeași
versiune de MSIE cu Jscript 2.0.
Ca să aflați ce versiune de JScript aveți instalată pe calculator, cautați fișierul jscript.dll și vedeți in proprietațile lui la tabul Version (clic dreapta pe fișier – Properties – Version)
Pe Macintosh, MSIE 3.0 nu avea nici un fel de JScript, dar versiunea 3.01 are versiunea JScript 1.0, dar nu este identică cu versiunea de pe Windows (de exemplu, versiunea pentru Mac tolera obiecte de tip imagine pentru crearea de rollover la trecerea cu mouse-ul, in timp ce JScript pentru Windows nu tolera acest lucru). MSIE 4.0 are JScript 3.0 echivalent într-o oarecare măsura cu JavaScript 1.2, iar MSIE 5.0 are JScript 5.0 aproximativ echivalentul lui JavaScript 1.5. Astfel Windows 2000 avea Jscript, 5.1, Windows ME cu JScript 5.5, iar Windows XP foloseste 5.6
MSIE Versiunea JScript
3.x/1 1.0
3.x/2 2.0
4.0 3.0
5.0 5.0
5.1 5.1
5.5 5.5
6.0 5.6
3.6.3.Ce puteti face cu JavaScript
JavaScript vă permite să creați o interfață activa cu utilizatorul, să dați o impresie vizuală plăcută in timp ce navigați prin paginile site-ului. Puteți verifica validitatea informatiilor introduse intr-un formular inainte ca datele să fie trimise către server. Puteți face calcule matematice, crea pagini HTML dinamice, personalizate in functie de opțiunile utilizatorului sau al browserului. JavaScript controlează browserul, și prin intermediul scripturilor puteți deschide ferestre noi, puteți afișa mesaje de avertizare si puteți pune mesaje in bara de stare a ferestrei browserului. Puteti genera ceasuri, calendare si documente cu timpul inscris. Puteti chiar verifica prezența plug-in-urilor in browser, și puteți redirecta utilizatorul spre o pagina diferită in cazul in care browserul nu are un anumit plug-in. Aici trebuie sa fac o precizare, se pot detecta plug-in-urile in browserele Netscape Navigator 3.0 sau mai nou (pe orice sistem de operare) si in Internet Explorer 5.0 sau mai nou (doar pe platforma Macintosh). O mențiune importantă: programele care rulează pe calculatorul utilizatorului sunt numite aplicații client-side (aflate pe partea de client), si programele care rulează pe server (inclusiv CGI-urile) sunt numite aplicații server-side (aflate pe partea de server) Deoarece JavaScript rulează pe calculatorul dumneavoastră, i-au fost impuse o serie de limitări, majoritatea din rațiuni de securitate, și anume:
nu permite citirea sau scrierea de fișiere pe calculatorul utilizatorului. Singura excepție
este permisiunea de a scrie in directorul de cookie-uri al browserului, dar și aici sunt
anumite limite.
nu permite citirea/scrierea de fișiere pe server. Alternativa este să rulați pe server un
program care să preia datele trimise de script si să le scrie pe server (un CGI, scris intr-un
limbaj precum Perl sau PHP, sau un program Java.
un script JavaScript nu poate închide o fereastră de browser care nu a fost deschisă de el.
Astfel se evită situatia cand intrati pe un site și vi se inchid celelalte ferestre active care
conțin alte site-uri.
nu poate citi informații dintr-un browser care conține o pagina web de pe un alt server,
ca să nu puteți afla pe ce site-uri navighează utilizatorul.
3.7. Alte technici și metode folosite în crearea unei pagini web
XML
În 1996, World Wide Web Consortium (W3C) a început sa puna bazele unui nou standard al limbajelor de marcare, care sa simplifice modul de utilizare a SGML-ului (Standard Generalized Markup Language) dar cu o structura mai rigida decât HTML1. SGML este un standard ISO de reprezentare a documentelor.
XML a aparut ca necesitate a dezvoltarii rapide si ordonate a paginilor WEB, derivând din SGML prin înlaturarea optiunilor care nu erau absolut necesare. El a retinut doar cheile markup de descriere a unui document. Este la fel de puternic ca SGML si la fel de simplu de utilizat ca HTML.
XML este un limbaj de marcare generalizat – în sensul ca setul de tag-uri nu mai este fixat, standardizat (precum la HTML), ci este extensibil (XML = eXtensible MarkupLanguage). Adica fiecare îsi poate crea propriul set de tag-uri, adecvat necesitatilor. XML permite integrarea usoara de date de la surse multiple, reducerea traficului pe retea, actualizari detaliate si cautari mai inteligente. XML asigura independenta datelor structurate de aplicatie. XML completeaza HTML prin aceea ca ofera metode unitare pentru descrierea si schimbul datelor structurate. XML descrie date precum nume de orase, temperatura si presiunea atmosferica iar HTML defineste tag-uri prin care se descrie cum trebuie afisate datele, de exemplu lista sau tabel.
3.7.2. AJAX
Ajax (Asynchronous JavaScript and Xml), este o tehnică de programare pentru crearea de aplicații web interactive. Intenția este să facă paginile web să pară mai receptive, prin schimbul unor cantități mici de date cu serverul în fundal, astfel încât să nu fie nevoie ca pagina să fie reîncărcată la fiecare acțiune a utilizatorului. Aceasta are ca scop creșterea interactivității, vitezei și ușurinței în utilizare a aplicațiilor web.
Figura 6.2.1 – O cerere client-server utilizând AJAX
Ajax nu este o tehnologie în sine ci reprezintă un ansamblu de tehnologii:
HTML sau XHTML pentru structura semantică a informațiilor;
CSS pentru prezentarea informațiilor;
Javascript pentru interactivitate, pentru procesarea informațiilor prezentate;
Obiectul XMLHttpRequest pentru schimbul și manipularea informațiilor într-o manieră asincronă cu server-ul web;
XML este folosit de obicei pentru transferarea datelor între server și client, deși orice format funcționează, inclusiv HTML preformatat, text simplu etc.
Componenta de bază este XMLHttpRequest. Acest obiect permite realizarea de cereri HTTP (e.g., GET și POST) dintr-un program rulând la nivel de client (browser) spre o aplicație de pe server, într-un mod asincron. Nu necesită reîncărcarea paginilor Web.Uzual, datele vehiculate între programele client și server sunt marcate în XML (Extensible Markup Language)
RSS
RSS este un protocol deschis de publicare a informatiei pe Web. Un RSS (Rich Site Summary) feed este un fisier XML, care descrie continutul unui site, fiind actualizat odata cu acesta. Initial utilizat de Netcape pentru a crea pagini My Netscape, RSS a fost adoptat de serviciile de informare (news syndication services ), weblog-uri.
RSS este important pentru ca permite informarea despre actualizari ale resurselor online fara a face apel la e-mailuri sau Newslettere, implicit reducand posibilitatea de a primi spam si virusi.
Un fisier RSS include un titlul, linkul, descrierea siteului si itemii de noutate; fiecare item consta din URL-ul articolului respectiv, titlul, o descriere.
Sisteme numite agregatoare – sisteme online sau RSS Readere instalate local, citesc RSS-urile si informeaza abonatii asupra modificarilor de pe site, informatia fiind astfel transmisa unei audiente largi – syndicated. Informatia din fisierele RSS este stocata in baze de date, care pot fi accesate cu multiple criterii de cautare.
3.7. Instrumente de constructie
Wamp5 — este un pachet de instrumente software pentru Windows care include:
Serverul Apache/2.2.4
PHP 5.2.2 cu urmaroarele extensii încărcate:
bcmath, calendar, com_dotnet, crype, session, filter, ftp, hash, iconv, json, odbc, pcre, Reflection, date, libxml, standard, tokenizer, zlib, SimpleXML, dom, SPL, wddx, xml, xmlreader, xmlwriter, apache2handler, mbstring, bz2, curl, exif, gd, gettext, imap, mime_magic, ming, mssql, mysql, mysqli, openssl, sockets, xsl, zip, PDO, pdo_sqlite, pdo_mssql, pdo_mysql, SQLite, magickwand
MySQL 5.0.37-community-nt
phpMyAdmin – unealtă vizuala pentru crearea si administrarea bazelor de date.
MySQL — Front — este un instrument care permite lucrul cu baze de date in mod vizual. Este foarte usor de utilizat și permite realizarea sarcinilor cu maximă eficientă.
Macromedia Dreamweaver 8 – Este un editor HTML de tip WYSIWYG ("what you see is what you get").
Zend Studio5.5 – este un mediu integral de dezvoltare(IDE) professional pentru php; conține toate componentele necesare dezvoltarii unei aplicații php complete. Dintre facilitațile oferite programatorilor, ‘știe’ auto-complete la funcțiile php, termenii specifici limbajului dar și la clasele dezvoltate de developeri.
Photoshop7 – este un instrument pentru crearea și manipularea imaginilor digitale foarte avansat.
4.Prezentarea lucrării
4.1 Structura
Lucrarea constă în realizarea unui magazin online de componente pentru calculatoare.
Site-ul este organizat sub forma a 2 moduluri, și anume:
modul utilizator
modul administrator
4.2 Prezentarea site-ului in modul utilizator
Site-ul este structurat sub forma unuor meniri având următorele conținuturi :
Un meniu in partea de sus avand urmatoarea structura:
Home
Produse
Noutati
Contact
Și un meniu postat in partea din stanga care are urmatoarea structura
Boxe
Camere web
Camere foto digitale
Camere video
Carcase
Casti si nicrofoane
Cooler
Floppy disk
Hard Disk
Imprimante
Joystick
MP3 Player
Memorii
Monitoare
Mouse
Placi de baza
Placi de sunet
Placi video
Procesoare
Scannere
Tastaturi
Tunere TV
Unitati Optice
Pagina principala a site-ului o reprezinta pagina index.tpl în cadrul ei încărcându-se toate celelate pagini din site. Pagina index.tpl este prezentata mai jos:
Voi face o prezentare scurta a fiecarei opțiuni care este accesată in timpul navigarii pe site:
Home – > Reprezintă pagina care se încarca prima în pagina index.tpl. Această pagină este singura care poate fi accesata fără ca un utilizator să fie logat. Celelalte linkuri nu vor fi active și va apare un mesaj de atenționare ca și in imaginea de mai jos îndemnând utilizatorul să se logeze sau să iși creeze cont.
În pagina Home este implementată și o funcție de căutare a unui produs in baza de date și afișarea ulterioara a acestuia.
Mesaj de atentionare
Pagina Home
intrare -> Reprezintă link-ul prin care se face logarea unui utilizator. La accesarea acestui link va apărea urmatorul formular:
Formularul de logare
Dacă persoana care a intrat pe site nu dispune de o parolă iși poate crea un cont accesând opțiunea Creare cont , sau dacă a uitat parola poate accesa Am uitat parola. Mai jos sunt prezentate paginile celor două opțiuni
Creare_user Forgot password
După operațiunea de logare utilizatorul poate accesa orice pagina din cadrul site-ului. In acest moment pagina index.tpl va deveni index_user.tpl care va conține linkul accountul meu în cadrul căruia utilizatorul logat va putea să iși administreze contul
Accountul meu
Produse -> Aici sunt afișate toate produsele de pe site.
Pagina Produse
Noutati->Sunt afișate noutățile in materie de produse de pe site.
Contact->Aici sunt afișate datele de contact.
Boxe, Camere web, …, Unitati optice->În cadrul acestor pagini sunt prezentate produsele pe categorii. In imaginea de mai jos este prezentată categoria Monitoare:
Pagina Monitoare
Pentru a cumpăra un produs se apasă pe butonul atașat fiecărui produs pentru a pune produsul in coș.
4.3. Coduri folosite
Voi prezenta in contiunare fisierul sursă index.tpl, care este pagina principală de prezentare a interfeței site-lui, in cadrul ei încărcându-se și conținutul celorlalte pagini.
<! Codul sursa din fisierul index.tpl>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!Aici in head am inclus fisierul extern main.css>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Licenta</title>
<link href="./css/main.css" type="text/css" rel="stylesheet">
</head>
<body bgcolor="#D2FFFF">
<table width="900" border="0" cellspacing="0" cellpadding="0" align="center" style="background-color:#E6EAEB;">
<tr>
<td width="50" class="margin_left"> </td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr height="7">
<td height="7" colspan="2" class="border_top_back">
<div class="border_top"></div>
</td>
</tr>
<tr >
<td class="logo">
</td>
<td class="header_comp" >
<a href="index.php?page=home">Home</a>
<a href="index.php?page=sitemap">SiteMap</a>
</td>
</tr>
<tr>
<td colspan="2" class="menu">
<!In tabela urmatoare se gasește meniul site-ului>
<table border="0" cellpadding="0" cellspacing="0" align="left">
<tr>
<td align="center" class="ceil" ><a href="index.php?page=home">
Home
</a></td>
<td align="center" class="ceil"><a href="index.php?page=produse">
Produse
</a></td>
<td align="center" class="ceil"><a href="index.php?page=noutati">
Noutati
</a>
</td>
<td align="center" class="ceil"><a href="index.php?page=contact">
Contact</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table align="center" cellpadding="0" cellspacing="0" border="0">
<tr valign="top">
<td width="160">
<! Urmeaza linkul care duce in formularul de login
{$BEGIN_ROUNDED_CORNERS}
<table cellpadding="0" cellspacing="0" class="login_form" width="100%">
<tr valign="top">
<td class="intrare_inscriere"></td>
</tr>
<tr>
<td align="center"><br>
<a href="index.php?page=member&action=intrare">Intrare</a>
<br><br>
</td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" class="login_form" width="100%">
<tr>
<td class="produse"> <br><br></td>
</tr>
<!urmeaza linkurile care duc la afisarea produselor>
<tr>
<td class="margin_prod"><br>
<a href="index.php?page=boxe">Boxe</a><br>
<a href="index.php?page=cam_web">Camere Web</a><br>
<a href="index.php?page=cam_foto">Camere foto digitale</a><br>
<a href="index.php?page=cam_video">Camere video</a><br>
<a href="index.php?page=carcase">Carcase</a><br>
<a
href="index.php?page=casti_m">Casti si microfoane</a><br>
<a href="index.php?page=cooler">Cooler</a><br>
<a
href="index.php?page=flopy">Floppy Disk</a><br>
<a
href="index.php?page=hdisk">Hard Disk</a><br>
<a href="index.php?page=imprim">Imprimante</a><br>
<a href="index.php?page=joystik">Joystick</a><br>
<a
href="index.php?page=mp3_p">MP3 Player</a><br>
<a href="index.php?page=m_ram">Memorii</a><br>
<a href="index.php?page=monitoare">Monitoare</a><br>
<a href="index.php?page=mouse">Mouse</a><br>
<a
href="index.php?page=placi_b">Placi de baza</a><br>
<a
href="index.php?page=placi_s">Placi de sunet</a><br>
<a
href="index.php?page=placi_v">Placi video</a><br>
<a href="index.php?page=procesoare">Procesoare</a><br>
<a href="index.php?page=scanere">Scanere</a><br>
<a href="index.php?page=tastaturi">Tastaturi</a><br>
<a
href="index.php?page=tunere">Tunere TV</a><br>
<a href="index.php?page=unitati_o">Unitati optice</a><br>
<br>
</td>
</tr>
</table>
{$END_ROUNDED_CORNERS}
</td>
<!– Aici se vor incarca paginile din site, in variabila $CONTENT fiind memorat continutul fiecarei pafini dupa caz–>
<td >
{$CONTENT}
</td>
<td width="135">
{$BEGIN_ROUNDED_CORNERS}
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td><img src="././promotii/promotie_webcam.jpg" alt="webcam"></td>
</tr>
</table>
{$END_ROUNDED_CORNERS}
</td>
</tr>
</table>
<!- urmeaza footer-ul paginii ->
<table align="center" cellpadding="0" cellspacing="0" border="0" class="termeni_utilizare" style="border:2px solid #FFFFFF;" width="798" height="29">
<tr>
<td align="right" width="70"><a href="index.php?page=sitemap">SiteMap</a></td>
<td class="liniuta"></td>
<td align="center" width="110"><a href="index.php?page=termeni_u">Termeni de Utilizare</a></td>
<td class="liniuta"></td>
<td align="center" width="50"><a href="index.php?page=contact">Contact</a></td>
<td width="100"> </td>
<td align="right" style="padding-right:20px;"><a href="mailto:">Trimite link-ul la un prieten!</a></td>
</tr>
</table>
<table align="center" cellpadding="0" cellspacing="0" border="0" class="footer" style="border:2px solid #FFFFFF;" >
<tr>
<td style="padding-left:30px;">
SC. PC components SRL <br>
Oradea Str. Victor Hugo u. 18-22 <br>
CUI: 12753200-2-41 <br>
01-10-044692
</td>
<td >
Tel.: 00-1 452-5300 <br>
Fax: 00-1 452-5301 <br>
E-Mail: office”pccomponents.ro
</td>
<td style="padding-left:10px;">
© Copyright 2007 PCcomponents.Ro <br>
Toate drepturile Rezervate.
</td>
</tr>
</table>
</td>
<td width="50" class="margin_right"> </td>
</tr>
</table>
</body>
</html>
Urmeaza sa vedeți conținutul fișierului sursă index.php, care este “poarta” de intrare si de iesire a paginilor si funcționalitaților site-ului
// fisierul sursa index.php
<?php
//prin functia require_once includ fisierul config.php care conține configurațiile site-ului
require_once'include/config.php';
session_start(); //pornesc sesiunea
$smarty->assign('config',$config);
#output
######################################################
$template = isset($_GET['page']) ? $_GET['page'] : ''; //tine minte ce primesc prin url
//construiesc calea către pagina primita prin url
$file = $_SERVER['document_root'].'pages/'.$_GET['page'].'.php';
#print_r($file."<br>");
if(file_exists($file))
{
require_once $file;
}else
{
$template = 'home';
}
//creez obiectul user
$user = new Users();
#echo $_GET['page']; die;
// asignez variabilei CONTENT conținutul fișierului .tpl a carui nume vine prin url
$smarty->assign('CONTENT', $smarty->fetch($template.'.tpl'));
#print_r($template);
//verific dacă este vreun user logat si in functie de asta afisez index.tpl
if($user->isLogged())
{
$user = Users::getLoggedUser();
if(!$user)
{
$user = new Users;
}
$smarty->assign('user', $user);
$output = $smarty->fetch('index_user.tpl');
}
else{
$output = $smarty->fetch('index.tpl');
}
//afișez output-ul
echo $output;
######################################################
?>
In continuare expun clasa Produse, in jurul căreia se învârte funcționalitatea de afișare si căutare a produselor. Clasa Produse este moștenita din clasa de bază DBObject.
<?php
// variabila $table_name va seta tabela din baza de date pe care va opera clasa curenta
// variabila $fields preia intr-un array numele campurilor din tabela setata
class Produse extends DBObject
{
var $table_name = 'items';
var $fields = array('cat_id','subcat_id','prod','descriere', 'photo','pret');
// functia allProd() extrage toate produsele incepand cu pag_start pana la pag_limit
function allProd($pag_start,$pag_limit)
{
$q = "SELECT * FROM items LIMIT ".$pag_start.",".$pag_limit;
$sql = new DB_Sql($q);
$ret = array();
$r = array();
while ($sql->next_record())
{
$ret['id'] = $sql->f('Id');
$ret['prod'] = $sql->f('prod');
$ret['descriere'] = $sql->f('descriere');
$ret['cat_id'] = $sql->f('cat_id');
$ret['pret'] = $sql->f('pret');
$r[$sql->f('cat_id')]['prod'][] = $ret;
}
return $r;
}
// functia getCategory() returneaza tara pt un id dat
function getCategory($id)
{
$q = "SELECT name FROM categories WHERE id = '$id'";
$o = new DB_Sql($q);
if ($o->next_record())
return $o->f('name');
}
// functia search() returneaza acele produse care indeplinesc conditia
function search($condition = '')
{
$q = "SELECT * FROM items ".$condition;
$sql = new DB_Sql($q);
$ret = array();
$r = array();
while ($sql->next_record())
{
$ret['id'] = $sql->f('Id');
$ret['prod'] = $sql->f('prod');
$ret['descriere'] = $sql->f('descriere');
$ret['cat_id'] = $sql->f('cat_id');
$ret['pret'] = $sql->f('pret');
$r[$sql->f('cat_id')]['prod'][] = $ret;
}
return $r;
}
}
?>
Urmeaza clasa Users care conturează funcționalitatea legată de useri:
<?php
class Users extends DBObject
{
var $table_name = 'users';
var $fields = array('user_type','pass','email', 'phone','nume','prenume',
'city','country_id','signup_date','last_login','username','fax' );
//login user
function login($username, $password)
{
$username = addslashes(strtolower($username));
$password = addslashes($password);
$query = "SELECT * FROM users WHERE username='$username' AND pass='$password' ";
$q = new DB_Sql($query);
if($q->next_record()){
$usr = new Users();
$usr->setRecord($q->getRecord());
$usr->id = $q->f('id');
$query = "UPDATE users SET last_login=now() WHERE id='{$usr->id}'";
$q->query($query);
Users::setLoggedUser($usr);
#$_SESSION['user'] = $usr;
return true;
}
return false;
}
//sterge userul din sesiune
function logout()
{
unset($_SESSION['user']);
}
//verifica daca este logat
function isLogged()
{
return !empty($_SESSION['user']);
}
//returneaza un user logat
function getLoggedUser()
{
if(empty($_SESSION['user']))
{
return null;
}
return $_SESSION['user'];
}
//seteaza userul din sesiune
function setLoggedUser($user){
if(is_object($user) && (strtolower(get_class($user)) == "users")){ #strtolower -> pt. versiunea de php4…this sux
$_SESSION['user'] = $user;
}
}
//verifica daca un user este standard
function isStandard()
{
return ($this->get('user_type') == 1);
//echo "<br>isStandard=".$this->get('user_type')."<br>";
}
//verifica daca un user este administrator
function isAdmin()
{
return ($this->get('user_type') == 2);
///echo "<br>isAdmin=".$this->get('user_type')."<br>";
}
//verifica data ultimei inregistrari
function getLastLogin($format = 'm d y, h:m')
{
$query = "select id, last_login from users";
$q = new DB_Sql($query);
$ret = array();
while ($q->next_record())
{
$ret[$q->f('id')] = date('m-d-Y',strtotime($q->f('last_login')));
}
return $ret;
}
//returneaza data inscrierii pe site
function getSignupDate($format = 'm d y, h:m')
{
$query = "select id, signup_date from users";
$q = new DB_Sql($query);
$ret = array();
while ($q->next_record())
{
$ret[$q->f('id')] = date('m-d-Y',strtotime($q->f('signup_date')));
}
return $ret;
}
//verifica daca user-ul mai exista in baza de date
function isUnique($usr)
{
$usr = addslashes($usr);
$query = "SELECT username from users WHERE username='$usr'";
$q = new DB_Sql($query);
if (!$q->next_record())
return true;
}
function setS($field,$value)
{
if(isset($this->fields[$field]))
{
$this->fields[$field] = addslashes($value);
}
}
function getS($field)
{
return stripslashes($this->fields[$field]);
}
function getHash($username, $id)
{
return md5($username.'#'.$id);
}
function setPending($hash)
{
$query = "UPDATE users SET user_status=4 WHERE hash='$hash'";
$q = new DB_Sql($query);
}
function getStates($country_id)
{
$country_id = intval($country_id);
$query = "SELECT id, name from states WHERE country_id=$country_id";
$q = new DB_Sql($query);
$ret = array();
while($q->next_record())
{
$ret[$q->f('id')] = $q->f('name');
}
return $ret;
}
}
?>
Este prezentat mai jos conținutul fișierului member.php in cadrul căruia se va decide ce acțiune să se desfașoare
<?php
#error_reporting(E_ALL);
$action = $_GET['action'];
switch ($action)
{
default:
case 'create_account':
$template = 'create_account';
break;
case 'intrare':
$template = 'intrare';
if (isset($_SESSION['error']))
{
$smarty->assign('eror', $_SESSION['error']);
unset($_SESSION['error']);
}
break;
case 'login':
if ($config->isPOST())
{
$user = Users::login($_POST['username'], md5($_POST['pass']));
if($user)
{
jump('index.php?page=member&action=home');
}
else
{
$_SESSION['error'] = 'Login failed.';
jump('index.php?page=member&action=intrare');
#print_r($_SESSION['error']);
}
}
break;
case 'home':
$u = new Users();
if ($u->isLogged())
{
$log = $u->getLoggedUser();
#print_r($log->get('username'));
$smarty->assign("user",$log->get('username'));
}
$template = 'home';
break;
case 'iesire':
$template = 'home';
$user = new Users();
$user->logout();
jump('index.php?page=home');
break;
case 'creare_user':
$template = 'creare_user';
$options = get_db_values('countries', 'name');
$smarty->assign('country', get_options('country', $options,0));
$u = new Users();
if($config->isPOST())
{
if (isset($_POST['username']) && isset($_POST['pass']) &&
isset($_POST['nume']) && isset($_POST['prenume']) &&
isset($_POST['email']) && $_POST['country']!=0)
{
if ($_POST['pass'] == $_POST['rpass'])
{
if (valid_email($_POST['email']))
{
if ($u->isUnique($_POST['username']))
{
$u->set("user_type",1);
$u->set("user_status",1);
$u->set("username",$_POST['username']);
$u->set("pass",md5($_POST['pass']));
$u->set("nume",$_POST['nume']);
$u->set("prenume",$_POST['prenume']);
$u->set("email",$_POST['email']);
$u->set("city",$_POST['city']);
$u->set("country_id",$_POST['country']);
$u->set("phone",@$_POST['phone']);
$u->set("fax",@$_POST['fax']);
$u->set("signup_date",date("Y-m-d H:i:s"));
#$u->set("last_login",date("Y-m-d H:i:s"));
$u->update();
$_SESSION['error'] = "Userul dumneavoastra a fost creat cu succes! ";
jump('index.php?page=member&action=intrare');
}
else $_SESSION['error'] = "Alegeti alt username!";
}
else $_SESSION['error'] = "Adresa de email nu este valida!";
}
else $_SESSION['error'] = "Confirmarea parolei a esuat, reintroduceti parola corect! ";
}
else $_SESSION['error'] = "Completati toate campurile obligatorii!";
$smarty->assign("eror",$_SESSION['error']);
unset($_SESSION['error']);
}
break;
case 'accountul_meu':
$template = "accountul_meu";
$u = new Users();
$r = $u->getLoggedUser();
$u->setId($r->getId());
$options = get_db_values('countries', 'name');
$smarty->assign('country', get_options('country', $options,$r->get('country_id')));
$smarty->assign("username",$u->get('username'));
$smarty->assign("nume",$u->get('nume'));
$smarty->assign("prenume",$u->get('prenume'));
$smarty->assign("email",$u->get('email'));
$smarty->assign("city",$u->get('city'));
$smarty->assign("phone",$u->get('phone'));
$smarty->assign("fax",$u->get('fax'));
if($config->isPOST())
{
if ($_POST['username']!="" && $_POST['pass']!="" &&
$_POST['nume']!="" && $_POST['prenume']!="" &&
$_POST['email']!="" && $_POST['country']!=0)
{
if ($_POST['pass'] == $_POST['rpass'])
{
if (valid_email($_POST['email']))
{
$u->set("pass",md5($_POST['pass']));
$u->set("nume",$_POST['nume']);
$u->set("prenume",$_POST['prenume']);
$u->set("email",$_POST['email']);
$u->set("city",$_POST['city']);
$u->set("country_id",$_POST['country']);
$u->set("phone",@$_POST['phone']);
$u->set("fax",@$_POST['fax']);
#$u->set("signup_date",date("Y-m-d H:i:s"));
#$u->set("last_login",date("Y-m-d H:i:s"));
if ($_POST['username']!= $u->get('username'))
{
if ($u->isUnique($_POST['username']))
{
$u->set("username",$_POST['username']);
}
else $_SESSION['error'] = "Alegeti alt username!";
}
$u->update();
$_SESSION['error'] = "Modificarile au fost facute cu succes! ";
$u->login($u->get('username'), $u->get('pass'));
jump('index.php?page=member&action=accountul_meu');
}
else $_SESSION['error'] = "Adresa de email nu este valida!";
}
else $_SESSION['error'] = "Confirmarea parolei a esuat, reintroduceti parola corect! ";
}
else $_SESSION['error'] = "Completati toate campurile obligatorii!";
$smarty->assign("eror",$_SESSION['error']);
unset($_SESSION['error']);
}
break;
case 'forgot_password':
//$template = "forgot_password";
if($config->isPOST())
{
$message = '';
$u = Users::getUserByName($_POST['username']);
if($u->isValidUser())
{
$text = 'Parola ta pe Pccomponents: '.$u->get('pass');
$email = new PHPMailer();
$email->Subject = "Pccomponents – Parola";
$email->Body = $text;
$email->AddAddress($u->get('contact_email'));
print_r($u->isValidUser());
if($email->Send())
{
$message = 'Parola ta este: <b>'.$u->get('contact_email').'</b>.';
}
else
{
$message = 'Eroare! Va rugam sa icercati din nou.';
}
}
else
{
$message = 'User inexistent in baza de date. Parola nu a fost trimisa.';
}
$_SESSION['msg'] = $message;
//redirect('index.php?page=member&action=forgot_password');
}
$template = "forgot_password";
if(isset($_SESSION['msg']))
{
$smarty->assign('message', $_SESSION['msg']);
unset($_SESSION['msg']);
}
break;
case 'date_modif':
$template = 'intrare';
break;
}
?>
Voi lua aleator o pagină cum ar fi procesoare.php, celelalte fisiere care se referă la produse vor avea aceași structura.
<?php
$user = new Users();
if (!$user->isLogged() )
{
$smarty->assign('mes',"Ca sa ai acces la acest link trebuie sa fii inregistrat");
}
else
{
$prod = new Produse();
$ar_prod = array();
$img_path = $img_path = $config->getAbsoluteURL()."pccomponents/"."imag_produse/";
#echo $img_path;
$smarty->assign('path',$img_path);
#$template = 'noutati';
$total = $prod->getCount(' where cat_id=11 and subcat_id=1 ');
if ($total)
{
$link = "index.php?page=procesoare";
$pag = new Pagination($_GET['currentPage'], $total, $link);
$smarty->assign("pag",$pag->getNavBar());
}
$pag->start = 0;
if($pag->currentPage <> 0)
{
$pag->start=($pag->currentPage)*($pag->limit)-($pag->limit);
if($pag->start < 0)
{
$pag->start=0;
}
}
#$smarty->assign('currentPage', $pag->currentPage);
##extrag produsele din categoria procesoare si le pun 2/pag
$ar_prod = $prod->getAll(" where cat_id=11 and subcat_id=1 LIMIT ".$pag->start.",".$pag->getLimit());
#echo "<pre>";
#print_r($ar_prod);
$smarty->assign('prod',array_values($ar_prod));
}
?>
Mai jos, iată câteva funcții importante folosite în realizarea paginii, scrise in Javascript.
Functie pentru afișarea datei si a orei curente
<script type=text/javascript language=JavaScript>
<-functia data() afisaza ora si data curenta->
function data(dat)
{
time_now = new Date();
$year=(1900 + time_now.getYear());
if($year > 3000)
{$year -= 1900;}
html = "Data: " + ((time_now.getDate()<10)?"0":"") + time_now.getDate()
+(((time_now.getMonth() + 1)<10)?"-0":"-")+(time_now.getMonth() + 1)+ "-" + $year+ " Ora: "
+ time_now.getHours() + "" +
((time_now.getMinutes() < 10) ? ":0" : ":") +time_now.getMinutes();
document.getElementById(dat).innerHTML = html;
}
</script>
<Functia change() face refresh la pagina>
<script type="text/javascript" language="javascript">
function change(){
paren = document.getElementById('parent');
temp = paren.options[paren.selectedIndex].value
location.href = "index.php?page=admin&action=add&cat_id="+temp;
}
</script>
4.4. Prezentarea site-ului in mod administrator
Accesul in mod administator se face pe baza unui username și a unei parole știute doar de către administratorul site-ului. În acest caz username-ul este admin iar parola admin. Acum vom avea acces la un link nou Adaugare produse prin intermediul căruia vom putea introduce produse în baza de date.
Pagina Home in mod admin
Putem astfel introduce produse in baza de date după cum putem vedea in imaginile de mai jos.
Formularul de introducere a produselor
4.5. Coduri folosite
In fișierul admin.php este prezentată funcționalitatea de introducere a produselor
<?php
$action = $_GET['action'];
switch ($action)
{
case 'add':
$cat_id = empty($_GET['cat_id']) ? '1' : $_GET['cat_id'];
$parent_cat = get_db_values('categories', 'name','where subcat_id=0');
#print_r($parent_cat);
$smarty->assign('parent_cat',get_options('parent',$parent_cat,$cat_id,"onchange = 'change()'"));
if (!empty($cat_id))
{
$smarty->assign('cat_id',$cat_id);
$subcat = get_db_values('categories', 'name',"where subcat_id='{$cat_id}'");
if (!empty($subcat))
{
$smarty->assign('subcat',get_options('subcat',$subcat));
}
}
if ($_POST)
{
$parent_id = $_POST['parent'];
if (isset($_POST['subcat']))
{
$subcat_id = $_POST['subcat'];
}
else
$subcat_id = 0;
#echo $parent_id."<br>";
#echo $subcat_id."<br>";
$articole=$_POST['prod'];
$pret = $_POST['pret'];
$descriere=nl2br($_POST['descriere']);
if ($subcat_id != 0)
{
$sql="insert into items (cat_id , subcat_id , prod , pret , descriere , photo)
values ('$subcat_id','$parent_id','$articole','$pret','$descriere','$photo')";
}
else
{
$sql="insert into items (cat_id , subcat_id , prod , pret , descriere , photo)
values ('$parent_id','$subcat_id','$articole','$pret','$descriere','$photo')";
}
$db = new DB_Sql();
$db->query($sql);
$link = $config->getAbsolutePath()."imag_produse/".$db->insert_id().".jpg";
print_r($link);
upload('photo',$link,'jpg');
deg($error);
}
$template = "add";
break;
}
?>
4.6. Structura Bazelor de Date
Tabela Categories:
Tabela Categories conține urmatoarele câmpuri:
id – identificatorul de categorie(cheie primară, care se incrementează automat)
name – numele categoriei/subcategoriei.
subcat_id – identifictorul de subcategorie(cheie, daca este 0 avem categorie, altfel subcategorie).
Tabela Categories populată:
Tabela Countries:
Conține urmatoarele câmpuri:
id – identificatorul țării(cheie primară, care se incrementează automat.
name – numele țării (de tip varchar(255))
Tabela Countries populată:
Tabela items:
Conține următoarele câmpuri:
id – identificatorul țării;
cat_id – cheia care indică cărei categorii aparține produsul;
subcat_id – cheia care indică cărei subcategorii aparține produsul;
prod – câmp de tip varchar care reprezintă numele produsului;
descriere – câmp de tip text care conține descrierea produselor;
photo – câmp de tip varchar;
pret – câmp de tip float, in care se memorează prețul produselor;
Tabela items populată:
Tabela users:
Tabela confine campurile:
id – identificatorul țării(cheia primară , care se incrementează automat);
user_type – cheia care indică tipul userului;
username – câmp de tip varchar care reține numele de user;
pass- câmp de tip varchar, care memorează parola ;
nume – câmp de tip varchar care reține numele;
prenume – câmp de tip varchar care reține prenumele;
email – câmp de tip varchar care memorează adresa de email;
city – câmp de tip varchar care memorează orasul;
country_id – cheia care indică țara corespunzătoare;
phone – câmp de tip varchar care memorează numărul de telefon;
fax – câmp de tip varchar care memorează numărul de fax;
signup_date – câmp de tip timestamp care memorează data în care useru s-a înscris;
Tabela users populată:
Tabela user_type:
Conține:
id – identificatorul țării;
name – câmp de tip varchar care conține tipul userului(standard/admin)
Tabela user_type populată:
Tabela user_status:
Conține:
id – identificatorul țării
name – câmp de tip varchar
Tabela user_status populată:
Relațiile dintre tabele:
categories items
countries users
user_type
5. Concluzii
Website-ul PCcomponents este un instrument util de promovare a produselor, cu o interfață prietenoasă si funcționalitați accesibile și pentru cei mai neexperimentați utilizatori, care poate servi oricărei firme IT ca website de prezentare a produselor. Sigur că aplicația este perfectibilă și chiar ar fi bine venită adaugarea de noi funcționalități. Cum toate tehnologiile IT pentru development sunt intr-o continuă și rapidă ascensiune, doresc să ajustez site-ul PCcomponents, atât la nivel funcțional cât și la capitolul tehnologii de dezvoltare.
Site-ul este structurat sub forma a două părți și anume: cea de utilizator, la care au acces utilizatorii, și totodată o parte de administrator, mod în care cel care se ocupă de administrarea siteului, poate adăuga produse noi in baza de date.
Este foarte ușor de administrat și totodată ușor de updatat, astfel că accesul site-ului web poate fi îmbunătățit, singura condiție sunt cunoștințele de PHP, HTML și MySQL, JavaScript, Smarty și puțin AJAX, CSS sau RSS.
Un avantaj major constă în utilizarea MySQL-ului care poate manipula baze de date de mai mari dimensiuni. Acest sistem stochează date în tabele separat în loc să le pună pe toate împreună într-o aglomerare, care face căutarea și furnizarea rezultatului mai puțin rapidă. Acest lucru conferă viteză mai mare și flexibilitate. Utilizarea MySQL conferă o bună protecție a datelor.
6. Bibliografie
Baze de date relaționale , teorie și aplicații – Cornelia Gyorodi, Oradea, editura TREIRA, 2000
Carte PHP în limba română – Bill McCart , PHP 4, Traducere de Mihai Mănăstireanu, editura Teora, Titlul original: PHP 4 A BEGINNER'S GUIDE • Copyright © 2002 Teora
Jim Keogh – JavaScript fară mistere Ed. R.E.
http://www.php.net
http://www.smarty.net
http://ro.wikipedia.org
http://www.softpedia.com
http://www.sourceforge.net
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Magazin Online de Componente Pentru Calculatoare (ID: 148767)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
