Analiza Sistemului Informational Existent

Introducere

Devenind o importantă resursă în dezvoltarea societăților, informația a evoluat mult în plan politic, economic, social și spiritual. Dinamismul și complexitatea acestor societăți antrenează o creștere continuă a volumului și diversității informațiilor. Informația economică că rezultat al muncii sociale poate fi considerată un serviciu productiv, consumat în activitatea informațională a organismelor economice. În procesul de producere a informației se consumă un volum important de resurse umane și materiale. Unică cale de dezvoltare a sistemului informațional fiind computerizarea și apelul la tehnologii specifice avansate: informatică și telecomunicațiile. Actualmente tehnologiile informaționale ale accelerării dezvoltării tehnico-științifice, social-economice și sporirii eficacității economice se situează într-un domeniu de vârf supus unei evoluții constante, când noi produse și noi servicii informatice apar în fiecare zi.

Unitatea de baza a companiei este întreprinderea; ea poate fi comparată cu un organism complex în care are loc combinarea factorilor de producție pentru obținerea anumitor bunuri și servicii necesare societății. Din această reiese că întreprinderea este celulă de baza a economiei, veriga organizatorică unde are loc fuziunea factorilor de producție: resurse umane, materiale, financiare. Fiecare din aceste componente sunt alcătuite dintr-o mare varietate de elemente între care se stabilesc multiple și profunde legături.

Până nu de mult unitățile comerciale erau reprezentate de un local sau o rețea de locale, informații cu privire la produsele sau serviciile comercializate se puteau află din publicitate sau simplu intrând în plasamentele de comercializare.

Pe piață mondială a apărut de câțiva ani buni a apărut o metodă inovatoare de promovare și anume rețeaua globală de internet. Folosită inițial că o rețea de transfer-date, ea în scurt timp a fost folosită pentru organizații profit și non-profit, persoane fizice și juridice și absolut de oricine pentru publicarea, promovarea a căruiva obiect de interes. Nici firmele comerciale nu au ezitat să folosească acest mijloc pentru promovarea lor. La moment orice persoană care dorește să inițieze o afacere ia în considerație și elaborarea unei locații web.

Teza de licență conține cinci capitole.

În primul capitol sunt expuse informații generale despre compania „ROMSTICOM” SRL, profilul, scopul, structura ei. Tot aici este redată analiza resurselor informatice. Capitolul se finalizează cu studiul sistemului condus.

Capitolul doi prezintă schema conceptuală a sistemului. Sunt descrise obiectivele generale și specifice ale sistemului informatic, principiile de planificare și proiectare a locației web. Sunt definite fluxurile de informații și este descris arborele de pagini a locației web. Capitolul finisează cu prezentarea resurselor de echipamente și produse program necesare pentru implementarea subsistemului informatic.

Capitolul trei cuprinde proiectarea de detaliu, unde este definită structura funcțională a locației web. Sunt specificate fișierele și baza de date și legăturile dintre paginile Web pe care le prezintă submeniurile.

Capitolul patru conține aspecte de eficiență economică a locației webelaborat.

Capitolul cinci finalizeaza lucrarea prezentand eficienta si utilitatea aplicatiei informatice.

Caracteristica generală a „ROMSTICOM” SRL

Compania „ROMSTICOM” a fost infiintata în anul 2015.

Forma organizatorico-juridică a companiei este SRL.

„ROMSTICOM” SRL este o companie privată cu capital integral privat roman.

Principalele funcții ale „ROMSTICOM” SRL sunt:

1. distribuirea și comercializarea de produse cosmetice;

2. oferirea serviciilor de împachetare;

Compania „ROMSTICOM” SRL are relații de parteneriat și, respectiv, este distribuitor local al unor producători precum: Garnier și L’Oreal.

Compania are ca si program de lucru de 5 zile pe saptamana de la ora 08.30 până la 17.30, înafara programului centrelor comerciale.

În cadrul produselor comercializate de ROMSTICOM SRL menționăm:

1.Produse cosmetice de tip creme, sapunuri, geluri de duș.

2.Poduse cosmetice de tip fard, eyeliner, fond de ten.

Structura organizatorică a companiei este:

Director;

Contabil-șef;

Manager;

Manager pe vânzări;

Depozitar;

În fruntea organizației se află directorul, care poartă răspundere pentru organizarea în ansamblu a activității companiei, el determină scopurile companiei, angajează și supraveghează realizarea lor, organizează business procesele companiei, angajează salariați, emite ordine și alte documente interne ale companiei, încheie contracte.

Contabilul-șef – poartă răspunderea de prelucrarea informației contabile: calcularea salariilor pentru angajați, prelucrarea operațiilor concrete ale contabilității companiei pentru obținerea bilanțului contabil, întocmirea dărilor de seamă lunar, trimestrial, anual și prezentarea lor în termenele stabilite instanțelor respective conform legislației și hotărârii companiei, asigură controlul și reflectarea în conturile contabile a tuturor operațiunilor, respectarea principiilor metodologice de organizare a contabilității, poartă răspundere de documentele din fișier și arhivă.

Manager pe vânzări – se ocupă cu vânzările și controlul produselor, în cazul când sunt întâlnite produse cu defecte sunt obligați să le returneze în depozit și să anunțe directorul, pentru a lua măsurile necesare.

Depozitarul – portă răspundere la devamarea și înregistrarea produselor în baza de date, distribuie produsele în toate centrele comerciale.

Analiza resurselor informaționale

Sub aspect structural, resursele informaționale reprezintă totalitatea elementelor interconectate: baza informațională, baza științifico-metodologică, baza tehnico-materială, resursele umane, resursele financiare, cadrul legislativ-normativ, tehnologiile informaționale și telecomunicațiile.

Baza informațională presupune totalitatea datelor, informațiilor, circuitelor și fluxurilor informaționale. Colectarea și prelucrarea informației în cadrul companiei se face cu ajutorul sistemului informațional „ROMSTICOM Gestio 1.0”

Baza științifico-metodologică constă din cunoștințe și materiale metodologice care definesc diferite metode de calcul a diferitor indicatori(indicatori ai prețurilor), metode de întreținere și utilizare a registrelor contabile.

Resursele umane includ personalul implicat în procesul de prelucrare a datelor din sistemul informațional respectiv.

Tehnologii informaționale și telecomunicații.

Resurse hard

Compania dispune de 12 calculatoare, dintre care 5 calculatoare Dimension 4300 system (CPU Intel Pentium 4 3,6 GHz, RAM 1GB, HDD 120GB, monitor 19’) – servere locale și stații de dezvoltare pentru programatori, 7 calculatoare Dimension 4300 system (CPU Intel Pentium 4 1600 GHz, RAM 256M, HDD 40 GB, monitor 17’) – stații de lucru pentru utilizatori.

Numărul total de dispozitive periferice de tipărire utilizate la companie este de 5 imprimante laser, dintre care 3 color. Din numărul total 4 imprimante pot fi utilizate ca dispozitive de rețea. În marea lor majoritate, se utilizează în calitate de dispozitive personale, conectate direct la stațiile de lucru ale utilizatorilor. Imprimantele laser sunt utilizate în comun de către toți colaboratorii oficiului companiei.

Rețele

Rețeaua locală a companiei unește toate resursele de calcul, mediul de stocare a datelor, server-ul cu baza de date și aplicații, de asemenea și toți utilizatorii întregului sistem.

Resurse soft

La stațiile de lucru se utilizează următorul sistem de operare:

MS Windows 7

În calitate de mijloace program pentru lucrul de birou se utilizează:

MS Office 2007

Sistemele de evidență contabilă și de prelucrare a datelor utilizate sunt:

1C Contabilitate;

ROMSTICOM Gestio 1.0.

În calitate de sisteme de gestiune a bazelor de date se folosesc următoarele programe software:

MySQL;

SQL Server.

Justificarea necesității realizării locației Web

În economia de piață actuală, unde este prezentă concurența, o importanță deosebită o are modul de gestionare a informației, timpul și mai ales operativitatea de prelucrare informației, deoarece de acești parametri depinde activitatea întreprinderii. Promptitudinea furnizării informației și respectiv luarea deciziei va fi rezultatul posedării unei cote de piață mai mare și deci obținerii unui profit considerabil, iar acesta din urmă vă duce la prosperitate.

Majoritatea agenților economici au înțeles direcția ce va duce la succes, la dezvoltarea ulterioară, anume utilizând tehnologiile informaționale moderne.

De când există economia de piață orice agent economic se străduiește să-și extindă piața de desfacere și extinderea ei folosind tehnologiile informaționale existente este un pas inevitabil pentru majoritatea agenților economici atât din țară cât și de peste hotare, mai ales când agentul economic este antrenat în aprovizionarea populației cu tehnică de calcul de ultimă generație, nu numai din motive comerciale, dar și din motive de estetică pentru că ar fi absurd ca o firmă care are ca subiect de activitate tehnologiile informaționale să nu dispună de locație web de calitate.

Riscul suportat de către beneficiarul sistemului este foarte mic, deoarece nu este necesar de o investire substanțială. Nu este nevoie de personal mare care să deservească locația. De menționat este că site-ul comercial propus prezintă în sine un modul independent și poate fi plasat în orice portal de pe Internet sau pe un server personal. Odată cu el se pot amplasa o mulțime de banere cu reclamă și/sau cu referință și alte surse din Internet.

PROIECTAREA DE ANSAMBLU A LOCAȚIEI WEB PENTRU "ROMSTICOM” SRL

Obiectivele locației Web preconizată

Scopul primar al creării site-ului web este prezentarea informației referitoare la „ROMSTICOM” SRL. Acesta este un prim pas de prezentare largă a informației privind activitatea întreprinderii.

Printre obiectivele generale ale sublocației web fac parte:

realizarea site-ului web, ca suport electronic de punere la dispoziție a informațiilor privind „ROMSTICOM” SRL;

analiza resurselor informaționale.

Printre obiectivele specifice se poate enumera:

prezentarea informațiilor generale privind întreprinderea;

prezentarea informației privind lista produselor oferite;

prezentarea informației prețurilor produselor comercializate;

prezentarea informației privind lista serviciilor oferite;

prezentarea informației despre noutățile și promovările făcute de întreprindere;

Locul aplicatiei informatice in sistem

Proiectarea site-urilor Web poate fi privită drept un caz particular de proiectare a interfețelor utilizator, activitate care necesită cunoștințe din domeniul interacțiunii om-mașină.

Interfața cu utilizatorul reprezintă o parte a aplicației software care oferă utilizatorilor posibilitatea de a își exprima intențiile de operare prin intermediul calculatorului și de a intra în posesia rezultatelor furnizate de acesta. Utilizatorul este cel care poate decide dacă o interfață îi este sau nu utilă.

Interacțiunea om-mașină este o direcție de cercetare având drept scop studierea și ameliorarea factorilor care influențează utilizarea efectivă și eficientă a calculatoarelor.

Interacțiunea om-mașină privește trei aspecte:

Omul care încearcă să atingă un anumit scop prin intermediul calculatorului;

Calculatorul care rulează programe și aplicații;

Interacțiunea care înseamnă practic un dialog între om și calculator, de cele mai multe ori sub formă de întrebare răspuns.

Pentru realizarea efectivă a unui site web, trebuie parcurse următoarele etape:

Proiectarea – prevede elaborarea structurii sit-ului, determinarea interfeței, stabilirea informațiilor necesare de publicat pe site. Procesul de proiectare include următorii pași:

planificare;

machetare;

programare.

Publicarea site-ul creat – acesta trebuie să fie accesibil tuturor vizitatorilor; pentru aceasta se parcurg alți pași importanți:

găzduire;

transfer;

verificare;

întreținere.

După ce sunt parcurși acești pași, înseamnă că site-ul este realizat și oricine poate să-l acceseze. Dar acest lucru nu este suficient. Pentru aceasta se parcurge o nouă etapă:

Promovarea – aceasta se poate face folosind o mulțime de metode și mijloace, printre cele mai cunoscute și folosite sunt următoarele:

motoare de căutare;

auto responder;

marketing prin e-mail;

premii;

schimb de banere;

schimb de legături.

Prin proiectarea unui site se înțelege procesul de realizare efectivă a paginilor web, pe calculatorul propriu. Pentru acest lucru e nevoie nu numai de imaginație, dar și de câteva noțiuni de web design fundamentale.

Planificarea reprezintă procesul prin care se încearcă definirea în mod clar a motivelor pentru care se realizează un site web, ce mijloace sunt la dispoziție pentru a realiza acest lucru, care va fi publicul țintă, etc.

Înainte de a investi în realizarea unui sit web trebuie de răspuns la câteva întrebări generale:

Care este scopul site-ului?

Ce motive ar avea oamenii să viziteze site-ul?

Ce produse sau servicii se dorește să se prezinte sau să se vândă?

Cât de des va fi actualizat (zilnic, săptămânal sau lunar)?

Unde va fii găzduit site-ul?

Ce materiale și informații sunt necesare pentru a crea site-ul?

Aspectele ce trebuie avute în vedere atunci când se planifică un site web sunt următoarele :

scop;

audiență;

accesibilitate;

conținut;

copyright;

efecte speciale;

Scopul.

Pentru început trebuie definit în mod clar obiectivul sau scopul sit-ului.

Ce anume se dorește de realizat și cum se propune să arate site-ul în final? Se analizează mijloacele care sunt necesare și care sunt la dispoziție pentru atingerea țintei propuse. Obiectivul care se urmărește atunci când se proiectează un site web poate fi următorul:

creerea unui site web personal sau corporativ;

intrarea în legătură cu alte persoane având aceleași preocupări și interese;

începerea unei afacere online și câștigul de bani;

pentru a face publicitate prin intermediul internetului.

Când se face planul pentru un site web trebuie ținut minte că fiecare pagină web trebuie să aibă un obiectiv precis. Acesta trebuie sa fie în concordanță cu scopul final și tema generală care a fost aleasă.

Audiența.

După ce sunt stabilite obiectivele site-ului trebuie văzut care vor fi utilizatorii acestuia. Audiența reprezintă publicul țintă pentru care a fost realizat site-ul web. Este un element critic deoarece design-ul site-ului și conținutul acestuia sunt în strânsă legătură cu audiența. De aceea, trebuie realizat profilul standard al utilizatorului și strânse cât mai multe informații legate de obiceiurile, interesele, acțiunile, necesitățile și în general modul de viață, ale tuturor persoanelor care alcătuiesc publicul țintă.

Atunci când se proiectează un site web, trebuie să încercăm să răspundem la următoarele întrebări:

site-ul realizat este pentru copii sau pentru adulți?

vizitatorii îl vor accesa de la școală, de la serviciu sau de acasă?

cât de rapidă este conexiunea lor la Internet?

ce hardware sau software folosesc?

Accesibilitatea.

Accesibilitatea reprezintă una dintre cerințele de bază atunci când se proiectează o pagina web. Aceasta înseamnă că orice utilizator trebuie și poate să aibă acces la site, indiferent de browser-ul pe care-l folosește, rezoluția sau dimensiunile ecranului, setările calculatorului.

Conținutul.

Diferența dintre un site atractiv și unul plictisitor și neinteresant este dată de valoarea conținutului. De aceea trebuie acordată o atenție maximă conținutului, deoarece pe baza acestuia vor fi dezvoltate structura site-ului și machetarea paginii.

Principalul motiv pentru care oamenii accesează Internetul este căutarea de informații într-un domeniu sau altul. Conținutul site-ului se poate îmbogăți cu informații de actualitate, sfaturi sau mici secrete.

Copyright.

Un site web reprezintă o operă de creație intelectuală și poate constitui obiect al dreptului de autor. Aceasta înseamnă că informațiile care se introduc într-o pagină personală aparțin creatorului și dreptul de autor îi revine în întregime asupra textului respectiv. Dacă însă se lucrează într-o echipă atunci sunt mai mulți co-autori care sunt protejați prin drepturi de autor asupra imaginilor pe care le-au creat, machetării paginii sau programelor pe care le-au realizat.

Termenul de copyright are aceeași semnificație ca: drept de autor.

Efecte speciale.

Mulți web design-eri folosesc diverse "efecte speciale" pentru a da o notă spectaculoasă paginilor pe care le-au realizat. Printre cele mai folosite se pot enumera: imagini animate, JavaScript, animații Flash, ActiveX, Scrolling marquees, etc.

Toate acestea permit definirea comportamentului unor elemente dintr-o pagină Web și dinamizarea acestora.

Machetare.

Prin machetarea unei pagini web se înțelege modul cum sunt aranjate elementele constitutive ale unei pagini: conținut, grafică, legături, sistem de navigare, elemente multimedia, etc. În cadrul aceluiași proces de machetare se va analiza structura paginii. Pentru că toate informațiile să fie prezentate într-un mod atractiv și original, o pagină web poate să fie simplă sau împărțită în:

cadre;

tabele simple;

tabele multiple sau imbricate;

combinație a acestor elemente.

Felul cum vor fi aranjate elementele componente într-o pagina web depinde numai de imaginația și bunul gust al fiecăruia. E important de făcut o bună impresie cu prima pagină. Aceasta trebuie sa fie deosebit de atractivă și interesantă și să arate în mod clar ce conține restul site-ului. Când se începe operațiunea de machetare a sitului, trebuie luate în calcul următoarele elemente:

1. Stilul imprimat paginilor Web.

2. Elementele componente ale unei pagini web:

conținut;

grafică;

legături;

sistem de navigare;

elemente multimedia;

3. Modul de împărțire în pagină:

cadre (frames);

tabele.

Stilul.

Acesta trebuie să fie unitar și ușor de recunoscut, în comparație cu alte sit-uri similare. Aceasta înseamnă că trebuie găsită o notă deosebită, un aranjament ingenios pentru aceste pagini. Ele trebuie să se diferențieze și chiar să iasă în evidență, în mulțimea siturilor web. Cu toate acestea, trebuie păstrată un stil unitar.

Complexitatea paginii.

O pagină poate să fie și foarte mică după complexitate. Există două limite pentru mărimea unei paginii web; unul din ele este că o pagină mare necesită mult timp pentru derulare, din această cauză utilizatorul nu poate să intre și să iasă rapid, cum el ar fi dorit; aceasta depinde și de viteza de navigare. Altă limită este dificultatea utilizatorului de a derula o pagina mare.

Un avantaj al paginilor Web voluminoase este ușurința vizualizării ei de utilizatorii care au bară de derulare. În acest caz, au posibilitatea de a privi pagina identic cum a fost concepută.

Alt avantaj este că paginile mari sunt ușor de proiectat deoarece au un număr mai mic de legături și prin urmare nu necesită reproiectarea în caz de modificare a informației din pagină.

Grafica se folosește, în principal, pentru îmbunătățirea aspectului unui site și creșterea atractivității acestuia.

Legăturile.

Atunci când se realizează machetarea sitului, o mare atenție trebuie acordată legăturilor. Acestea pot fi:

interne (către alte pagini din interiorul sitului);

externe (către alte sit-uri din Internet).

Navigarea.

Se face prin intermediul unui meniu(meniul de navigare).

Meniul de navigare este o reprezentare grafică sau de tip text a conținutului și este adesea încorporat în tema generală a site-ului. Cu ajutorul lui se furnizează trimiteri rapide și directe la secțiunile și informațiile disponibile dintr-un site web.

Elementele multimedia.

Reprezintă derularea efectelor Flash sau a unei melodii în timpul încărcării paginii; este destul de frumos și plăcut, însă când navigatorul este în căutare de informații acest lucru este de prisos, mai ales că el îngreunează încărcarea paginii.

Definirea fluxurilor informaționale

În sistemul proiectat sunt prezente următoarele ieșiri:

Informații de ieșire obținute la videoterminalul utilizatorului:

apar informațiile din cadrul paginilor locației web necesare utilizatorului;

regăsirea informației dorite mai rapid prin intermediul search-ului din cadrul locației web.

Ieșiri către alte sisteme informatice:

Poșta electronică a Administratorului;

Poșta electronică a utilizatorilor în caz că doresc să fie contactați prin email;

Multimedia – prezentarea informației sub formă de imagini;

Prin intrările unui sistem se înțelege totalitatea datelor primare necesare informațiilor de ieșire ale sistemului. Intrările sunt reprezentate de informația externă privind modificarea prețurilor, ce reflectă operații prin care se generează un flux de informații ce semnifică schimbări în colecțiile de date a locației web și care conduc la actualizarea conținutului acestora. Informația de intrare în locația web poate proveni de la administrator cât și de la utilizatorii acesteia.

Arborele de pagini a locației web

TABELE

2.5.Diagrama entitate-asociere

Echipamente și produse program necesare

Locația web poate rula numai pe un server WWW, ceea ce face necesară prezența unui server pe care poate rula serviciul WWW. De calitatea calculatorului depinde calitatea deservirii apelurilor, deoarece un WEB server trebuie să permită lucrul a cât mai mulți utilizatori concomitent și cu o viteza satisfăcătoare.

Pentru a accesa Internet-ul sunt necesare următoarele componente:

un sistem de operare care acceptă protocolul TCP\IP;

programe server ce acceptă cereri HTTP;

calculatoare client ce rulează programe de rețea capabile să transmită și să recepționeze pachete de date TCP\IP;

programe exploratoare pentru diferite calculatoare client.

Ca resurse software este necesar un sistem de operare Windows 2000 Windows XP, Windows 7 sau Windows 8 ce ar permite susținerea atât a legăturii cu internetul, cât și a serviciului WWW. Pentru modificarea ulterioară a conținutului documentelor PHP este necesar un editor de documente WEB. Dreamweaver este cea mai rezonabilă variantă între resursele care sunt cerute și posibilitățile care le oferă. Pentru elementele de grafică încorporate în locația web este rațional de folosit Photoshop datorită facilităților oferite. De asemenea pentru a ușura administrarea și actualizarea locației web se pot folosi ca explorator Mozila, Google Chrome, Opera sau Internet Explorer.

Pentru punerea în funcțiune a noului sistem trebuie îndeplinite câteva cerințe față de resursele de echipamente și produse program. Deoarece sistemul susține tehnologia client-server, pe lângă cerințele față de posturile informatice, se mai stabilesc cerințe și față de server.

Față de resursele de echipamente și produse program sunt următoarele cerințe:

Față de rețea:

Ethernet, UTP/5 (se recomandă o rețea ce are o viteză de transfer nu mai mică ca 10/100Mbit);

dacă conexiunea cu internetul nu are loc prin rețea, se recomandă o linie dedicată cu viteza nu mai puțin de 128 Kbps.

Față de web-server:

Pentium-IV, 1700 Mhz, 256 Mb, HDD 36Gb, dispozitiv de arhivare (dispozitive de înscriere pe discuri optice etc.) și componente standarde;

sistem de operare (Windows);

sursă de alimentare neîntreruptă UPS.

Față de stația de lucru:

Processor 500Mhz, 64 Mb, HDD 2Gb etc. (se recomandă Pentium 700Mhz, 128 Mb, HDD 10Gb etc.) sau ceva superior;

sursă de alimentare neîntreruptă UPS.

Față de produsele program:

Web-server: Apache este o platformă foarte răspândită datorită siguranței în funcționare;

limbaj de programare: PHP este un limbaj de programare dinamică ce facilitează crearea legăturilor rapide și eficiente cu bazele de date, este un instrument foarte puternic de creare a paginilor web dinamice;

SGBD: MySQL oferă o comoditate în utilizare datorită funcțiilor predefinite în PHP de lucru cu MySQL;

editor HTML și PHP: Macromedia Dreamweaver, PHP Expert Editor oferă comoditate în utilizare recunoscând funcțiile de bază ale limbajului de programare PHP;

editor de grafică: Adobe Photoshop, Macromedia Flash sunt comode în elaborarea interfeței grafice având o mulțime de filtre de prelucrare a imaginilor.

proiectarea de detaliu

Definirea cerințelor funcționale și a interfeței grafice

Sub aspectul funcțional, un sistem informatic, în general, este structurat în mai multe subsisteme funcționale. Potrivit acestui criteriu, structura funcțională a unui sistem pentru conducerea activităților economice reprezintă activitățile de bază a unității social-economice.

În caz particular, pentru sistemul informatic creat cerințele funcționale se pot desprinde reieșind din obiectivele stabilite anterior și anume:

conținut interesant bine determinat și structurat care să reflecte întreaga activitate a organizației .

interfață agreabilă și comodă pentru orice nivel al utilizatorilor.

navigarea comodă și eficientă, adică cel mult din două accesări să se poată obține informația dorită;

dinamicitate și interactivitate care să permită un feed-back pozitiv între utilizatorii și firmă;

accesibilitate.

Cumulativ sistemul îndeplinește următoarele funcții:

funcția decizională, care asigură elementele necesare luării de decizii;

funcția operațională, prin realizarea actualizării bazei informaționale a locației web realizată;

funcția de documentare, printr-o continuă și permanentă cunoaștere a mediului înconjurător pe baza căruia au loc modificări de conținut și modificări de format a site-ului dat.

Descrierea paginilor locației Web

Pagina principală are ca scop afișarea informațiilor generale, inclusiv a legăturilor către alte pagini majore ale site-ului web. Meniurile de bază ale sit-ului Web sunt: Cosmetice Corporale, Cosmetice Faciale, Ingrijirea Parului, Machiaj si Unghii. Aici mai pot fii gasite si ultimele produse adaugate precum si un motor de cautare al site-ului.

Fig. 3.1. Pagina principală.

Pagina cos oferă informații despre produsele selectate pentru cumpărare precum si TVA-ul, subtotalul si totalul sumei de achitat la livrare. Se mai pot efectua operatii precum aplicarea anumitor cupoane, golirea cosului, modificarea acestuia si trimiterea comenzii.

Fig. 3.2 Pagina Cos

Pagina Produs oferă informații despre produsul selectat, optiunea de adaugare a acestuia in cosul de cumparaturi si descriere.

Fig. 3.3 Pagina Produs

Pagina Autentificare permite autentificarea cumpărătorilor; aceasta se face introducând Email-ul folosit la înregistrarea pe site și parola aleasă.Pe această pagină se întâlnește și secțiunea de uitare a parolei – se introduce Emailul înregistrat și va fii trimisă o nouă parolă.Fig. 3.4 Pagina Autentificare

Pagina Inregistrare permite înregistrarea unui utilizator nou. Pentru a face acest lucru se vor intoduce detalii personale și obligatorii (nume, prenume, adresa de Email, telefon) după care se va introduce adresa(compania – opțional- , adresa, oraș, cod poștal, țară, regiunea) și parola dorită.

Fig. 3.5. Pagina Inregistrare.

Pagina Ingrijirea parului oferă informații despre produsele oferite la această secțiune; tot aici se pot afla mai multe detalii despre produsul dorit apăsând butonul „Mai mult”, după cum se poate observa in Fig.3.7.

Fig.3.6. PaginaIngrijirea parului, sectiunea Par gras/cu matreata

Pagina Detalii pentru produsul selectat oferă informații despre produsul dorit precum și opțiunea adăugării acestuia în coșul de cumpărături și o descriere a acestuia.

Fig.3.7.Detalii pentru produsul selectat

Schema de sistem a aplicatiei

DESEN IN WORD REFERINTA PRINT ANDREI

Proiectarea bazei de date este un proces complex care este structurat în două etape principale:

a) Proiectarea logică;

b) Proiectarea fizică.

Proiectarea logică sau modelarea conceptuală a datelor înseamnă reprezentarea modului de organizare a datelor, în dependență de tehnologiile specifice de prelucrare a bazelor de date, fără să se înregistreze o preocupare anume referitor la calitatea modelelor datelor, structurarea performanță a datelor prin proces de normalizare și obținerea unui model logic al datelor din care să se poată realiza proiectul bazei de date fizice, adică modelul relațional. Proiectarea logică include în sine determinarea bazei informaționale a locației web și stabilirea entităților și relațiilor dintre acestea.

Proiectarea fizică a bazelor de date își propune să asigure trecerea de la descrierea logică a datelor la una tehnică, de stocare a datelor. Deci, proiectarea fizică se concentrează în specificații tehnice folosite ulterior de programatori și alți specialiști implicați în construirea sistemului. Proiectarea fizică presupune stabilirea formatelor sub care vor fi reprezentate atributele, modul de grupare a acestora, precum și proiectarea metodelor de accesare a datelor, selectarea tehnologiei folosite pentru stocarea datelor.

Bazei de date a locației web al ROMSTICOM i s-a atribuit denumirea generică ”ROMSTICOM”. Dat fiind definite atributele la etapa estimării bazei informaționale ale sistemului, ele trebuie grupate în entitități logice pentru aducerea schemei bazei de date la forma normală 3.

Interdependențele între entitățile bazei de date și conținutul entităților sunt arătate grafic în diagrama din figura capitolului 3.3.

Specificații fișiere și baze de date

BAZA DE DATE ACCES

Fișierele care fac parte din locația web se clasifică după destinația lor astfel:

fișiere de program – sunt fișierele cu extensia .php care conțin codul programelor care asigură funcționarea locației web ;

fișierele Bazei de Date – sunt fișierele ce conțin datele din tabelele bazei de date;

fișiere grafice care sunt folosite pentru a îmbunătăți grafica paginilor web. Toate aceste fișiere au extensia .gif și .jpg deoarece aceste formate permit compresia imaginilor, astfel se primesc fișiere de o mărime mai redusă care asigură o funcționare mai rapidă a sistemului.

Fișierele ce conținut codul programei sunt grupate pe mape reprezentând fiecare compartiment din meniurile locației web. În mapa de rădăcină se află următoarele fișiere:

index.html – este fișierul care se încarcă primul la lansarea aplicației, el conține macheta grafică a locației web. În dependență de acțiunile utilizatorului în el se includ alte fișiere ce conțin informațiile necesare utilizatorului;

main.php – acest fișier afișează produsele comercializate înregistrate în baza de date, la încărcarea paginii fără specificații se efectuează conexiunea cu baza de date și se afișează toate produsele disponibile;

log.php – lansarea acestui fișier va efectua logarea clienților, verificând datele introduse cu cele din baza de date;

Fișierele grafice se află în mapa image grupate în alte mape cu numele fiecărui modul unde sunt folosite.

Tabelele servesc drept bază în crearea meniului în timpul interacțiunii utilizator-sistem în regim de dialog.

Noțiuni teoretice

Marcarea informațiilor hipermedia folosind HTML

Tehnica tradițională de marcare a informațiilor pentru Web este reprezentată de clasicul limbaj HTML (HyperText Markup Language) care provine din SGML (Standard Generalized Markup Language), fiind apicație majoră a acestuia. Folosind o serie de marcatori (tag-uri), autorii de pagini web au posibilitatea de a structura conținutul și modul de prezentare a datelor textuale și a celor multimedia statice.

Un document Web poate fi identificat prin următoarele caracteristici fundamentale: structură, conținut și formă. Dacă forma de vizualizare este dependentă de programul de afișare a informațiilor conținute de acel document (de cele mai multe ori fiind vorba despre navigatorul web), structura și conținutul documentului trebuie să aibă un format general de reprezentare, pentru a se asigura portabilitatea și independența de platformă.

HTML nu este un limbaj de programare, ci unul declarativ, utilizând marcatori (tag-uri) descriptivi pentru definirea modului de prezentare și a structurii logice a unui anumit document hipertext. Termenul de marcaj poate fi definit ca orice acțiune de a interpreta în mod explicit un fragment de informație.

Termenul tehnic pentru textul marcat este element, acesta fiind văzut ca o componentă structurală a unui document. Fiecare element este specificat explicit prin inserarea unui marcaj la începutul lui (tag de început) și unul la sfârșitul lui (tag de sfârșit), ambele purtând numele asignat elementului. Astfel, forma unui element generic este <element>…</element>. Un element poate fi vid (nu conține nimic între tag-ul de început și cel de sfârșit), poate conține un text sau chiar alte elemente.

Un element poate accepta mai multe atribute, care descriu anumite proprietăți ale unei apariții particulare a unui element. Atributele vor apărea doar în cadrul tag-ului de start, nu și în tagul de sfârșit. Specificarea generică a unui atribut are forma atribut=”valoare”.

HTML oferă și posibilitatea de a genera simboluri speciale sau caractere din codul extins pentru alfabete ale unor limbi ca româna sau greaca, folosind entități. O entitate reprezintă o parte de text care are asociat un nume. Accesarea unei entități se realizează prin intermediul referințelor la entități, folosindu-se construcția sintactică &nume_entitate;. HTML oferă posibilitatea ca o referință la o entitate să fie specificată și prin codul numeric al caracterului respectiv, referința caracter fiind prefixată în acest caz de „&#”.

Deoarece limbajul HTML este descendent din SGML, fiecare versiune de HTML se conformează unei definiții formale stabilite de Consorțiul Web și reprezintă în fapt un tip de document SGML. Această definiție este denumită definiția tipului de document – DTD (Document Type Definition) .

Paginile Web marcate în HTML pot include ca primă linie o declarație a tipului de document (<!DOCTYPE HTML PUBLIC „ – / / W3C / / DTD HTML 4.01 STRICT / / EN>).

Fișierele HTML sunt fișiere ASCII obișnuite având extensia .html (sau .htm) și sunt divizate în două părți: antetul (head) și corpul (body).

Astfel, o pagina Web marcată cu tag-uri HTML are forma generală:

<html> <!– tag obligatoriu –>

<head> <!– inceput de antet –>

</head> <!– sfirsit de antet –>

<body> <!– inceput de corp –>

</body> <!– sfirsit de corp –>

</html> <!– sfirsit de document –>

De obicei între <head> și </head> apar definiții de rutine scrise în limbaje script (ca JavaScript), definiții de stiluri CSS ori meta-elemente pentru a fi siguri că sunt analizate și memorate de navigator (antetul este procesat primul).

În cadrul corpului pot apărea diverse tag-uri, grupate pe următoarele categorii:

Definirea stilului de afișare: <b> (îngroșat), <i> (înclinat), <u> (subliniat), <strong> (intensificat), <big> (mai mare), <small> (mai mic), <sub> (indice), <sup> (exponent), <font> (dimensiune și culoare font), <pre> (text preformatat), <code> (cod sursa), <center> (centrat);

Specificarea de titluri: <h1> … <h6>;

Definirea de secțiuni: <div> (diviziuni), <p> (paragrafe), <hr> (linie orizontală), <br> (trecere la linie nouă);

Crearea de liste: <ul> (listă nenumerotată), <ol> (listă numerotată), <li> (element de listă), <dir> (listă de directoare), <menu> (meniu);

Inserarea de imagini: <img>;

Definirea de tabele: <table> (început de tabel), <tr> (linie de tabel), <td> (definiție celulă), <th> (antet);

Specificarea de legaturi (ancore): <a>;

Definirea de formulare interactive: <form> (definiție), <input> (câmp de interogare), <textarea> (zonă de text), <button> (buton);

Definirea de cadre (frame-uri): <frameset> (definire), <frame> (cadru), <noframes>;

Acordarea de suport pentru alte limbaje: <applet>, <script>, <object>, <span>;

Suport multimedia: <embed> (extensie Netscape), <bgsound> (extensie Internet Explorer), <object>;

Definirea de metadate: <meta>;

Paginele web ale aplicației ROMSTICOM sunt pagini marcate cu tag-uri HTML, generate dinamic folosind PHP. Aplicația se folosește de mai multe formulare (definite folosind tag-urile: <form>, <input>, <textarea>, <button>) pentru a “interacționa” cu utilizatorul primind date și informații de la acesta.

Din acest motiv, în continuare voi realiza o prezentare succintă a modalităților de concepere a formularelor electronice în HTML.

Formularele pot varia de la o simplă casetă de text, pentru introducerea unui șir de caractere, până la o structură complexă, cu multiple opțiuni, oferind facilități puternice de transmisie a datelor.

Există numai două modalități prin care informațiile dintr-un formular pot fi transmise de la clientul web la serverul situat undeva pe internet. Atunci când se transmit informațiile cuprinse într-un formular și URL-ul de destinație include datele introduse, avem de-a face cu metoda numita "GET" sau cu un formular de tip "get" (se utilizează comanda GET a protocolului HTTP).

Alternativa este aceea în care atunci când se transmit informațiile dintr-un formular, URL-ul destinație arată perfect normal, fără alte elemente suplimentare adăugate la sfârșitul adresei web. În această a doua situație avem o metodă "POST" sau un formular de tip "post" (folosindu-se comanda POST a protocolului de transmisie HTTP).

Un formular HTML apare inclus în pagina Web prin intermediul elementului <form>, care are atributele obligatorii action=url și method=metoda. URL-ul indică fișierul sau aplicația aflată pe serverul Web care urmează să prelucreze informațiile din formular, iar metoda poate fi GET sau POST.

În cadrul marcajului <form> se pot include și alte tag-uri uzuale HTML, plus diverse taguri indicând modalități de introducere a datelor în cadrul formularului. În cea mai mare parte, toate câmpurile unui formular, destinate introducerii datelor, se specifică prin intermediul elementului <input> utilizându-se diferite atribute.

Atributele uzuale ale unui element <input> sunt următoarele:

type=opt indică tipul câmpului de introducere a datelor (text, password, checkbox, radio, hidden, submit, reset, etc);

name=nume furnizează numele câmpului, acest nume fiind folosit de către programul de prelucrare a formularului;

value=valoare conține valoarea implicită a câmpului de intrare;

checked=validar indică pentru un buton de selecție dacă acea opțiune este selectată implicit sau nu;

size=numar stabilește lățimea de afișare a unui câmp de date;

maxlenght=numar determină lungimea maximă a valorilor introduse de utilizatori într-un câmp de tip text.

Prezentarea documentelor hipertext prin CSS

Foi de stiluri în cascadă (Cascading Style Sheet) reprezintă un set de proprietăți care definesc modul de apariție a construcțiilor HTML în cadrul unui navigator web. Consorțiul Web a conceput și standardizat două niveluri ale foilor de stiluri:

CSS1 oferă un mecanism simplu care permite autorilor și utilizatorilor de pagini Web să atașeze acestora stiluri de afișare. Limbajul CSS1 este ușor de înțeles și folosit. Acesta exprimă stilurile conform terminologiei editării computerizate.

CSS2 reprezintă o generalizare (extensie) a primului nivel de foi de stiluri, aducând în plus facilități de moștenire a stilurilor, efecte vizuale, poziționări și paginări, integrarea mai multor tipuri de media (ex. suport pentru sunet).

Proprietățile de stil CSS oferă soluții a cel puțin două probleme cu care se confruntă creatorii documentelor HTML:

eliminarea redundanței stilurilor introduse în paginile web prin intermediul unor marcatori cum ar fi <font>;

îmbogățirea în termeni de design a paginilor Web.

Proprietățile CSS pot fi grupate în următoarele categorii:

proprietăți ale fonturilor: font-family, font-style, font-size etc;

proprietăți de fundal și culori: color, background-color, background-image, background-repeat, background-position etc;

proprietăți ale textului: letter-spacing, text-decoration, text-align, line-height etc;

proprietăți ale cutiilor de afișare: margin, padding, border etc;

proprietăți de poziționare a conținutului: top, left, width, height, position etc;

Într-un document (X)HTML, putem utiliza mai multe proprietăți de stil, fie importând-ule dintr-un fișier extern (desemnat de elemental <link>), fie definindu-le în antetul paginii (prin elemental <style>), ori direct în cadrul unui element (prin intermediul atributului style).

În aplicația ROMSTICOM proprietățile de stil sunt importate dintr-un fișier extern, în felul acesta, schimbarea interfeței utilizator a aplicației nu înseamnă decât scrierea unui nou fișier CSS cu proprietăți de stil modificate corespunzător. În acest sens, utilizatorului îi este oferită posibilitatea de a alege dintre mai multe stiluri de interfețe pe cea mai plăcută și “prietenoasă” pentru el.

Programarea web folosind JavaScript

JavaScript reprezintă nu numai un limbaj, ci un mediu complet, orientat obiect, disponibil în cadrul navigatorului Web. Limbajul este dezvoltat la origine de Netscape, permițând scrierea de secvențe de program care se execută la apariția unui eveniment utilizator și care sunt interpretate de către client (navigatorul Web). Evenimentele de obicei sunt rezultate ale acțiunilor utilizatorilor (de exemplu mișcarea mouse-ului).

Astfel, prin intermediul scripturilor pot fi definite metode care pot trata automat evenimentele sesizate de către navigatorul Web.

Ca și celelalte limbaje de programare JavaScript permite definirea de variabile, de diverse tipuri scalare sau compuse, folosirea de instrucțiuni (de atribuire, de test, de ciclare, de control), utilizarea obiectelor, conținând metode (funcții) predefinite sau descrise de programator. De asemenea JavaScript pune la dispoziție un set cuprinzător de clase predefinite care pot fi folosite atât pentru specificarea dinamicii conținutului paginilor Web, cât și pentru prelucrarea diverselor conținuturi (HTML, CSS, XML, etc).

Introducerea de cod sursă JavaScript în cadrul documentelor HTML se realizează prin intermediului tag-ului <SCRIPT>, putându-se specifica prin atributul language versiunea JavaScript în care se scriu programele. Astfel, este oferită posibilitatea de a scrie părți alternative de funcții JavaScript în funcție de navigator sau de versiunea de JavaScript.

Dezvoltarea de aplicații web dinamice folosind PHP

PHP-ul (PHP: Hypertext Processor) este un limbaj de scriptare open-source care rulează pe partea de server, fiind folosit pentru crearea paginilor web dinamice care necesită prezența unor aplicații web dinamice. Acestea sunt predominante în siturile de tip ecommerce, e-business sau e-school, unde conținutul este generat de datele accesate dintr-o bază de date sau de o altă sursă externă.

PHP (PHP: Hypertext Preprocessor), cunoscut în versiunile mai vechi și sub numele de PHP/FI (Personal HomePage/Form Interpreter), inițial a fost gândit a fi o simplă aplicație CGI pentru interpretarea formularelor definite prin HTML și procesate de un program scris într-un limbaj C, Perl, script shell, executat pe server. În cazul interfeței CGI aveam nevoie de permisiunea de a rula programe pe server, ceea ce conducea uneori la lacune în securitate și în plus la disocierea de documentul HTML a programului care procesa datele. Preprocesorul PHP va determina construcțiile PHP delimitate între tag-urile <?php ?> și le va interpreta, ignorând restul conținutului documentului pe care îl va trimite, la ieșirea standard, nealterat.

Astfel, putem privi analizorul PHP ca un script CGI care efectuează o preprocesare specială înainte ca datele să fie expediate clientului web. PHP-ul oferă soluții simple și universale care ușurează munca programatorului de a crea pagini web dinamice. Interfața intuitivă permite programatorilor să introducă comenzi PHP în paginile HTML.

Sintaxa PHP este compusă din concepte de Perl, Java și C. Structura sintaxei împrumută foarte mult din limbajul C, ceea ce îl face mult mai ușor de studiat, chiar și pentru programatorii începători. Designul elegant ușurează în mod semnificativ capacitatea de menținere și actualizare a aplicațiilor, decât scripturile scrise în alte limbaje.

Datorită faptului că este open-source, PHP-ul este distribuit unor categorii diverse de utilizatori, care se bucură de sprijinul unui grup uriaș de dezvoltători open-source. Comunitatea ajută utilizatorii în problemele tehnice pe care le întâmpină, iar erorile sunt găsite și remediate în timp util. Codul este actualizat în mod continuu, adăugându-se îmbunătățiri și extensii la limbajul PHP.

Dezvoltarea PHP-ului a început în 1994, când Rasmus Lerdorf dezvoltă prima versiune, ca proiect personal, folosind PHP-ul pentru a culege informații despre vizitatorii site-ului său. În scurt timp PHP-ul câștigă popularitate fiind folosit în dezvoltarea aplicațiilor web de către proeminente organizații ca Mitsubishi, Redhat, Der Spiegel, MP3-Lycos, Ericsson și NASA.

PHP este făcut public în debutul anului 1995 sub denumirea "Personal Home Page Tools", fiind considerat un analizor simplist care interpreta câteva macrouri ce puteau fi incluse în cadrul documentelor HTML, permițând contorizarea accesului la paginile web sau accesarea unei cărți de oaspeți (guestbook). Analizorul a fost rescris în mijlocul aceluiași an și denumit PHP/FI versiunea 2.0, unde FI (Form Interpreter) reprezenta o altă aplicație scrisă de Rasmus Lendorf, un interpretor de formulare HTML. A fost adăugat și suportul pentru bazele de date MySQL și astfel PHP/FI a început să aibă succes, fiind disponibil gratuit pe Web. La sfârșitul lui 1996, se estima că PHP/FI era utilizat de cel puțin 15000 de site-uri web, iar în anul 1997 numărul lor ajungea la 50 de mii. Programatorii Zeev Suraski și Andi Gutmans rescriu analizatorul PHP și noua aplicație formează nucleul versiunii PHP 3.0 care a inclus o parte dintre vechile surse de PHP/FI 2.0.

La începutul anului 2000, a fost făcută publică versiunea PHP 4.0, utilizând puternicul motor de scriptare Zend și oferind suport nu numai pentru serverul Apache, ci și pentru alte servere web .

PHP 4 este un limbaj de scripting accesibil din cadrul fișierelor HTML, având suport pentru manipularea bazelor de date într-un dialect SQL (dBASE, Informix, MySQL, mSQL, Oracle, PostgreSQL, Solid, Sybase, ODBC etc.), integrarea unor librării externe variate, care permit utilizatorului să facă orice, de la generarea documentelor PDF până la parsarea elementelor XML, și chiar editarea de filme în Flash. De asemenea, PHP 4.0 oferă posibilitatea accesării și procesării documentelor XML via DOM.

Un avantaj cheie, în comparație cu alte limbaje de scripting ca, de exemplu, ASP, este faptul că este un produs sub licență GPL( GNU Public License) și că nu depinde de platforma de operare, fiind convenabil pentru mediile heterogene ale rețelelor.

De asemenea, PHP suportă încărcarea fișierelor de pe calculatorul client, upload (standard propus de E.Nebel și L.Masinter de la Xerox, descris în RFC 1867), și oferă suport pentru cookies (mecanism de stocare a datelor în navigatorul client pentru identificarea utilizatorilor, propus de Netscape). Pentru programatorii ce folosesc sisteme Linux pe care rulează serverul Apache, PHP este o alegere naturală, dar acest limbaj funcționează foarte bine și pe platforme Unix sau Windows, cu programe server Netscape sau Microsoft Web.

Descriere generală

PHP permite folosirea unor elemente specifice limbajelor de programare. Ieșirea standard a script-ului PHP devine intrarea standard pentru programul de navigare care vizualizează pagina. Așadar, la ieșirea standard poate fi scris (de exemplu, prin intermediul comenzii echo) orice tip de cod HTML, acesta fiind interpretat de către borwser.

Pe lângă manipularea conținutului paginilor de web, PHP poate trimite headere HTTP pentru autentificare, poate seta cookie-uri sau redirecționa utilizatorii. Mai mult, cu ajutorul bibliotecilor externe de funcții poate parsa fișiere XML, crea și manipula imagini, animații Shokwave Flash, PDF-uri sau se poate conecta la un server de mail, iar acestea sunt doar câteva din funcțiile pe care le poate îndeplini.

Interpretorul PHP parcurge documentul accesat până în momentul în care întâlnește un marcaj de deschidere care indică faptul că textul care urmează trebuie interpretat ca fiind cod PHP. In continuare, textul este interpretat ca fiind cod PHP până în momentul în care este întâlnit marcajul de închidere. Întreg textul care nu este interpretat ca fiind cod PHP este furnizat la ieșire în forma în care a fost primit ca intrare de către interpretor. Există mai multe marcaje care indică începerea unei secvențe de cod PHP, doar două dintre ele fiind folosite de obicei. Dacă dorim ca documentul să respecte specificațiile XML, atunci singura posibilitate de inserare a codului PHP este folosirea unei secvențe de tipul:

<?php

//cod PHP

?>

Cea de-a doua posibilitate este utilizarea marcajului <SCRIPT> într-o manieră asemănătoare celei folosite pentru includerea de script-uri JavaScript. Sintaxa este următoarea:

<SCRIPT language = "php">

//cod PHP

</SCRIPT>

Este permisă "ieșirea" și "intrarea" in "modul PHP" ori de câte ori este necesar în pagină. Pentru ca instrucțiunile PHP sa fie interpretate corect trebuiesc separate prin caracterul ';'.

În PHP, comentariile pot fi inserate folosind sintaxele din C, C++ și shell-urile Unix. Apariția secvenței de caractere '//' sau a caracterului '#' indică faptul ca restul liniei reprezintă un comentariu. Pentru a insera comentarii pe mai multe linii, acestea trebuie delimitate de secvența /* */.

Programarea de orice fel, nu doar PHP, are două elemente de bază: datele și instrucțiunile. Pentru a lucra cu datele trebuie înțeles ce sunt variabilele și tipurile iar pentru a lucra cu instrucțiunile trebuie înțeles ce sunt structurile de control și funcțiile.

O variabilă este o zona de memorie căreia i se dă un nume pentru a putea fi recunoscută ulterior și pentru a ne putea referi mai târziu la ea. În PHP, o variabilă este reprezentată de semnul '$', urmat de numele variabilei. La fel ca în limbajele C/C++ sau Java, pentru denumirea variabilelor se face distincția între literele mari și literele mici.

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

Începând cu versiunea 4, au fost introduse referințele; astfel, o variabilă poate referi o altă variabilă, astfel încât modificarea valorii uneia duce la modificarea automată a valorii celeilalte. O referință la o variabilă este reprezentată de caracterul '&'.

În PHP o variabilă poate fi accesată doar în contextul în care a fost definită. De exemplu, o variabilă definită în interiorul unei funcții nu va putea fi accesată decât de instrucțiunile din interiorul acelei funcții. Mai mult, în mod implicit, o variabilă definită în exteriorul unei funcții nu va putea fi accesată în interiorul funcției. Pentru ca o funcție să aibă acces la o variabilă definită în afara ei, variabila trebuie redeclarată ca variabilă globală în interiorul funcției.

PHP oferă programatorilor o serie de variabile predefinite, cum ar fi:

$GLOBALS – pot fi accesate toate variabilele globale care sunt accesibile script-ului PHP curent; acest vector este indexat chiar prin numele variabilelor globale.

$SERVER – conține o serie de variabile ale căror valori sunt setate de server-ul Web; majoritatea valorilor variabilelor din acest vector depind de mediul de execuție al scriptului curent.

$_GET si $_POST conțin variabile primite de script prin intermediul unor transferuri care folosesc metodele HTTP get, respectiv post. De exemplu, prin intermediul acestor vectori pot fi accesate valorile câmpurilor dintr-un formular care a fost completat și transmis folosind una dintre cele două metode.

$_COOKIE conține valorile variabilelor ce conțin informații referitoare la cookie-urile păstrate pe calculatorul utilizatorului care accesează pagina Web.

$_FILES conține variabile primite de script prin intermediul încărcărilor de fișiere prin metoda POST.

$_ENV conține variabile disponibile prin intermediul mediului în care este executat.

$_SESSION conține variabile care corespund sesiunii curente a script-ului.

Variabilele pot fi de mai multe tipuri, nu doar numere. PHP are opt tipuri de variabile. Patru dintre acestea sunt tipuri scalare (boolean, integer, float și string), două sunt tipuri compuse (array și object), iar alte două sunt tipuri speciale (resource și null). De asemenea, din motive de lizibilitate, au fost introduse trei pseudotipuri: mixed, number și callback. Mai există și tipul double, dar semnificația acestuia este aceeași cu cea a tipului float. Cele două denumiri coexistă doar din motive "istorice". În PHP, de obicei, tipul unei variabile nu este specificat de către programator, ci este stabilit în timpul execuției în funcție de contextul în care este folosită variabila.

Interpretorul PHP permite folosirea a nouă tipuri diferite de operatori. Aceștia operează asupra unor expresii (una, două sau trei) și furnizează ca rezultat o altă expresie (rezultatul operației corespunzătoare):

Operatori aritmetici: “+”, “-“, “*”, “/”, “%”.

Operatori de comparare: “= =”, “!=”, “<”, “< =”, “>”, “<=”.

Operatori pentru șiruri de caractere: “.” pentru concaternare și “.=” pentru atribuirea concatenării.

Operatori pe biți si operatori logici: conjuncție ('&', AND), disjuncție ('|', OR), disjuncție exclusivă ('^', XOR), negație ('~', NOT), deplasare la stânga ('<<'), deplasare la dreapta ('>>'); ! (NOT), || (OR), && (AND).

Operatori de atribuire: '+=’, '*=', '%=', ,'|=' , '<<=' , '>>=', '.='.

Operatori de incrementare și decrementare: '++', '–'.

Operatori pentru controlul erorilor: '@' – permite ignorarea erorilor.

Operatori de execuție: interpretorul PHP permite executarea unor comenzi sistem prin intermediul operatorului "''".

Operatori pentru vectori: concatenare ('+').

Ca și alte limbaje de programare, PHP permite folosirea mai multor structuri de control cum ar fi:

if (condiție) instrucțiune, if (condiție) instructiune1

else instructiune2;

while (condiție) instrucțiune;

do instrucțiune while (condiție);

for (expresie1; expresie2; expresie3) instrucțiune;

foreach (expresie_vectoriala as $valoare)instrucțiune, foreach expresie_vectoriala as $cheie => $valoare) instrucțiune;

switch (expresie) {

case valoare1: grup instrucțiuni1

case valoare2: grup instrucțiuni2

case valoare n: grup instrucțiuni n

[default: grup instructiuni n + 1]

}

break, continue;

include, require, include_once, require_once.

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

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

// instructiuni

}

O funcție poate fi definită oriunde în cadrul script-ului și în interiorul unei funcții poate să apară orice secvență validă de cod care include definirea de alte funcții și definiții de clase. Argumentele unei funcții trebuie separate prin virgulă, și, implicit, acestea sunt transmise prin valoare. Pentru ca funcția sa returneze un rezultat se folosește construcția return care primește ca parametru o expresie care reprezintă valoarea funcției.

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

O facilitate a limbajului PHP este aceea că oferă programatorului posibilitatea de a utiliza funcții care au un număr nedeterminat de parametri sau variabile de tip funcție.

În aplicația ROMSTICOM este folosit limbajul PHP pentru vizualizarea, inserarea, organizarea datelor din baza de date.

Instrumente pentru crearea paginilor Web

Există o mulțime de modalități de creare a locațiilor web. Pentru realizarea acestora pot fi utilizate următoarele instrumente:

platforma Windows 2000/XP/7/8;

Web-server Apache sau alt server;

PHP4, ASP, SSL, CGI, HTML, Java, JavaScript;

MySQL, PostgreSQL, Oracle, Microsoft SQL Server sau alt SGBD;

Macromedia Dreamweaver, Macromedia Flash, MS Frontpage, Adobe Photoshop sau alt mediu de procesare text și grafică.

Instrumentele folosite sunt:

sistemul de operare: Windows 7;

web-server: Apache este o platformă foarte răspândită datorită siguranței în funcționare;

limbaj de programare: PHP este un limbaj de programare dinamică ce facilitează crearea legăturilor rapide și eficiente cu bazele de date, este un instrument foarte puternic de creare a paginilor web dinamice;

SGBD: MySQL oferă o comoditate în utilizare datorită funcțiilor predefinite în PHP de lucru cu MySQL;

editor HTML și PHP: Macromedia Dreamweaver, PHP Expert Editor oferă comoditate în utilizare recunoscând funcțiile de bază ale limbajului de programare PHP;

editor grafică: Adobe Photoshop, Macromedia Flash sunt comode în elaborarea interfeței grafice având o mulțime de filtre de prelucrare a imaginilor.

Ideea care a stat la baza creării locațiilor web a fost ca să fie posibilă amplasarea acestora din urmă pe orice portal de pe internet. În așa mod locația web reprezintă un modul integru care fiind instalat pe un nod din rețea va funcționa indiferent de platforma existentă. Astfel la crearea lui s-a ținut cont de faptul ca să ruleze pe un web server. Serverul web fiind configurat odată nu mai necesită modificări în afară de schimbarea path-lui discului logic unde este amplasată locația web. În calitate de web server a fost ales Apache deoarece el oferă o mulțime de facilități în ceea ce privește rularea corectă alocației web. După cum se știe majoritatea informației nu se păstrează în fișiere, ci în baze de date. Pentru crearea bazei de date s-a ales SGBD-ul MySQL dat fiind faptul că acest SGBD este special proiectat pentru a lucra pe web. Orice aplicație trebuie să poată să facă o legătură cu o BD pentru extragerea, scrierea și prelucrarea informației. Clientul prin intermediul exploratorului web trimite informație web serverului împreună cu indicarea programului care trebuie să prelucreze această informație. Web serverul primind informația, lansează programul necesar și transmite datele ca date inițiale pentru ea, apoi așteptă finisarea lucrului. Rezultatele finale web serverul le ia și le transmite clientului. A scrie o aplicație se poate în orice limbaj, principalul este ca serverul să poată corela cu ea.

Orice locație web creată, pe lângă faptul că trebuie să fie proiectată bine și comod în utilizare, este necesar ca să posede și o interfață plăcută, adică să aibă un aspect reușit. În acest scop a fost utilizat Macromedia Dreamweaver datorită facilităților sale de a lucra cu codul programului și concomitent a vedea rezultatul și Adobe Photoshop având o gamă largă de filtre necesare creării unor imagini reușite.

Prezentarea produsului software

Procesul tehnologic de funcționare a locației Web

Procesul tehnologic de prelucrare a informației (PTPI) prezintă un ansamblu de operații, realizate într-o continuitate strict determinată din clipa apariției datelor până la primirea definitivă a rezultatelor finale.

Schema generală de dialog a utilizatorului cu locația web, ce corespunde descrierii textuale a variantelor interpelării.. De asemenea se mai observă că de la orice nivel este posibilitate de-a revenire la cel precedent.

În procesul de dialog cu utilizatorul, inițierea conexiunii depinde de utilizator și începe cu afișarea paginii Web principale care este o operație predefinită. Apoi afișarea celorlalte pagini Web, procedura este că dacă dorești să vizualizezi pagina 1, o vizualizezi dacă nu, atunci te duci la al doilea meniu etc. Procedura de afișare a paginilor Web este identică pentru toate paginile.

Întreținerea, actualizarea și administrarea locației Web

Deseori se întâmplă ca accesând anumite site-uri informația de pe ele este de o vechime destul de mare, exprimându-se în unele cazuri și în ani. Desigur lucrul acesta nu este de loc favorabil, diminuând atractivitatea acestui site. Pentru ca site-ul creat să aibă succes și să atragă noi vizitatori, el trebuie întreținut și actualizat periodic. Pe baza statisticilor, s-a constatat că o pagină web neactualizată este interesanta o perioada medie de 60 de zile. De aceea, pentru a menține interesul vizitatorilor, un site web nu trebuie să fie static. Dacă nu se oferă informații noi sau resurse utile pentru vizitatori, ei nu vor avea nici un motiv să mai revină, iar site-ul își va pierde popularitatea.

Întreținerea și actualizarea unui site web se realizează din următoarele motive :

pentru îmbunătățirea proiectării și machetării;

pentru actualizarea sau adăugarea unor informații suplimentare;

pentru a răspunde comentariilor, cerințelor sau observațiilor vizitatorilor;

pentru a corecta erorile și problemele apărute în timpul proiectării.

Așadar și după începerea promovării site-ului web, nu trebuie neglijate cele două activități importante pentru obținerea succesului online :

întreținerea;

actualizarea.

Întreținerea

Pentru a realiza o întreținere eficientă a site-ului, se poate întocmi un plan de întreținere, etapizat în timp, care poate să conțină:

frecvența de actualizare;

îmbunătățiri sau modificările aduse;

informatii si resurse de actualitate;

comentariile sau recomandările vizitatorilor.

Este importantă îmbunătățirea permanentă a cunoștințelor privind realizarea și promovarea site-urilor web deoarece plasamentul în motoarele de căutare se schimbă permanent.

De asemenea, trebuie sa ne asiguram că site-ul web a fost înregistrat în toate directoarele importante.

Actualizarea

După ce site-ul a devenit operațional, este nevoie de actualizarea acestuia. Aceasta înseamnă că se pot îmbunătăți unele caracteristici și adăuga noi opțiuni, ca de exemplu:

forma de feedback pentru vizitatorii site-ului – o carte de oaspeți (guestbook );

legături și resurse folositoare, sfaturi sau informații recente;

listă de discuții gratuită (discussion list);

un numărător de pagină (counter).

Este necesar sa analizam cu atenție orice feedback primit de la vizitatori și sa răspundem la acesta cât mai curând posibil. Se poate de asemenea adăuga o pagină cu noutăți care să fie actualizată periodic.

Actualizarea se efectuează de administratorul site-lui. Administrarea trebuie să fie făcută de o persoană competitivă în domeniul dat. Persoana care va administra sit-ul va fi numită de directorul firmei.

Cheltuieli de realizare a locației Web

Elaborarea și implementarea produselor informatice implică cheltuieli esențiale, uneori considerabile, de resurse: umane, materiale, financiare. Pentru beneficiar justificarea acestor cheltuieli are o mare importanță. Eficiența economică caracterizează pe cât de reușite, din punct de vedere economic, sunt soluțiile propuse.

Crearea unei locații Web are, în primul rând, scopul de informare. Din punctul de vedere al realizării unor obiective economice, plasarea unei locații web necesită anumite cheltuieli legate de analiza, proiectarea, organizarea și implementarea lui. Ca urmare se pune întrebarea dacă aceste cheltuieli sunt sau nu justificate din punct de vedere economic. Determinarea eficienței economice presupune:

aprecierea cheltuielilor efectuate în stadiul de proiectare și implementare;

aprecierea efectelor economice ale funcționării.

Aprecierea cheltuielilor poate fi făcută prin sumarea cheltuielilor pe categorii în funcție de etapele de creare și exploatarea paginii care includ:

cheltuieli de elaborare;

cheltuieli pentru implementare;

cheltuieli de exploatare.

Cheltuielile de creare se compun din cheltuieli de investiții necesare pentru:

1.analiză, proiectare;

2.cheltuieli de transport-aprovizionare;

3.amenajarea spații necesare.

La etapa de exploatare se cer cheltuieli pentru întreținerea și actualizarea paginilor web:

retribuirea muncii;

uzura mijloacelor fixe;

întreținerea și exploatarea canalelor de transport date;

cheltuieli de regie;

cheltuieli materiale;

cheltuieli imprevizibile.

Cheltuielile apărute în stadiul de proiectare – implementare sunt acoperite din contul investițiilor inițiale. Cheltuielile de exploatare urmează a fi acoperite din contul utilității locației web în urma utilizării ei.

Efectele care se vor obține după implementarea paginii Web vor fi datorate în principal:

crearea și plasarea locației Web;

realizarea de soft specializat.

EFICIENTA SI UTILITATEA APLICATIEI INFORMATICE

În condițiile actuale în care activează întreprinderile din Bucuresti, concurența externă și internă se manifestă deja cu suficientă intensitate.

Deciziile ce țin de aprovizionare tehnico–materială și informațională pe care întreprinderile trebuie să le adopte în mod curent, sunt de foarte mare diversitate, volumul informațiilor pe care îl presupun, fiind imens.

Fundamentarea lor presupune o foarte riguroasă sistematizare a acestora și o bună cunoaștere a metodelor și instrumentelor cu ajutorul cărora informațiile sunt culese, prelucrate și valorificate.

De aceea este foarte importantă utilizarea noilor tehnologii de fundamentare a deciziilor în baza unor date reale, adecvate și primite în timp real.

De aceea e necesară elaborarea unei locații web ce ar informa potențialii clienți asupra noilor apariții în stocul de produse, despre eventualele promoții, reduceri etc. Locația web conține informații despre prețurile care le deține compania, potențialului cumpărător fiindu-i cu mult mai ușor să facă comparație în prețuri și stoc în mod on-line la mai multe magazine concomitent, problema reducîndu-se la atragerea vizitatorilor portalului fie prin prețurile mai joase, fie prin promoții.

În urma plasării locației web „ROMSTICOM SRL” pe Internet, orice persoană interesată va putea obține informații despre prețurile companiei și să facă cumpărături on-line.

Locația web „ROMSTICOM SRL” va fi plasată pe serverul personal al firmei și va putea fi accesată prin Internet pe adresa http://www.romsticom.ro.

bibliografie

Carti:

Lungu I., Sabau Gh: Sisteme informatice. Analiza, proiectare si implementare, Ed. Economica,Bucuresti, 2003

M.Moise: “Sisteme Informatice cu Baze de Date”, Editia a III-a, Ed. ProUniversitaria, 2008

Sistem informatic pentru managementul lantului logistic / Delia Adriana Mariancas/In revista amfiteatru economic/An 10 nr.24(2008)/ p.236-253

Vasilescu P., Dunca V.: Proiectarea sistemelor informatice, Ed. Tehnica, Buc., 1984

Curs de birotica/ Ionel Enache/ in perioada 2006

V. Chichernea, C. Botezatu, I. Iacob, C. Fabian R. Mihalca, S. Goron:Proiectarea sistemelor informatice. Metode de realizare, Ed. Sylvi, București 2001

C.Botezatu,G.Carutasu,D.Chetrariu: “Arhitectura calculatoarelor personale si sisteme de operare specifice”, Ed. ProUniversitaria, Buc 2006

Service orientated architectures –Anecesity of contemporary economy(Botezatu cornelia,Botezatu cezar,Carutasu George)

Vaduva I.: Sisteme informatice, Rep. Univ. Bucuresti, 1981

C.Botezatu:“Proiectarea sistemelor informatice.Metode sistemice.” Ed. ProUniversitaria, Buc 2005

M.Moise: “Sisteme Informatice cu Baze de Date”, Editia a III-a, Ed. ProUniversitara, 2008

Analiza și proiectarea sistemelor informationale economice, editura polirom, 1999(D . oprea)

Atanasiu A.: Sisteme informatice pentru unitati economice, Rep. Univ. Bucuresti, 1986 , Publisher: August 2010

Clare Chiurcher ; Beginning Database Design: From Novice to Professional , Publisher: January 2007 (ISBN-13: 978-1590597699)

C. Botezatu, Ionel Iacob: Proiectarea sistemelor informatice. Studii de caz pentru managementul activității unei societăți. Editura Universul Juridic, 2005

Proiectare sistemelor informatice Orientate pe obiecte , editura Prouniversalis , Bucuresti 2005(conf. univ. dr. Doinita Ciocarlan)

Baze de date , sistemul Access, editura ProUniversitar, Bucuresti(prof. univ.dr. Virgil Chichernea)

Andone I., Tugui Al. :Baze de date inteligente in managementul firmei, Ed. Dosoftei, Iasi, 1992

Oprean D.: Informatica de gestiune si manageriala, Ed. Eurounion, Oradea,1994

Publicatii online :

http://php.punctsivirgula.ro/

http://www.link-academy.com/Academy-PHP-WDevelopment_770_2_77_213.

http://thor.info.uaic.ro/~acf/java/Cristian_Frasinaru-Curs_practic_de_Java.pdf

anexe

add_product.php

<?php

//Include the common file

require('../common.php');

//Check if the user is logged in

if (!$authentication->logged_in() || !$authentication->is_admin()) header("Location: login.php");

//Categories

function categories($parent_id) {

global $db;

$categories = array();

foreach ($db->query("SELECT category_id, category_name FROM " . config_item('cart', 'table_categories') . " WHERE parent_id = '" . $parent_id . "' ORDER BY category_name ASC") as $value) {

$categories[] = array(

'category_id' => $value['category_id'],

'category_name' => get_path($value['category_id'])

);

$categories = array_merge($categories, categories($value['category_id']));

}

return $categories;

}

function get_path($category_id) {

global $db;

$result = $db->fetch_row_assoc("SELECT category_name, parent_id FROM " . config_item('cart', 'table_categories') . " WHERE category_id = '" . $category_id . "' ORDER BY category_name ASC");

if ($result['parent_id'])

return get_path($result['parent_id']) .' > '. $result['category_name'];

else

return $result['category_name'];

}

//Check if the form has been submitted

if (isset($_POST['submit'])) {

$validate->required($_POST['category_id'], 'Select category.');

$validate->required($_POST['product_name'], 'Enter product name.');

$validate->numeric($_POST['product_price'], 'Please enter a valid number for price.');

$validate->numeric($_POST['product_quantity'], 'Please enter a valid number for quantity.');

if (isset($_POST['digital_good'])) {

$validate->numeric($_POST['expiry'], 'Please enter a valid number for the product expiration.');

if (empty($_FILES['file']['name']))

$error->set_error('Please select product file.');

}

if (!empty($_FILES['image']['name'])) {

$image = $upload->upload_image('image', config_item('upload', 'max_width'), config_item('upload', 'max_height'));

$thumb = $upload->upload_image('image', config_item('upload', 'max_width_thumbnail'), config_item('upload', 'max_height_thumbnail'), config_item('upload', 'crop_thumbnail'));

}

if ($_FILES['file']['name'])

$file = $upload->upload_file('file');

if (!$error->has_errors()) {

$quantity = 0;

if (isset($_POST['product_option'])) {

foreach ($_POST['product_option'] as $product_option) {

foreach ($product_option['product_option_value'] as $product_option_values) {

$quantity += $product_option_values['quantity'];

}

}

} else {

$quantity = $_POST['product_quantity'];

}

$values = array(

'product_name' => $_POST['product_name'],

'product_description' => $_POST['product_description'],

'product_price' => $_POST['product_price'],

'product_quantity' => $quantity,

'shipping' => $_POST['shipping']

);

if (isset($image)) {

$values['product_image'] = $image;

$values['product_thumbnail'] = $thumb;

}

$db->insert(config_item('cart', 'table_products'), $values);

$product_id = $db->last_insert_id();

$values = array(

'product_id' => $product_id,

'category_id' => $_POST['category_id']

);

$db->insert(config_item('cart', 'table_category_products'), $values);

if (isset($_POST['product_option'])) {

foreach ($_POST['product_option'] as $product_option) {

$values = array(

'product_id' => $product_id,

'option_name' => $product_option['name'],

'position' => $product_option['position']

);

$db->insert(config_item('cart', 'table_product_options'), $values);

$option_id = $db->last_insert_id();

if (isset($product_option['product_option_value'])) {

foreach ($product_option['product_option_value'] as $product_option_values) {

$values = array(

'option_id' => $option_id,

'product_id' => $product_id,

'option_value' => $product_option_values['value'],

'option_price' => $product_option_values['price'],

'option_quantity' => $product_option_values['quantity'],

'option_type' => $product_option_values['type'],

'position' => $product_option_values['position']

);

$db->insert(config_item('cart', 'table_product_option_values'), $values);

}

}

}

}

if (isset($_POST['digital_good'])) {

$values = array(

'product_id' => $product_id,

'date_added' => time()

);

if ($_FILES['file']['name']) {

$values['display_filename'] = $file;

$values['filename'] = $file;

}

if ($_POST['expiry_type'] == 'days')

$values['number_days'] = $_POST['expiry'];

if ($_POST['expiry_type'] == 'downloads')

$values['number_downloadable'] = $_POST['expiry'];

$db->insert(config_item('cart', 'table_digital_goods'), $values);

}

if (isset($_FILES['product_image'])) {

$files = array();

foreach ($_FILES['product_image'] as $key => $values) {

foreach ($values as $i => $value)

$files[$i][$key] = $value;

}

foreach ($files as $file) {

if (!empty($file['name'])) {

$image = $upload->upload_image($file, config_item('upload', 'max_width'), config_item('upload', 'max_height'));

$thumb = $upload->upload_image($file, config_item('upload', 'max_width_thumbnail'), config_item('upload', 'max_height_thumbnail'), config_item('upload', 'crop_thumbnail'));

$values = array(

'product_id' => $product_id,

'image' => $image,

'thumbnail' => $thumb

);

$db->insert(config_item('cart', 'table_product_images'), $values);

}

}

}

$tpl->set('success', true);

}

}

//Display the template

$tpl->display('admin/add_product');

?>

add_category.php

<?php

//Include the common file

require('../common.php');

//Check if the user is logged in

if (!$authentication->logged_in() || !$authentication->is_admin()) header("Location: login.php");

//Returns the number of rows

$row_count = $db->row_count("SELECT product_id FROM " . config_item('cart', 'table_products') . " WHERE product_id = '" . $_GET['product_id'] . "'");

//Product details

$product_details = array();

foreach ($db->query("SELECT * FROM " . config_item('cart', 'table_products') . " p, " . config_item('cart', 'table_category_products') . " cp WHERE p.product_id = cp.product_id AND p.product_id = '" . $_GET['product_id'] . "'") as $row)

$product_details[] = $row;

//Digital goods

$digital_goods = $db->fetch_row_assoc("SELECT * FROM " . config_item('cart', 'table_digital_goods') . " WHERE product_id = '" . $_GET['product_id'] . "'");

//Categories

function categories($parent_id) {

global $db;

$categories = array();

foreach ($db->query("SELECT category_id, category_name FROM " . config_item('cart', 'table_categories') . " WHERE parent_id = '" . $parent_id . "' ORDER BY category_name ASC") as $value) {

$categories[] = array(

'category_id' => $value['category_id'],

'category_name' => get_path($value['category_id'])

);

$categories = array_merge($categories, categories($value['category_id']));

}

return $categories;

}

function get_path($category_id) {

global $db;

$result = $db->fetch_row_assoc("SELECT category_name, parent_id FROM " . config_item('cart', 'table_categories') . " WHERE category_id = '" . $category_id . "' ORDER BY category_name ASC");

if ($result['parent_id'])

return get_path($result['parent_id']) .' > '. $result['category_name'];

else

return $result['category_name'];

}

//Check if the form has been submitted

if (isset($_POST['submit'])) {

$validate->required($_POST['product_name'], 'Enter product name.');

$validate->numeric($_POST['product_price'], 'Please enter a valid number for price.');

$validate->numeric($_POST['product_quantity'], 'Please enter a valid number for quantity.');

if (isset($_POST['digital_good'])) {

$validate->numeric($_POST['expiry'], 'Please enter a valid number for the product expiration.');

if ($db->row_count("SELECT digital_good_id FROM " . config_item('cart', 'table_digital_goods') . " WHERE product_id = '" . $_GET['product_id'] . "'") == 0) {

if (empty($_FILES['file']['name']))

$error->set_error('Please select product file.');

}

}

if ($_FILES['image']['name']) {

$result = $db->fetch_row_assoc("SELECT product_image, product_thumbnail FROM " . config_item('cart', 'table_products') . " WHERE product_id = '" . $_POST['product_id'] . "'");

if ($result['product_image']) {

@unlink(config_item('upload', 'upload_path') . 'images/' . $result['product_image']);

@unlink(config_item('upload', 'upload_path') . 'images/' . $result['product_thumbnail']);

}

$image = $upload->upload_image('image', config_item('upload', 'max_width'), config_item('upload', 'max_height'));

$thumb = $upload->upload_image('image', config_item('upload', 'max_width_thumbnail'), config_item('upload', 'max_height_thumbnail'), config_item('upload', 'crop_thumbnail'));

}

if ($_FILES['file']['name']) {

$result = $db->fetch_row_assoc("SELECT filename FROM " . config_item('cart', 'table_digital_goods') . " WHERE product_id = '" . $_POST['product_id'] . "'");

if ($result['filename'])

@unlink(config_item('upload', 'upload_path') . 'files/' . $result['filename']);

$file = $upload->upload_file('file');

}

if (!$error->has_errors()) {

$quantity = 0;

if (isset($_POST['product_option'])) {

foreach ($_POST['product_option'] as $product_option) {

foreach ($product_option['product_option_value'] as $product_option_values) {

$quantity += $product_option_values['quantity'];

}

}

} else {

$quantity = $_POST['product_quantity'];

}

$values = array(

'product_name' => $_POST['product_name'],

'product_description' => $_POST['product_description'],

'product_price' => $_POST['product_price'],

'product_quantity' => $quantity,

'shipping' => $_POST['shipping']

);

if (isset($image)) {

$values['product_image'] = $image;

$values['product_thumbnail'] = $thumb;

}

$where = array(

'product_id' => $_POST['product_id']

);

$db->where($where);

$db->update(config_item('cart', 'table_products'), $values);

$where = array(

'product_id' => $_POST['product_id']

);

$db->where($where);

$db->delete(config_item('cart', 'table_category_products'));

$values = array(

'product_id' => $_POST['product_id'],

'category_id' => $_POST['category_id']

);

$db->insert(config_item('cart', 'table_category_products'), $values);

$where = array(

'product_id' => $_POST['product_id']

);

$db->where($where);

$db->delete(config_item('cart', 'table_product_options'));

$db->delete(config_item('cart', 'table_product_option_values'));

if (isset($_POST['product_option'])) {

foreach ($_POST['product_option'] as $product_option) {

$values = array(

'product_id' => $_POST['product_id'],

'option_name' => $product_option['name'],

'position' => $product_option['position']

);

$db->insert(config_item('cart', 'table_product_options'), $values);

$option_id = $db->last_insert_id();

if (isset($product_option['product_option_value'])) {

foreach ($product_option['product_option_value'] as $product_option_values) {

$values = array(

'option_id' => $option_id,

'product_id' => $_POST['product_id'],

'option_value' => $product_option_values['value'],

'option_price' => $product_option_values['price'],

'option_quantity' => $product_option_values['quantity'],

'option_type' => $product_option_values['type'],

'position' => $product_option_values['position']

);

$db->insert(config_item('cart', 'table_product_option_values'), $values);

}

}

}

}

if (isset($_POST['digital_good'])) {

if ($db->row_count("SELECT digital_good_id FROM " . config_item('cart', 'table_digital_goods') . " WHERE product_id = '" . $_POST['product_id'] . "'") > 0) {

$result = $db->fetch_row_assoc("SELECT digital_good_id, display_filename, filename, date_added FROM " . config_item('cart', 'table_digital_goods') . " WHERE product_id = '" . $_POST['product_id'] . "'");

$values = array(

'product_id' => $_POST['product_id'],

'date_added' => $result['date_added']

);

if ($_FILES['file']['name']) {

if ($result['filename'])

@unlink(config_item('upload', 'upload_path') . 'files/' . $result['filename']);

$values['display_filename'] = $file;

$values['filename'] = $file;

} else {

$values['display_filename'] = $result['display_filename'];

$values['filename'] = $result['filename'];

}

if ($_POST['expiry_type'] == 'days')

$values['number_days'] = $_POST['expiry'];

if ($_POST['expiry_type'] == 'downloads')

$values['number_downloadable'] = $_POST['expiry'];

$db->insert(config_item('cart', 'table_digital_goods'), $values);

$where = array(

'digital_good_id' => $result['digital_good_id']

);

$db->where($where);

$db->delete(config_item('cart', 'table_digital_goods'));

} else {

$values = array(

'product_id' => $_POST['product_id'],

'date_added' => time()

);

if ($_FILES['file']['name']) {

$values['display_filename'] = $file;

$values['filename'] = $file;

}

if ($_POST['expiry_type'] == 'days')

$values['number_days'] = $_POST['expiry'];

if ($_POST['expiry_type'] == 'downloads')

$values['number_downloadable'] = $_POST['expiry'];

$db->insert(config_item('cart', 'table_digital_goods'), $values);

}

} else {

if ($db->row_count("SELECT digital_good_id FROM " . config_item('cart', 'table_digital_goods') . " WHERE product_id = '" . $_POST['product_id'] . "'") > 0) {

$result = $db->fetch_row_assoc("SELECT filename FROM " . config_item('cart', 'table_digital_goods') . " WHERE product_id = '" . $_POST['product_id'] . "'");

if ($result['filename'])

@unlink(config_item('upload', 'upload_path') . 'files/' . $result['filename']);

$where = array(

'product_id' => $_POST['product_id']

);

$db->where($where);

$db->delete(config_item('cart', 'table_digital_goods'));

}

}

if (isset($_FILES['product_image'])) {

$files = array();

foreach ($_FILES['product_image'] as $key => $values) {

foreach ($values as $i => $value)

$files[$i][$key] = $value;

}

foreach ($files as $file) {

if (!empty($file['name'])) {

$image = $upload->upload_image($file, config_item('upload', 'max_width'), config_item('upload', 'max_height'));

$thumb = $upload->upload_image($file, config_item('upload', 'max_width_thumbnail'), config_item('upload', 'max_height_thumbnail'), config_item('upload', 'crop_thumbnail'));

$values = array(

'product_id' => $_POST['product_id'],

'image' => $image,

'thumbnail' => $thumb

);

$db->insert(config_item('cart', 'table_product_images'), $values);

}

}

}

$session->set('success', true);

header('Location: products.php');

}

}

//Check download

if (isset($_GET['download'])) {

$result = $db->fetch_row_assoc("SELECT filename, display_filename FROM " . config_item('cart', 'table_digital_goods') . " WHERE digital_good_id = '" . $_GET['digital_good_id'] . "'");

if (!headers_sent()) {

if (file_exists(config_item('upload', 'upload_path') . 'files/' . $result['filename'])) {

@ini_set('zlib.output_compression', 'Off');

header('Content-Description: File Transfer');

header('Content-Type: application/octet-stream');

header('Content-Disposition: attachment; filename=' . $result['display_filename']);

header('Content-Transfer-Encoding: binary');

header('Expires: 0');

header('Cache-Control: must-revalidate, post-check=0, pre-check=0');

header('Pragma: public');

header('Content-Length: ' . filesize(config_item('upload', 'upload_path') . 'files/' . $result['filename']));

$file = readfile(config_item('upload', 'upload_path') . 'files/' . $result['filename'], 'rb');

print($file);

} else {

exit('Error: Could not find file.');

}

} else {

exit('Error: Headers already sent out.');

}

}

//Check if the form has been submitted

if (isset($_GET['delete_image']) && isset($_GET['image_id'])) {

$result = $db->fetch_row_assoc("SELECT image, thumbnail FROM " . config_item('cart', 'table_product_images') . " WHERE image_id = '" . $_GET['image_id'] . "'");

if ($result['image'])

@unlink(config_item('upload', 'upload_path') . 'images/' . $result['image']);

if ($result['thumbnail'])

@unlink(config_item('upload', 'upload_path') . 'images/' . $result['thumbnail']);

$where = array(

'image_id' => $_GET['image_id']

);

$db->where($where);

$db->delete(config_item('cart', 'table_product_images'));

header("Location: edit_product.php?product_id=" . $_GET['product_id']);

}

//Template values

$tpl->set('row_count', $row_count);

$tpl->set('product_details', $product_details);

$tpl->set('digital_goods', $digital_goods);

//Display the template

$tpl->display('admin/edit_product');

?>

Similar Posts