. Tehnologii Web

CUPRINS

Introducere

1.1 Motivația și descrierea temei

Datorită implicării tot mai accentuate a calculatoarelor în multe domenii de activitate, sfera problemelor rezolvate cu ajutorul calculatorului s-a extins foarte mult.

A apărut astfel o specializare a programelor (pachetelor de programe), orientate spre rezolvarea diverselor tipuri de probleme: matematice, tehnice, economice, de proiectare, de gestiune, etc.

În prezent aproape jumătate de miliard din populația globului are acces la Internet.

Site-urile care oferă produse sau servicii sunt într-o continuă creștere. Utilizatorii tind să prefere rezervări on-line datorită comodității de a se folosi de anumite servicii fără efort sau deplasare.

Tema „Site pentru pensiunea”Calipso” oferă vizitatorilor și clienților companiei informații foarte clare și bine structurate, înglobate într-un design prietenos, elegant și reprezentativ, punând la dispoziția acestora o serie de instrumente și facilități online.

Prezența în spațiul virtual oferă o promovare suplimentară a firmei, și anume: clienții au acces la informații oricând și oriunde, este permisă o prezentare în detaliu a serviciilor oferite. Această aplicație reprezintă o investiție atât în imaginea firmei, cât și un mijloc important de dezvoltare a afacerii.

Aplicația conține trei părți : cea de vizitator, cea de utilizator și cea de administrator.

Vizitatorul :

poate să se informeze despre serviciile și facilitățile oferite de Pensiunea Calipso.

poate să efectueze rezervări și să opteze pentru un anumit tip de cameră (simplă, dublă, apartament).

după ce și-a ales tipul de cameră o poate închiria începând cu ziua curentă sau o poate rezerva în ce perioadă a anului dorește.

se poate informa cu privire la datele de contact ale societății.

Utilizatorul este recepționerul care are doar anumite drepturi de acces asupra bazei de date. El este restricționat în permisiuni Are dreptul de a vizualiza datele, de a introduce noi date despre clienți și rezervări, dar nu poate șterge datele existente.

Administratorul gestionează întreaga bază de date și asigură buna desfășurare a activităților din cadrul pensiunii. El are drepturi depline asupra bazei de date: poate citi date, insera, sterge, vizualiza, modifica atât datele, cât și formele aplicației, prin intermediul unei parole de administrator.

Obiective

Se urmărește posibilitatea de a vizita site-ul de către orice posibil client.

Posibilitatea de a efectua rezervări .

Posibilitatea de a afla informații despre pensiune, despre datele de contact ale societății.

Securitatea și gestionarea bazei de date.

1.2 Tehnologiile utilizate

HTML (Hyper Text Markup Language) este un limbaj din cadrul SGML (Standard Generalized Markup Language), el constituind limbajul gazdă în care sunt încapsulate obiectele și aplicațiile pe Internet. HTML nu este un limbaj de programare propriu-zis, ci mai degrabă un sistem pentru descrierea modului de afișare a elementelor din pagină și de stabilire a legăturilor cu alte documente. Fiecare document Web hipertext este publicat fie în HTML, fie în SGML.

Toate paginile web sunt realizate prin intermediul HTML, dar acesta nefiind un limbaj de programare, trebuie căutate alte tehnologii care să permită acest lucru.

Îmbunătățirea spectaculoasă a aspectului și funcționalității paginii Web se poate obține prin introducerea în codul HTML a unor succesiuni de comenzi scrise în limbaje de programare cum ar fi JavaScript, Controale ActiveX, sau prin introducerea unor elemente de prezentare dinamice, animate create cu programe specializate cum ar fi : Macromedia Flash .

JavaScript furnizează un set complet de comenzi și funcții construite chiar în interiorul sursei HTML. Acest limbaj nu necesită un compilator extern, execuția codului realizându-se automat de către browser.

ActiveX este o tehnologie introdusă și extinsă de Microsoft, prin care sunt implementate controale ce pot fi integrate în aplicații, inclusiv în paginile Web. Controalele ActiveX sunt o alternativă la aplicațiile Java, denumite generic obiecte și pot fi înglobate în pagini Web și configurate. Acestea pot fi elemente de diverse tipuri: imagini, controale, elemente video etc.

Macromedia Flash acest editor este conceput pentru a construi pagini Web interactive și animate. Flash are un set de instrumente de desen bine echipat și un limbaj de scriptare orientat pe obiecte, care, în combinație, pot fi utilizate pentru a crea interfețe atrăgătoare.

PHP este 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. PHP oferă posibilitatea de a lucra cu baze de date, lucru absolut necesar în realizarea acestui site.

Ca și sistem de gestionare a bazelor de date s-a folosit MySQL, împreuna cu limbajul de interogare SQL.

1.3 Comerțul electronic

În ultimul deceniu , Internetul a evoluat într-o unealtă formidabilă având un impact major în toate aspectele vietii . La fiecare jumătate de an apar schimbări așa de importante încat este imposibil de prevăzut unde se va ajunge în următorii 10 ani .

În prezent , participăm cu toții la o revoluție care are loc în comerț și telecomunicații . Marile companii ale secolului își vor avea originile în această decadă

Conform unor statistici , utilizatorul tipic de Internet este american (84%) , alb (87%) , vorbitor de limba engleza (93%) , în vârstă de 35 de ani, educat și având un salariu bun .

Comerțul electronic (Electronic commerce sau E-commerce în engleză, pe scurt EC) este demersul de cumpărare prin intermediul transmiterii de date la distanță, demers specific politicii distributive a marketingului. Prin intermediul internetului se dezvoltă o relație de schimb și servicii între ofertant și viitor cumparător. Termenul de Electronic Business a fost făcut popular în anul 1990, printr-o campanie publicitară a companiei IBM.

Într-o altă accepțiune: Comerțul electronic (E-commerce) reprezintă vânzarea și comercializarea bunurilor și serviciilor prin intermediul tehnologiilor oferite de Internet.

Comerțul electronic reprezintă un schimb electronic de informatii între o afacere și clienții săi, constitutind una din cele mai viziblie fațete ale afacerilor pe web. Aceasta se poate face prin fax, telefon, voice-mail, email, extranet sau Internet, pentru a enumera doar câteva dintre mijloace.

O definiție interesantă a ceea ce înseamna comerțul electronic este dată de dl. Victor-Valeriu Patriciu în articolul Sisteme electronice de plăti :

" Comerț electronic înseamna, în accepțiune "tradiționala", utilizarea în retele cu valoare adaugata a unor aplicații de tipul transferului electronic de documente (EDI), a comunicațiilor fax, codurilor de bare, transferului de fișiere și a poștei electronice.

Extraordinara dezvoltare a interconectivitatii calculatoarelor în Internet, în toate segmentele societatii, a condus la o tendință tot mai evidentă a companiilor de a folosi aceste rețele în aria unui nou tip de comert, comerțul electronic în Internet, care să apeleze – pe lânga vechile servicii amintite – si altele noi.

Este vorba, de exemplu, de posibilitatea de a se efectua cumpărături prin rețea, consultând cataloage electronice "on" pe Web sau cataloage "off" pe CD-ROM si plătind prin intermediul cărtilor de credit sau a unor portmonee electronice.
Pentru alții, comerțul Internet reprezinta relațiile de afaceri care se deruleaza prin rețea între furnizori si clienti, ca o alternativa la variantele de comunicatii "tradiționale" prin fax, linii de comunicații dedicate sau EDI pe rețele cu valoare adaugata.În fine, o alta forma a comerțului Internet implică transferul de documente – de la contracte sau comenzi pro formă, pâna la imagini sau înregistrari vocale. "

O altă defințtie a comerțului electronic și a componentelor ce constituie arhitectura acestuia este dată de dl . Mircea Cioata in articolul Plati electronice :

Comerțul electronic (E-commerce) este acea manieră de a conduce activitățile de comerț care folosește echipamente electronice pentru a mări aria de acoperire (locul în care se pot afla potențialii clienți) și viteza cu care este livrată informatia.EC oferă oportunitatea de a comercializa produse în întreaga lume, sporind numărul de potențiali clienți în primul rând prin eliminarea barierelor geografice dintre clienți și comercianți.

Beneficiile comerțului electronic

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

Beneficii pentru firme

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

Asigurarea unei deschideri de 360° în privința relațiilor cu clienții, definită ca o asigurare a faptului că toți angajații, ofertanții și partenerii au o imagine completă, aceea a clientului.

Scăderea costului de creare, procesare, distribuire, păstrare și găsire a informației bazată pe hârtie prin crearea unei pagini web atractive, a unui magazin virtual. Siturile web personalizate, sugestiile pentru cumpărare și ofertele speciale personalizate pot într-o oarecare măsură substitui interacțiunile de tip față în față, de tip tradițional;

Creează posibilitatea modelării produselor și serviciilor pe nevoile cumpărătorilor și simplificarea procedurilor;

Costuri de comunicație mai mici.

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

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

Construirea unui lanț valoric electronic, în care să se pună 7orrect77 pe un număr limitat de competențe nucleu – opusul unui magazin cu o singură oprire. (Magazinele electronice pot fi speciale sau generale, dacă sunt programate corect.)

Beneficii pentru consumatori

Posibilitatea consumatorilor să cumpere sau să facă tranzacții 24 h/zi, în tot timpul anului din aproape orice locație;

Acordă consumatorilor mai multe posibilități de alegere a produselor și prețurilor;

Consumatorilor li se dă siguranță asupra valorii. Vânzătorii pot realiza acest lucru, oferind un produs sau o linie de produse care atrage potențialii clienți prin prețuri competitive, ca și în comerțul ne-electronic;

Permite o livrare rapidă a produselor și/sau serviciilor (în anumite cazuri);

Consumatorii pot să primească informații relevante în secunde, și nu în zile sau săptămâni;

Asigurarea motivației consumatorilor de a cumpăra și de a returna. Vânzările promoționale pot implica cupoane, oferte speciale sau reduceri. Link-urile de pe alte situri web și programele afiliate de reclame pot fi de asemenea de ajutor;

Face posibilă participarea în licitații virtuale;

Îndemnarea consumatorilor la consum. Comercianții prin intermediul internetului pot asigura acest tip de ajutor printr-o amplă informare comparativă și prin facilități bune de căutare;

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

Facilitează competiția, ceea ce rezultă în scăderea prețurilor.

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

Beneficii pentru societate

Asigurarea simțului comunității prin chaturi, forumuri ce solicită implicarea clientului, scheme de loialitate și programe de afinitate;

Dă posibilitatea mai multor persoane să lucreze de acasă și să cumpere de acasă ceea ce rezultă în trafic mai mic pe străzi și poluare scazută a aerului;

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

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

Pune la dispoziție o organizare suficient de atentă și agilă, pentru a răspunde rapid la orice schimbări din mediul economic,a orice schimbări din mediul economic, social și fizic.

Avantajele comerțului electronic

1.Promovarea produsului: – se poate realiza printr-un contact direct si interactiv cu

clienții; primul avantaj fiind posibiliatatea de a oferi informatii recente si ample despre produs.

2.Noi canale de vânzare :- produsele existente pot fi livrate pe o arie largă fără a mai fi nevoie de intreținut un magazin cu existeță fizică.

3.Economii la vânzarea /cumpărarea produsului: – generate de suprimarea costului deplasării până la vânzător, eliminarea cheltuielilor necesare pentru a intreține un magazin clasic, reducerea timpului afectat tranzacției, etc.

4.Timpul redus de acces la produs :- este un avantaj pentru servicii cu un ciclu de viată scurt (știrile).

5.Service mai bun pentru clienți:- consultanța poate fi disponibilă non-stop, relațiile

interumane fiind mai strânse;

6.Marca și imaginea corporației pot fi mai ușor modelate: – acestea sunt importante

mai ales când clienții folosesc tehnologii avansate (b2b);

7.Adaptarea la shimbari:- poate fi mai rapid și mai facil efectuată atunci când firma

este deja la curent și utilizează cele mai noi tehnologii ale comerțului electronic;

8.Îmbunatatirea relațiilor cu clienții: – fiecare client trebuie să se simtă apreciat,

remarcat dezvoltandu-se relatii 1-la-1;

9.Dezvoltarea de noi produse:- se poate realiza în concordanță cu cerințele consumatorului, clienții pot afecta direct design-ul unui nou produs,vizualizându-l cu ajutorul CP. Monitorizând atitudinile clienților, firma poate obține informații prețioase despre proiectarea noilor produse sau îmbunătățirea celor vechi;

10.Noi modele de afaceri: – pot fi considerate vânzarea de informatii pentru experții

în finanțe ori alte domenii.

Problemele comerțului electronic

Asistență: – gradul de informații referitoare la un produs poate fi insuficient;

Fiabilitate si credibilitate: – punctul cheie este ca multutudinea de date pe web, pe care le poate accesa oricine, să se transforme în informatii ce vor deveni ulterior cunoaștere.

Din cauza timpului scurt de exitență sau a dinamicității ridicate, datele se permizeaza foarte rapid, lipsand mecanismele necesare unei analize de termen lung.

Există o lipsă de standarde universal acceptate pentru calitate, securitate și încredere.

Uneltele de dezvoltare software sunt înca în plina evoluție.

Accesul Internet este înca scump și/sau inoportun. 

Componentele arhitecturii unui sistem de comerț electronic

Pentru a construi un sistem de E-commerce, din punct de vedere arhitectural este nevoie de colaborarea a patru componente (subsisteme electonice/informatice) corespunzatoare urmatoarelor roluri:

(a) Client. Un echipament, clasic un PC, conectat direct (via un ISP) sau indirect (o rețea a unei corporatii) la Internet. Cumpărătorul folosește acest echipament pentru a naviga și a face cumparaturi.

(b) Comerciant. Sistem informatic (hard & soft), situat de regulă la sediul comerciantului, care găzduiește și actualizează catalogul electronic de produse disponibile a fi comandate on-line pe Internet.

(c) Sistemul tranzacțional. Sistemul informatic (hard & soft) responsabil cu procesarea comenzilor, inițierea plaților, evidența înregistărilor și a altor aspecte de business implicate in procesul de tranzacționare.

(d) Dispecer plati. (Payment Gateway). Sistem informatic responsabil cu rutarea instrucțiunilor de plată în interiorul rețelelor financiar-bancare, cu verificarea carților de credit si autorizarea plăților; acest sistem joacă rolul unei porți care face legătura dintre rețeaua globală Internet și subrețeaua financiar-bancară (supusă unor cerințe de securitate sporite), poarta prin care accesul este controlat de un "portar" (gatekeeper); pe baza informațiilor specifice cărții de credit (tip_card, nr_card) din instrucțiunile de plată "portarul" redirectează informatia către un centru de carduri (CC – un server certificat în acest scop și agreat de banca emitentă); în acest loc este identificată banca care a emis cardul iar instructiunile de plată sunt trimise mai departe către serverul acestei bănci conectat în rețeaua interbancară; odata informațiile ajunse în rețeaua băncii cu care lucrează cumpărătorul, sunt efectuate (automat) o serie de verificari privind autenticitatea și soldul disponibil în contul cardului implicat în tranzacție; în funcție de rezultatul acestor verificari, banca decide fie efectuarea plății (transfer bancar – către contul comerciantului care poate fi deschis la orice altă banca), fie refuză să facă această plată. În ambele cazuri, rezultatul deciziei (confimare plata sau refuz) este trimis in timp real, parcurgând acest lanț de servere în sens invers, către client. Cu alte cuvinte, în câteva secunde cumpărătorul află dacă banca sa a operat plata sau nu.

Odata acestea spuse, e bine sa mai facem precizarea ca pe baza acestor patru componente de baza s-au implementat diverse arhitecturi de comert electronic. Unele combina mai multe componente într-un singur (sub)sistem informatic, pe cand altele implementeaza separat fiecare componentă în parte .

Pentru definirea arhitecturii, proiectantii de sisteme EC fac o proiectare de ansamblu a sistemului pe baza unei selecții a principalelor cerinte/functii ale unui sistem EC. Detalii cum ar fi, de exemplu, functia de agregare care permite asamblarea articolelor într-o comandă completă sunt lăsate pe seama proiectării de detaliu. Decizia de a integra această functie de agregare la nivelul componentei client, comerciant sau tranzactionale se va lua în funcție de cerințele specifice ale fiecarei implementari in parte.

Important este însă că în cazul unui sistem de EC, ca de altfel în cazul oricărui sistem complex, arhitectura să fie clar definită la toate nivelele de detaliu.

Pentru a asigura succesul pe termen lung al unui proiect de e-commerce, arhitectura acestuia trebuie proiectată cu grija ținand cont de toate aspectele de business cu care se va confrunta sistemul, lasând totodata portițe care să permită adaptarea sa în timp, pe masură ce apar noi provocări iar tehnologiile evolueaza.

Modele de afaceri

Magazin electronic (e-shop):

Minimal, un e-shop conține un catalog de produse sau servicii cu descrieri tehnice și comerciale pentru fiecare pozitie din catalog, gestionare de un sistem de gestiune a bazelor de date care se va ocupa cu stocarea si manipularea datelor si oferirea posibilitaților de acces la informațiile dorite de client.Varianta medie a unui e-shop oferă posibilități pentru preluarea comenzilor (prin poșta electronică sau prin formulare interactive completate direct de pe situl web al vânzătorului), iar varianta extinsă adaugă posibilitatea efectuării on-line a plății prin diverse mijloace de plată plus diferite alte activitati. În ansamblu, functiile unui sit web de comerț electronic includ prezența unui catalog on-line, o metodă pentru proceseara plăților electronice, realizarea facturării, transportului, promovarea și realizarea altor servicii pentru client.

Magazin electronic universal (e-mall):

Reprezintă o colecție de magazine electronice reunite într-un site. Acceptă de obicei aceleași metote de plată și oferă anumite facilități. (Exemple: www.elibris.ro, www.anticariatonline.com ).

Aprovizionarea electronica (e-procurement):

Pentru procurarea bunurilor si serviciilor, marile companii si autorități publice organizează licitații. Prin publicarea pe web a specificațiilor ofertei, scad atât timpul, cât și costul de transmisie, mărindu-se numărul de firme ce pot lua parte la licitație. Astfel, crește concurența și scade prețul.

Piata unui tert (third partz marketplace):

Se apelează la un site web pentru a avea acces la catalogul de produse a unei companii. Acest site aparține unui terț (un furnizor de servicii Internet, un furnizor de aplicații sau o bancă).

Comunitati virtuale – (virtual comunities):

Fiecare membru poate oferi spre vânzare produse sau servicii, sau poate adresa cereri de cumpărare a unor produse/servicii. Calitatea de membru a unei comunități virtuale presupune plata unei taxe sau să fie compusă din cliețti fideli ai unui produs sau grup de produse.

Furnizori de servicii cu valoare adaugata pentru canalele de comert electronic (value chain service provider) furnizorii de astfel de servicii sunt specializati pe functii specifice, precum asigurarea logisticii, rezolvarea tranzacțiilor financiare sau expertiza în managementul producției și al stocurilor. Plata acestor servicii se realizeaza pe baza unor tarife sau cote procentuale.

Platforme de colaborare (collaborative enviromenets):

Cuprind un set de instrumente soft ware și un mediu informational pentru colaborarea între companii (via extranet), ce pot îndeplini funcția de proiectare sau conceptțe in colaborare. Câștigurile provin din taxa de membru sau taxa de utilizare și din vânzări de instrumenta specializate (destinate proiectării, organizării fluxului de documente (workflow) și gestiunii concurente a datelor).

Brokerajul de informatii :

Exemplele cuprind cataloage de clienți clasificați pe profil, vânzarea de oportunități de afaceri, consultanță în domenii specializate.

Care sunt formele comerțului electronic?

Comerțul electronic implică participarea atât a persoanelor fizice și juridice, cât și a statului sau a instituțiilor acestuia. În funcție de asocierile dintre acești participanți au luat naștere mai multe forme de comerț electronic.

B2B (business-to-business)

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

B2C (business-to-consumer)

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

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

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

C2B (consumer-to-business)

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

C2C (consumer-to-consumer)

Modelul de față se referă la consumatorii care vând direct la alți consumatori.

E-government

Această formă de comerț electronic este întâlnită în următoarele forme: B2G (business to government), G2B (government to business), G2C (government to consumer).

B2G (business-to-government)

Guvernele utilizează canale de comerț electronic pentru creșterea eficienței operațiunilor, imbunătățirea nivelului serviciilor oferite clienților. O arie de interes pentru guverne în domeniul afacerilor este utilizarea pe scara mai largă a Interentului și a rețelelor VAN, pentru diseminarea informației, a oportunităților, cotațiilor primite de la vânzători/furnizori de bunuri și servicii.

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

Departamentul de Aparare al Statelor Unite, pentru a avea o audiență națională și internațională și-au proiectat rețeaua VAN proprie, pentru a distribui informația la audiență.

Această soluție a cerut de asemenea, furnizorilor să se aboneze la serviciile rețelelor de provideri și să utilizeze capacitățile de comunicare cum ar fi soft-ul necesar transmisiilor EDI, dacă doreau să descarce informațiile în sistemele proprii.

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

G2B (government-to-business)

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

G2C (government-to-consumer)

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

Legislația română relevantă pentru comerțul electronic

Legislație comună ; Codul commercial; Codul civil; Legea 31/1990.

HTML

2.1 Elemente ale limbajului HTML

HTML a fost dezvoltat inițial de Tim Berners-Lee în anul 1989, ca urmare a

necesității de publicare a informațiilor la nivel global. Pe parcursul anilor, limbajul a evoluat (HTML 3.0, HTML 3.2, HTML 4 și cel mai recent 4.01), fiecare versiune oferind noi facilități.

Se remarcă câteva trăsături cum ar fi :

Independența de platformă (modul de afișare al uni document este același, indiferent de computerul pe care se realizează afișarea );

Structurarea formatării ;

Posibilitățile hypertext (orice cuvânt, imagine sau alt element al documentului vizualizat de utilizator poate face referință la un alt document, ceea ce ușurează navigarea în cadrul aceluiași document sau între documente diferite)

HTML este un limbaj simplu , compus din coduri speciale (marcaje) care se inserează într-un text pentru a adăuga informații despre formatare. Este derivate din SGML (Standard Generalized Markup Language), un sistem pentru definirea tipurilor de documente structurate, destinat să reprezinte instanțe ale acestor tipuri de documente. La baza SGML și a HTML se află același principiu : decrierea conținutului unui document se face într-un fișier text obișnuit (ASCII). S-a urmărit ca aceste fișiere să fie editabile cu aplicații software nepretențioase. (ex: Notepad, WordPad).

În cadrul unui document HTML, un marcaj (tag, în limba engleză) va avea forma <nume_marcaj> Parantezele unghiulare sunt elemente care indică prezența unui marcaj ; numele marcajelor poate fi scris oricum, limbajul nefiind senzitiv la literele mari/ mici (case sensitive). Unele marcaje permit utilizarea unor atribute care se vor scrie în marcajul de început:

<nume_marcaj opțiune1 = valoare1 opțiune2 = valoare2…> și </nume_marcaj>

Există 2 tipuri de marcaje:

Individuale (ex: <br>)

Perechi (ex: <p> și </p>) – de menționat faptul că sfârșitul uni marcaj este indicat prin utilizarea caracterului ‘/’ în fața numelui de marcaj.

2.1.1 Structura unui document HTML

Un document HTML are următoarea structură :

linie conținând versiunea HTML

Secțiunea HEAD, delimitată de marcajele <head> și </head>

Secțiunea BODY, delimitată de marcajele <body> și </body> sau <framest>

2.1.2 Tabele în pagina web

Folosirea tabelelor într-o pagină web permite structurarea informației dupa diverse criterii și prezentarea eficientă a acesteia. Tabelele permit organizarea conținutului unei pagini web într-o rețea rectangulară de secțiuni, fiecare secțiune având propeiile opțiuni privind culoarea fondului, culoarea și alinierea textului etc.

Tabelele ușurează machetarea paginii, permițând plasarea textului pe coloane, setarea marginilor paginii etc. Efectele sunt o citire și o evaluare rapidă și corectă a conținutului paginii, dar și creșterea activității acesteia.

Prezentarea datelor sub formă de tabele prezintă avantaje din punct de vedere al clarității și sistematizării.

Un tabel este definit prin elementul table, conținutul acestuia fiind plasat între marcajele <table> și </table>.

Un tabel este format din linii , definite ca elemente tr (table row)

Pentru a insera o linie de tabel se folosesc marcajele <tr> și </tr>.

Un rând este format din mai multe celule ce conțin date. O celulă de date este definită de elementul td (table data) și este introdusă folosind marcajele <td> și </td>.

Celulele cu semnificație cap de tabel sunt definite prin elementul th (table header) . Conținutul acestor celule, definit în interiorul marcajelor <th> și </th> este afișat cu caractere aladine și centrat.

Unui tabel i se poate atașa un titlu cu ajutorul elementului caption , definit în interiorul marcajelor <caption> și <caption>.

Proprietăți ale tabelului

Border : specifică grosimea chenarului tabelului. Dacă are valoarea 0 sau atributul lipsește, tabelul nu va avea chenar.

Frame : definește modul de afișare a chenarului exterior. Funcționează în prezența atributului “border”. Atributul frame poate avea următoarele valori

above : afișează latura superioară a chenarului ;

below : afișează latura inferioară a chenarului ;

border (box) : afișează chenarul complet ;

hsides : afișează părțile inferioară, respectiv superioară ale chenarului ;

vsides : afișează părțile laterale (stânga, dreapta) ale chenarului ;

lhs : afișează latura stângă a chenarului ;

rhs : afișează latura dreaptă a chenarului ;

void : fără bordură exterioară.

Rules : definește modul de afișare a chenarului interior dintre celulele tabelului. Funcționează în prezența atributului “border”. Atributul rules poate avea următoarele valori

none : nu de afișează chenar interior ;

groups : afișează chenar între grupurile de celule definite de thead, tbody, colgroup, col, tfoot ;

rows : afișează chenar între linii ;

cols : – afișează chenar între coloane ;

all : – afișează chenar între toate celulele interioare.

Width, height : specifică lățimea, respectiv înălțimea tabelului. În cazul în care valorile specificate nu sunt suficiente pentru afișarea conținutului celulelor, valorile vor fi modificate automat de către browser astfel încât tot conținutul să fie afișat. Valorile se pot exprima absolut, în pixeli, sau relative la lățimea ecranului (width), respective la înălțimea ecranului (height).

Bgcolor : specifică culoarea pentru fundalul tabelului ;

Bordercolor : specifică culoarea chenarului ;

Background : URL-ul imaginii care va fi utilizată ca fundal al tabelului ;

Cellspacing : specifică distanța dintre cellule ;

Cellpadding : specifică marginea interioară a celulelor ;

Align : specifică alinierea pe orizontală a tabelului (stânga/centru/dreapta)

Valign : specifică alinierea pe verticală a tabelului (sus/mijloc/jos )

Summary : o descriere a tabelului, de obicei pentru browsere non-vizuale.

Cea mai simplă formă a unui tabel din aplicație se prezintă astfel :

<table id="sitebody" cellspacing="1" cellpadding="1" width="710"

align="center" border="0">

<tr>

<td >

<? require('top.inc'); ?>

</td>

</tr>

</table>.

2.1.4 Crearea hiperlegăturilor

Pentru a naviga de la o pagină la alta sau pentru a efectua salturi controlate în cadrul aceleiași pagini web se folosesc hiperlegăturile (hiperlinks). De asemenea, prin intermediul hiperlegăturilor, se poate activa un fișier executabil ce poate genera o pagină HTML sau un anumit conținut media (animație, imagini, secvențe sonore).

Posibilitatea de a lega o pagină web de alte elemente din Internet este cea mai inovatoare parte a tehnologiei Web. Ele transformă un text obișnuit în “hipertext” sau “hipermedia”, ceea ce permite trecerea rapidă de la o informație aflată pe un anumit server, la altă informație aflată pe un alt server, oriunde în lume.

O hiperlegătură are două puncte de capăt numite ancore. Punctul de start – ancora sursă – este o zonă activă din pagina web, adică o zonă de pe ecran sensibilă, de exemplu : la apăsarea butonului mouse-ului (aceste zone pot fi activate și de la tastatură, sau, mai nou, prin voce ). Celălalt capăt al hiperlegăturii – ancora de destinație – poate fi o resursă oarecare de pe Internet (o altă pagină web, o imagine, un program, un element al unui document HTML etc). Activarea unei hiperlegături este interpretată ca o cerere către un anumit server de pe Internet de a expedia către computerul client o anumită resursă, indicată de legătura respectivă.

Construcția unei hiperlegături se realizează cu ajutorul elementului a (anchor) care aparține secțiunii body a unui document HTML. Ancora este definită între marcajele <a> și </a> asociate elementului a.

Elementul a are mai multe atribute care permit definirea completă a hiperlegăturii.

Dintre acestea, cele mai importante sunt atributele href și id sau name, elementului a i se asociază un nume prin care acesta poate fi folosit, la rândul său, ca destinație a unei alte hiperlegături.

Tipuri de hiperlegături

O hiperlegătură poate conduce către un alt document (legătură externă), sau către o anumită locație din pagina curentă (legătură internă), dar poate, deasemenea, să conducă la activarea unui fișier executabil (legătură executabilă).

Exemple de legături externe:

<a href="logout.php"><img src="Poze/logout.jpg"width="67"border="0"align="left">

</a>

<a href="index.php"><imgsrc="Poze/home.jpg"width="67"border="0"align="left">

</a>

<a href=”http://www.casarusu.ro/images/033.jpg”rel=”lightbox”>

<img src=”galerie_foto_ files/033.jpg" class="gimg" width="90"></a>”

2.1.5 Multimedia în pagina web

Folosirea elementelor multimedia – imagini, sunete, animație, video – în paginile web aduce nu doar un spor de atractivitate, ci și posibilitatea unei prezentări sintetice și sugestive a mesajului.

Pe lângă avantajele oferite, folosirea acestor elemente poate conduce și la unele probleme : încărcarea mai lentă a paginii, afișarea diferită în funcție de browser sau de rezoluția ecranului.

Imagini în pagina web

În principal, utilizarea imaginilor (pozelor) în cadrul paginilor HTML are ca scop îmbunătățirea modului de transmitere a mesajului către utilizatori.

Există două modalități principale de inserare a imaginii:

Imagine de tip “bitmap” – în care formatul de memorare este la nivel de bit : definirea imaginii este echivalentă cu definirea stării fiecărui punct. Starea unui punct este dată de culoarea lui. Există numeroase formate de fișiere care păstrează imaginea sub forma unei matrice de puncte, ce pot fi redate direct dintr-un browser web sau prin instalarea unui “plug-in”:

GIF (Graphics Interchange Format): este un format de compresie fără pierdere de calitate;

JPG (Joint Photographic Experts Group): este un format de compresie cu pierdere de calitate.

PNG (Portable Network Graphic): este un format de compresie fără pierdere de calitate. Are în general dimensiuni mai mari decât primele două formate menționate.

Imagine de tip “vectorial” – obținută prin compunerea unor primitive grafice, la care formatul de memorare este de tip vectorial. Spre exemplu : un segment de dreaptă este memorat prin coordonatele punctelor de capăt, un cerc prin coordonatele centrului și dimensiunea razei.

Inserarea unei imagini într-un document HTML se realizează folosind elementul img prin marcajul <img>. Identificarea imaginii inserate se realizează prin atributul src (source) al elementului img. Valoarea acestui atribut este URL-ul imaginii. Dacă imaginea se află în același director cu documentul HTML care face referire la imagine, atunci URL-ul imaginii este format numai din numele imaginii, inclusiv extensia. Altfel, adresa fișierului trebuie indicată complet.

Atribute ale imaginii:

Alt (Alternate): specifică un text alternativ pentru cazul în care imaginea nu poate fi afișată. Este important și pentru motoarele de căutare.

Border : -trasează un chenar în jurul imaginii.

Width, height :-specifică lățimea , respectiv înălțimea imaginii. Nu sunt obligatorii însă utilizarea lor este recomandată deoarece va reduce timpul de procesare a paginii web de către browser.

Hspace, vspace : – specifică spațiul care va fi pastrat în jurul unei imagini.

Exemplu : <img src="galerie_foto_files/032.jpg" class="gimg"width="110">.

2.1.6 Formulare în pagina web

Prin includerea unui formular într-o pagina web se pot solicita utilizatorului diverse răspunsuri, sub formă de text sau prin selectarea unor opțiuni. Datele completate de către utilizator sunt expediate unui server. O aplicație specializată de pe server analizează formularul completat și stochează datele într-o bază de date. Dacă este necesar, serverul expediază un răspuns utilizatorului. Se stabilește astfel o legătură directă între utilizator și server, obținându-se o pagină web interactivă.

Un formular poate conține butoane, casete de selecție, liste derulante, câmpuri de editare, etc. Într-o pagină web pot fi create oricât de multe formulare.

Formularul face parte din corpul unui document HTML și este definit prin elementul form , cuprins între marcajele <form> și </form>. Elementele form nu pot fi imbricate.

Atributele name și id asociate elementului form permit recunoașterea acestuia de către diverse programe de prelucrare.

Procesarea informațiilor transmise printr-un formular este determinată de atributul action al elementului form. Acesta precizează ce se va întâmpla cu datele, atunci când acestea ajung pe server. Valoarea atributului action poate fi :

URL-ul unui script aflat pe un server web, care primește datele formularului, efectuează o prelucrare a lor și expediază către utilizator un răspuns.

adresă de e-mail la care sunt expediate datele formularului. În acest caz nu are loc o prelucrare automată a datelor din formular, procesarea acestora realizându-se la destinație.

Metoda folosită de browser pentru expedierea datelor formularului este definită prin atributul method al elementului form. Cele două valori posibile ale atributului sunt:

“get ” (valoarea implicită) în acest caz datele din formular sunt adăugate la URL-ul indicat de atributul action. Între seturile de date este plasat caracterul “&” Sintaxa este :“URL? nume_câmp1=valoare_câmp1&nume_cămp2=valoare_câmp2 ”.

“post” în acest caz datele sunt expediate separate. Sunt premise cantități mai mari de date.

Diferitele câmpuri ale formularului pot fi considerate zone active care constituie interfața cu utilizatorul.Majoritatea câmpurilor unui formular sunt definite prin elementul input .

Pentru a preciza tipul câmpului se folosește atributul type al elementului input.

La expedierea formularului, se transmit către server perechi de forma “nume=valoare” care cuprind numele elementului unui formular și valoarea respectivului element. Aceste date sunt definite prin atributele name și value ale elementului input.

Valori ale atributului type:

Atributul value permite atribuirea unei valori inițiale unui câmp al formularului. Această valoare inițială poate fi ulterior modificată de utilizator.

Câmpul de tip text este o zonă care poate fi completată cu text de către utilizator. Un asemenea camp este introdus prin valoarea “text” a atributului type.

În lipsa atributului type, câmpul introdus al elementului input va fi considerat implicit ca fiind de tip “text”. Atributul readonly asociat unui camp de editare interzice modificarea conținutului.

Lungimea câmpului de tip text poate fi introdusă prin atributele : size (lățimea câmpului) și maxlength (număr maxim de caractere admise în câmpul de text).

Butonul de resetare permite readucerea câmpurilor din formular la starea inițială, înainte de a începe să fie completate. Introducerea unui buton de resetare se obține prin atribuirea valorii “reset” pentru atributul type al elementului input.

Câmpul de tip parolă poate fi introdus prin atribuirea valorii “password” pentru atributul type al elementului input. Un astfel de câmp diferă de un câmp de tip text obișnuit prin faptul că, în câmpul de tip “password”, caracterele introduce nu apar în clar, ci sunt înlocuite prin caracterele “*”, pentru a asigura confidențialitatea. La expedierea formularului, însă se transmite în clar valoarea tastată într-un câmp de tip “password”.

Casetele de validare (checkbox) permit selectarea uneia sau mai multor opțiuni. Pentru inserarea unei casete de validare, atributul type al elementului input primește valoarea “checkbox”.

Butoanele executabile permit declanșarea unui anumit eveniment atunci când sunt activate.Inserarea unui astfel de buton se realizează prin atribuirea valorii “button” atributului type al elementului input.

Elementul button oferă o altă cale de a insera un buton într-o pagină web, în interiorul marcajelor <button> și </button>. Prin acest element, butonul poate fi inserat în cadrul unui formular sau oriunde în pagină. Atributul type cu valorile posibile “button”, “submit”, “reset” precizează acțiunea ce se va executa la apăsarea butonului.

Listele de selecție permit alegerea unui sau mai multor elemente dintr-o listă finită de opțiuni.Opțiunile din cadrul unei liste de selecție sunt incluse cu ajutorul elementului option. Atributul value al elementului option primește ca valoare un text ce va fi expediat serverului în perechea “name=value”. În lipsa acestui atribut, va fi expediat textul ce urmează după option. Atributul selected permite selectarea implicită a unui element al listei.

Prin folosirea atributului multiple al elementului select , se obține o listă de selecție care permite selectarea mai multor elemente din listă. La expedierea formularului, pentru fiecare element al listei, care este selectat se inserează câte o pereche “nume_listă=valoare” unde “valoare” este atributul value al elementului option.

Meta-informații în pagina web

Meta-informațiile sunt informații despre conținutul documentului HTML: cuvinte cheie, informații despre autor, o descriere generală a documentului, etc.

Aceste informații permit indexarea paginilor Web și înregistrarea lor pe site-urile de căutare.Meta-informațiile sunt conținute în fișierul sursă HTML, fără a fi vizibile la afișarea paginii Web.

Acestea sunt utilizate de serverele de pe Internet specializate în identificarea și catalogarea paginilor Web, precum și în găsirea informațiilor în paginile respective.

Includerea meta-informațiilor în codul HTML se realizează prin elementul meta plasat între marcajele <head> și </head>

Elementele și atributele referitoare la meta-informații

2.2 CSS (Cascading Style Sheets)

CSS (Cascading Style Sheets) este un standard pentru formatarea elementelor unui document HTML.

Principial, codul care controlează apariția și aspectul elementelor paginii web este stocat într-o “foaie de stil”(style sheet). Se pot folosi mai multe foi de stil pentru aceeași pagină web, de aici denumirea de “foi de stil în cascadă”- Cascading Style Sheets (CSS)

În mod obișuit sunt patru moduri de a folosi stilurile :

Stilul se aplică unui singur element, în cadrul unui marcaj HTML. De exemplu, pentu a aplica un stil unui element de tip paragraf, se poate scrie:

<p style=”font:12pt arial”>

Această modalitate se numește “in-line”și este cea mai puțin flexibilă.

Stilul se aplică mai multor elemente din pagina Web, pentru care este definit dedicat. Aceste elemente pot fi de același fel (de exemplu: titlurile de mărime 2), sau pot fi diferite.

Stilul se aplică pentru toate elementele din pagină, de exemplu:

<style>

Body{background:#ffffff; color:#000000;

margin-top: 20 in;margin-left:50in;margin-right:50in}

</style>

Foile de stil sunt stocate într-un fișier separat de fișierul HTML și pot fi aplicate mai multor pagini simultan, de exemplu:

<style type="text/css">

<link rel="stylesheet" href="stil.css" type="text/css">

</style>

Aceasta este modalitatea cea mai flexibilă de a defini stiluri. Stilurile CSS sunt identificate prin nume care se plasează între marcajele HTML. Modificarea unui atribut în foaia de stil determină modificarea instantanee în toate locurile unde se aplică stilul.

Avantajul folosirii foilor de stil este acela că se pot face ușor modificări la o apariție a paginii, fără a mai scrie cod de fiecare dată. Această tehnică este foarte eficientă în cazul site-urilor cu multe pagini: de fiecare dată când stilul CSS este actualizat, modificările se reflectă automat în toate documentele.

Elemente de programare web

Îmbunătățirea spectaculoasă a aspectului și funcționalitătii paginii web se poate obține prin introducerea în codul HTML a unor succesiuni de comenzi (script) scrise în limbaje de programare ca : Java, JavaScript, VBScript , sau prin introducerea unor elemente de prezentare dinamice, animate, create cu programe specializate, cum ar fi : Macromedia Flash, Shockwave, Fireworks, Dreamweaver. Aceste componente sunt introduse prin elemente speciale : applet, script, embed și object.

3.1. Tehnologia JavaScript

JavaScript este un limbaj de programare orientat obiect bazat pe conceptul prototipurilor. Limbajul este binecunoscut pentru folosirea în construirea siturilor web, dar de asemenea este folosit pentru acesul la obiecte încastrate (embedded objects) în alte aplicații.

La începuturi a fost dezvoltat de către Brendan Eich de la Netscape Communications Corporation sub numele de Mocha, apoi LiveScript, și denumit în final JavaScript. În ciuda numelui și a unor oarecare similarități în sintaxă, între JavaScript și limbajul Java nu există nici o legătură.

Până la începuturile lui 2005, ultima versiune existentă a fost JavaScript 1.5, care corespunde cu Ediția a 3-a ECMA-262, ECMAScript, în alți termeni, o ediție standardizată de JavaScript. Versiunile Mozilla începănd cu 1.8 Beta 1 de asemenea au avut suport pentru E4X, care este o extensie a limbajului care are de a face cu XML, definit în standardul ECMA-357. Versiunea curentă de Mozilla, 1.8.1 (pe care sunt construite Firefox și Thunderbird versiunile 2.0) suportă JavaScript versiunea 1.7.

Spre deosebire de limbajul Java, limbajul JavaScript, un alt mod de a programa pe web, furnizează un set complet de comenzi și funcții construite chiar în interiorul sursei HTML. Acest limbaj nu necesită un compilator extern; execuția codului se realizează automat de către browser. În locul aplicațiilor de tip applet, limbajul JavaScript folosește scripturi create din instrucțiuni ale limbajului. Câteodată, limbajul este tratat diferit de către cele două browsere principale, deoarece Internet Explorer folosește limbajul Jscript, o implementare particulară a lui JavaScript.

Integrarea JavaScript în codul HTML se face prin elementul script, plasat între marcajele <script language = “JavaScript”> și </script>.

De asemenea se poate folosi elementul noscript între marcajele <noscript> … </noscript>, pentru a încadra un text ce va fi afișat, în situația în care browser-ul nu poate afișa JavaScript.

Codul JavaScript poate fi plasat atât între marcajele <head> și </head> cât și între marcajele <body> și </body>. Există practica de a plasa codul JavaScript între etichetele <head> și </head> , astfel încât funcțiile să nu fie apelate înainte ca sursele JavaScript să se încarce.

Atributul language este opțional, dar recomandat, marcajul

<script language = “JavaScript”> anunțând browser-ul că va urma un cod JavaScript.

Exemplu : <script language=javascript> alert ('Unul sau mai multe campuri din cele \n obligatorii nu sunt completate!');</script>.

Atributul src al elementului script se folosește pentru includerea unui fișier extern care conține cod JavaScript (fișier cu extensia .js) :

Exemple:

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

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

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

Limbajul JavaScript cuprinde un set de instrucțiuni care, combinate cu obiecte și proprietăți, creează un script. Ca orice limbaj orientat pe obiecte, JavaScript are ca element fundamental noțiunea de obiect. Obiectul este definit ca un model al unei entități sau al unui fenomen, descries printr-un set de proprietăți ce definesc o anumită stare a acestuia. Modificarea acestei stări poate avea loc în urma unui eveniment care determină o anumită reacție a obiectului. Această reacție se numește metodă.

Obiectele JavaScript sunt construite ca pachete de date referitoare la un set de proprietăți și de funcții, grupate sub un singur nume. Obiectele, împreună cu proprietățile lor, sunt introduce prin sintaxă. (“case sensitive”).

3.2. Controale ActiveX

ActiveX este o tehnologie introdusă și extinsă de Microsoft, prin care sunt implementate controale ce pot fi integrate în aplicații, inclusiv în paginile web.

Controalele ActiveX sunt o alternativă la aplicațiile Java și funcționează în Internet Explorer, dar nu și în Netscape Navigator.

La fel ca și applet-urile Java, acestea pot fi înglobate în pagini web și configurate.

Ele sunt utilizate pentru a furniza controale: aplicații de redare a secvențelor media, calendare, foi de calcul tabelar, bare de evoluție etc.

Controalele ActiveX sunt incluse în pagina HTML prin elementul object, între marcajele < object > și < /object >.

Ele au, ca și applet-urile java, atribute și parametri care le definesc comportamentul.

Funcționarea controlului ActiveX este legată de anumită evenimente.

Elementul object include informații cheie legate de controlul ActiveX, ca : ID-ul asociat, URL-ul sursă al controlului, clasa ID (CLSID) pentru a intra în registru.

Aceste informații permit browser-ului să obțină, să înregistreze și să încarce controlul pe sistemul utilizatorului. Marcajul < object > pentru control nu este inserat în secțiunea < header > , ca în cazul scripturilor JavaScript sau VBScript, ci în corpul paginii HTML.

În exemplul următor este apelat un control ActiveX pentru a insera în pagina web un document flash Text Pensiune.swf:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"

codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.

cab#version=6,0,0,0" width="200" height="55" id="PP" align="">

<param name=movie value="movies/Text Pensiune.swf">

<param name=quality value=high>

<param name="wmode" value="transparent" />

<embed src="movies/Text Pensiune.swf" quality=high width="200"

height="55" name="Text Pensiune" align=""

type="application/x-shockwave- flash"

luginspage="http://www.macromedia.com/go/getflashplayer" mode="transparent">

</embed>

</object>

În sistemul Windows sunt numeroase controale ActiveX, cu fișierele lor support (.ocx) : butoane de toate tipurile, controale de text, controale grafice, de tip bară de defilare, etc. Pentru a fi folosite, fișierul support al controlului trebuie să se afle în directorul windows/system. Fișierul respectiv poate fi înregistrat în sistemul de operare folosind RegSvr32.exe, asociindu-i-se astfel o valoare de înregistrare.

Obținerea numărului de înregistrare al unui control ActiveX se poate face cu ajutorul programelor regedit.exe sau aclist.exe (disponibil pe site-ul Microsoft).

Controlul ActiveX folosit în exemplul anterior are în registru identificatorul (class ID) : clsid:d27cdb6e-ae6d-11cf-96b8-444553540000. Acest identificator prezintă în mod unic controlul “ Text Pensiune.swf ” pentru sistemul Windows.

Controalele ActiveX sunt o categorie de componente integrate în paginile web, denumite generic obiecte. Acestea pot fi elemente de diverse tipuri : imagini, controale, applet-uri Java, elemente video, audio.

Analizând codul din exemplul anterior, prin care este introdus un obiect de tipul control ActiveX, se poate evidenția procedura de implementare a unui obiect .

Aributele obiectului sunt plasate în cadrul marcajului de început < object > .

Exemplu: <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash. cab#version=6,0,0,0" width="200" height="55" id="PP" align="">

Pentru un anumit tip de obiect, doar anumite tipuri de atribute sunt funcționale.

Atributele classid, height, align, hspace, vspace și codebase pot fi folosite pentru controalele ActiveX.

Atributul classid este o componentă esențială a declarației obiectului ActiveX, având ca valoare codul de înregistrare a obiectului în baza de date a sistemului.

Exemplu : classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"

Atributul id definește identificatorul obiectului, prin care acesta poate fi apelat oriunde în conținutul paginii. Valoarea atributului id este un nume care trebuie să

înceapă cu o literă.

Atributele width și height determină dimensiunile obiectului la afișarea în pagină. Valorile celor două attribute sunt date, în mod implicit, în pixeli, dar pot fi folosite și procente din dimensiunile ecranului. Exemplu : hspace = 10, vspace = 5%.

Atributul align determină poziția obiectului. Exemplu : align = left. Valorile acestui atribut sunt prezentate în tabelul următor:

Atributul codebase indică locația URL a obiectului, dacă aceasta nu se află în același director ca și fișierul HTML.

Parametrii obiectului sunt caracteristici ale obiectului definite prin obiect în sine și nu prin standardele HTML, în mod asemănător cu proprietățile obiectelor din Visual Basic.

Parametrii sunt introduși prin marcajul < param > situate între marcajele

<object> și </object>. În cadrul acestui marcaj sunt definite atât numele unei anumite proprietăți, cât și valoarea inițială pentru această proprietate, după sintaxa :

<param name = “nume_parametru” value = “valoare_parametru”>

Exemplu : <param name="wmode" value="transparent">

Includerea obiectelor multimedia în documentele HTML se face folosind tagul embed. Acest tag are câteva atribute generale: src: URL-ul obiectului multimedia;

autostart: acest parametru ia valorile TRUE sau FALSE. Pentru valoarea TRUE, prezentarea obiectului porneste automat, iar pentru valoarea FALSE utilizatorul trebuie sã porneascã prezentarea;loop: pentru valoarea TRUE prezentarea se reia într-o buclã infinitã, pentru FALSE prezentarea are loc o singurã datã. Se mai poate da ca parametru un întreg care indicã de câte ori sã se reia prezentarea; atribute care controleazã alinierea în paginã sau atribute care controleazã dimensiunile ferestrei de afisare acolo unde este cazul.

Exemple de inserare în paginile web a unor filme flash apelând controale ActiveX

Brașov_fundal.swf

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"

codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="957" height="567" id="PP" align="" valign = "top">

<param name=movie value="movies/Brasov_fundal.swf">

<param name=quality value=high>

<param name="wmode" value="transparent" />

<embed src="movies/Brasov_fundal.swf" quality=high width="957"

height="567" name="Brasov" align="" valign = "top"

type="application/x-shockwave- flash"

pluginspage="http://www.macromedia.com/go/getflashplayer" wmode="transparent">

</embed>

</object>

Text_Rezervări.swf

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"

codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.

cab#version=6,0,0,0" width="200" height="55" id="PP" align="">

<param name=movie value="movies/Text Rezervari.swf">

<param name=quality value=high>

<param name="wmode" value="transparent" />

<embed src="movies/Text Rezervari.swf" quality=high width="200"

height="55" name="Text Rezervari" align=""

type="application/x-shockwave- flash"

pluginspage="http://www.macromedia.com/go/getflashplayer"

wmode="transparent">

</embed>

</object>

</object>

3.3. Crearea unor efecte speciale cu Macromedia Flash

Adobe Flash sau mai pe scurt Flash este o aplicație utilizată pentru dezvoltarea obiectelor-aplet de tip Flash disponibile în cadrul unor pagini WEB. Prin intermediul obiectelor flash, crește dinamismul unei pagini și se facilitează interacțiunea cu utilizatorul. Inițial dezvoltată de Macromedia, aplicația Flash a fost preluată de către Adobe© odată cu achiziționarea companiei sus amintite.

Folosirea obiectelor Flash în paginile web are un anumit număr de avantaje și dezavantaje.

Avantajele folosirii Flash-ului pe Web:

Elemente grafice vectoriale: dimensiuni mici și scalabil: Pentru a “memora” imaginile un calculator poate recurge la două metode: prima este reținerea pixel cu pixel a imaginii, cea de-a doua este memorarea unor “puncte critice” cu ajutorul cărora imaginea poate fi refăcută.

Independența de platformă (browser/sistem de operare): apare din cauză că acest program ce „știe” să afișeze imaginile a fost construit pentru o gamă largă de hardware și sisteme de operare

Animații de lungă durată ușor de realizat

Editoare puternice și lucrul facil: (Macromedia) Flash este un editor puternic care dă posibilitatea de atașări de comportamente diverselor obiecte fie folosind interfața de desenare grafică fie prin atașarea de scripturi obiectelor.

Dezavantaje ale utilizării Flash-ului:

Mare amator de resurse: deoarece trebuie să „reconstruiască” de fiecare dată elementele grafice, Playerul Flash (precum și aplicația de dezvoltare) este mare consumator de memorie și procesor .

Tehnologie licențiată: fiind o aplicație dezvoltată de o serie de programatori (plătiți pentru a dezvolta Flashul), instrumentul de dezvoltare costă cel puțin 600€.

PHP

4.1 Introducere în PHP

4.1.1 Istoric PHP

PHP (PHP: Hypertext Prepocessor), 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 (Common Gateway Interface – interfață comună de tip poartă ) pentru interpretarea formularelor definite prin HTML și procesate de un program scris într-un limbaj Perl, script shell, executat pe server. În cazul interfeței CGI era necesară permisiunea de a rula programe pe server, ceea ce ducea la lacune în securitate și în plus la disocierea de documentul HTML a programului care procesa datele.

PHP (în versiunea curentă PHP 4.0) reprezintă un pachet puternic care oferă un limbaj de programare accesibil din cadrul fișierelor HTML, limbaj asemănător cu Perl sau C, plus suport pentru manipularea bazelor de date într-un dialect SQL (dBase, Informix, MySQL, mSQL, Oracle, PostgreSQL, Solid, Sybase, ODBC etc.) și acces la sisteme hipermedia precum Hyperwave. De asemeni, PHP suportă incă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).

Această aplicație este disponibilă gratuit pe Internet, pentru medii Unix și pentru medii Windows (inclusiv sursele), integrându-se în popularul sever Apache.

Limbajul PHP a fost creat spre în anul 1994 de către Rasmus Ledorf.

Primele versiuni nu au fost disponibile programatorilor Acestea erau folosite pe pagina personală a creatorului pentru a vizualiza dacă sunt persoane interesate de tehnologia sa. La jumătatea aceluiași an Rasmus a rescris codul compilatorului denumit PHP/FI Version 2. FI a introdus tehnologia de Interpretor de Formulare și i s-a atașat suport pentru SQL.

Limbaj PHP a avut o evoluție extraordinară, luând în considerare faptul că de la sfârșitul anului 1996 până la jumătatea anului 1997 numărul site-urilor care foloseau acest limbaj a crescut de la 15.000 la 50.000. De asemenea tot în anul 1997 a apărut versiunea a treia, PHP 3, a cărei cod a fost scris de către Zeev Suraski și Andi Gutmans.

Spre sfârșitul anului 2000 se estima că PHP-ul era prezent în peste 3.300.000 de site-uri din întreaga lume.

Începând cu versiunea 4, se folosește puternicul motor de scripting Zend pentru a oferi performanțe ridicate, și, de asemenea, oferă suport pentru rulare de pe diverse tipuri de servere, nu doar de pe server-ul Apache sub care lucra până la momentul respectiv.

4.1.2 Scopul utilizării PHP

PHP este mai bun, mai rapid și mai ușor de învățat decât alternativele sale.

Principalele alternative la PHP sunt : limbajul HTML simplu, scripturile CGI (Common Gateway Interface – interfață comună de tip poartă, scrise de obicei, dar nu în mod obligatoriu, în Perl ), ASP (Active Server Pages) și mai recentul ASP.NET, Macromedia ColdFusion și JSP (Java Server Pages). JavaScript nu reprezintă o alternativă efectivă la PHP (și nici invers) deoarece JavaScript este o tehnologie pe parte de client și nu se poate utilize la crearea paginilor HTML în același mod ca și Perl sau CGI.

Avantajul PHP în raport cu limbajul HTML simplu constă din aceea că ultimul este sistem limitat, care nu permite nici flexibilitate, nici responsivitate. Vizitatorilor care obțin acces la paginile HTML li se înfățișează pagini simple, fără nici un tușeu de particularizare sau comportare dinamică. Cu PHP se pot realiza pagini interesante și originale. Deasemenea, PHP poate interacționa cu baze de date și fișiere, poate manipula mesaje de poștă electronică (e-mail) și este capabil de multe alte operații inaccesibile limbajului HTML.

Un proiectant de pagini web utilizează limbajul PHP deoarece:

PHP este mult mai ușor de învățat și de utilizat ;

PHP a fost scris special pentru crearea de pagini web dinamice;

PHP este atât gratuit, cât și inter – platformă;

În prezent, PHP este cel mai popular instrument disponibil pentru realizarea de site-uri web dinamice.

4.1.3 Funcționare PHP

PHP este un limbaj pe parte de server, ceea ce înseamnă că liniile de program scise în PHP sunt rezidente într-un calculator gazdă care servește pagini browserelor Web. Când ne deplasăm la un site Web, furnizorul de servicii Internet (ISP) direcționează cererea spre serverul care conține informațiile din site-ul respectiv. Serverul citește codul PHP și îl prelucrează în conformitate cu instrucțiunile conținute în script.

Pe scurt, PHP creează instantaneu o pagină HTML, pe baza parametrilor doriți de utilizator. Această situație diferă de aceea a unui site generat prin HTML, în sensul că, la efectuarea unei cereri, serverul se rezumă la a trimite datele HTML către browserul Web; nu se produce nici o interpretare pe parte de server . Ca atare, în browserul utilizatorului final poate sau nu să existe o diferență evidentă între aspectul paginilor : cea generată cu html, respectiv cea cu php, dar modul în care se ajunge la punctul respectiv se modifică în părțile sale esențiale. Principala diferență constă în aceea că, prin utilizarea PHP, putem determina serverul să genereze în mod dinamic codul HTML.

Crearea dinamică a paginilor web stabilește o diferență între site-urile statice, mai puțin atrăgătoare, și cele interactive, mai interesante, și , implicit, cu un număr mai mare de utilizatori.

Diferența centrală dintre utilizarea PHP și utilizarea limbajului HTML simplu constă din aceea că PHP își execută toate operațiile pe parte de server și apoi trimite informațiile corespunzătoare către browser.

4.2 Limbajul PHP

4.2.1 Structura limbajului

Sintaxa fundamentală. Trecerea de la HMTL la PHP

Există 4 moduri pentru a trece de la HMTL la PHP:

1. <? echo ( "cea mai simplă cale de introducere…\n"); ?>

2. <?php echo ( "Daca vreți să afișați documente XML sau XHTML faceți ca aici.\n"); ?>

3. <script language="php">

echo ( "Anumite editoare nu acceptă tag-uri necunoscute (de exemplu FrontPage)");

</script>

4. <% echo ( "Puteți utiliza tag-uri în stil Asp."); %>

A doua metodă este cea mai utilizată, pentru că permite o implementare ușoara a PHP-ului cu generația urmatoare XHTML.

Separatori de instrucțiuni

Instrucțiunile sunt separate, prin punct și virgulă la sfârșitul unei instrucțiuni. Semnele de sfârșit, '?>', implică sfârșitul instrucțiunii, deci implicit punct și vigulă.

Exemplu:

<?php

echo "Acesta este un test";

?>

<php echo "Acesta este un alt test" ?>

Comentarii

PHP-ul suporta introducerea comentariilor asemanatoare cu cele din C, C++, sau unix shell:

„//” – comentariu penru o singura linie;

Exemplu: echo "Acesta este un test"; // comentariu pe o linie în stilul C++

„/*…*/” – comentariu pentru mai multe linii;

Exemplu: /* Acesta este un comentariu pe mai multe linii;

încă o linie de comentariu */

„#” – stilul shell de introducere de comentarii.

Exemplu: echo "Acesta este un alt test";

echo "Ultimul test"; # Un comentariu în stil Unix

Stilul de comentariu pe o linie ține până la sfârșitul liniei sau al blocului curent al codului PHP.

<h1>Acesta este un <? # echo "simplu"; ?> exemplu.</h1>

<p>Linia de mai sus va afisa: "Acesta este un exemplu."</p>

4.2.2 Tipuri de date

Numere întregi

Numerele întregi se pot specifica în modul următor:

$a = 6789; # Număr întreg în baza 10

$a = -678; # Număr întreg negativ

$a = 0123; # Număr întreg în baza 8, octal (echivalent cu 83 în baza 10)

$a = 0x24; # Număr întreg în baza 16, hexazecimal (echivalent cu 18 în baza 10)

Numere reprezentate în virgulă mobilă

Numerele reprezentate în virgulă mobilă (double) pot fi utilizate în oricare din sintaxele următoare:

$a = 1.234;

$a = 1.2e3;

Dimensiunea numerelor în virgulă mobilă este independentă de platformă. Precizia uzuală este de 14 cifre.

Observații:

De obicei fracțiile zecimale simple, precum 0.1 sau 0.7, sunt convertite intern cu o mică pierdere de precizie; aceasta poate să ducă la rezultate mai puțin exacte. De exemplu: floor( 0,1 + 0,7*10) întoarce de obicei 7 în loc de așteptatul 8, rezultatul reprezentării interne fiind de genul 7,9999999999;

Este imposibil să se exprime cu exactitate fracțiile zecimale cu număr infinit de cifre; de exemplu, 1/3 în formă zecimală devine 0,33333333…;

Dacă aveți nevoie de o precizie mai mare în compararea valorilor în virgulă mobilă trebuie să utilizați funcțiile matematice de precizie arbitrară.

4.2.3. Șiruri de caractere

Șirurile de caractere pot fi delimitate de ghilimele sau apostrofuri, în ultimul caz inhibându-se evaluarea variabilelor din interiorul șirului respectiv (exact ca la bash).

Dacă șirul de caractere este delimitat de ghilimele atunci variabilele din interiorul șirului vor fi evaluate și înlocuite prin valoarea lor. Ca și în C sau Perl, caracterul backslash (\) este utilizat pentru a proteja un carcater special.

Orice caracter se poate transforma, teoretic, în secveță escape, dar se produce un avertisment la cel mai înalt nivel. A doua metodă încadrează șirurile între apostrofuri; în acest caz singurele secvențe escape înțelese sunt '\\' și '\'. Variabilele nu vor fi expandate într-un șir încadrat între apostrofuri. O altă metodă de a delimita șirurile este folosirea sintaxei doc '<<<'. După acest delimitator trebuie specificat un identificator, apoi șirul de caractere propriu-zis și, în încheiere, același identificator care a precedat șirul.

Șirurile pot fi concatenate utilizând operatorul '.', operatorul '+' fiind impropriu pentru această operație.

4.2.3.1 Conversia șirurilor

Când un șir este evaluat ca valoare numerică, valoarea și tipul rezultat sunt decise după cum urmează:

șirul va fi evaluat ca un double dacă conține unul din caracterele '.', 'e' sau 'E'. Altfel va fi evaluat ca un întreg;

valoarea este dată de începutul șirului. Dacă șirul începe cu o dată numerică validă, aceasta va fi valoarea utilizată. Altfel valoara va fi 0. O dată numerică validă este formată din semn (opțional), una sau mai multe cifre (opțional un puct zecimal), încheiate eventual cu un exponent. Acest exponent ('e' sau 'E') este urmat de una sau mai multe cifre. Când prima expresie este un șir tipul varibilei va depinde de a doua expresie.

Exemplu:

$aaa = 1 + "10.5"; // $aaa este double (11.5)

$aaa = 1 + "-1.3e3"; // $aaa este double (-1299)

$aaa = 1 + "bob-1.3e3"; // $aaa este integer (1)

$aaa = 1 + "bob3"; // $aaa este integer (1)

$aaa = 1 + "10 Small Pigs"; // $aaa este integer (11)

$aaa = 1 + "10 Little Piggies"; // $aaa este integer (11)

$aaa = "10.0 pigs" + 1; // $aaa este double (11)

$aaa = "10.0 pigs" + 1.0; // $aaa este double (11)

4.2.4. Tablouri

În PHP tablourile se comportă și ca tablouri asociative (hash tables) și ca tablouri indexate (vectori).

4.2.4.1. Tablouri unidimensionale

PHP acceptă atât tablouri scalare cât și asociative. De fapt nu există nici o diferență între cele două. În PHP tabolurile se pot crea utilizând funcțiile list() și array() sau se poate seta explicit fiecare element din tablou.

Exemplu:

$a[0] = "def";

$a[1] = "ghi";

$b["aaa"] = 14;

Se poate de asemenea crea un tablou adăugându-i valori. De exemplu, putem extinde tabloul $a ca în exemplul de mai jos:

$a[] = "hello";

// $a[2] == "hello"

$a[] = "world";

// $a[3] == "world"

Vectorii pot fi sortați utilizând funcții specializate: asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort(), și uksort().

Puteți număra elementele tabloului utilizând funcția count().

Puteți parcurge un tablou utilizând funcțiile next(), prev() și each().

4.2.4.2 Tablouri multidimensionale

Tablourile multidimensionale sunt în realitate tablouri simple. Pentru fiecare dimensiune a tabloului trebuie adăugată o altă dimensiune [dim] la final.

<?php

$a[1] = $f; // Tablou unidimensional

$a["aaa"] = $f; // Tablou unidimensional

$a[1][0] = $f; // Tablou bidimensional

$a["aaa"][2] = $f; // Indicii asociativi și numerici se pot combina

$3[3]["bar"] = $f; // Indicii numerici și asociativi se pot combina

$a["aaa"][4]["bar"][0] = $f; // Tablou cu patru dimensiuni

?>

În PHP nu este posibilă referirea tablourilor multidimensionale direct într-un șir. 4.2.5 Obiecte

Pentru a crea o variabilă de tipul obiect dorit, și eventual pentru a o inițializa, se folosește operatorul new:

class aaa

{function do_aaa()

{echo "Doing aaa.";}}

$bar = new aaa;

$bar->do_aaa();

4.2.6 Conversia automată a tipurilor

PHP nu acceptă definirea explicită a tipului în definirea variabilelor, tipul unei variabile fiind determinat de contextul în care acea variabilă este utilizată. Acesta înseamnă că dacă atribuiți variabilei var un șir de caractere, var va deveni șir. Dacă îi atribuiți o valoare întregă, var va deveni un întreg.

Un exemplu de conversie automată a tipului apare la utilizarea operatorului '+'. Dacă vre-un operand este double, atunci toți operanzii sunt evaluați la double, și rezultatul va fi un double. Altfel, operanzii vor fi interpretați ca întregi și rezultatul va fi tot un întreg. Rețineți că acest mod de evaluare nu modifică tipul operanzilor care intervin în expresie, ci numai modul în care ei sunt evaluați.

Exemplu:

$bbb = "0"; // $bbb este șir de caractere (ASCII 48)

$bbb++; // $bbb este șirul de caractere "1" (ASCII 49)

$bbb += 1; // $bbb este acum de tip întreg (2)

$bbb = $bbb + 1.3; // $bbb este acum de tip double (3.3)

$bbb = 5 + "10 Little Piggies"; // $bbb este de tip înreg (15)

$bbb = 5 + "10 Small Pigs"; // $bbb este de tip întreg (15)

Observație: conversia automată de la un tip simplu la tipul tablou este uzual nedefinită.

4.2.7 Conversia explicită a tipurilor

Conversia explicită a tipurilor (cast) se face în același mod ca în C: numele tipului dorit este scris în paranteze înaite de numele variabilei.

$a = 10; // $a este un întreg

$bar = (double) $a; // $bar este un double

Conversiile permise sunt:

(int), (integer) – conversia la întreg

(real), (double), (float) – conversie la double

(string) – conversie la șir

(array) – conversie la tablou

(object) – conversie la obiect

Observați că eticheta și spațiile sunt permise între paranteze, deci liniile următoare sunt echivalente:

$a = (int) $bar;

$a = ( int ) $bar;

$a = (int)$bar;

Este posibil ca rezultatul conversiei explicite între două tipuri să nu fie evident.

De exemplu convertind un scalar sau un șir de caractere la tipul array, respectiva variabilă va deveni primul element al tabloului ca în exemplul de mai jos:

$var = 'test';

$arr = (array) $var;

echo $arr[0]; // Afișează test

Când convertiți un scalar sau o variabilă de tip șir de caractere la un obiect, respectiva variabilă va deveni un atribut al obiectului, atribut numit scalar.

Exemplu:

$var = 'test';

$obj = (object) $var;

echo $obj->scalar; // Afișează test

Variabile

O variabilă poate fi cel mai bine asimilată unui container de date. După stocarea datelor într-o variabilă (sau, altfel spus, după ce unei variabile i-a fost atribuită o valoare), data sau variabila respectivă poate fi modificată, afișată în browserul web, salvată într-o bază de date, trimisă prin poștă electronică, etc.

Prin natura lor, variabilele din PHP sunt flexibile: se pot insera date într-o variabilă, se pot regăsi datele din variabila respectivă (fără a afecta valoarea variabilei), se pot plasa noi date în variabilă și se poate continua acest ciclu atât cât este necesar. Dar variabilele PHP mai au și un caracter temporar, în sensul că există – adică au valoare – numai pe durata unui script. După inserarea într-o pagină nouă, variabilele respective încetează să existe, în afara situațiilor când se iau măsuri speciale pentru a le prelungi longevitatea.

Sintaxa variabilelor

Toate numele variabilelor trebuie precedate de simbolul dolarului ($).

După simbolul dolarului, numele variabilelor trebuie să înceapă cu o literă (A-Z, a-z) sau cu un caracter de subliniere ( _ ). Un nume de variabilă nu poate începe cu o cifră.

Restul numelui variabilei poate conține orice fel de combinație și cantitate de litere, caractere de subliniere și numere.

Nu este permisă utilizarea spațiilor în interiorul unui nume de variabilă. (În schimb, prin separarea cuvintelor se folosește frecvent liniuța de subliniere ).

Numele variabilelor sunt sensibile la diferența dintre majuscule și minuscule.

Exemple de variabile utilizate în aplicație :

$nume=$HTTP_POST_VARS['NumeAngajat'];

$prenume=$HTTP_POST_VARS['PrenumeAngajat'];

$adresa=$HTTP_POST_VARS['Adresa'];

$localitate=$HTTP_POST_VARS['Localitate'];

$judet=$HTTP_POST_VARS['Judet'];

$telefon=$HTTP_POST_VARS['Telefon'].

Variabile predefinite

PHP furnizează un mare număr de variabile predefinite pentru fiecare script pe care îl rulează. Cele mai multe variabile predefinite depind de serverul pe care se lucrează, de versiunea și configurarea serverului sau de alți factori. Unele dintre aceste variabile nu vor fi disponibile când PHP rulează într-o linie de comandă.

Domeniul variabilelor

Domeniul variabilelor este contextul în care variabila este definită. Pentru marea parte a variabilelor, domeniul lor este unic. Acest domeniu se referă și la fișierele incluse într-un script.

Este o diferență între modul de stabilire a domeniului variabilelor globale în C și PHP: în absența unei referiri locale, variabilele globale din C sunt valabile în orice funcție a programului. Acest lucru nu este valabil și în PHP.

A doua modalitate de a accesa variabilele din domeniul global este prin utilizarea variabilei tablou din PHP, numită $GLOBALS.

Variabila $GLOBALS este un tablou asociativ care are drept indice numele variabilelor globale și conținutul respectivelor variabile drept elemente.

Un alt aspect important legat de domeniul variabilelor se referă la variabilele statice.

O variabilă statică există numai în domeniul unei funcții dar nu își pierde valoarea când execuția programului părăsește acest domeniu.

Variabilele statice oferă de asemeni posibilitatea de a implementa și funcțiile recursive. O funcție este recursivă dacă se autoapelează. Proiectarea funcțiilor recursive trebuie făcută cu atenție pentru a evita recursia infinită. Trebuie asigurată o modalitate adecvată de încheiere a apelurilor recursive.

4.2.8 Constante

PHP definește o serie de constante și oferă un mecanism pentru definirea altora în timpul execuției. Constantele seamănă mult cu variabilele; sunt definite cu jutorul funcției define() și valoarea lor nu poate fi modificată ulterior. Constantele predefinite (disponibile întotdeauna) sunt : FILE, LINE, PHP_VERSION, TRUE, FALSE, E_ERROR, E_WARNING, etc.

4.2.9 Operatori

Operatori aritmetici

Operatorul de împărțire ('/') întoarce o valoare întreagă (rezultatul împărțirii întregi) dacă cei doi operatori sunt întregi (sau dacă șirurile sunt convertite la întregi). Dacă unul din operatori este număr cu virgulă mobilă, sau rezultatul unei operații returnează o valoare care nu este întreagă, va fi returnată o valoare în virgulă mobilă.

Operatori de atribuire

Operatorul de atribuire simplă este '='. Are semnificația: valoarea expresiei din dreapta se atribuie variabilei din stânga (variabilă simplă sau structurată).

Putem spune că instrucțiunea de atribuire este formată din trei elemente: expresia care urmează să fie atribuită, operatorul de atribuire '=' și variabila destinatară.

Când este executată instrucțiunea de atribuire, este evaluată expresia și valoarea rezultată este depusă la destinația specificată.

În operațiile aritmetice și pe șiruri de caractere se pot folosi și operatorii compuși.

De remarcat că atribuirea se face prin copiere, adică expresia din dreapta nu se modifică în urma atribuirii. PHP4 acceptă și atribuirea prin referință, utilizând sintaxa $var = &$othervar;, dar acest lucru nu este posibil în PHP3. Atribuirea prin referință înseamnă că cele două variabile referă aceeași locație de memorie și că modificarea uneia dintre ele o afectează și pe cealaltă.

Operatori pe biți

Operatorii pe biți permit să se manipuleze numerele întregi în reprezentare binară.

Operatori de comparație

Operatorii de comparație permit compararea a două valori.

Operatori de control al erorilor

PHP are un operator de control al erorilor și anume '@'. Când acest operator precede o expresie în PHP, orice eroare care poate fi generată va fi ignorată. Dacă opțiunea track_errors este activată, mesajele de eroare generate de expresie vor fi salvate în variabila globală $php_errormsg. Această variabilă va fi rescrisă la fiecare eroare, deci verificați-o la timp dacă doriți să o utilizați.

Operatori de execuție

PHP are un operator de execuție '„' (backticks). Este diferit de ghilimelele simple.

PHP va încerca să execute conținutul dintre aceste ghilimele oblice ca o comandă shell. Rezultatul va fi returnat (nu va fi descărcat pur și simplu, ci va putea fi atribuit unei variabile).

Operatori de incrementare și de decrementare

Operatori logici

Motivul pentru care există două tipuri de 'ȘI' și 'SAU' este că ele au priorități diferite.

Operatori pentru șiruri de caractere

Există doi operatori de șir. Primul este operatorul de concatenare ('.'), care are ca rezultat concatenarea celor două argumente. Cel de-al doilea operator este operatorul de atribuire ('.='), care concatenează argumentul din partea dreaptă la argumentul din partea stângă.

Ppecedența operatorilor

de la cea mai puternică la cea mai slabă:

4.2.10 Crearea formularelor HTML

Prin includerea unui formular într-o pagina web se pot solicita utilizatorului diverse răspunsuri, sub formă de text sau prin selectarea unor opțiuni. Datele completate de către utilizator sunt expediate unui server. O aplicație specializată de pe server analizează formularul completat și stochează datele într-o bază de date. Dacă este necesar, serverul expediază un răspuns utilizatorului. Se stabilește astfel o legătură directă între utilizator și server, obținându-se o pagină web interactivă.

Un formular poate conține butoane, casete de selecție, liste derulante, câmpuri de editare, etc. Într-o pagină web pot fi create oricât de multe formulare.

Formularul face parte din corpul unui document HTML și este definit prin elementul form , cuprins între marcajele <form> și </form>. Elementele form nu pot fi imbricate.

Încorporarea controalelor

Această secțiune descrie două controale elementare utilizate frecvent: caseta cu text și butonul de expediere. O casetă cu text permite utilizatorului să tasteze informații care pot fi apoi trimise unui script PHP. Casetele cu text sunt frecvent folosite pentru a obține date precum numele utilizatorului, adresa sa poștală sau adresa de e-mail. Pentru a crea o casetă cu text, se scrie o etichetă HTML care are următoarea formă elementară:

<input ype="text" name="text">

Atributul name atribuie casetei cu text un nume, astfel încât conținutul său să fie accesibil unui script PHP. Numele atribuit unui control trebuie să fie unic în cadrul formularului și trebuie să respecte anumite reguli. Cu alte cuvinte, numele trebuie să înceapă cu o literă și nu trebuie să conțină alte caractere în afara literelor, a cifrelor și a caracterelor de subliniere; în particular, numele nu trebuie să conțină spații.. Un buton de expediere permite utilizatorului să trimită serverului conținutul unui formular. Fiecare formular HTML trebuie să aibă un buton de expediere. Pentru a crea un buton de expediere, se scrie o etichetă HTML care are următoarea formă:

<input type="submit" value="text">

Atributul VALUE specifică textul care trebuie să apară pe suprafața butonului de expediere. afișa această pagina).

Lucrul cu formulare multiple

În interiorul corpului unei pagini HTML se pot include mai multe formulare.

Crearea casetelor cu text personalizate

În secțiunea precedentă am prezentat sintaxa elementară pentru crearea unei casete cu text. Cu toate acestea, HTML furnizează numeroase atribute suplimentare care permit modificarea aspectului și comportamentului unei casete cu text. Iată sintaxa completă pentru crearea unei casete cu text:

<input type="text" name="text"size="număr" maxlength="numar" value="text">

Atributele type și name sunt obligatorii, celelalte atribute sunt opționale.

Atributul size, care este dat sub forma unui număr de caractere, stabilește dimensiunea vizibilă a casetei cu text, atributul maxlength specifică numărul maxim de caractere pe care utilizatorul are permisiunea de a le tasta. Valoarea atributului maxlength o poate depăși pe aceea a atributului size, în care caz conținutul controlului defilează spre dreapta atunci când utilizatorul a introdus size caractere. Atributul value constituie o valoare care este afișată inițial în caseta cu text.

Crearea de suprafețe cu text

Ca o casetă cu text, o suprafață cu text permite unui utilizator să introducă text. Cu toate acestea, o suprafață cu text poate permite utilizatorului să introducă mai multe linii de text, în timp ce o caseta cu text permite utilizatorului să introducă o singură linie. Iată sintaxa pentru crearea unei suprafețe cu text:

<textarea name="text" rows="numar" cols="numar" wrap="wrap">

Atributele name și rows sunt obligatorii, atributele cols și wrap sunt opționale. Atributul rows specifică numărul liniilor de text vizibile în suprafața cu text; deoarece suprafața de text defilează după ce a fost umplută, utilizatorul poate introduce linii suplimentare. Atributul cols specifică numărul coloanelor de text vizibile în suprafața cu text; deoarece suprafața cu text se derulează sau se înfășoară după ce s-a umplut, utilizatorul poate introduce linii mai lungi. Atributul wrap specifică maniera de înfășurare a textului în interiorul suprafeței cu text. Atributul wrap poate avea următoarele valori:

off – Înfășurarea cuvintelor la sfârșitul liniei de text este dezactivată; utilizatorul poate introduce caractere de sfârșit de linie pentru a forța înfășurarea liniilor

virtual – Liniile par înfașurate, dar caracteristica de înfășurare a liniilor nu este trimisă la server

physical – Înfășurarea cuvintelor la sfârșitul liniei este activată soft – Identic cu virtual hard – Identic cu physical

O etichetă <textarea> trebuie combinată cu o etichetă </textarea>. Orice text care apare între etichete va fi prezentat drept conținut inițial al controlului de tip suprafață cu text.

Crearea casetelor cu parolă

Dacă o aplicație impune unui utilizator să introducă o parolă, se poate crea o casetă cu text în acest scop. Totuși, când utilizatorul introduce parola, orice persoană aflată în apropiere poate vizualiza parola, situație care duce la o posibilă breșă de securitate. În loc de a se folosi o casetă cu text pentru introducerea de informații confidențiale, trebuie folosită o casetă cu parolă. Pentru a crea o casetă cu parolă,se folosește aceeași sintaxă ca și cea utilizată pentru crearea unei casete cu text, cu excepția faptului că se specifică password (parola) în loc de text ca valoare a atributului.

Atributele unei casete cu parolă au aceeași semnificație ca și acelea ale unei casete cu text.

Crearea de selecții

O selecție este un meniu care defilează, de unde utilizatorul poate alege una sau mai multe opțiuni. Pentru a crea o selecție, folosiți următoarea sintaxă:

<select name="text" multiple size="numar">etichetele option se insereaza aici</select>
Eticheta <select> este folosită în combinație cu eticheta </select>. Între cele două etichete este introdusă o serie de etichete option. Într-o etichetă select, numai atributul name este obligatoriu. Atributul multiple arată că utilizatorul poate alege mai multe opțiuni menținând apăsată tasta CTRL și executând clic pe aceasta. În absența atributului multiple, utilizatorul poate selecta o singură opțiune.

Atributul size specifică numărul opțiunilor vizibile. Prin utilizarea unui buton de derulare în jos sau a unei bare de defilare, utilizatorul poate manipula selecția pentru a obține accesul la restul opțiunilor și a alege dintre acestea. O selecție este asociată cu una sau mai multe opțiuni. Pentru a crea o opțiune care urmează a fi utilizată în cadrul unei selecții, se folosește următoarea sintaxă:

<option selected value="text">continutul optiunii este inserat aici</option>

O formă a unui formular arată astfel:

<table align = "left">

<tr>

<td><P Class="campuri">

<b>Adaugare camera :</b>

</td>

</tr>

<tr>

<td><P Class="campuri">

<b>Cod camera</b>

</td>

<td><P Class="campuri">

*

</td>

<td>

<input type="text" name="CodCamera">

</td>

</tr>

<tr>

<td><P Class="campuri">

<b>Tip camera </b>

</td>

<td><P Class="campuri">

*

</td>

<td>

<select name="TipCamera" >

<option value="1">Single

<option value="2">Dubla

<option value="3">Apartament

</select>

</td>

</tr>

<tr>

<td><P Class="campuri">

<b>Etaj </b>

</td>

<td><P Class="campuri">

*

</td>

<td>

<select name="Etaj" >

<option value="1">Etaj 1

<option value="2">Etaj 2

<option value="3">Etaj 3

</select>

</td>

</tr>

<tr>

<td><P Class="campuri">

<b>Internet </b>

</td>

<td><P Class="campuri">

</td>

<td>

<select name="Internet" >

<option value="1">NU

<option value="2">DA

</select>

</td>

</tr>

<tr>

<td><P Class="campuri">

<b>Minibar </b></td>

<td><P Class="campuri">

</td>

<td>

<select name="Minibar" >

<option value="1">NU

<option value="2">DA

</select>

</td>

</tr>

<tr>

<td><P Class="campuri">

<b>Televizor</b>

</td>

<td>

<select name="Televizor" >

<option value="1">NU

<option value="2">DA

</select>

</td>

</tr>

<tr>

<td><P Class="campuri1">

* Campuri obligatorii

</td>

<td>

<input type="submit" name ="adaugare" value="ADAUGARE">

<input TYPE="reset" NAME="anulare" VALUE="ANULARE">

</td>

</tr>

</table>

4.2.11 Structuri de control

Structura If

Una dintre cele mai importante structuri în orice limbaj este cea alternativa. În PHP sintaxa acestei structuri este urmatoarea:

if (conditie

)instructiune

Folosirea unei astfel de structuri indică faptul că instrucțiunea se va executa dacă și numai dacă valoarea expresiei conditie (eventual dupa conversia la tipul boolean) este true.

Structura else

Dacă dorim să executăm două instrucțiuni diferite în funcție de valoarea de adevăr a unei expresii vom folosi o instrucțiune if-else ca în exemplul următor:

if (mysql_num_rows($result) >0)

return true;

else

return false;

Instrucțiunile de după else sunt executate doar dacă expresia condițională este evaluată la FALSE.

Structura elseif

Așa cum sugerează numele, este o combinație a instrucțiunilor if și else. Ca și else, instrucțiunea elseif extinde o instrucțiune if pentru a executa alte instrucțiuni în cazul în care expresia condițională din if este FALSE. Spre deosebire de else, instrucțiunea alternativă va fi executată doar dacă expresia condițională din elseif este TRUE.

Instrucțiunile elseif se pot imbrica pe mai multe niveluri, după un if inițial. Primul elseif care va fi evaluat la TRUE va fi executat. În PHP, instrucțiunea poate fi scrisă și în două cuvinte: else if. Comportamentul său va fi același.

Sintaxe alternativă

PHP propune o sintaxa alternativă pentru instrucțiunile de control if, while, for și switch. În fiecare caz principiul este de a înlocui acolada deschisă cu două puncte (':') și acolada închisă prin, respectiv endif;, endwhile;, endfor;, sau endswitch;.

Această sintaxă funcționează de asemenea cu else și elseif.

Structura while

Majoritatea script-urilor PHP vor conține cicluri. Pentru a folosi o buclă anterior condiționată se va utiliza structura while. Sintaxa acestei proceduri este:

while (conditie)

instructiune

Efectul acestei structuri este executarea instrucțiunii atât timp cât valoarea expresiei conditie (eventual după conversia la tipul boolean) este true. Trebuie observat faptul că este posibil ca instrucțiunea să nu fie executată niciodată. Si pentru această structura avem la dispoziție o sintaxă alternativă si anume:

while (conditie):

grup instructiuni

endwhile;foreach

Structura break

Instrucțiunea break permite ieșirea dintr-o instrucțiune if, for, while sau switch. Instrucțiunea break acceptă un argument numeric opțional care va indica numărul de instrucțiuni imbricate care trebuiesc întrerupte.

Structura continue

Instrucțiunea continue este utilizată într-o buclă pentru a sări peste instrucțiunile de după continue și până la sfârșitul blocului; execuția iterației curente este întrerupă și se trece la execuția iterației următoare. Instrucțiunea continue acceptă un argument numeric opțional care va indica câte bucle imbricate vor fi ignorate.

Structura switch

Instrucțiunea switch este echivalentă cu o serie de instrucțiuni if. Cu numeroase ocazii, veți avea nevoie să comparați aceeași variabilă (sau expresie) cu mai multe valori diferite și să executați diferite parți din cod în funcție de valoarea obținută. Acesta este modul de execuție al instrucțiunii switch.

Este important să înțelegem modul de execuție al instrucțiunii switch pentru a evita apariția erorilor. Instrucțiunea switch se execută secvențial, linie după linie. La început nu este executat nici un cod. Numai când se gasește o valoare a selectorului identică cu o constantă case, PHP execută instrucțiunile corespunzătoare respectivei constante case. PHP continuă să execute instrucțiunile pâna la sfârșitul blocului de instrucțiuni switch sau până când întâlnește instrucțiunea break. Dacă nu utilizați instrucțiunea break la sfârșitul unui bloc case, PHP va continua să execute instrucțiunile din următorul bloc case.

În comanda switch, condiția este evaluată o singură dată și rezultatul este comparat cu fiecare constantă case. Într-o instrucțiune elseif, condiția este reevaluată. Dacă condiția voastră este mai complicată decât o simplă comparație sau apare într-o buclă, instrucțiunea switch se poate dovedi mai rapidă.

Expresiile case pot fi orice expresie scalară de tip întreg, virgulă mobilă sau șir de caractere. Tablourile și obiectele pot fi folosite numai dacă sunt dereferențiate la un tip simplu.

Alte structuri PHP

Există și alte structuri PHP care pot fi utilizate în anumite scopuri, cum ar fi structurile include, require, include_once si require_once pot fi utilizate pentru a insera" anumite instrucțiuni care sunt păstrate într-un alt fișier (document). Interpretorul PHP consideră că secvența din fișierul inserat se află în fișierul din care s-a "comandat" inserarea în poziția în care apare structura de inserare.

O alta structura este declare care permite crearea unor directive in executie.

Functiile PHP trebuie sa utilizeze instructiunea return pentru a furniza un rezultat.

4.2.12 Funcții

Limbajul PHP include funcții predefinite care execută operații utile. Majoritatea funcțiilor necesită una sau mai multe valori de intrare, cunoscute sub numele de argumente, care influentează operarea și rezultatul funcției.

Pe lângă funcțiile predefinite, utilizatorul poate defini și utiliza propriile funcții. Pentru definirea unei funcții trebuie respectat modelul următor:

Function nume_functie(arg1, arg2, …,argn){

Corpul_functiei

}

Argumentele din antetul funcției pot lipsi. Argumentelor li se pot atribui valori în antetul functiei, iar la apelare daca argumentul ce a fost inițializat lipsește atunci se ia valoarea prestabilită. Argumentele ce nu sunt prestabilite sunt obligatorii în apelul funcției. Pentru ca funcția respectivă să returneze ceva trebuie să apară în corpul funcției instrucțiunea return urmată de valoarea dorită. Instrucțiunea return, atrage după sine returnearea valorii speciale NULL.

In PHP definiția unei funcții trebuie să preceadă linia de program care apelează funcția. In PHP4 definiția poate fi plasată fie anterior liniei de cod ce efectuează apelul, fie după aceasta.

In cadrul scripturilor PHP există două tipuri de variabile: globale și locale. Cele globale sunt declarate în afara oricărei funcții, iar cele locale sunt create în interiorul unei funcții. Accesul la o variabile globala, în cadrul unei funcții, se face prin specificarea numelui variabilei în interiorul unei instrucțiuni globale. Instrucțiunea globală are următoarea formă:

Global var_1, var_2,…, var_n;

Durata de viață a variabilelor este: cele globale sunt create la atribuirea unei valori și există pe durata unui program, iar cele locale sunt create la apelul funcției asociate și sunt distruse la încheierea apelului la funcția respectivă.

4.2.13 Accesul la bazele de date relaționale

PHP include o bibliotecă de funcții care furnizează o interfață cu sistemul MySQL de gestiune a bazelor de date. Folosind aceste funcții, un program PHP poate obține accesul la datele rezidente dintr-o baza de date MySQL si le poate modifica.

Majoritatea interactiunilor cu o baza de date se desfasoara dupa un model secvential simplu:

Se deschide o conexiune cu serverul MySQL

Se specifică baza de date la care se va obține accesul

Se emit interogari SQL, se obține accesul la rezultatele interogarilor și se execută operatii non-SQL

Se inchide conexiunea cu serverul MySQL

Conectarea la serverul MySQL

Sintaxa pentru conectarea la o bază de date este:

$dbc = mysql_connect (‘localhost’, ‘numeutilizator’,’parola’) ;

Conexiune la baza de date ($dbc) este stabiltă utilizând trei argumente: gazda care este apropare întotdeauna localhost; numele de utilizator și parola pentru acest nume de utilizator

Dacă a fost stabiltă o conexiune, este afișat un mesaj care confirmă acest lucru și apoi conexiunea este închisă. În caz contrar, este afișat mesajul negative și apoi nu este nevoie să se închidă conexiunea la baza de date, deoarece aceasta nu a fost deschisă.

Crearea și selectarea unei baze de date

Pentru a crea o bază de date cu PHP se utilizează funcția mysql_query() și comanda SQL CREATE DATABASE numebazadedate:

mysql_query(‘CREATE DATABASE bazameadedate’) ;

Selectarea bazei de date se face utilizând funcția mysql_select_db():

mysql_select_db(‘bazameadedate’);

Funcția returnează true dacă poate obține accesul la baza de date, respectiv false în caz contrar.

O bază de date nu trebuie creată decât o singură dată, dar ea va trebui întotdeauna selectatăînainte de a putea rula orice alte interogări.

Interogări asupra bazei de date

Din punct de vedere al limbajului PHP există două categorii de interogări SQL:

interogările SELECT care returnează rânduri ale unei interogari;

interogari UPDATE, INSERT si DELETE, care nu returnează rânduri ale unui tabel, în schimb face modificări asupra informației din tabele;

Ambele categorii de interogari sunt emise folosind functia mysql_query(), dar verificarea și prelucrarea celor două categorii de rezultate ale interogarilor sunt procese destul de diferite.

Funcția mysql_query executa o interogare specificată. Funcția are următoarea formă: mysql_query(„interogare”); unde interogare este un șir de caractere care conține interogarea care urmează a fi executată Funcția returnează true dacă serverul a reușit să execute interogarea și fals în caz contrar.

Pentru a verifica dacă o interogare UPDATE, INSERT sau DELETE a avut efectul dorit, se poate folosi funcția mysql_affected_rows(), care returnează numărul rândurilor afectate de interogare. În cazul în care cea mai recentă interogare UPDATE, INSERT sau DELETE a eșuat, funcția returnează valoarea -1.

Închiderea conexiunii cu severul MySQL

Pentru a închide o conexiune cu un server MySQL se apelează funcția mysql_close(), care are următoarea formă:

mysql_close();

Funcția returnează true în caz de reușită și false în caz contrar.

4.2.14 Sesiuni în PHP

O sesiune oferă o modalitate de a ține o evidență a informațiilor despre un utilizator pe parcursul mai multor pagini.

Crearea, accesarea și ștergerea unei sesiuni începe cu funcția session_start().

În paginile care folosesc sesiuni, trebuie apelată funcția session_start() ca una din ptimele linii de cod din script. Prima dată când este inițiată o sesiune, se generează un indicative de sesiune aleatoriu și se trimite un cookie browser-ului Web cu numele PHPSESSID (numele sesiunii) și o valoare de genul 4bcc48dc87cb4b54d63f99da23fb41e1.

După inițierea sesiunii, se poate începe înregistrarea informației pentru ea, prin atribuirea de valori matricei $_SESSION:

$_SESSION [‘first_name’]=’John’;

$_SESSION [‘age’]=20;

PHP va scrie informația într-un fișier temporar salvat în server.

Pentru a elimina datele sesiunii din server se folosește funcția session_destroy() care are următoarea formă: bool session_destroy(void).

MySQL

5.1Noțiuni fundamentale despre bazele de date

5.1.1 Concepte de baza privind sistemele cu baze de date

Sistemele cu baze de date sunt o componentă esențială a vieții de zi cu zi în societatea modernă.

Utilizatorii unei baze de date au posibilitatea să efectueze mai multe categorii de operații asupra datelor memorate:

Introducerea de noi date (insert);

Ștergerea unora din datele existente (delete);

Actualizarea datelor memorate (update);

Interogarea bazei de date (query) pentru a regăsi anumite informații, selectate

după un criteriu ales.

În sensul cel mai larg, o bază de date (database) este o colecție de date corelate din punct de vedere logic, care reflectă un anumit aspect al lumii reale și este destinată unui anumit grup de utilizatori. În acest sens, bazele de date pot fi create și menținute manual sau computerizat, așa cum este majoritatea bazelor de date folosite în momentul de față.

O definiție într-un sens mai restrâns a unei baze de date este următoarea:

O bază de date (database) este o colecție de date creată și menținută computerizat, care permite operații de introducere, ștergere, actualizare și interogare a datelor.

5.1.2 Componentele unui sistem cu bază de date

Un sistem de baze de date (Database System) este un sistem computerizat de menținere a evidenței unei anumite activități, folosind baze de date. Componentele unui sistem de baze de date sunt: hardware, software, utilizatori, date persistente.

Hardware. Sistemele de baze de date sunt instalate, de regulă, pe calculatoare de uz general, de la calculatoare PC standard, până la stații multiprocesor puternice.

Software. Între baza de date (colecția de date memorate fizic în fișiere pe hard-discuri) și utilizatorii sistemului există un nivel software, numit Sistem de Gestiune a Bazei de Date (SGBD) – (Database Management System -DBMS).

Sistemul de gestiune a bazei de date – SGBD – (Database Management System – DBMS) recepționează cererile utilizatorilor de acces la baza de date (pentru operații de introducere, ștergere, modificare sau interogare), le interpretează, execută operațiile corespunzătoare și returnează rezultatul către utilizatori.

O aplicație de baze de date (Database Application) este un program care oferă o anumită utilizare a unei baze de date.

De exemplu, programul care permite gestionarea clienților și rezervărilor unei pensiuni turistice folosind informațiile despre clienți memorate într-o bază de date reprezintă o aplicație de baze de date.

Utilizatorii unui sistem de baze de date se pot împărți în câteva categorii: programatorii de aplicații, utilizatorii finali și administratorul bazei de date.

Programatorii de aplicații sunt cei care scriu (dezvoltă) aplicațiile de baze de date, folosind limbaje de programare de nivel înalt (Cobol, PL/1, Fortran, C, C++, Java, Basic) și biblioteci care permit încorporarea operațiilor de acces la baza de date. Aplicațiile rezultate pot fi aplicații cu execuție independentă (batch-processing) sau pot fi aplicații interactive (on-line) folosite de utilizatorii finali ai sistemului pentru a accesa (într-un mod mai eficient și mai sigur) baza de date.

Utilizatorii finali sunt acei utilizatori care accesează baza de date prin intermediul unui program de aplicație care le conferă drepturi limitate de acces la date pentru anumite operații de prelucrare. Utilizatorii finali sunt persoane cu pregătire tehnică minimală, care efectuează un volum mare de operații asupra bazei de date, dar nu trebuie să cunoască mai mult decât posibilitățile oferite de programul pe care îl utilizează.

Administratorul bazei de date (Database Administrator) este o persoană (sau un grup de persoane) cu înaltă calificare tehnică care are ca sarcină menținerea funcționalității bazei de date prin stabilirea drepturilor de acces ale diferitelor categorii de utilizatori, prin efectuarea operațiilor periodice de salvare a datelor (backup), prin monitorizarea performanțelor sistemului și refacerea datelor atunci când este necesar.

Orice SGBD suportă două categorii de limbaje conceptuale: limbaje de descriere a datelor și limbaje de manipulare a datelor.

Limbajele de descriere a datelor – LDD – (Data Description Languages – DDL) permit definirea conceptuală a datelor, fără referire la modul de memorare fizică a acestora.

Limbajele de manipulare a datelor – LMD – (Data Manipulation Languages – DML) permit specificarea operațiilor de introducere, actualizare, ștergere și interogare a datelor.

5.1.3 Arhitectura internă a sistemelor cu bază de date

Arhitectura internă a unui sistem de baze de date propusă prin standardul ANSI/X3/SPARC (1975) conține trei niveluri funcționale: nivelul extern, nivelul conceptual și nivelul intern .

Nivelul extern este o colecție de scheme externe, care sunt vederi ale diferitelor grupuri de utilizatori, existând câte o vedere individuală a datelor pentru fiecare grup; nivelul conceptual conține schema conceptuală (logică) a bazei de date, iar nivelul intern conține schema internă (fizică) a bazei de date.

O schemă externă (vedere utilizator) (external schema, user’s view) conține o subschemă conceptuală a bazei de date, mai precis descrierea datelor care sunt folosite de acel grup de utilizatori.

Schema conceptuală a bazei de date (conceptual schema) corespunde unei reprezentări unice (pentru toți utilizatorii) și abstracte a datelor, descriind ce date sunt stocate în baza de date și care sunt asocierile dintre acestea.

Schema internă (fizică) a bazei de date (internal schema) specifică modul de reprezentare a datelor pe suportul fizic.

Un sistem de baze de date suportă o schemă internă, o schemă conceptuală și mai multe scheme externe; toate aceste scheme sunt descrieri diferite ale aceleiași colecții de date, care există doar în nivelul intern.

5.1.4Avantajele oferite de sistemele cu bază de date

Față de vechile metode de înregistrare a datelor privind diferite activități pe fișe (documente scrise) sau chiar în fișiere pe disc, sistemele de baze de date oferă avantaje considerabile, ceea ce explică extinsa utilizare a acestora. Câteva dintre avantajele oferite sunt prezentate în continuare.

Compactitate ridicată: volumul ocupat de sistemele de baze de date este mult mai redus decât volumul ocupat de documente scrise sau de fișiere necorelate.

Viteză mare de regăsire și actualizare a informațiilor.

Redundanță scăzută a datelor memorate, care se obține prin partajarea datelor între mai mulți utilizatori și aplicații.

Posibilitatea de introducere a standardelor privind modul de stocare a datelor, ceea ce permite interschimbul informațiilor între diferite organizații.

Menținerea integrității datelor prin politica de securitate (drepturi de acces diferențiate în funcție de rolul utilizatorilor), prin gestionarea tranzacțiilor și prin refacerea datelor în caz de funcționare defectuoasă a diferitelor componente hardware sau software.

Independența datelor față de suportul hardware utilizat. Sistemele de gestiune a bazelor de date oferă o vedere (view) externă a datelor, care nu se modifică atunci când se schimbă suportul de memorare fizic, ceea ce asigură imunitatea structurii bazei de date și a aplicațiilor la modificări ale sistemului hardware utilizat.

5.1.5 Modelarea datelor

Un model este o abstractizare a unui sistem, care captează cele mai importante trăsături caracteristice ale sistemului (concepte), relevante din punct de vedere al scopului pentru care se definește modelul respectiv. Tehnica de identificare a trăsăturilor caracteristice esențiale ale unui sistem se numește abstractizare.

Un model de date stabilește regulile de organizare și interpretare a unei colecții de date. În proiectarea bazelor de date se folosesc, de regulă, mai multe modele de date, care se pot clasifica în două categorii: modele conceptuale de nivel înalt și modele specializate. Un model conceptual de nivel înalt al datelor conține o descriere concisă a colecțiilor de date care modelează activitatea dorită (numită schemă conceptuală de nivel înalt), fără să detalieze modul de reprezentare sau de prelucrare a datelor.

Modelele specializate de date (cum sunt: modelul ierarhic, modelul rețea, modelul relațional, etc.) impun anumite structuri speciale de reprezentare a mulțimilor de entități și a asocierilor dintre acestea, structuri pe baza cărora sunt dezvoltate sistemele de gestiune a bazelor de date. Într-un astfel de model de date, o bază de date este reprezentată printr-o schemă conceptuală (logică) specifică. Trecerea de la modelul conceptual de nivel înalt la un model de date specific reprezintă etapa de proiectare logică a bazei de date care asigură corespondența dintre schema conceptuală de nivel înalt a bazei de date și schema conceptuală specifică modelului de date respectiv.

Modele conceptuale de nivel înalt

Modelul Entitate-Asociere

Modelul Entitate-Asociere (Entity-Relationship Model), introdus în 1976 de P.S. Chen, este un model conceptual de nivel înalt al unei baze de date, care definește mulțimile de entități și asocierile dintre ele, dar nu impune nici un mod specific de structurare și prelucrare (gestiune) a datelor.

Modelul Entitate-Asociere Extins

Modelul Entitate-Asociere Extins (Enhanced Entity-Relationship Model) permite definirea de subtipuri ale unui tip de entități, care moștenesc atribute de la tipul de entitate pe care îl extind (și care, în acest context, se numește supertip) și au în plus atribute specifice semnificației lor. Prin definirea tipurilor și a subtipurilor de entități se pot crea ierarhii de tipuri de entități pe mai multe niveluri.

Modelul de date ierarhic

În modelul ierarhic (Hierarchical Model) o bază de date se reprezintă printr-o structură ierarhică de înregistrări de date (records) conectate prin legături (links). Modelul de date ierarhic a fost primul model folosit pentru dezvoltarea bazelor de date. Cea mai cunoscută realizare de SGBD ierarhic este sistemul IMS (Information Management System) dezvoltat de firma IBM în cadrul programului de cercetări Apollo, în perioada anilor 1960. O înregistrare de date în modelul ierarhic este o instanță a unui tip de înregistrare (record type) și constă dintr-o colecție de câmpuri (fields), fiecare câmp conținând valoarea unui atribut

Modelul de date rețea

Modelul rețea (Network Model) folosește o structură de graf pentru definirea schemei conceptuale a bazei de date; nodurile grafului sunt tipuri de entități (înregistrări – records), iar muchiile grafului reprezintă în mod explicit asocierile (legăturile-links) dintre tipurile de entități.

Apărut după modelul ierarhic, modelul rețea de reprezentare a bazelor de date a fost standardizat în 1971, de o comisie DBTG (Database Task Group). Modelul rețea a avut mai multe implementări ca sisteme de gestiune comerciale: IDS II (Honeywell), UNISYS (Burroughs), IDMS (Computer Associates).

Modelul de date relațional

Modelul relațional (Relational Model) se bazează pe noțiunea de relație (relation) din matematică, care corespunde unei mulțimi de entități de același tip.

Modelul de date relațional a fost propus de cercetătorul E.F. Codd de la compania IBM, care a publicat în anul 1970 lucrarea "Un model Relațional de Date pentru Bănci Mari de Date Partajate". Alte lucrări ale lui Codd, ca și ale altor cercetători (C.J. Date, P. Chen, R. Boyce, J.D. Ullman, R. Fagin, W.W. Armstrong, M. Stonebraker, etc.) au perfecționat modelul de date relațional și au permis dezvoltarea fără precedent a sistemelor de gestiune a bazelor de date, datorită simplității și a fundamentării matematice a modelului.

Primul Sistem de Gestiune a Bazelor de Date Relaționale (SGBDR) a fost prototipul System R, dezvoltat la compania IBM în anii 1970, după care numeroase companii au realizat sisteme de gestiune relaționale (Oracle, Microsoft, Ingres, Sybase, etc.) iar aplicațiile de baze de date relaționale au căpătat o amploare deosebită.

Pe lângă avantajul unui model de date precis și simplu, sistemele de baze de date relaționale mai beneficiază și de un limbaj de programare unanim recunoscut și acceptat, limbajul SQL (Structured Query Language), pentru care au fost emise mai multe standarde de către ISO (International Standardization Office). Majoritatea SGBD-urilor relaționale actuale implementează versiunea SQL92 (sau SQL2).

Modelul de date obiect-orientat

Modelul obiect (Object Model) este un concept unificator în știința calculatoarelor, fiind aplicabil în programare, în proiectarea hardware-ului, a interfețelor, a bazelor de date, etc. Sistemele de baze de date obiect- orientate se bazează pe limbaje de programare obiect-orientate cu capacități de persistență, în care datele sunt independente de timpul de viață al programelor care le creează, prin memorare pe suport magnetic (disc).

Modelul de date obiect-relațional

Modelul obiect-relațional (Object-Relational Model) reprezintă extinderea modelului relațional cu caracteristici ale modelului obiect, extindere necesară pentru realizarea bazelor de date care definesc și prelucrează tipuri de date complexe.

5.1.6 Baze de date relaționale

Modelul relațional a avut, încă de la apariția sa în anul 1970, o popularitate deosebit de mare, astfel încât majoritatea sistemelor de baze de date care există și se dezvoltă la ora actuală sunt sisteme relaționale.

Pe lângă simplitatea și precizia modului de definire a elementelor de bază ale modelului (relații, atribute, domenii), există un suport teoretic substanțial pentru realizarea bazelor de date relaționale (constrângerile de integritate, normalizarea relațiilor, controlul concurenței), care permite crearea structurii datelor și a prelucrării lor într-un mod consistent și asigură integritatea și protecția acestora.

Relații

O bază de date relațională este compusă dintr-o mulțime finită de relații, fiecare relație reprezentând un tip de entitate sau o asociere dintre două sau mai multe tipuri (mulțimi) de entități.

Din această definiție rezultă că într-o bază de date fiecare relație este unică (nu există două sau mai multe relații de același fel), dat fiind că o bază de date este o mulțime de relații. O relație se definește prin intermediul atributelor sale.

Atributele unei relații sunt atributele tipului de entitate sau de asociere pe care îl reprezintă relația respectivă.

Un domeniu de definiție (domain) este o mulțime cu nume de valori atomice de același tip, având o anumită semnificație, din care își iau valori atributele relațiilor.

Schema relației (relation schema), notată R(A1,A2,…Ai,…An), este compusă din numele relației (R) și din lista ordonată a atributelor sale A1,A2,…Ai,..An, fiecare atribut Ai definit pe domeniul său de definiție, D(Ai).

Schema relației este folosită pentru a descrie relația respectivă și se mai numește și tipul sau intensiunea relației. Numărul de atribute ale schemei unei relații se numește gradul relației.

Reprezentarea relațiilor prin tabele

Un tabel (table) este o reprezentare a unei relații și este compus din următoarele părți:

Numele tabelului, care este identic cu numele relației pe care o reprezintă.

Un număr de coloane egal cu numărul de atribute ale relației, fiecare coloană reprezentând un atribut.

Capul tabelului, în care se înscriu numele atributelor relației, fiecare atribut fiind înscris în coloana corespunzătoare.

O mulțime de linii, fiecare linie corespunzând unui tuplu (deci unei entități); în fiecare element al unei linii se înregistrează valoarea atributului corespunzător coloanei în care se află elementul respectiv.

5.1.7 Normalizarea relațiilor

La proiectarea bazelor de date relaționale se stabilește mulțimea relațiilor, prin selectarea tipurilor relevante de entități din realitatea modelată și a asocierilor dintre acestea. Modul în care se pot stabili relațiile unei baze de date nu este unic și de aceea este necesar să existe criterii de evaluare a calității relațiilor, astfel încât acestea să asigure atât integritatea datelor cât și performanțe de interogare cât mai bune. Criteriul de evaluare a relațiilor se bazează pe conceptul de dependențe de date.

Dependențele de date (data dependencies) reprezintă constrângeri care se impun valorilor atributelor unei relații și care determină proprietățile relației în raport cu operațiile de inserare, ștergere și actualizare a tuplurilor. Pe baza dependențelor de date se pot stabili reguli de definire a relațiilor, astfel încât acestea să prezinte anumite proprietăți, proprietăți care caracterizează formele normale ale relațiilor (sau gradele de normalizare ale acestora).

O formă normală a unei relații (normal form) presupune anumite condiții pe care trebuie să le îndeplinească valorile atributelor și dependențele de date definite pe acea relație.

Inițial, E.F. Codd a propus trei forme normale, numite prima formă (FN1), a doua formă (FN2) și a treia formă normală (FN3). Ulterior, a fost introdusă o definiție mai completă a celei de-a treia forme, care a primit numele de forma normală Boyce-Codd (FNBC). Toate aceste forme normale se referă la condițiile pe care trebuie să le îndeplinească dependențele funcționale între atributele unei relații. Forme normale superioare, cum sunt a patra formă normală (FN4) și a cincea formă normală (FN5) impun condiții dependențelor multivalorice, respectiv dependențelor de joncțiune între atributele unei relații.

Normalizarea relațiilor (normalization) constă în descompunerea lor, astfel încât relațiile rezultate să îndeplinească condiții din ce în ce mai restrictive în ceea ce privește dependențele de date, adică să corespundă unor forme normale cât mai avansate.

Prin normalizare se elimină (sau se micșorează) redundanța datelor memorate în relații și anomaliile care provin din această redundanță. Totuși, după normalizare, o parte din interogări vor necesita joncțiuni între relațiile rezultate prin descompunere, joncțiuni care nu erau necesare dacă relația nu ar fi fost descompusă și care conduc la creșterea duratei de execuție a acestor operații de interogare.

PRIMA FORMA NORMALĂ A RELAȚIILOR (FN1)

O relație este normalizată în prima formă normală (FN1) dacă fiecare atribut ia numai valori atomice și scalare din domeniul său de definiție.

Caracterul de atomicitate se referă la faptul că valoarea unui atribut are semnificație numai în ansamblul ei și nu permite descompunerea în componente care să poată fi manevrate separat. Chiar dacă tipul de date peste care este definit domeniul unui atribut este reprezentat prin mai multe componente, acestea nu au semnificație luate individual. Valoarea scalară a unui atribut se referă la faptul că un atribut nu poate avea decât o valoare (din domeniul de definiție pe care este definit) pentru fiecare tuplu.

Sistemele SGBD relaționale nu admit relații care să nu fie cel puțin în prima formă normală, dar proiectarea relațiilor normalizate în prima formă normală este simplă și întotdeauna posibilă.

A DOUA FORMĂ NORMALĂ A RELAȚIILOR (FN2)

O relație este normalizată în a doua formă normală (FN2) în raport cu o mulțime

de dependențe funcționale F, dacă este în FN1 și dacă în F+ nu există nici o dependență funcțională parțială a unui atribut neprim față de o cheie a relației.

Din această definiție rezultă că, dacă orice cheie a unei relații este formată dintr-un singur atribut, relația este în FN2. Acest lucru este evident, deoarece orice dependență funcțională față de un atribut simplu este o dependență funcțională totală.

De asemenea, este evident faptul că o relație compusă din două atribute este în FN2, deoarece, fie cheia este formată din ambele atribute și atunci nu există atribute neprime, fie cheia este formată dintr-unul din atribute iar dependența funcțională a celuilalt atribut (care este atribut neprim) față de cheie este totală.

A TREIA FORMĂ NORMALĂ A RELAȚIILOR (FN3)

O relație este normalizată în a treia formă normală (FN3) în raport cu o mulțime de dependențe funcționale F dacă este în FN2 și dacă în F+ nu există nici o dependență funcțională netrivială a unui atribut neprim față de alt atribut neprim al relației.

Orice relație formată din două atribute este în FN3 deoarece ea se află în FN2 (s-a demonstrat în secțiunea precedentă), și nu poate exista nici un atribut neprim care să determine funcțional un alt atribut neprim, deoarece o relație cu două atribute nu poate avea decât cel mult un atribut neprim.

FORMA NORMALĂ BOYCE-CODD (FNBC)

O relație cu schema R este în forma normală Boyce-Codd (FNBC) în raport cu o mulțime F de dependențe funcționale dacă este în FN1 și dacă, pentru orice dependență funcțională netrivială X→Y din F+, X este o cheie a relației R.

Se poate observa asemănarea dintre formele normale FN3 și FNBC, ambele impunând condiția ca atributul care determină funcțional alte atribute să fie o cheie a relației. Forma normală Boyce-Codd este mai restrictivă decât FN3, deoarece în FNBC se impune această condiție tuturor atributelor, prime sau neprime, pe câtă vreme în FN3 condiția se impune numai atributelor neprime. Este evident faptul că o relație în FNBC este, de asemenea în FN3, dar o relație în FN3 poate să fie sau nu în FNBC.

5.2 MySQL și SQL

MySQL este un sitem de gestiune a bazelor de date relaționale foarte rapid și robust. O bază de date ne permite să stocăm, să căutam, să sortăm și să regăsim datele în mod eficient. Serverul MySQL controlează accesul la date pentru a garanta că mai mulți utilizatori pot lucra simultan cu acestea. Deci MySQL este un server multi-user (mai mulți utilizatori) și multi-thread (mai multe fire de execuție). Utilizează SQL (Structured Query Language), limbajul standard de interogare a bazelor de date din toata lumea.

SQL este limbajul standard pentru accesarea sistemelor de gestiune a bazelor de date relaționale (SGBDR). Este un limbaj relativ simplu dar foarte puternic, care poate obține accesul la datele stocate în mai multe tabele, poate filtra datele dorite și poate sorta, rezuma și afișa rezultatele.

Instrucțiunile SQL trebuie încorporate în scripturile PHP astfel încat programele noastre PHP să poată lucra cu bazele de date relaționale.

Utilizând SQL, este posiblil accesul la datele stocate într-o bază de date relațională fără a scrie un program de aplicație, permițând frecvent evitarea întârzierilor și a costurilor implicate de programare personalizată.

5.2.1 Crearea unei baze de date MySQL

Crearea unui tabel

După ce a fost creată și selectată baza de date inițială se pot crea tabele individuale în ea. O bază de date conține mai multe tabele.

Pentru a crea un tabel în baza de date se va utiliza SQL – limbajul înțeles de baza de date. Interogarea corectă pentru crearea unui tabel nou arată astfel:

CREATE TABLE nume_tabel1 (coloana1, coloana2,etc.)

Pentru fiecare coloană separată de celelaltecu o virgulă, se va indica mai întâi numele și apoi tipul coloanei. Tipurile obișnuite sunt: TEXT, VARCHAR (un număr variabil de caractere), DATETIME și INT(întreg).

Deoarece se recomandă ca prima coloană să fie creată pentru rolul de cheie primară o instrucțiune CREATE simplă va arăta astfel:

CREATE TABLE tabelul_meu (id INT PRIMARY KEY, informație TEXT).

Cheia primară a unui tabel este o coloană specială cu valori unice ce sunt utilizate ca elemente de referință pentru liniile tabelului. Baza de date creează un index al acestei coloane pentru a putea naviga rapid prin tabel.Un tabel nu poate avea decât o singură cheie primară, care se configurează de obicei ca o coloană de întregi cu incrementare automată.

Ștergerea unui tabel

Ștergerea unui tabel este o opțiune simpla. Prin ștergerea unui tabel, sunt eliminate toate rândurile incluse în tabel. Pentru a șterge un tabel se emite urmatoarea comanda:

drop table nume_tabel; unde nume_tabel este numele care urmează a fi șters.

Modificarea unui tabel

După crearea unui tabel acesta poate fi modificat prin emiterea unei comenzi alter tabel. O formă a comenzii permite ștergerea de coloane dintr-un tabel:

alter table nume_tabel drop coloana; unde nume_tabel este numele tabelului care va fi modificat, iar coloana este numele coloanei care va fi ștearsă.

O alta formă a comenzii permite inserarea de noi coloane într-o tabelă:

alter table nume_tabel add coloana tip [optiuni];unde nume_tabel este numele tabelului care va fi modificat, coloana este numele coloanei ce va fi adaugată, tip este tipul noii coloane, iar [opțiuni] constituie toate opțiunile dorite, precum PRIMARY KEY.

5.2.2 Acordarea și revocarea privilegiilor de acces

Când un utilizator încearcă să obțină acces la o bază de date relațională, SGBD verifică dacă utilizatorul are permisiunea de a executa operația. Administratorul de sistem poate folosi comanda MySQL GRANT pentru a autoriza un utilizator să obțină accesul la un tabel din baza de date. Comanda are următoarea formă:

GRANT ALL ON tabel TO utilizator IDENTIFIED BY ’parola’;

unde tabel este numele tabelului, utilizator este numele contului de utilizator, iar parola este parola pe care o va furniza utilizatorul pentru a-și proba identitatea.

Comanda. REVOKE se poate folosi pentru retragerea privilegiilor acordate anterior. Comanda are următoarele forme:

REVOKE ALL ON tabel FROM utilizator;

REVOKE ALL ON baza_de_date.* FROM utilizator;

unde baza_de_date și utilizator sunt la fel ca mai sus.

5.2.3 Accesul la datele dintr-o bază de date : interogări SQL

În afară de DDL, SQL include Data Manipulation Language(DML).DML permite formarea de interogari, care obțin accesul la datele stocate într-o bază de date relatțonală și raportează aceste date.

Comanda SELECT

Cea mai simplă interogare posibilă raportează toate coloanele din toate rândurile unui tabel. Interogarea are următoarea formă:

SELECT * FROM tabel;unde tabel este numele tabelului la care se va obține accesul.

Dacă dorim să selectăm numai anumite coloane, putem folosi următoarea formă alternativă a comenzii SELECT:

SELECT coloana1, coloana2 FROM tabel; unde tabel este numele tabelului, iar coloana1 și coloana2 sunt coloanele la care se va obține accesul și al căror conținut va fi raportat. Putem specifica una, două sau mai multe coloane; pur și simplu separând numele fiecărei coloane de vecinii săi prin intermediul unei virgule.

Exemplu: SELECT * FROM `client`

Clauza WHERE

Deseori, este necesară numai raportarea acelor rânduri care satisfac un anumit criteriu. Clauza WHERE permite specificarea unei condiții; rândurile care nu satisfac condiția nu sunt raportate. De exemplu, iată o interogare care raportează un singur rând:

SELECT * FROM `client` WHERE 1

Modificarea datelor dintr-o bază de date

Sub-limbajul SQL Data Manipulation Language include comenzi care permit inserarea de rânduri noi într-un tabel, actualizarea uneia sau mai multor coloane ale rândurilor existente în tabele, respectiv să ștergerea rândurilor dintr-un tabel. Pentru a insera un nou rând într-un tabel, se folosește comanda INSERT, care are următoarea formă:

INSERT INTO tabel VALUES (valoare1, valoare2); unde tabel este numele tabelului la care se va adăuga rândul, valoare1 este valoarea pentru prima coloană din tabel, iar valoare2 este valoarea celei de-a doua coloane din tabel. Se pot da mai mult sau mai puțin de două valori; numărul valorilor date trebuie să fie egal cu acela al coloanelor din tabel. O coloană poate primi și valoarea NULL, cu excepția situațiilor când definiția coloanei conține specificații contrare.

Pentru a modifica valoarea unui rând sau mai multor rânduri existente într-un tabel, se utilizează comanda UPDATE, care are următoarea formă:

UPDATE tabel SET coloana1=coloana1, coloana2=coloana2

WHERE conditie; unde tabel este numele tabelului ale cărui rânduri urmează să se modifice, coloana1 este numele primei coloane care urmează a fi modificată, valoare1 este valoarea care va fi repartizată în coloana1, coloana2 este numele celei de-a doua coloane care urmează a fi modificată, valoare2 este valoarea care va fi repartizată în coloana2, iar condiție identifică rândul sau rândurile care urmează a fi actualizate. Poate fi actualizat un număr mai mare sau mai mic de coloane. Dacă urmează ca fiecare rând să fie actualizat, clauza WHERE poate fi omisă.

Pentru a șterge un rând dintr-un tabel, emiteți comanda DELETE, care are următoarea formă:

DELETE FROM tabel WHERE conditie;

Dacă vor fi șterse toate rândurile tabelului, clauza WHERE poate fi omisă.

Clauza ORDER BY(rezultate de sortare)

Deseori, este important ca datele să fie raportate într-o anumită secvență. Ordinea de raportare a rezultatelor interogării folosind clauza ORDER BY,are următoarea formă:

ORDER BY valoare

Dacă se vor folosi mai multe câmpuri de sortare, fiecare câmp va fi separat de vecinii săi prin intermediul unei virgule.

Clauza GROUP BY(rezultate de grupare)

O interogare care cuprinde clauza GROUP BY se numește interogare grupată, deoarece grupează datele din tabelele SELECT și crează o singură linie pentru fiecare grup. Coloanele numite în clauza GROUP BY se numesc coloane de grupare. Standardul ISO cere ca clauzele SELECT și GROUP BY să fie strâns integrate.Când se folosește GROUP BY, fiecare element din lista SELECT trebuie să aibă valoare unică pe grup. În plus, clauza SELECT poate să conțină numai:nume de coloană, funcții complexe, constante, o expresie cuprinzînd combinații ale elementelor de mai sus.

Toate numele de coloană din lista SELECT trebuie să apară în clauza GROUP BY, în afară de cazul când numele este folosit numai într-o funcție complexă. Reciproca nu este adevărată: pot să existe nume de coloane în clauza GROUP BY care nu apar în lista SELECT. Când clauza WHERE este folosită cu GROUP BY, prima dată este apelată clauza WHERE, apoi grupurile sunt formate din liniile rămase ceea ce satisface condiția de căutare.

Clauza HAVING(restrângerea grupurilor)

Clauza HAVING este folosită împreună cu clauza GROUP BY pentru a restrânge grupurile care apar la finalul tabelului rezultat. Deși sunt similare în sintaxă, HAVING și WHERE servesc scopuri diferite. Clauza GROIP BY strecoară linii individuale în finalul tabelului rezultat, iar HAVING strecoară grupuri în finalul tabelului rezultat. Standardul ISO cere ca numele coloană folosite în clauza HAVING să apară, deasemenea, în lista GROUP BY sau să fie conținute într-o funcție complexă. În practică, condiția de căutare din clauza HAVING include întotdeauna cel puțin o funcție complexă, altfel condiția de căutare ar putea fi mutată în clauza WHERE și aplicată pe linii individuale.

Clauza HAVING nu este parte importantă a SQL, orice interogare exprimată folosind clauza HAVING poate fi rescrisă întotdeauna fără clauza HAVING.

5.2.4 Identificatorii SQL

Identificatorii SQL sunt folosiți pentru a identifica obiectele în baza de date, cum ar fi numele tabelelor, numele rapoartelor și coloanele. Caracterele care pot fi folosite într-un identificator SQL definit de utilizator trebuie să apara într-un set de caractere. Standardul ISO prevede următorul set de caractere, care conține literele mari A…Z, literele mici a…z, cifrele 0…9 și caracterele subliniate ( _ ). Este, de asemenea, posibilă specificarea unui set de caractere alternative. Următoarele restricții sunt impuse pe un identificator:

Un identificator nu poate fi mai lung decât 128 de caractere (multe dialecte au o limită mai mică decât aceasta).

Un identificator trebuie să înceapă cu o literă.

Un identificator nu poate conține spații.

5.2.5 Tipuri de date SQL

Există 6 tipuri de date scalare SQL definite în standardul ISO, prezentate în tabelul care urmează:

Datele caracter

Datele caracter conțin o secvență de caractere dintr-un set de caractere definite de implementator.

Astfel, caracterele exacte care pot apărea ca valorile datelor într-o coloană tip caracter vor varia. ASCII este una din seturile utilizate în comun astăzi. Formatul pentru specificarea unui tip de dată caracter este:

CHARACTER [VARYING][length]

CHARACTER can be abbreviated to CHAR and

CHARACTER VARYING to VARCHAR.

Datele bit

Tipul de date bit este folosit pentru a defini stringurile bit, adică o secvență de cifre binare, fiecare avînd sau valoarea 0 sau 1. Formatul pentru specificarea tipului de dată bit este similar cu cel al tipului de dată caracter:

BIT [VARYING][lenght]

Datele exact numerice

Tipul de dată exact numeric este folosit pentru definirea numerelor cu reprezentare exactă. Numărul conține cifre, un punct zecimal opțional și un semn opțional. Un tip de dată exact numeric conține o precizie și o scală. Precizia dă numărul total a cifrelor zecimale semnificative: adică numărul total al cifrelor, incluzînd zecimalele dar excluzînd punctul. Scala dă numărul total al zecimalelor.

Există mai multe moduri de a specifica un tip de dată exact numeric:

NUMERIC [precision [, scale]]

DECIMAL [precision [, scale]]

INTEGER

SMALLINT

Datele aproximativ numerice

Tipul de dată aproximativ numeric este folosit pentru definirea numerelor care nu au o reprezentare exactă, ca de pildă numerele reale. Aproximativ numeric, sau punct float, este similar notației stiințifice în care un număr este scris ca o putere de zece. De exemplu, 10E3, +5.2E6, -0.2E-4. Există mai multe moduri de a specifica un tip de dată aproximativ numeric:

FLOAT [precision]

REAL

DOUBLE PRECISION

Datele dată-timp

Acest tip de dată este folosit pentru a defini puncte în timp la un anumit grad de precizie. Ca exemple putem da date calendaristice, intervale de timp și intervale ale unei zile. Standardul ISO folosește pentru acest tip de dată cuvintele rezervate: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_HOUR și TIMEZONE_MINUTE. Ultimele două câmpuri specifică ora și minutul pentru anumite zone geografice.

Trei tipuri ale acestui tip de date sunt acceptate:

DATE: este folosit pentru a reprezenta datele calendaristice folosind cuvintele rezervate YEAR, MONTH și DAY.

TIME [time_precision][WITH TIME ZONE]: este folosit pentru a reprezenta timpul folosind cuvintele rezervate HOUR, MINUTE și SECOND.

TIMESTAMP [time_precision][ WITH TIME ZONE]: reprezintă datele calendaristice și timpul.

Time_precision reprezintă unitatea de măsură a câmpului SECOND. Dacă nu este specificat acesta este implicit 0 în TIME fiind vorba de secunde, iar în TIMESTAMP valoarea implicită este 6 fiind vorba de microsecunde.

Cuvântul cheie WITH TIME ZONE controlează prezența câmpurilor TIMEZONE_HOUR și TIMEZONE_MINUTE.

Date interval

Tipul de dată interval este folosit pentru a reprezenta intervale de timp. Fiecare tip de dată interval este alcătuit dintr-un subset învecinat al câmpurilor: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND. Există două clase de date interval: intervale an-lună și intervale zi-timp. Clasa an-lună poate conține numai câmpurile YEAR și/sau MONTH, iar clasa zi-timp poate conține o selecție invecinată din DAY, HOUR, MINUTE, SECOND.

Formatul pentru specificarea tipului da dată interval este:

INTERVAL {{start_câmp TO sfârșit_câmp} | câmp_dată-timp}

start_câmp=YEAR|MONTH|DAY|HOUR|MINUTE

[(precizia câmpului principal al intervalului)]

sfârșit_câmp=YEAR| MONTH|DAY|HOUR|MINUTE|SECOND

[(precizia zecimalelor câmpului secundar al intervalului)]

câmp_dată-timp=start_câmp|SECOND

[(precizia câmpului principal al intervalului

[,precizia zecimalelor câmpului secundar al intervalului])]

5.3 Studiu de caz : Proiectarea logică a bazei de date relaționale

Proiectarea logică este procesul de construcție a unui model de informații folosite într-o întreprindere, bazată pe modelul de date, dar independent de particularizările sistemului de gestiune a bazei de date și a altor considerente fizice.

Proiectarea logică începe cu crearea modelului conceptual al bazei de date, care este independent de implementarea într-un SGBD. Modelul conceptual este apoi proiectat pe un model logic, care va influența mai târziu modelul de date în care se va implementa

Primul pas este crearea modelului conceptual local, pentru utilizatori.

Obiectivul: Crearea unui model conceptual local, pentru view-urile utilizatorilior.

Modelele conceptuale locale trebuie să conțină: tipuri de entități, tipuri de relații, atribute, domeniile atributelor, cheile candidat, chei primare.

Pașii din prima etapă a proiectării logice sunt:

1.1. Identificarea tipurilor de entități.

1.2. Identificarea tipurilor de relații.

1.3. Identificarea și atribuirea de atribute la tipurile de entități și tipurile de relații.

1.4. Determinarea domeniilor de definiție a atributelor.

1.5. Determinarea atributelor care compun cheile candidate și primare.

1.6. Specializare/generalizare (pas opțional).

1.7. Desenarea diagramei entity-relationship.

1.1 Identificarea tipurilor de entitati

Obiectivul: Identificarea tipurilor de entități principale în vederile utilizatorilor.

Entitățile bazei de date sunt următoarele:

1) Clienți – sunt persoane care beneficiază de serviciile hotelului. Fiecărei persoane în parte i se înregistreaza datele personale și i se asociaza un număr unic de identificare;

2) TipClienți – această entitate reține detalii despre calitatea clientului (denumirea tipului de client: persoană fizică sau juridică);

3) Registru – conține toate rezervările făcute pentru camerele din hotel, data rezervării, numărul de zile petrecute și tipul modalității prin care se face rezervarea; se rețin și informații despre clientul care a făcut rezervarea;

4) ModalitățiRezervare – conține o listă cu modalitățile prin care se poate face rezervarea.Variantele sunt: prin agenție, prin telefon, prin fax sau prin e-mail;

5) Camere – această entitate reține detalii despre camere (tip, număr, facilități);

6) TipCamere – această entitate reține detalii despre tipurile de camere existente precum și tariful aferent acestora.

7) PrețCamere – această entitate conține o listă cu prețurile corespunzătoare tipurilor de camere.

8) Obiecte de inventar – această entitate conține evidența tuturor obiectelor de inventar din camere, precum și prețul aferent acestora.

9) Detaliu cameră – această entitate este introdusă pentru a “distruge” relațiile n la m dintre cele două entități : Camere și Obiecte de Inventar și este formată din concatenarea celor două chei ale entităților legate și nu creează probleme de actualizare.

10) Angajați – această entitate înregistrează datele personale ale fiecărui angajat, care are dreptul de a utiliza baza de date. (de a introduce date referitoare la clienți, rezervări, etc)

11) Utilizatori – având în vedere faptul că există două tipuri de utilizatori (administrator și angajat), în cadrul acestei entități sunt reținute drepturile de acces (user-ul și parola) pentru fiecare tip de utilizator.

12) TipUtilizator – conține informații referitoare la tipurile de utilizatori (administrator sau angajat) care utilizează baza de date.

1.2 Identificarea tipurilor de relatii

Obiectivul: Identificarea relațiilor importante dintre entități.

1.3 Identificarea și atribuirea de atribute la tipurile de entități și tipurile de relații

Obiectivul: Asocierea de atribute la tipurile de entități și la tipurile de relații.

1.4 Determinarea domeniilor de definie a atributelor

Obiectivul: Determinarea domeniului atributelor în modelul conceptual local.

1.5 Determinarea atributelor care compun cheile candidat și primare

Obiectivul: Identificarea cheilor candidat pentru fiecare entitate și alegerea cheilor primare în cazul în care sunt mai multe chei candidat.

1).Clienți

Id_Client – Auto_increment  – fiecare client este identificat printr-un cod unic; acesta se generează automat și se autoincrementează pentru fiecare nou client;

Nume – varchar(50) – numele și prenumele clientului;

CIF_CNP – varchar(13) – reprezintă numărul certificatului unic de înregistrare, în cazul persoanelor juridice, respectiv codul numeric personal al clientului, dacă acesta are calitatea de persoană fizică;

NIRC – varchar(12) – reprezintă numărul de înregistrare la Registrul Comerțului, în cazul persoanelor juridice;

Adresa – varchar(100) – reprezintă adresa clientului (în principal numele străzii);

Localitate – varchar(50) – reprezintă localitatea unde se află domiciliul clientului;

Județ – varchar(50) – reprezintă județul unde locuiește clientul;

Telefon – varchar(20) – telefonul clientului ( fix sau mobil );

Fax – varchar(20) – numărul de fax al clientului;

E-mail – varchar(50) – adresa de e-mail a clientului;

NrCont – varchar(24) – reprezintă numărul de cont al clientului;

Banca – tinyint(40) – reprezintă banca la care clientul respectiv are cont;

BI_CI – varchar(20) – reprezintă seria și numărul buletinului, respectiv cărții de identitate;

Id_TipClient – tinyint(1) – reprezintă calitatea clientului și anume dacă acesta este persoană fizică sau persoană juridică.

Cheie primara: Id_Client.

Cheie străină : Id_TipClient (TipClienți)

2) TipClienți

Id_TipClient – Auto_increment – fiecare tip de client este identificat printr-un cod

unic;

DescriereTipClient – varchar(50) – acest câmp setează tipul clientului: persoană

fizică sau juridică. Tipul clientului se selectează din lista de valori existentă.

Cheie primara: Id_TipClient

3) Registru

Id_Rezervare – Auto_increment –  identifică unic o rezervare generându-se automat la fiecare introducere de nouă rezervare;

Id_Client – int(10) – reprezintă codul clientului respectiv care a efectuat rezervarea; acest cod poate fi ales dintr-o listă de coduri care reprezintă toți clienții din tabela CLIENȚI;

Id_Cameră – int(10) – reprezintă numărul camerei pentru care s-a facut rezervarea;

Data_Rezervării – datetime – data la care s-a efectuat rezervarea; nu trebuie completată deoarece se generează automat de către sistem; este in format luna/zi/an;

Sosire – datetime – reprezintă data sosirii clientului în hotel; această dată se generează automat de către sistem ca fiind data curentă, deci nu trebuie completată;

Plecare – datetime – reprezintă data plecării clientului din hotel și implicit data eliberării camerei; are formatul luna/zi/an;

Perioada_zile – int (10) – reprezintă numărul de zile petrecute de client în hotel;

Id_ModalitateRezervare – int(10) – reprezintă modul prin care a fost efectuată rezervarea : agenție, telefon sau fax.

Cheie primară: Id_Rezervare

Cheie străină : Id_Client (Clienți)

Id_Cameră (Camere)

Id_ModalitateRezervare (ModalitățiRezervare).

4) ModalitățiRezervare

Id_ModalitățiRezervare – Auto_increment – fiecare tip de rezervare este identificat printr-un cod unic;

DescriereModalitate  – varchar(50) – acest câmp conține tipul rezervării care poate fi ales dintr-o listă. Variantele sunt: prin agenție, prin telefon sau prin fax

Cheie primară: Id_ModalitățiRezervare.

5) Camere

Id_Cameră – Auto_increment – numărul corespunzator camerei;

Id_TipCameră – int(10) – fiecare tip de cameră este identificat printr-un cod unic;

Cod_Camera –  varchar(50) – codul corespunzător camerei;

Etaj  – tinyint(4) – reprezintă etajul unde este situată camera respectivă;

Internet – tinyint(1) – câmpul conține una dintre facilitățile oferite de hotel;

Minibar  – tinyint(1) – câmpul conține una dintre facilitățile oferite de hotel;

Televizor –  tinyint(1) – câmpul conține una dintre facilitățile oferite de hotel;

Status  –  tinyint(1) – acest câmp conține o listă cu camerele libere și ocupate.

Cheie primară: Id_Cameră

Cheie străină: Id_TipCameră (Tip_Camere)

6) TipCamere

Id_TipCameră – Auto_increment – fiecare tip de cameră este identificat printr-un

cod unic;

DenumireTip – varchar(100) – acest câmp seteaza tipul camerei: single, double sau apartament. Tipul camerei se selectează din lista de valori existentă.

Cheie primară : Id_TipCameră.

7) PrețCamere

Id_PrețCameră – Auto_increment – codul unic de identificare a prețului fiecărui tip de cameră; 

Id_TipCamera  – int(10) – fiecare tip de cameră este identificat printr-un

cod unic;

PrețCameră – double – câmpul conține prețul aferent camerei respective.

Cheie primară: Id_PrețCameră

Cheie străină : Id_TipCameră (TipCamere).

8) Obiecte de inventar

Id_ObiecteInventar – Auto_increment – codul unic de identificare al fiecărui obiect de inventar; 

NrInventar – varchar(50) – acest câmp conține codul unic de înregistrare al

inventarului;

Denumire – varchar(100) – câmpul conține numele obiectului de inventar.

Preț  – double – câmpul conține prețul aferent obiectului de inventar respectiv.

Cheie primară: Id_ObiecteInventar

9) Detaliu cameră – această entitate este introdusă pentru a “distruge” relațiile n la m dintre cele două entități : Camere și Obiecte de Inventar și este formată din concatenarea celor două chei ale entităților legate și nu creează probleme de actualizare.

10) Angajați

Id_Angajat – Auto_increment  – fiecare angajat este identificat printr-un cod unic; acesta se generează automat și se autoincrementează pentru fiecare angajat nou;

Nume  – varchar(50) – numele de familie al angajatului;

Prenume – varchar(50) – prenumele angajatului;

Adresa – varchar(50) – reprezintă adresa angajatului;

Localitate  – varchar(50)  – reprezintă localitatea unde se află domiciliul angajatului;

  Judet – varchar(50) – reprezintă județul unde locuiește angajatul;

Telefon – varchar(70) – reprezintă numărul de telefon al angajatului (fix sau mobil).

Cheie primară: Id_Angajat.

11) Utilizatori

Id_Utilizator – Auto_increment –  fiecare utilizator este identificat printr-un cod unic; acesta se generează automat și se autoincrementează pentru fiecare utilizator nou;

User  – varchar(50) – persoana care are anumite drepturi asupra bazei de date;

Parola – varchar(50) – parola care permite accesul acestuia la baza de date;

  Id_Angajat – int(11) – reprezintă codul angajatului care accesează baza de date; acest cod poate fi ales dintr-o lista de coduri care reprezintă toți angajații din tabela ANGAJAȚI;

Id_TipUtilizator – int(11) – fiecare tip de utilizator este identificat printr-un cod unic.

Cheie primară: Id_Utilizator

Cheie străină : Id_Angajat (Angajați)

Id_TipUtilizator (TipUtilizatori)

12) TipUtilizator

Id_TipUtilizator – Auto_increment – fiecare tip de utilizator este identificat printr- un cod unic;

DescriereTip  – varchar(50) – acest câmp seteaza tipul utilizatorului: angajat sau administrator. Tipul utilizatorului se selectează din lista de valori existentă.

Cheie primară : Id_TipUtilizator.

Desenarea diagramei entity – relationship

2. Crearea și validarea modelului logic local

Obiectivul: Crearea unui model logic local bazată pe modelul conceptual al utilizatorilor asupra întreprinderii și validarea ei prin procesul de normalizare și prin tehnica tranzacțiilor cerute.

Activitățile din acest pas sunt:

2.1. Proiectarea modelului conceptual local pe un model logic local.

2.2. Crearea relațiilor pentru modelul logic local.

2.3. Validarea modelului, utilizând normalizarea.

2.4. Validarea modelului din nou, utilizând tranzacțiile.

2.5. Desenarea diagramei ER.

2.6. Definirea regulilor de integritate ale bazei de date.

2.1 Proiectarea modelului conceptual local pe modelul logic local

Obiectivul: Verificarea modelului conceptual local pentru eliminarea structurilor care se pot implementa greu într-un SGBD și proiectarea modelului rezultat la modelul logic local.

(1) eliminarea relațiilor M:N

Modelul nu conține relații M:N.

(2) eliminarea relațiilor complexe

Modelul nu conține relații complexe.

(3) eliminarea relațiilor recursive

Modelul nu conține relații recursive.

(4) eliminarea relațiilor cu atribute

Modelul nu conține relații cu atribute.

(5) eliminarea relațiilor 1:1

Modelul nu conține relații 1:1.

(6) eliminarea relațiilor redundante

Modelul nu conține relații redundante.

2.2 Crearea relațiilor pentru modelul logic local

Obiectivul: Crearea de relații peste modelul logic.

A se vedea pasul 1.5. care nu conține modificări.

2.3 Validarea modelului, utilizând normalizarea

Obiectivul: Validarea modelului logic, utilizând tehnica normalizării

Entitățile modelului nu conțin grupuri repetitive, deci relațiile sunt în 1NF.

Entitățile modelului nu conțin dependențe parțiale de cheie, deci relațiile sunt în 2NF.

Entitățile modelului nu conțin dependențe tranzitive de cheie, deci relațiile sunt în 3NF.

Entitățile modelului conțin cel mult o cheie candidat, deci relațiile sunt în formă normală Boyce-Codd.

2.4 Validarea modelului din nou, utilizând tranzacțiile

Obiectivul: Verificarea ca modelul de date să suporte toate tranzacțiile cerute de utilizator.

Introducerea unui client in baza de date

Ștergerea unui client din baza de date

Modificarea unui client din baza de date

Vizualizarea unui client din baza de date

Introducerea unei camere în baza de date

Ștergerea unei camere din baza de date

Modificarea unei camere din baza de date

Vizualizarea unei camere din baza de date

2.5 Definirea regulilor de integritate a bazei de date

Obiectivul: Identificarea regulilor de integritate pentru vederile utilizatorilor asupra întreprinderii.

Necesitatea datelor

Clienți

2) TipClienți

3) Registru

4) ModalitățiRezervare

5) Camere

6) TipCamere

7) PrețCamere

8).DetaliuCameră

9) Obiecte de Inventar

10) Angajați

11) Utilizatori

12)TipUtilizatori

Regulile asupra domeniilor atributelor

Domeniile de definiție au fost deja identificate când am documentat domeniile atributelor la pasul 1.4.

Integritatea entităților

Cheia primară a entităților nu poate lua valori nule.

Aceste reguli au fost identificate la pasul 1.5.

Integritatea referințelor

Clienti (Id_Client, Nume, CIF_CNP, NIRC, Adresa, Localitate, Județ, Telefon, Fax, Email, NrCont, Banca, BI_CI, Id_TipClient)

Cheie primară : Id_Client

Cheie străină : Id_TipClient (TipClienți)

nenulă

fără acțiune la ștergere

cascadă la ștergere

TipClienți (Id_TipClient, DenumireTipClient)

Cheie primara: Id_TipClient

Rezervări (Id_Rezervare, Id_Client, Id_Cameră, Data_Rezervării, Sosire, Plecare, Perioadă_zile, Id_ModalitateRezervare )

Cheie primară: Id_Rezervare

Cheie străină : Id_Client (Clienți)

nenulă

fără acțiune la ștergere

cascadă la ștergere

Id_Cameră (Camere)

nenulă

fără acțiune la ștergere

cascadă la ștergere

Id_ModalitateRezervare (ModalitățiRezervare).

nenulă

fără acțiune la ștergere

cascadă la ștergere

ModalitățiRezervare (Id_ModalitateRezervare, DescriereModalitate)

Cheie primară: Id_ModalitateRezervare

Camere (Id_Cameră, Id_ TipCameră, Cod_Cameră, Etaj, Internet, Minibar, Televizor, Status )

Cheie primară: Id_Cameră

Cheie străină : Id_TipCameră (Tip_Camere)

nenulă

fără acțiune la ștergere

cascadă la ștergere

TipCamere (Id_TipCameră, DescriereTip)

Cheie primară: Id_TipCameră

PrețCamere (Id_PrețCameră, Id_TipCameră, PrețCameră)

Cheie primară: Id_PrețCameră

Cheie străină: Id_TipCameră

nenulă

fără acțiune la ștergere

cascadă la ștergere

DetaliuCameră (Id_Cameră, Id_ObiecteInventar)

Cheie primară: Id_cameră; Id_ObiecteInventar

Obiecte de Inventar (Id_ObiecteInventar, Nr_inventar, Denumire, Preț)

Cheie primară: Id_ObiecteInventar

Angajați (Id_Angajat, Nume, Prenume, Adresă, Localitate, Județ, Telefon)

Cheie primară : Id_Angajat

Utilizatori (Id_Utilizator, User, Parolă, Id_Angajat, Id_TipUtilizator)

Cheie primară : Id_Utilizator

Cheie străină : Id_Angajat (Angajați)

nenulă

fără acțiune la ștergere

cascadă la ștergere

Id_TipUtilizator (Utilizatori)

nenulă

fără acțiune la ștergere

cascadă la ștergere

TipUtilizatori (Id_TipUtilizator, DescriereTip) Cheie primară: Id_TipUtilizator

Manual de utilizare

Introducere

Acest sistem se adresează persoanelor care doresc să efectueze rezervări pentru camerele unei pensiuni turistice și să beneficieze de serviciile oferite de aceasta, într-un mod eficient și ușor.

Utilizarea interfeței nu necesită cunostințe avansate de factură informatică, deci sistemul poate fi utilizat cu ușurinta de orice persoana.

Aplicația este integrată într-un site Web dinamic, care va conține prezentarea pensiunii.

Pentru a veni în întâmpinarea necesităților clienților, acestă soluție software a fost dezvoltată pentru mediul Internet, mai exact pentru partea de comerț online. Soluția permite ca aplicația să fie disponibilă publicului larg din orice colț al lumii și la orice clipă, având autonomie proprie.

Aplicația înglobează toate funcționalitățile sistemului Web cu bază de date pentu administrarea unei pensiuni într-un mod captivant, fiind ușor de folosit și prietenos cu utilizatorul.

Pentru implementarea aplicației am utilizat : Apache 2 Triad.

Apache 2 Triad este un server de Apache 2 preconfigurat ce conține: Apache2,OpenSSL,MySQL, PHP, Perl, Python, TCL+PHP+Nuke, PHPmyadmin, AWStats+Stunnel, SSLCert+XMail, UebiMiau, PHPXMail+SlimFTPD+Zend Optimizer, Turck MMCache, PHP code.

6.2 Formele principale ale aplicației

Pensiune

Această pagină dorește o prezentare în imagini a pensiunii Calipso. În figura 1.sunt prezentate informații referitoare la descrierea pensiunii și anume : localizare, informații despre camere, și despre prețul aferent acestora.

Figura1: Pensiune

Night Club: este locul potrivit pentru o seară de neuitat.:

Figura 2:.Night Club

Pagină din figura 2 .se adresează celor care doresc să afle informații referitoare la programul oferit de clubul de noapte, precum și despre serviciile oferite în cadrul acestuia.

Piscină

Ca principală modalitate de atracție a turiștilor, piscina descoperită este un loc ideal de relaxare, însoțit de un spațiu în care sunt amenajate corturi, umbreluțe și șezlonguri.

Figura 3:Piscină

Împrejurimi

Această secțiune reprezintă un ghid turistic. Aici sunt identificate și caracterizate zonele cu care se învecinează localizarea pensiunii Calipso, și anume :

Sfântu Gheorghe: reprezintă orașul unde este situată pensiunea Calipso.

Figura 4: Sfântu Gheorghe

Brașov: este o vecinătate a orașului Sfântu Gheorghe.

Figura 5: Brașov

Tușnad: este un oraș situate în apropierea localitătii Sfântu Gheorghe.

Figura 6: Tușnad

Sunt prezentate de asemenea legăturile rapide cu toate punctele de interes ale fiecărui oraș.

Contact: figura 7 prezintă datele de contact ale societătii.

În acestă pagină sunt prezentate succinct datele de contact ale firmei și anume: numele societății, adresa (localitate, județ, cod fiscal); numărul de telefon, codul fiscal, numărul de înregistrare la Registrul Comerțului, precum și adresa de email prin intermediul căreia pot fi efectuate rezervări.

Figura 7 : Contact

Rezervări

Prezentul formular este destinat introducerii tuturor informațiilor necesare despre efectuarea unei rezervări:

În această pagină vor fi trecute datele neceare pentru a se efectua o rezervare, și anume: tipul clientului – acesta poate fi persoană fizică sau persoană juridică – , numele clientului, adresa, localitatea, județul, numărul de telefon al clientului, adresa de e-mail, tipul camerei dorite – single, double, apartament – și perioada închirierii.

Figura 8 : Rezervări

În figura 8. regăsim datele neceare pentru a se efectua o rezervare, și anume:

tipul clientului – acesta poate fi persoană fizică sau persoană juridică,

numele clientului,

adresa,

ocalitatea,

județul,

numărul de telefon al clientului,

adresa de e-mail,

tipul camerei dorite – single, double, apartament,și

perioada închirierii.

Galerie foto

În cadrul acestei secțiuni se pot viziona diverse poze pentru a crea o impresie generală a turiștilor asupra serviciilor pensiunii.

Figura 9 : Galerie Foto

Pentru o vizualizare mai eficientă se vor observa pozele în modul următor:

Figura 10 : Fotografii

6.3 Utilizatorii aplicației

Aplicația are două trepte de acces securizate – contul de administrator și contul de utilizator- și o treptă publică – destinată clienților pensiunii.

Astfel în afara treptei publice de acces se pot defini și o serie de operatori și dreturi de acces în administrarea și utilizarea aplicației.

Înregistrarea

Utilizatori și parole

Pentru a putea accesa baza de date aveți nevoie de un utilizator și de o parola!

Aplicația are 3 tipuri de utilizatori:

Administratorul — are drepturi depline asupra aplicației, în sensul ca poate adăuga informații noi, poate modifica informații deja existente, poate șterge date referitoare la clienți și la rezervările efectuate de către aceștia etc.

(Loginare: User="admin", Parola=" admin")

Utilizatorul (recepționerul) — poate doar să adauge sau să modifice informații în baza de date, fără să poată șterge datele deja existente. Mai poate să și vizualizeze toate informațiile existente în acel moment. Nu poate modifica aspectul ferestrelor sau relațiile dintre tabele.

(Loginare: User="user", Parola="user")

Vizitatorii site-ului (clienții)– pot vizualiza paginile în care se regăsesc date despre serviciile oferite : camere, piscină, night club, pot efectua rezervări, pot obține informații referitoare la localizarea și datele de contact ale întreprinderii.

După ce s-a introdus utilizatorul și parola se apasă pe butonul "Intra" și va apărea pagina principala.

Pagina principala Administrator

Meniul înglobează toate funcționalitățile sistemului cu baza de date pentu administrarea unei pensiuni într-un mod captivant, fiind ușor de folosit și prietenos cu utilizatorul.

O dată introduse corect "Utilizator" și "Parola" se accesează pagina principală a administratorului care conține un meniu din care se pot alege mai multe opțiuni. Această pagina a fost făcută cu scopul măririi ușurinței de utilizare a aplicației.

Contul de administrare permite configurarea completă a pensiunii, începând cu cele mai simple operațiuni și până la cele mai complexe.

Figura 11: Meniu Administrator

În acest meniu de administrare avem următoarele câmpuri:

Camere: Meniul accesează baza de date pentru a adăuga, a efectua modificări asupra datelor camerei sau a șterge o anumită cameră..

Opțiunile sunt: Adăugare cameră;

Editare cameră;

Ștergere cameră.

Clienți. Meniul accesează baza de date pentru introducerea de clienți noi , pentru modificarea clienților deja existenți în baza de date sau pentru ștergerea acestora din baza de date.

Opțiunile sunt: Adăugare client;

Editare client;

Ștergere client.

Registru :Meniul accesează baza de date pentru a efectua rezervări asupra camerelor pensiunii.

Opțiunile sunt: Adaugare rezervare;

Editare rezervare;

Ștergere rezervare.

Angajați : Meniul accesează baza de date pentru a înregistra datele personale ale fiecărui angajat, care are dreptul de a utiliza baza de date. (de a introduce date referitoare la clienți, rezervări,etc)

Opțiunile sunt: Adăugare angajat;

Editare angajat;

Ștergere angajat.

Conturi: Meniul accesează baza de date pentru a reține drepturile de acces(user și parola) ale fiecărui tip de utilizator (administrator sau angajat)

Opțiunile sunt: Adăugare utilizat

Editare utilizator;

Ștergere utilizator.

Pentru a reveni la formele principale ale aplicației se va utiliza butonul de deconectare:

Meniul Camere

Folosind meniul Camere se pot realiza următoarele : se poate adăuga o nouă cameră în baza de date, se pot modifica caracteristicile unei camere sau se poate șterge o cameră din evidența camerelor.

Adăugare cameră

Pentru a adăuga o nouă cameră în baza de date se vor completa specificațiile din forma următoare:

Figura 12: Adăugare Cameră

Cod_Camera – reprezintă codul corespunzător camerei;

Tip cameră: – acest câmp seteaza tipul camerei: single, double sau apartament. Tipul camerei se selectează din lista de valori existentă.

Etaj  – reprezintă etajul unde este situată camera respectivă;

Internet – câmpul conține una dintre facilitățile oferite de pensiune;

Minibar  – acest câmp reprezintă o altă facilitate a unei camere;

Televizor – acest camp conține două valori : DA și NU în funcție de opțiunea clientului. 

În forma următoare se va observa camera introdusă cu facilitățile selectate:

În această formă avem opțiunile: Editare Cameră și Stergere Cameră.

Figura 13: Adăugare Cameră

Modificare (editare) cameră

În meniul Camere se pot modifica anumite date asupra camerelor, cum ar fi:codul camerei, tipul camerei, etajul camerei, și anumite caracteristici care trebuie specificate: Internet, Minibar, Televizor.

Figura 14: Editare Cameră

Prin apăsarea butonului EDITARE vor fi transmise modificările în baza de date.

Prin apăsarea butonului ANULARE se vor păstra datele inițiale.

Pentru a reveni în pagina Adăugare Cameră se va efectua click pe linkul Înapoi

Meniul clienți

Pe parcursul aplicației avem nevoie de a introduce un client nou în baza de date sau să căruia să îi modificăm anumite date personale sau să îl ștergem din baza de date.

Toate aceste lucruri le putem realiza accesând meniul Clienți și alegând una din opțiunile: Adaugare Clienți , Editare Clienți și Modificare Clienți.

Adăugare clienți

Completând această formă se poate introduce un nou client în baza de date:

Figura 15: Adăugare Client

Se comletează toate câmpurile:

Nume client – numele și prenumele clientului;

CIF_CNP – reprezintă numărul certificatului unic de înregistrare, în cazul persoanelor juridice, respectiv codul numeric personal al clientului, dacă acesta are calitatea de persoană fizică;

NIRC – reprezintă numărul de înregistrare la Registrul Comerțului, în cazul persoanelor juridice;

Adresa – reprezintă adresa clientului (în principal numele străzii);

Localitate – reprezintă localitatea unde se află domiciliul clientului;

Județ – reprezintă județul unde locuiește clientul;

Telefon – telefonul clientului ( fix sau mobil );

Fax – numărul de fax al clientului;

E-mail – adresa de e-mail a clientului;

NrCont – reprezintă numărul de cont al clientului;

Banca – reprezintă banca la care clientul respectiv are cont;

BI_CI – reprezintă seria și numărul buletinului, respectiv cărții de identitate;

TipClient – reprezintă calitatea clientului și anume dacă acesta este persoană fizică sau persoană juridică.

Butonul ANULARE Șterge datele introduce.

Efectuându-se click pe butonul ADĂUGARE aceste date vor fi introduce în baza de date:

Figura 16: Adăugare Client

Editare clienți

În meniul Editare Clienți se pot modifica anumite date ale clienților, în funcție de modificările survenite, de ex: clientul își schimbă domiciliul.

Figura 17: Editare Client

Prin apăsarea butonului EDITARE vor fi transmise modificările în baza de date.

Prin apăsarea butonului ANULARE se vor păstra datele inițiale.

Pentru a reveni în pagina Adăugare Client se va efectua click pe linkul Înapoi.

Ștergerea unui client din baza de date se va realize efectuând click pe acțiunea Șterge din meniul Adăugare Client.

Meniul Angajați

Această entitate înregistrează datele personale ale fiecărui angajat, care are dreptul de a utiliza baza de date. (de a introduce date referitoare la clienți, rezervări, etc)

Înregistrarea se realizează prin intermediul formei următoare și conține:

Nume angajat – numele de familie al angajatului;

Prenume angajat – prenumele angajatului;

Adresa – reprezintă adresa angajatului;

Localitate  – reprezintă localitatea unde se află domiciliul angajatului;

  Judet – reprezintă județul unde locuiește angajatul;

Telefon – reprezintă numărul de telefon al angajatului (fix sau mobil).

Figura 18: Adăugare angajat

Butonul ANULARE șterge datele introduce.

Efectuându-se click pe butonul ADĂUGARE aceste date vor fi introduce în baza de date:

Figura 19: Adăugare Angajat.

În cadrul acesui meniu avem următoarele acțiuni : Editare și Stergere.

Editare Angajați

Prin accesarea meniului Editare se pot modifica datele corespunzătoare angajaților astfel:

Figura 20: Editare angajat.

Prin apăsarea butonului EDITARE vor fi transmise modificările în baza de date.

Prin apăsarea butonului ANULARE se vor păstra datele inițiale.

Pentru a reveni în pagina Adăugare Angajat se va efectua click pe linkul Înapoi.

Ștergerea unui client din baza de date se va realize efectuând click pe acțiunea Șterge din meniul Adăugare Angajat.

Meniul Registru

La această secțiune aplicația permite clienților să -și personalizeze cerințele individuale.

Registru- conține toate rezervările făcute pentru camerele pensiunii, data rezervării, numărul de zile petrecute și tipul modalității prin care se face rezervarea; se rețin și informații despre clientul care a făcut rezervarea;

Adăugare rezervare: – completând această formă se introduce o nouă rezervare în baza de date:

Figura 21: Adăugare Rezervare.

Câmpurile care trebuie completate sunt următoarele:

Client: – acest câmp există deja, el este preluat în mod automat din meniulClienți.

Camera: – identificatorul camerei este preluat din meniul Camere.

Data: – reprezintă data la care s-a efectuat rezervarea.

Sosire: – este data sosirii clientului la pensiune;

Plecare: – reprezintă data plecării clientului și implicit data eliberării camerei;

Perioada: – reprezintă numărul de zile petrcute de client la pensiune;

Modalitate rezervare:reprezintă modul prin care a fost efectuată rezervarea: prin telefon, la sediu sau prin internet.

Pentru a vedea noua rezervare efectuată se deschide:

Figura 22: Adăugare Rezervare

Editare rezervare: prin intermediul acestei pagini pot fi efectuate modificări ale datelor introduse în meniul Adăugare Rezervare:

Figura 23: Editare Rezervare

Prin apăsarea butonului EDITARE vor fi transmise modificările în baza de date.

Prin apăsarea butonului ANULARE se vor păstra datele inițiale.

Pentru a reveni în pagina Adăugare Rezervare se va efectua click pe linkul Înapoi.

Ștergerea unui client din baza de date se va realize efectuând click pe acțiunea Șterge din meniul Adăugare Rezervare.

Meniul Conturi

Având în vedere faptul că există trei tipuri de utilizatori (administrator, angajat și și client ), în cadrul acestei entități sunt reținute drepturile de acces (user-ul și parola) pentru fiecare tip de utilizator.

În cadrul acestui meniu se pot efectua următoarele operațiuni:

Adăugare utilizator: completând această formă se introduce un nou utilzator în baza de date:

Figura 24: Adăugare Utilizator

Câmpurile obligatorii care trebuie completate sunt:

User: – reprezintă id-ul persoanei care are anumite drepturi asupra bazei de date;

Parola:- parola care permite accesul acestuia la baza de date;

Angajat: – acesta este selectat automat din tabela Angajați;

Tip Utilizator: – acest 101amp seteaza tipul utilizatorului: angajat sau administrator. Tipul utilizatorului se selectează din lista de valori existentă.

După completarea acestor câmpuri apăsând butonul ADAUGARE datele vor fi înregistrate în baza de date:

Figura 25: Adăugare Utilizator

Figura 26: Editare Utilizator

Editare utilizatori: Prin accesarea meniului Editare se pot modifica datele corespunzătoare utilizatorilor.

Prin apăsarea butonului EDITARE vor fi transmise modificările în baza de date.

Prin apăsarea butonului ANULARE se vor păstra datele inițiale.

Pentru a reveni în pagina Adăugare Utilizatori se va efectua click pe linkul Înapoi.

Ștergerea unui client din baza de date se va realize efectuând click pe acțiunea Șterge din meniul Adăugare Utilizatori.

Pagina principală Utilizator

Mecanismul de securitate se poate reprezenta și prin formarea grupului de utilizatori și a userilor care aparțin acestor grupuri, fiecare cu permisiunile sale în funcție de sarcinile pe care trebuie să le îndeplinească.

Userul este restricționat în permisiuni, el poate doar să vizualizeze, să adauge sau să modifice informațiile despre clienți, camere și rezervări în baza de date.

Figura 27: Meniu Utilizator

Meniul Camere

Utilizatorul are unicul drept de a vizualiza camerele existente ale pensiunii.

Figura 28: Vizualizare camere.

Meniul Clienți

Utilizatorul (recepționerul) are următoarele drepturi asupra bazei de date:

vizualizarea clienților existenți, modificarea informațiilor despre aceștia și adăugarea unui nou client în baza de date. Acesta, spre deosebire de administrator, nu are dreptul să ștergă informațiile existente despre clienți.

Adăugarea unui client baza de date se realizează prin intermediul formei:

Figura 29: Adăugare Client

Câmpurile care trebuie completate sunt aceleași ca și în cazul administratorului.

Datele introduse vor fi adăugate în forma:

Figura 29:Adăugare Client

Editarea clienților

Se realizează prin acțiunea de Editare pe care o regăsim în pagina Adăugare Client, astfel:

Figura 30: Editare Client

Meniul Rezervări

Utilizatorul are următoarele permisiuni: să adauge o rezervare în baza de date sau să modifice informațiile referitoare la aceasta.

Adăugarea unei rezervări se realizează prin completarea câmpurilor din figura următoare:Adăugare Rezervare

Câmpurile completate sunt reținute în forma:Adăugare Rezervare

Editarea unei rezervări se face prin intermediul figurii Editare Rezervari.

7. Concluzii

Un site Web este o investiție atât în imaginea firmei cât și un mijoc important de dezvoltare a afacerii.

Această aplicație Web permite o gestionare facilă și completă a pensiunii Calipso, din punct de vedere al prezentării ofertelor.

Aspecte pozitive ale site-ului:

Soluție Web matură dedicată comerțului;

Aspect graphic clar, personalizat și dynamic;

Optimizare pentru motoare de căutare cu timpi de încărcare reduși;

Simplitate și ușurință în vizitare, utilizare și administrare.

Soluția permite ca afacerea să fie disponibilă pentru publicul larg din orice colț al lumii și în orice moment.

8. Bibliografie

HTML, XHTML, CSS, XML prin exemple – Ghid Practic,

Autor: Teodoru Gugoiu, Editura Teora, Ediția 2005.

SITURI WEB ÎN HTML

Autor: Margareta Drăghici, Editura Tehnica, Ediție 2003.

Dezvoltarea Aplicațiilor Web folosind XHTML, PHP și MySQL

Autor: Traian Anghel, Editura Polirom, Ediție: 2005.

Programare în PHP – Ghid Practic

Autor: Traian Anghel, Editura: Polirom; Ediție 2005.

PHP și MySQL pentru Comerț Electronic

Autor: Cristian Darie, Mihai Bucica, Editura Teora, Ediție: 2006.

Aplicații Web la cheie

Autor: Sabin Buraga, Editura Polirom.

Pagini Web cu JavaScript

Autor: Diana Elena Diaconu, Editura Edusoft, Ediție: 2004.

Controale ActiveX. Concepte și Aplicații

Autor: Mihai Ciota, Editura: Polirom

Flash 8

Autor: James English; Editura Teora; Ediție 2008

Macromedia Flash Profesional 8

Autor: Tom Green, Jordan.L, Editura: ALL, Ediție: 2007

Macromedia Flash – Concepte, Exemple, Studii de caz –

Autor: Cosmin Vârlan, Editura: Polirom, Ediție: 2004.

Pentru realizarea acestui site a fost nevoie de următoarele resurse preluate de pe Internet:

http://advertising.euromarket.ro/em_commerce.php

http://webspace.ulbsibiu.ro

http://ro.wikipedia.org

http://ee.php.net

www.academiaonline.ro

www.ecursuri.ro

www.etutoriale.ro

www.zeit.3x.ro

www.oriceon.com

www.webhelp.fr

Similar Posts