Facultatea de Automatica, Calculatoare si Electronica
Colegiul Tehnica de Calcul PROIECT DE ABSO!IRE Indrumator stiinti"ic, S#l# dr# ing# Catalin Cer$ulescu A$solvent, Po%a Ionica &arian Craiova ' ())* Tema %roiect +estiune si %re,entare on'line a %rogramelor cinematogra"elor din Romania Cu%rins Ca%#- Pre,entare "unctiuni Ca%#( .otiuni "undamentale de $a,e de date Ca%#/ im$a0ul S1 Ca%#* Active Server %ages 4.1 Pagini ASP 4.2 Accesarea bazelor de date 4.3 Obiectul Response 4.4 Obiectul Request Ca%#2 Descriere a%licatie 5.1 Structura bazei de date 5.2 Legaturi intre tabele 5.3 Interata cu utilizatorul 5.4 !alidari asupra datelor 5.5 "e#nici de progra$are utilizate in partea de ad$inistrare 5.5.1 %one&iunea la baza de date 5.5.2 Inserarea si actualizarea datelor 5.5.3 Stergerea datelor 5.' "e#nici de progra$are utilizate in partea de client 5.'.1 Pagina Acasa 5.'.2 Pagina In cine$atograe 5.'.3 Pagina cu inor$atii detaliate despre un il$ 5.'.4 Pagina cu inor$atii detaliate despre un actor 5.'.5 Pagina (il$e 5.'.' Pagina Actori 5.'.) Pagina Ar#i*a il$e Ca%#3 Conclu,ii Bi$liogra"ie isting sursa Ca%#- Pre,entare "unctiuni Aplicatia care ace obiectul acestui proiect se intituleaza +estiune si %re,entare on'line a %rogramelor cinematogra"elor din Romania si reprezinta un site +eb care aiseaza inor$atia e&istenta intr,o baza de date -S Access. %a ur$are este un site dina$ic. sc#i$barea inor$atiei din baza de date conducind la sc#i$barea auto$ata a inor$atiei care se aiseaza pe Internet. %a solutie pentru realizarea acestui site a$ ales /"-L 0/1per"e&t -ar2,up Language3 si ASP 0Acti*e Ser*er Pages3. Site,ul cuprinde doua parti distincte. Pri$a parte este destinata consultarii de catre orice persoana doritoare de a *edea un il$ la cine$a. (acilitatile oerite de aceasta pri$a parte a site,ului realizat de $ine sunt grupate sub ur$atoarele titluri 4 1. Acasa 5 este pagina introducti*a. in care *izitatorul este inor$at asupra a doua lucruri4 il$ele noi aparute in cine$atograe in sapta$ina curenta. precu$ si il$ele reco$andate. Prin asta a$ inteles il$ele care prin calitatea lor sunt reco$andate spre *izionare. Pentru iecare il$ apare titlul acestuia. aisul si date legate de subiect. Pe iecare titlu este a$plasata o #iperlegatura care conduce la pagina cu inor$atiile detaliate despre il$. 2. In cine$atograe , aiseaza datele ce incadreaza sapta$ina curenta si o lista drop,do6n din care trebuie ales orasul care intereseaza. In acest $o$ent se aiseaza iecare cine$atogra din orasul respecti* cu adresa s teleonul sau. Apoi. pentru iecare cine$atogra in parte apare lista il$elor care ruleaza. precu$ si cu zilele si orele de *izionare. Si aici a*e$ #iperlegatura pe titlul il$ului pentru a $erge in pagina cu detalii. 3. In *iitor 5 aceasta pagina este ase$anatoare cu cea anterioara. nu$ai ca aiseaza inor$atii despre il$ele progra$ate sa ruleze in cine$atograe in etapa de ti$p *iitoare 4. (il$e 5 aiseaza titlurile il$elor care ruleaza in tara in sapta$ina curenta. 5. Actori 5 aiseaza. in ordine alabetica. nu$ele actorilor care igureaza in baza de date. 7u$ele actorului este o #iperlegatura care daca este ur$ata conduce la aisarea in partea inerioara a paginii a inor$atiilor detaliate despre actorul ales. '. Ar#i*a il$e 5 per$ite *izualizarea titlurilor il$elor care sunt in baza de date pentru ca au rulat in trecut intr,unul din cine$atograele e&istente in baza de date. Aceasta ar#i*a este $entinuta. pentru ca un il$ poate sa ruleze din nou. peste un anu$e ti$p. ie in acelasi cine$atogra. ie in altul. 8oresc sa $entionez ca interata graica este placuta. cu un undal si butoane adec*ate te$ei. %ea de a doua parte a site,ului este pusa nu$ai la dispozitia celor care au drepturi sa ad$inistreze baza de date -S Access. Acesti utilizatori trebuie sa se identiice printr,un nu$e de utilizator si parola. In partea de ad$inistrare. e&ista ur$atoarele #iperlegaturi4 1. %ine$atograe 2. (il$e 3. Actori 4. Sapta$ina 5. Progra$ Aceste titluri corespund in general tabelelor din baza de date a caror inor$atie trebuie actualizata. (iecare din aceste optiuni per$ite gestionarea inor$atiei corespunzatoare. prin adaugare. $odiicare sau stergere de inregistrari. In pagina (il$e. in aara de posibilitatea de adaugare. $odiicare si stergere e&ista doua #iperlegaturi nu$ite 8istributie si I$agini care per$it gestionarea inor$atiilor corespunzatoare pentru iecare il$ in parte. In pagina %ine$atograe. utilizatorul cu drept de ad$inistrare poate sa gestioneze inor$atia despre acestea4 sa adauge. sa $odiice sau sa stearga inregistrari. In pagina (il$e. ad$inistratorul poate sa $odiice inor$tia legata de acestea. plus inor$atia legata de i$aginile din il$e si distributia acestora. 8e e&e$plu.in cazul in care se ad$inistreaza inor$atia legata de distributia il$elor. nu$ele actrilor se alege dintr,o lista drop,do6n. $unca acestuia iind $ult si$pliicata. Aceasta te#nica este utilizata si in alte parti ale site,ului de ad$inistrare. Astel. in cazul inor$atiilor despre cine$atograe. se alege orasul din care apartine. la adagarea progra$ului de rulare al unui il$ se alege sapata$ina si apoi titlul il$ului tot prin inter$ediul unor liste drop,do6n. Lucrurile se produc ase$anator in cazul celorlalte #iperlegaturi. 8oresc sa e*identiez ca in aceasta sectiune a$ acordat atentie speciala *alidarii datelor care se introduc sau se $odiica in tabele. pentru a pastra consistenta inor$atiei. pentru a e*ita iesirea utilizatorului din pagina din cauza unei erori. Ca%#( .otiuni "undamentale de $a,e de date Entitate,rela4ie,atri$ut Se nu$e9te entitate orice obiect.eno$en sau concept care poate i distins prin *alorile caracteristicilor sale de alte obiecte.eno$ene sau concepte ase$:n:toare. Se nu$e9te atribut o caracteristic: speciic: unei entit:;i. <n atribut se caracterizeaz: prin 4nu$e.se$antic:.structur:.tipuldatelor 9i do$eniul de deini;ie. Prin tipul datelor =n;elege$ structura datei.$ul;i$ea *alorilor.opera;iile ad$ise si $odul de tratare a erorilor speciice. Semantica =nsea$n: se$niica;ia atributului =n cadrul entit:;ii.>ntr,o colec;ie pot s: apar: di*erse atribute cu acela9i nu$e dar plasate in entit:;i dierite.%#iar dac: au acela9i nu$e atributele pot s: aib: se$niica;ii dierite. Domeniul este o no;iune speciic: bazelor de date 9i puternic legat: de se$antica acestora.%unoa9terea se$anticii atributelor 9i a do$eniilor speciice este una din cerin;ele de baz: ale proiect:rii unei baze de date. 8in punct de *edere al se$anticii distinge$ 4 1. Atribute identificator,ale c:rui *alori pot identiica =n $od unic o anu$ita entitate. 2. Atribute descriptor,ale carui *alori descriu o anu$it: proprietate a entit:;ii. 3. >n ase$enea situa;ii o entitate poate s: nu aib: c#eie pri$ar: natural:.>n acest caz proiectantul bazei de date poate decide introducerea unei c#ei pri$are artiiciale. Din punct de vedere al structurii putem distinge : 1. Atribute atomice din a c:ror *aloare nu poate ii eli$inat: nici o co$ponent: :r: a aecta se$antica atribitului. 2. Atribute compuse a c:ror *aloare este dat: de reuniunea *alorilor unor atribute ato$ice. Din punct de vedere al numrului de valori pe care-l poate lua la un moment dat un atribut pentru o anumit entitate distingem. 1. Atribute cu valoare unic care accept: la un $o$ent dat o singur: *aloare pentru iecare entitate. 2. Atribute multivaloare care accept: la un $o$ent dat un set de *alori pentru aceea9i entitate. Din punct de vedere al nivelului de structurare al unui atribut distingem : 1. Atribute slab structurate 5sunt caracteristice aplica;iilor $ulti$edia. 2. Atribute puternic structurate,sunt atribute care au o structur: riguros deinit:. >ntre entit:;i se stabilesc leg:turi.Leg:tura =ntre clase de entit:;i pune =n coresponden;: entit:;iile ce particip: la realizarea leg:turii a dou: sau $ai $ulte clase de entit:;i reprezint: o sub$ul;i$e a produsului cartezian al entit:;iilor. Caracteristici generale ale legturilor: 1. Orice leg:tur: are un nu$e 2. Orice leg:tur: are o se$antic: riguros deinit: 3. O leg:tur: este bidirec;ional: 4. Pot i deinite leg:turi =ntre entit:;ile aceleia9i clase de entit:;i 5. >ntre acelea9i clase de entit:;i pot i deinite $ai $ulte leg:turi cu se$niica;ii dierite '. Pot i deinite leg:turi peste $ai $ult de dou: clase de entit:;i ). Leg:turile pot a*ea atribute proprii ca 9i entit:;iile Indierent de se$antica lor leg:turile prezint: c?te*a propriet:;i deosebit de i$portante a c:ror cunoa9tere este esen;ial: pentru =n;elegerea si i$ple$entarea colec;iilor de date. 1. Gradul legturii,indic: nu$:rul de clase de entit:;i care particip: la realizarea leg:turii tip . 2. ndicator de participare,este un indicator care speciic: dac: pot e&ista entit:;i ale unei clase de entit:;i care s: nu participe obligatoriu la realizarea leg:turi tip analizate. 3. ndicator de conectivitate,indic: nu$:rul de entit:;i ale unei clase care pot i puse =n coresponden;: cu entit:;i ce particip: la realizarea unei anu$ite leg:turi. !a"e de date Se nu$e9te ba" de date o colec;ie de date conectate logic e&#austi*:.neredundant: 9i care suport: independen;a aplica;iilor =n raport cu structura datelor. Prin structura ba"ei de date se $aterializeaz: de apt inor$a;ia con;inut: de date .Structura datelor nu este unic: .Prin duplicarea datelor =n;elege$ c: aceleea9i date sunt reprezentate =n baza de date =n aceea9i or$: sau =n or$e apropriate. Cone#iunea logic a datelor presupune c: =n baza de date sunt introduse nu$ai date speciice unui anu$it do$eniu iar =ntre ele pot i puse =n e*iden;: leg:turi cu o se$antic: bine deter$inat:. $#%austivitatea datelor se reer: la cerin;a i$pus: de precizia inor$a;iilor 9i anu$e c: pentru a ob;ine inor$a;ii c?t $ai corecte =ntr,un anu$it do$eniu respecti*. Prin cerere *o$ =n;elege o solicitare abstract: siste$ului inor$atic sub or$a unor co$enzi =ntr,un li$ba@ de progra$are =n scopul ob;ineri unui anu$it rezultat cu a@utorul unor prelucr:ri ele$entare asupra datelor p:strate =n baza de date. Prin aplica&ie se =n;elege un grup de cereri concatenate se$antic 9i care solicit: apro&i$ari* acelea9i date pentru ob;inerea rezultatelor. >n concluzie e&ist: un nu$:r $are de ele$ente ale bazei de date a c:ror $odiicare nu trebuie s: aecteze aplica;iile de@a i$ple$entate. Printre acestea pute$ a$inti4 1. utilizarea unor tipuri de dat: dierite pentru *alorile aceluia9i atribut 2. or$atul de reprezentare al datei calendaristice poate *aria oarte puternic =n unc;ie de aplica;ie.de preerin;ele beneiciarului de tranzac;ie. 3. anu$ite date pot i *:zute distinct de c:tre o aplica;ie 9i concatenate de c:tre alt: aplicatie. 4. di*erse apilica;ii utilizeaz: iecare doar o parte a con;inutului bazei de date. 5. dac: la un $o$ent dat se #ot:r:9te e&tinderea bazei de date prin ad:ugarea de noi categori de inor$a;ii .*ec#ile aplica;ii care nu utilizeaz: aceste date nu trebuie s: ie aectate. '. a*?nd =n *edere pre;ul de cost $are al i$ple$ent:ri unei baze de date 9i a aplica;iilor peste aceasta se poate decide i$ple$entarea bazei de date =n etape. ). $odiic:rile =n structura siste$ului inor$atic pri ac#izi;ia de ec#ipa$ente de calcul noi prin $odiicarea tipului suportului e&tern de inor$a;ie.prin redistribuirea i9ierelor de date nu trbuie s: aecteze progra$ele aplicati*e. A. un progra$ aplicati* poate i utilizat =n conte&te dierite peste baze de date cu structuri de date identice dar i$ple$entate pe siste$e de calcul dierite. Sistemul de gestiune a ba"elor de date reprezint: un pac#et de progra$$e care per$it crearea. utilizarea si eli$inarea obiectelor ce co$pun baza de date =n scopul cre9teri randa$entului global al utiliz:rii bazelor de date si a*?nd ca principal obiecti* reducerea dependen;ei aplica;iilor =n raport cu structura datelor. Principala noutate introdus: de SBC8 a ost separarea descrierii datelor de progra$ul aplicati*. 8escrierea datelor se ace =n $od unitar pentru toate aplica;iile cu a@utorul SBC8. SBC8,ul oer: $ecanis$e puternice de acces la date :r: s: necesite cuno9tin;e a*ansate pri*ind structura datelor 9i siste$ul de operare. Introducerea SBC8,ului a per$is crearea unei ar#itecturi pe 3 ni*ele a siste$ului inor$atic4 'ivelul logic corespunde $odului =n care iecare utilizator *ede con;inutul bazei de date. 'ivelul conceptual corespunde structurii =ntregii baze de date.-odelul conceptual este o descriere a continutului bazei de date independent: at?t de aplica;iile propriuzise c?t 9i de $odelul de i$ple$entare al bazei de date. 'ivelul intern se reer: la $odul de i$ple$entare al bazei de date. -odelul intern con;ine descrierea structurii de date i$ple$entate. descrierea i9ierelor a te#nicilor de acces la date. lista utilizatorilor. drepturile lor de acces. (odelul rela&ional este un $odel logig al bazei de date care sa i$pus datorit: naturale;ii sale 9i si$plit:;ii =n =n;elegerea 9i $anipularea structurilor de date. Rrezentarea unei baze de date sub or$: de rela;ii se nu$e9te $odel rela;ional al bazei de date. O rela;ie este or$at: dintr,un tabel bidi$ensional =n care coloanele corespund atributelor iar iecare linie corespunde unei entit:;i. (iecare rela;ie se identiic: printr,un nu$e unic =n cadrul unei baze de date. (iecare atribut are un nu$e unic 9i trebuie s: sugereze se$niica;ia acestuia. O linie a rela;iei se nu$e9te tuplu al rela;iei .Prin rela;ie $aterializ:$ o clas: de entit:;i =n care iecare tuplu reprezint: o entitate. C5EI 7o;iunea de c#eie deri*: din conceptul deter$inant . Se nu$e9te determinant orice atribut si$plu sau co$pus ale c:rui *alori identiic: =n $od unic *alorile altor atribute. Se nu$e9te superc%eie orice atribut si$plu sau co$pus care identiic: =n $od unic un tuplu. D&ist: o superc#eie care apare =n orice rela;ie nu$it: c#eie tri*ial: 9i anu$e o superc#eie or$at: din toate atributele rela;iei. C%eie candidat : Se nu$e9te c#eie candidat o superc#eie $ini$al: adic: o superc#eie din care =ndep:rt?nd cel pu;in un atribut se pierde caracterul de deter$inant. Superc#eile si c#eile candidat rezult: =n $od natural din se$antica datelor. C%eie primar : %#eia pri$ar: este o c#eie candidat aleas: de c:tre proiectantul bazei de date pentru identiicarea tuplurilor intr,o rela;ie. Speciicarea c#eii pri$are este obligatorie =n orice docu$enta;ie pri*ind baza de date. Alegerea c#eii pri$are se poate ace pe baza unei analize prounde a se$niica;iei datelor 9i a $odului =n care acestea sunt utilizate =n di*erse aplica;ii sau pot i i&ate arbitrar dintre c#eile candidat. >n cazul in care nu e&ist: nici o c#eie candidat sau c#eile candidat naturale au un nu$:r prea $are de atribute proiectantul poate decide introducerea unor c#ei pri$are artiiciale generate de c:tre SBC8. C%eie alternant : este o c#eie candidat care nu a ost aleas: pentru postul de c#eie pri$ar:. C%eie secundar : Orice atribut sau grup de atribute prin ale c:ror *alori se identiic: o $ul;i$e de tupluri dintr,o rela;ie. (ie o rela;ie a*?nd sc#e$a r0a1.a2.E.an3.unde a1 este c#eie pri$ar: a rela;iei. Se nu$e9te do$eniu pri$ar al rela;iei do$eniul corespunz:tor c#eii pri$are. (ie o alt: rela;ie s0b1.b2.E.bn3.unde b1 este deinit peste acela9i do$eniu pri$ar din rela;ia r.>n acest caz se spune c: b1 este c#eie e&tern: peste deinit: peste c#eia pri$ar: din rela;ia r. C%eia e#tern reprezint: un $ecanis$ unda$ental pentru $aterializarea leg:turi =ntre rela;iile r 9i s. %#eile e&terne pot i deinite =n practic: peste c#ei candidat =n aara c#eii pri$are. Reguli de integritate Regulile de integritate a datelor dintr,o baz: de date rela;ional: reprezint: restric;ii i$puse datelor cu scopul de a eli$ina redundan;a datelor.inconsisten: a datelor 9i erori de actualizare a datelor. D&ist: $ulte tipuri de integrit:;i 9i anu$e 4 1. ntegritatea domeniului,aceast: restric;ie presupune deinirea do$eniului unui atribut astel =nc?t s: reprezinte eecti* *alorile posibile ale unui atribut. 2. ntegritatea c%eilor,prin c#eie *o$ =n;elege toate c#eile candidat puse =n e*iden;: =ntr,o rela;ie. 3. ntegritatea entit&ii,prin deini;ie c#eia pri$ar: trbuie s: identiice =n $od unic un tuplu al unei rela;ii care =n general este $aterializarea unei entit:;i. Pentru ca s:,9i poat: realiza rolul de identiicator c#eia pri$ar: nu poate a*ea *alori nule. 4. ntegritatea referirii,aceast: restric;ie de integritate are ca scop s: eli$ine reeririle =n gol. adic: c#eia e&tern: nu are *oie s: se reere la un tuplu care nu e&ist:. Restric;ia integrit:;ii reeririi i$pune ca la un $o$ent dat *alorile c#eii e&terne ie s: ie nule. ie s: se ale printre *alorile de@a =nregistrate pentru c#eia pri$ar: peste care este deinit: c#eia e&tern:. 5. )estric&ii de utili"ator,=n unele situa;ii utilizatorul poate i$pune 9i alte restric;ii dec?t cele i$puse de regulile de integritate discutate anterior 4 ,unicitatea altor atribute dec:t c#eia pri$ar: ,*alori nule ,di*erse *alid:ri O%eratori ai alge$rei rela4ionale Operatorii algebrei rela;ionale pot i =$p:r;i =n dou: grupe4 1. Operatori clasici peste $ul;i$i 2. Operatori rela;ionali speciici Se spune c: rela;iile r1 9i r2 sunt co$patibile cu reuniunea dac: cele 2 rela;ii au aceea9i paritate 9i atributele care ocup: aceea9i paritate sunt deinite peste acela9i do$eniu c#iar dac: au nu$e dierite. )euniunea 4(ie r1 9i r2 dou: rela;ii co$patibile cu reuniunea .Se nu$e9te reuniune rela;ia r care con;ine toate tuplurile celor 2 rela;ii ini;iale :r: duplicate. ntersec&ia 4(ie r1 9i r2 dou: rela;ii co$patibile cu reuniunea.Se nu$e9te intersec;ie rela;ia r care con;ine toate tuplurile co$une lui r1 9i r2. Diferen&a 4(ie r1 9i r2 dou: rela;ii co$patibile cu reuniunea.Se nu$e9te dieren;: rela;ia r care con;ine nu$ai tuplurile din r1 care nu apar =n r2. *rodusul carte"ian 4(ie r1 9i r2 dou: rela;ii oarecare.Se nu$e9te produs cartezian rela;ia r op;inut: prin concatenarea iec:rui tuplu din r1 cu iecare tuplu din r2. Operatori rela;ionali speciici 4 Selec&ia,(ie o rela;ie r 9i o e&presie relational: arit$etic: nu$it: iltru.Se nu$e9te selec;ie o rela;ie or$at: din toate tuplurile rela;iei r pentru care atributele iau *alori care =nlocuite =n e&presia ac ca aceasta s: aib: *aloarea ade*:rat: true. *roiec&ia,(ie o rela;ie r 9i ai1.ai2.E.ain. un set de atribute ale acestei rela;ii.Se nu$e9te proiec;ie o rela;ie op;inut: din rela;ia r care con;ine nu$ai atributele speciicate. Ti%uri de lim$a0e utili,ate 6n domeniul $a,elor de date 1. +imba,e de descriere a ba"ei de date-+D!D.-per$it descrierea rela;iilor atributelor 9i a unor restric;ii de integritate.a unor *ederi asupra bazelor de date a unor utilizatori 9i apri*ilegiilor acordate acestora. 2. +imba,e de manipularea ba"elor de date-+(D!.-acestea cuprind co$enzi care per$it 4 ,introducerea de noi date =n baza de date ,$odiicare *alorilor de@a =nscrise =n baza de date ,eli$inarea unor tupluri ale unei rela;ii 3. +imba,e de interogare,au ca scop posibilitatea or$ul:ri unor cereri de c:utare a inor$a;iilor =n baza de date. 4. +imba,e pentru generarea rapoartelor,sunt li$ba@e care per$it o or$atare soisticat: a datelor care s: prezinte inor$a;ia intr,o or$: adec*at: proble$ei rezol*ate. .ormali,area Dste un proces interati* 9i re*ersibil prin care se =nlocuie9te o colec;ie dat: de rela;ii prin colec;ii succesi*e =n care rela;iile au o structur: din ce =n ce $ai si$pl: 9i $ai regulat:. Obiecti*ele nor$aliz:rii sunt 4 1.S: per$it: reprezentarea oric:rei rela;ii =n baza de date . 2.S: op;in: algorit$ii de c:utare puternici baza;i pe o colec;ie de operatori rela;ionali . 3.S: eli$ine din rela;ii ano$aliile de inser;ie .$odiicare 9i 9tergere. 4.S: reduc: necesitatea restructur:rii rela;iilor atunci c:nd se introduce un nou tip de date sau se $odiic: ipotezele de lucru. 5.S: ac: colec;ia de rela;ii i$un: =n raport cu cererile aleatoare a c:ror se$antic: se $odiic: =n ti$p. Pot i puse =n e*iden;: cinci or$e de nor$alizare ce or$eaz: o structur: riguros ierar#izat: care *or i notate cu (71,(75. /orma normal 1-/'1. O relatie este =n (71 dac: iecare atribut al rela;iei are un do$eniu de *alori ato$ice.(71 este cea $ai slab: or$: nor$al:.>n general rela;iile =n aceast: or$: prezint: nu$eroase ano$alii la inser;ie.$odiicare 9i eli$inare. acestea iind eli$inate de celelalte or$e nor$ale. /orma normal 2-/'2. (ie F $ul;i$ea tuturor atributelor rela;iei r0a1.a2.E.an3.care nu particip: la or$area *reunei c#ei =n r. Se spune c: rela;ia r este =n (72 dac: 9i nu$ai dac: iecare atribut din F este co$plet dependent unc;ional de oricare din c#eile lui r.<n atribut este atribut prim dac: ace parte din cel pu;in o c#eie a rela;iei r.<n atribut este atribut nonprim dac: nu ace parte din cel pu;in o c#eie a rela;iei r.O rela;ie este =n (72 dac: 9i nu$ai dac: orice atribut nonpri$ din r este co$plet dependent unc;ional de toate c#eile din r. *roprietate : 8ac: o rela;ie nu este =n (72.e&ist: o desco$punere a lui r =ntr,un set de proiec;ii.iecare =n (72. 8esco$punerea se poate realiza =n a9a el =nc?t aplic?nd @oncea natural: =ntre proiec;ii se op;ine con;inutul inor$a;ional al lui r ar: pierdere de inor$a;ie. /orma normal 3-/'3. O rela;ie este =n (73 dac: 9i nu$ai dac: nici unul din atributele sale nonpri$e nu este dependent tranziti* de o c#eie a rela;iei r. *roprietti : 1.8ac: o rela;ie se al: =n (73 .ea este obligatoriu =n (72. 2.D&ist: rela;ii =n (72 care nu se al: =n (73. 3.8ac: o rela;ie r nu este =n (73.e&ist: o deco$pozi;ie a lui r intr,un set de proiec;ii.toate =n (73. Aceast: deco$pozi;ie este astel realizat: =nc?t aplic?nd @onc;iunea natural: =ntre proiec;iile op;inute se reace rela;ia ini;ial: :r: pierdere de inor$a;ii. /orma normal !o0ce-Codd-/'!C. Rela;ia r0a1.a2.E.an3 este =n (7C% dac: 9i nu$ai dac: e&isten;a unei dependen;e unc;ionale netri*ial: F,G .unde F 9i G sunt seturi de atribute ale lui r i$plic: e&isten;a dependen;elor unc;ionale F,a1.pentru iH1.2.E.n. Aceast: deini;ie poate i reor$ulat: utiliz?nd ter$enul deter$inant. Se nu$a9te deter$inant orice atribut si$plu sau co$pus care i$plic: unc;ional alte atribute. O rela;ie este =n (7C% dac: 9i nu$ai dac: orice deter$inant al rela;iei este c#eie candidat. *ropriet&i : 1.8ac: o rela;ie este =n (7C%.ea este obligatoriu in (73. 2.D&ist: rela;ii =n (73 care nu sunt =n (7C%. 3.8ac: o rela;ie nu este =n (7C%.atunci aceast: rela;ie poate i desco$pus: =ntr,un set de proiec;ii (7C% astel =nc?t con;inutul rela;iei ini;iale s: poat: i re:cut :r: pierdere de inor$a;ie prin @onc;iunea natural: a proiec;iilor. Procesul de nor$alizare poate i rezu$at astel 4 .-#Se transor$: tabelul ini;ial =ntr,unul sau $ai $ulte tabele cu *alori ato$ice. .(#8in rela;iile de la pasul precedent se eli$in: toate dependen;ele unc;ionale par;iale op;in?nd rela;ii (72. ./#8in rela;iile (72 se eli$in: toate dependen;ele unc;ionale tranziti*e de atribute c#eie.Se op;in rela;ii (73. .*.Se aleg proiec;iile rela;iilor (73 care eli$in: acele dependen;e unc;ionale =n care deter$inantul nu este c#eie candidat 9i se op;in rela;ii (7C%. .2#Se aduc rela;iile (7C% =n (74. .3#Se aleg proiec;iile rela;iilor (74 care eli$in: dependen;ele @onc;iune care nu sunt i$plicate prin c#ei candidat .Rezult: rela;ii (75. Ca%#/ im$a0ul S1 S1 a ost conceput ca un li$ba@ standard de descriere a datelor si acces la inor$atiile din baze de date. dez*oltindu,se ca o ade*arata te#nologie dedicata ar#itecturilor clientIser*er. <tilizat initial de catre ir$a IC- pentru produsul 8C2. li$ba@ul de interogare a bazelor de date relationale S1 0Structured 1uer7 anguage3 a de*enit la $i@locul deceniului trecut un standard in do$eniu. 8e atunci si pina in prezent au ost dez*oltate $ai $ulte *ersiuni ale standardului SJL. trei dintre ele apartinind Institutului 7ational A$erican de Standarde 0 A7SI 3. celelalte iind concepute de ir$e de prestigiu ca IC-. -icrosot. Corland. 8in pacate. lipsa unui standard unic SJL are drept consecinte cresterea costurilor progra$elor de gestiune a bazelor de date si ingreuneaza intretinerea ar#itecturilor clientIser*er. Pri$ul standard SJL a ost creat in anul 1KAK de catre A7SI. iind cunoscut sub nu$ele de A7SI,SJL LAK si a ost re*izuit in 1KK2 sub noua denu$ire A7SI,SJL LK2. Prolierarea intre ti$p a dieritelor i$ple$entari ale li$ba@ului SJL. a deter$inat or$area consortiului SAB. cu scopul de a concepe un set de standarde SJL. care sa aiba la baza un subset al standardului A7SI,SJL LAK si in plus sa rezol*e proble$ele legate de i$ple$entarea acestora in ar#itecturi clientIser*er cu$ ar i conecti*itatea si interetele cu utilizatorul ale progra$elor. In anul 1KK2. ir$a -icrosot. in calitate de $e$bru SAB a lansat pe piata produsul O8C% 0 Open 8atabase %onecti*it1 3. un standard API,SJL ce are la baza un proiect de standard si deineste o interata de progra$are a aplicatiilor 0 API 3 pentru accesul la baze de date. Interata de progra$are cunoscuta in do$eniu sub initialele API. oera o cale de co$unicare intre progra$e si bazele de date prin apeluri de unctii care substituie instructiunile SJL. Astel. standardele API se bazeaza pe conecti*itate. precu$ si sc#i$bul de date si $esa@e SJL. SJL este un li$ba@ co$plet pentru baze de date. cuprinzind co$enzi pentru deinirea datelor. actualizare si interogare. 8eci. este atit un li$ba@ pentru deinirea datelor 088L3. cit si pentru $anipularea datelor 08-L3. In plus. are acilitati pentru deinirea *iziunilor. pentru crearea si stergerea indecsilor si pentru incapsularea co$enzilor SJL in li$ba@e de progra$are ca % sau Pascal. %o$enzile SJL pentru deinirea datelor sint CREATE. ATER si DROP. %o$enzile SJL pentru $odiicarea datelor sint I.SERT. DEETE si UPDATE. SJL are o singura co$anda pentru regasirea datelor din bazele de date. SEECT . A*ind in *edere ca in ASP. accesul la bazele de date de tip Access se realizeaza prin inter$ediul li$ba@ului SJL. *oi prezenta in continuare. sinta&a co$enzilor SJL in -icrosot Access. Comanda SEECT Per$ite returnarea unui set de inregistrari din baza de date. Are ur$atoarea sinta&a4 SEECT 8%redicate9 : ; < ta$le#; < 8ta$le#9"ield- 8AS alias-9 8,ta$le#9"ield( 8AS alias(9 8, ###99= FRO& ta$lee>%ression 8, ###9 8I. e>ternaldata$ase9 8?5ERE### 9 8+ROUP B@### 9 8ORDER B@### 9 %o$anda SDLD%" are ur$atoarele parti4 , Predicate 5 poate i unul dintre ur$atoarele predicate4 ALL. 8IS"I7%". 8IS"I7%"RO+. or "OP. care se utilizeaza pentru a restrictiona nu$arul de inregistrari returnate. 0 i$plicit este ALL3. , M , speciica selectarea tuturor ci$purilor din tabela sau tabelelor selectate. , table 5 speciica nu$ele tabelei continind ci$purile din care se selecteaza datele , ield1. ield2 5 reprezinta nu$ele ci$purilor din care dori$ regasirea datelor. , alias1. alias2 , reprezinta nu$ele utilizate ca si titluri de coloane in locul nu$elor coloanelor din tabela , tablee&pression 5 reprezinta nu$ele tabelei sau tabelelor din care se regases datele , e&ternaldatabase 5 reprezinta nu$ele bazei de date e&terne. daca tabelele nu sint in cea curenta Obser*atii4 Pentru a e&ecuta aceasta operatie. $otorul de baze de date -icrosot Net cauta tabela sau tabelele speciicate. e&trage coloanele alese. selecteaza rindurile care satisac criteriul si sorteaza sau grupeaza rindurile rezultate in ordinea speciicata. %o$anda SDLD%" nu $odiica datele din baza de date. 8aca nu$ele unui ci$p apare in $ai $ulte tabele din clauza (RO-. el trebuie precedat de nu$ele tabelei si operatorul punct 0.3. Clau,a ?5ERE speciica inregistrarile din tabelele ce apar in clauza (RO- care *or i aectate de co$anda SDLD%". 7u$ai acele inregistari care satisac criteriul din aceasta clauza *or i incluse in interogarea rezultat. Obser*atii 4 8aca nu se speciica clauza +/DRD *or i returnate toate rindurile din tabele. 8aca in interogare se speciica $ai $ult de o tabela si nu speciica clauza +/DRD sau NOI7. se eectueaza produsul cartezian al tabelelor. operatie consu$atoare de ti$p. Clau,a ORDER B@ per$ite sortarea inregistrarilor dupa *alorile din ci$purile speciicate. ascendent sau descendent. Sinta&a acestei clauze este4 8ORDER B@ "ield- 8ASC < DESC 98, "ield( 8ASC < DESC 998, ###999 Obser*atii 4 %lauza este optionala. Sortarea i$plicita este ascendenta. altel trebuie speciicat 8DS%. In aceasta clauza nu pot apare ci$puri de tip OLD sau -e$o. Clau,a +ROUP B@ co$bina inregistrarile cu *alori identice din lista de ci$puri speciicate. intr,o singura inregistrare.8aca in co$anda SDLD%" se speciica una dintre unctiile agregat 0 Su$. %ount. -a& 3. atunci pentru iecare astel de inregistrare se creaza apoi o *aloare agregat. %lauza are ur$atoarea sinta&a4 8+ROUP B@ grou%"ieldlist9 , groupieldlist 5 reprezinta nu$ele a cel $ult 1O ci$puri utilizate pentru gruparea inregistrarilor. Ordinea acestor ci$puri in lista deter$ina ni*elele de grupare de la cel $ai inalt pina la cel $ai de @os Obser*atii4 %lauza este optionala. !alorile agregat sint o$ise daca in co$anda SJL nu se speciica nici o unctie agregat. 7u se poate ace grupare dupa ci$puri de tip Ole sau -e$o. Aonctiunea interna B I..ER AOI. C Se speciica cu ur$atoare sinta&a4 FRO& ta$le- I..ER AOI. ta$le( O. ta$le-#"ield- com%o%r ta$le(#"ield( Operatia I77DR NOI7 are ur$atoarele parti4 , table1. table2 , reprezinta nu$ele tabelelor din care se co$bina inregistrarile , ield1. ield2 5 reprezinta nu$ele ci$purilor dupa care se ace @onctiunea. 8aca ele nu sint nu$erice. trebuie sa ie de acelasi tip. aceeasi di$ensiune. dar nu trebuie sa aiba acelasi nu$e. , co$popr 5 reprezinta orice operator relational4 PH.P PQ.P PR.P PQH.P PRH.P sau PQR.P Obser*atii4 Acest tip de @onctiune este cel $ai utilizat si se poate olosi in orice clauza (RO-. %o$bina inregistrarile din doua tabele. ori de cite ori e&ista *alori care isi corespund in ci$pul co$un din cele doua tabele. 7u se poate ace @onctiune pe tipuri de date OLD sau -e$o. Comanda UPDATE Per$ite $odiicarea *alorilor ci$purilor intr,o tabela speciicata. pe baza unui criteriu speciicat. Are ur$atoarea sinta&a4 UPDATE ta$le SET neDvalue ?5ERE criteria %o$anda <P8A"D are ur$atoarele parti4 , table 5 reprezinta nu$ele tabelei ce contine datele ce *or i $odiicate. , ne6*alue , este e&presia care deter$ina *aloarea ce *a i $e$orata intr,un anu$e ci$p din inregistrarile care se actualizeaza. , criteria 5 este e&presia care deter$ina inregistrarile ce *or i actualizate Ca%#* Active Server Pages *#- Pagini ASP O pagina ASP este un isier stocat pe un ser*er +eb si care are e&tensia .ASP. Aceasta e&tensie speciala ace deosebirea dintre o pagina ASP si un isier /"-L nor$al care are e&tensia .5T& sau .5T&. %ind un utilizator *iziteaza un site +eb si cere un isier /"-L nor$al. ser*erul preia pur si si$plu isierul de pe #ard,discul sau din $e$oria calculatorului si il tri$ite bro6serului utilizatorului. Cro6serul interpreteaza continutul /"-L al isierului si *izitatorul *a *edea pagina +eb. %ind cine*a solicita o pagina /"-L nor$ala. ser*erul +eb nu este interesat de continutul isierului. Rolul ser*erului +eb se rezu$a la preluarea isierului corect ara a,l prelucra. "oata $unca de interpretare a continutului isierului este realizata de bro6serul utilizatorului. Pe de alta parte. cind cine*a solicita o pagina ASP. ser*erul +eb *a a*ea un rol $ult $ai acti*. Inainte ca isierul sa ie tri$is catre bro6serul utilizatorului. el este $ai intii prelucrat de catre ser*erul +eb. Acesta din ur$a interpreteaza si e&ecuta orice script,uri dintr,o pagina ASP. inainte ca acesta sa ie tri$is catre bro6serul utilizatorului. 8atorita aptului ca o pagina ASP este prelucrata de catre ser*er in loc de bro6ser. o astel de pagina este co$patibila cu toate bro6serele +eb. Paginile ASP contin script,uri pe parte de ser*er. %a li$ba@ de generare a script,urilor. se poate utiliza -icrosot !isual Casic Scripting Ddition 0!CScript3. sau -icrosot Nscript sau PerlScript. (ir$a -icrosot include Nscript in te#nologia ASP. PerlScript nu este un produs -icrosot. Li$ba@ele de generare de script,uri. cu$ este !CScript. diera de li$ba@ele de progra$are co$plete. cu$ sunt !isual Casic si Na*a. prin si$plitatea regulilor si sinta&ei lor. 8e e&e$plu. !CScript nu necesita declararea *ariabilelor ca tipuri particulare de date. -ai $ult. spre deosebire de !isual Casic sau Na*a. o pagina ASP nu trebuie co$pilata intr,un isier separat inainte de a o putea e&ecuta. %ind $odiicati o pagina ASP. aceasta este reco$pilata auto$at la ur$atoarea solicitare. A*anta@ul utilizarii unui li$ba@ de generare de script,uri la construirea paginilor +eb este aptul ca acesta aciliteaza $odiicarea unui site +eb c#iar si dupa ce a ost lansat in Internet. 8aca se descopera o eroare in site. se poate incarca rapid pagina respecti*a in progra$ul 7otepad sau +ordpad unde se *a rezol*a proble$a. 7u trebuie trasa concluzia ca. daca o pagina ASP utilizeaza un li$ba@ de generare de script,uri. atunci paginile Acti*e Ser*er sunt lente sau nu asigura acoperirea necesara. Script,urile ASP ruleaza in acelasi proces ca si ser*erul +eb si poate i di*izat in ire de e&ecutie. Acest lucru per$ite unei pagini ASP sa oere si$ultan. in $od eicient. suport pentru un nu$ar $are de utilizatori. O pagina ASP ar i strict li$itata daca nu ar putea contine decit script,uri. S,ar putea aisa ora e&acta sau alte $esa@e interesante. dar nu ar e&ista posibilitatea de a prelua inor$atii de la utilizatori. de a stoca date intr,o baza de date sau de a crea isiere pe ser*er. 8in ericire. o pagina ASP poate contine co$ponente pe parte de ser*er. O co$ponenta este ce*a care. de obicei. are $etode. proprietati si colectii. &etodele unei co$ponente deter$ina actiunile pe care le puteti eectua cu un obiect. Pro%rietatile unei co$ponente pot i citite sau stabilite pentru a preciza starea co$ponentei. Colectiile unei co$ponente sunt seturi de perec#i c#eie si *aloare. reeritoare la co$ponenta. Paginile Acti*e Ser*er au doua tipuri de co$ponente4 obiecte incluse si co$ponente ce pot i instalate. %ele sase obiecte incluse in Acti*e Ser*er pages sunt4 A%%lications , reprezinta inor$atia care poate i parta@ata intre toti utilizatorii unei aplicatii ASP. O$0ectConte>t , acest obiect se utilizeaza la paginile ASP care se ocupa de tranzactii ReEuest , reprezinta toate inor$atiile tri$ise de bro6ser catre ser*er. inclusi* *ariabile de or$a si siruri interogare. Res%onse , reprezinta toate inor$atiile tri$ise de la un ser*er catre un bro6ser. inclusi* continutul /"-L tri$is de catre o pagina ASP. Server , per$ite olosirea pe ser*er a dierite unctii utilitare Session , reprezinta inor$atia reeritoare la sesiunea de lucru particulara a unui utilizator. In paginile Acti*e Ser*er este inclus un set special de obiecte 4 ActiveF Data. care per$it accesarea unei baze de date dintr,o pagina ASP. Aceste obiecte se utilizeaza pentru a insera. actualiza si sterge linii dintr,un tabel. Aceste obiecte se pot olosi. de ase$enea. pentru a prelua un set de inregistrari dintr,o tabela si a le aisa intr,o pagina ASP. *#( Accesarea $a,elor de date ActiveF Data O$0ects 0 ADO 3 reprezinta o te#nologie e&tensibila si usor de utilizat care per$ite accesul la baze de date din cadrul paginilor de +eb. A8O se poate utiliza pentru a scrie scripturi co$pacte si scalabile pentru conectarea la baze de date prin inter$ediul ODBC 0 Open 8atabase %onnecti*it1 3. Inainte de a putea desc#ide o cone&iune la o baza de date. *a trebui sa urniza$ paginii ASP inor$atii despre localizarea izica a bazei de date. %u alte cu*inte trebuie sa urniza$ script,ului o $etoda de gasire a bazei de date pe unitatea de #ard disc. O cale de a realiza acest lucru cu a@utorul nu$elui de sursa de date 0 8ata Source na$e,8S73. Se pot crea doua tipuri dierite de nu$e de sursa de date. In cazul in care se creaza un nu$e de sursa isier 0(ile 8S73. inor$atia despre conectarea la baza de date *a i stocata intr,un isier. In cazul in care se creaza un nu$e de sursa de siste$. inor$atia despre conectarea la baza de date *a i stocata in baza de date Registr1 a calculatorului. 7u e&ista $oti*e speciale care sa i$puna utilizarea unuia sau celuilalt tip de nu$e de sursa de date. A$bele tipuri unctioneaza la el de bine. dar eu a$ utilizat in aplicatie un nu$.e de sursa de date siste$. Pentru a crea un isier 8S7 de tip S1ste$ pentru o baza de date de tip -S Access se procedeaza astel4 1. 8in $eniul Start din +indo6s se alege optiunea Settings apoi Control Panel 2. 8ublu,clic2 pe icoana ODBC ceea ce conduce la aisarea erestrei ODBC Data Source Administrator 3. Se selecteaza optiunea S7stem DS. 2. Se selecteaza butonul Add pentru a alege dri*erul bazei de date si apoi se apasa butonul Finish 3. Se introduce un nu$e pentru isierul 8S7 in caseta 8ata Source 7a$e 4. Prin apasarea butonului Select se alege o baza de date de tip Access 0 M.$db 3 e&istenta si apoi se apasa butonul OG. Conectarea la o $a,a de date Pri$ul pas in *ederea accesarii inor$atiilor dintr,o baza de date este stabilirea unei cone&iuni cu sursa datelor. In acest scop. A8O urnizeaza obiectul Connection care per$ite stabilirea si ad$inistrarea cone&iunilor intre aplicatie si baza de date O8C%. Obiectul %onnection are o $are *arietate de proprietati si $etode care per$it desc#iderea si inc#iderea cone&iunilor la baza de date. trans$iterea interogarilor pentru selectarea si actualizarea datelor. Pentru a stabili o cone&iune la baza de date trebuie creata o instanta a obiectului %onnection. Scriptul ur$ator creaza o instanta a obiectului %onnection si apoi desc#ide cone&iunea 4 QST se creaza o instanta a obiectului %onnection Set cnHSer*er.%reateOb@ect 0PA8O8C.%onnectionP3 Tse desc#ide cone&iunea cn.Open Paccess8S7P SR O$iectul Server urnizeaza accesul la $etodele si proprietatile de pe ser*er. -ulte dintre aceste $etode si proprietati ser*esc ca si unctii utilitare. Sinta&a este 4 Server. proprietate U $etoda -etodele sale sint 4 CreateO$0ect. 5T&Encode. &a%Path si UREncode. iar proprietatea sa este Scri%tTimeout. In continuare se *a descrie $etoda %reateOb@ect care a ost olosita in aplicatie. &etoda CreateO$0ect creaza o instanta a unei co$ponente ser*er. Sinta&a este 4 Server#CreateO$0ect 0 progI83 Para$etrul progI8 speciica tipul de obiect care se creaza. I$plicit. obiectele create cu aceasta $etoda au ca scop pagina. ceea ce insea$na ca sint distruse auto$at de catre ser*er atunci cind acesta ter$ina de procesat pagina ASP curenta. <n obiect se $ai poate distruge ie prin setarea *ariabilei la .othing. ie prin setarea ei la o noua *aloare. 7u se poate crea o instanta a unui obiect a*ind acelasi nu$e ca si un obiect bult,in. 8e e&e$plu. QS Set Response H Ser*er.%reateOb@ect 0PResponseP3 SR *a genera eroare. E>ecutarea interogarilor cu a0utorul o$iectului Connection 8upa desc#iderea unei cone&iuni cu a@utorul $etodei O%en a obiectului %onnection. se poate utiliza $etoda E>ecute a aceluiasi obiect pentru a trans$ite interogari SJL catre baza de date.Scriptul ur$ator utilizeaza $etoda D&ecute a obiectului %onnection pentru a trans$ite bazei de date o co$anda SJL <pdate. care insereaza date intr,o anu$e tabela. QST se creaza o instanta a obiectului %onnection Set cnHSer*er.%reateOb@ect 0PA8O8C.%onnectionP3 Tse desc#ide cone&iunea cn.Open PlucrareP T se deineste co$anda SJL strSJLHPI7SDR" I7"O %lienti 0 7u$e. Prenu$e 3 !alues 0TpopescuT. TIonT3P T se utilizeaza $etoda D&ecute pentru a trans$ite aceasta co$anda TSJL la baza de date cn.D&ecute 0strSJL3SR In cazul in care utilizatorul doreste sa aiseze inregistrarile returnate de o interogare Select. rezultatul e&ecutiei acestei interogari trebuie depus intr,un obiect de tip Recordset. care se oloseste apoi la aisarea *alorilor din ci$purile inregistrarilor. ca in e&e$plul de $ai @os4 QST se creaza o instanta a obiectului %onnection Set cnHSer*er.%reateOb@ect 0PA8O8C.%onnectionP3 Tse desc#ide cone&iunea cn.Open PlucrareP T se deineste co$anda SJL strSJLHPSelect M ro$ %lienti Order C1 denVclient4 T se utilizeaza $etoda D&ecute pentru a trans$ite aceasta co$anda TSJL la baza de date. iar rezultatul e&ecutiei se depune in *ariabila Tobiect rs de tip recordset set rsHcn.D&ecute 0strSJL3 T pentru aisarea inregistrarilor. setul rs se parcurge cu un ciclu do 6#ile not rs.eo SR T se aiseaza *aloarea din ci$pul denVclient QSHrs.ields0PdenVclientP3SR QS T$etoda $o*ene&t se utilizeaza pentru a trece la ur$atoarea Tinregistrare rs.$o*ene&t loop SR *#/ O$iectul Res%onse Intr,o pagina /"-L nor$ala e&ista continut static. 8e iecare data cind este solicitata o pagina /"-L. continutul aisat de catre pagina este acelasi. Insa. o pagina ASP are continut ce se $odiica ori de cite ori este solicitata pagina. 8intr,o pagina ASP se poate tri$ite continut dina$ic utilizind obiectul Response. un obiect ASP inclus. Acest obiect reprezinta toata inor$atia tri$isa de ser*erul +eb catre un bro6ser +eb. Sinta&a este 4 Res%onse#colectie U proprietateU$etoda Singura colectie care poate i utilizata este CooHies si per$ite setarea *alorilor pentru coo2ies. Proprietatile obiectului Response sint 4 Cuer. cac#e%ontrol. %#arset. %ontent"1pe. D&pires. D&piresAbsolute. Is%lient%onnected. Pics si Status. -etodele obiectului Response sint 4 Add/eader. Append"oLog. Cinar1+rite. %lear. Dnd. (lus#. Redirect si +rite. *#* O$iectul ReEuest 8aca obiectul Response reprezinta tot continutul tri$is de ser*erul de +eb catre un bro6ser +eb. obiectul Request reprezinta tot continutul tri$is de un bro6ser +eb catre ser*erul +eb. Ori de cite ori trebuie preluata inor$atie de la un client. se utilizeaza obiectul Request. Sinta&a este 4 ReEuest W.colectie U proprietateU$etodaX 0*ariabila3 %olectiile care pot i utilizate sint 4 %lient%ertiicate. %oo2ies. (or$. Juer1String si Ser*er!ariables. Singura proprietate a obiectului Request este "otalC1tes. iar singura $etoda este Cinar1Read. Para$etrul *ariabila este un sir care speciica articolul care se regaseste dintr,o colectie. sau care *a i utilizat ca intrare pentru o $etoda sau proprietate. Colectia Form Pentru a prelua inor$atia introdusa de un client intr,un or$ular /"-L se utilizeaza colectia Form a obiectului ReEuest. Sinta&a este 4 ReEuest#Form 0ele$ent3 W0inde&3U#Count X Para$etrul ele$ent reprezinta nu$ele ele$entului de pe or$a din care colectia isi regaseste *alorile. Para$etrul inde& reprezinta un para$etru optional care per$ite accesarea uneia dintre $ai $ulte *alori ale unui para$etru. Dl poate lua *alori intre 1 si ReEuest#Form 0 para$etru C#Count. In e&e$plul ur$ator se creaza o or$a in care utilizatorul trebuie sa co$pleteze doua ci$puri. si anu$e 4 cod si nu$e. In $o$entul in care se apasa butonul P%autaP aceste *alori sint tri$ise catre progra$ul %auta.asp. Q(OR- A%"IO7HP%auta.aspP -D"/O8HPpostPR QPR %od 4 QI7P<" 7A-DHP%O8P SIYDHP5OPRQI"8R QPRQ"8R7u$e4QI7P<" 7A-DHP7u$eP SIYDHP5OPRQI"8R Q"8RQI7P<" "GPDHPsub$itP *alueHP%autaPRQI"8RQI"RR QI(OR-R In progra$ul %auta.asp trebuie utilizat scriptul ur$ator. care per$ite regasirea *alorilor tri$ise de catre or$a de $ai sus. %ele doua *alori sint $e$orate in *ariabilele acodVprodus si adenVprodus. QSacodVprodusHrequest.or$0PcodP3 adenVprodusHrequest.or$0Pnu$eP3SR Colectia 1uer7String %olectia 1uer7String per$ite regasirea *alorilor *ariabilelor dintr,un sir interogare /""P. <n sir interogare /""P este speciicat de *alorile care ur$eaza se$nului Z. D&ista $ai $ulte procese care genereaza un sir interogare. 8e e&e$plu. tagul A /RD( QA /RD( HPe&e$pluZsirHacesta este un sirPR sir e&e$pluQIAR genereaza o *ariabila cu nu$ele sir care are *aloarea Pacesta este un sirP. Sirurile interogare sint generate si prin tri$iterea unei or$e. sau de catre utilizator prin tastarea unei interogari in caseta de adrese a bro6ser,ului. Sinta&a este 4 ReEuest#1uer7String 0 *aribila 3 W 0inde&3U#Count X Para$etrul *ariabila speciica nu$ele *ariabilei care trebuie regasita in sirul interogare. Para$etrul inde& reprezinta un para$etru optional care per$ite accesarea uneia dintre $ai $ulte *alori ale unui para$etru. Dl poate lua *alori intre 1 si ReEuest#1uer7String 0 *ariabila C#Count. D&e$plu 4 QA /RD( HPdetaliu.aspZnu$eHpopa[*irstaH2OPR 7u$e si *irstaQIAR Progra$ului detaliu.asp i se trans$ite ur$atorul sir interogare4 nu$eHpopa[*irstaH2O %olectia Juer1String *a contine doi $e$bri. adica nu$e si *irsta. Regasirea *alorilor celor doi $e$bri se ace astel 4 QS !nu$eHrequest.Juer1String0Pnu$eP3 !*irstaHrequest.Juer1String0P*irstaP3 In inal. cele doua *ariabile. *nu$e si **irsta *or contine *alorile PpopaP si P2OP. Ca%#2 Descrierea a%licatiei 2#- Structura $a,ei de date Caza de date utilizata de aplicatie este realizata in -S Access 2OOO si se nu$este bdcine$a.$db. In igura 1 apar tabelele ce co$pun aceasta baza de date si legaturile stabilite intre acestea. rezultate in ur$a aplicarii teoriei nor$alizarii relatiilor. (igura 1 4 Structura bazei de date bdcine$a.$db "abela Orase contine un singur ci$p denVoras de tip "e&t. si a ost creata in scopul usurarii acti*itatii de progra$are. in continuare putind i i$bogatita cu alte ci$puri asa incit sa poata contribui la publicitatea care se poate ace in @urul unui oras in scop turistic. "abela %ine$atograe cu structura de $ai @os per$ite $e$orarea unor inor$atii legate de cine$atograe4 , idVcine$a 0Auto7u$ber3 P\ , cine$a 0"e&t3 , denVoras 0"e&t3 (\ , adresa 0"e&t3 , teleon 0"e&t3 "abela (il$e $e$oreaza datele necesare despre il$ele care ruleaza in cine$atograe4 , idVil$ 0Auto7u$ber3 P\ , titlu 0"e&t3 , titluVoriginal 0"e&t3 , ais 0 "e&t3 5 calea si nu$ele isierului care $e$oreaza poza cu aisul il$ului , gen 0te&t3 , ro$anVde 0"e&t3 , durata 07u$ber3 in $inute , produsVde 0"e&t3 5 casa producatoare , $uzica 0"e&t3 , site 0"e&t3 5 adresa site,ului oicial , subiect 0-e$o3 , reco$andat 0Logic3 5pentru il$e de *aloare care sunt reco$andate spre *izionare. capata *aloarea true , nou 0Logic3 5pentru il$e noi. capata *aloarea true , regizor 0"e&t3 , i$agine 0"e&t3 , producator 0"e&t3 5 directorii il$ului , scenarist 0"e&t3 I$aginile din il$e sunt $e$orate intr,o tabela separata nu$ita I$agini care contine ur$atoarele ci$puri4 - idVi$agine 0autonu$ber3 P\ - idVil$ 07u$ber3 ,(\ - caleVpoza 0"e&t3 , calea isierului i$agine Inor$atiile despre actori sunt grupate in ci$purile tabelei Actori4 - idVactor 0Auton7$ber3 P\ - nu$eVactor 0"e&t3 - loculVnasterii 0"e&t3 - dataVnast 08ateIti$e3 - biograie 0-e$o3 "abela 8istributie dispune de structura4 - id 0Auto7u$ber3 P\ - idVil$ 07u$ber3 (\ - idVactor 07u$ber3 (\ - persona@ 0"e&t3 nu$ele persona@ului interpretat de actor in il$ "abela Sapta$ina $e$oreaza date despre sapta$ina curenta si cea *iitoare pentru care $e$ora$ datele4 - sapta$ina 0"e&t3 P\ - data1 08ateIti$e3 5 data de inceput a sapta$inii - data2 08ateIti$e 5 data de sirsit a sapta$inii "abela Progra$are $e$oreaza inor$atii despre orele la care ruleaza il$ele in dieritele cine$atograe4 - id 0Autonu$ber3 P\ - sapta$ina 0"e&t3 , (\ indica sapta$ina in care ruleaza il$ul 0curenta sau *iitoare3 - idVcine$a 07u$ber3 (\ - idVil$ 07u$ber3 5 (\ - progra$ 0"e&t3 , zilele si orele la care ruleaza il$ul "abela <tiliz este cea care $e$oreaza nu$ele de utilizator si parola pentru utilizatorii care *or pri$i drept de gestionare a bazei de date. 2#( egaturi intre ta$ele In acest paragra doresc sa e&plic legaturile pe care le,a$ stabilit intre tabelele bazei de date. Intre tabelele Orase si %ine$atograe e&ista o legatura 1 4$ deoarece intr,un oras e&ista unul sau $ai $ulte cine$atograe. Intre tabelele (il$e si I$agini e&ista o legatura 14$. deoarece pentru un il$ pute$ $e$ora una sau $ai $ulte scene. Intre tabelele (il$e si Actori e&ista o legatura $4$. pentru ca intr,un il$ @oaca $ai $ulti actori. iar un actor poate i distribuit in $ai $ulte il$e. Pentru ca in $odelul relational nu se poate i$ple$enta direct o legatura $4$. atunci a aparut cea de a treia tabela 8istributie. care contine c#eile pri$are din cele doua tabele i$plicate in legatura $4$. precu$ si ci$puri supli$entare. Intre tabelele %ine$atograe si (il$e e&ista o legatura $4$. pentru ca intr,un cine$a pot rula unul sau $ai $ulte il$e in sapta$ina curenta sau *iitoare. iar acelasi il$ poate rula intr,unul sau $ai $ulte cine$atograe. %a ur$are. a aparut tabela Progra$are. Se obser*a ca aici $ai e&ista o legatura 14$ intre tabelele Sapta$ina si Progra$are. pentru ca atit pentru sapta$ina curenta. cit si pentru cea *iitoare e&ista $ai $ulte progra$ari de il$e in di*erse cine$atograe. 2#/ Inter"ata cu utili,atorul In acest paragra *oi prezenta aspectul si continutul paginilor site,ului care ace obiectul acestei lucrari.
2#* !alidari asu%ra datelor Procedurile de *alidare sunt utile in partea de ad$inistrare a site,ului. pentru ca acolo apar operatii de inserare sau actualizare asupra datelor. Procedurile de *alidare a@uta la pastrarea consistentei datelor si pentru a e*ita ca utilizatorul sa paraseasca pagina din cauza unei erori. !oi prezenta in continuare cite*a din *alidarile acute pe parcursul acestei lucrari. La adaugarea unui nou cine$atogra. este necesar ca denu$irea acestuia sa ie co$pletat. adica ci$pul cine$a sa ie dierit de sirul *id. !eriicarea se ace in isierul .asp care i$ple$enteaza operatia de inserare sau adaugare date. 8aca *aloarea din ci$p este *ida se aiseaza un $esa@ de eroare corespunzator. ar utilizatorul este tri$is inapoi in pagina in care trebuie sa repare gresala. if cinema="" then errorform "Cimpul Cinematograf trebuie completat !", backpage end if In aplicatie este utilizata procedura Drror(or$ care are doi para$etri or$ali4 error$sg si bac2page. La apel. Drror$sg *a contine $esa@ul de eroare care trebuie aisat. iar bac2page nu$ele isierului .asp la care trebuie intors utilizatorul. <!-- #INCLU! "IL!="form"ield#$a#p" --% <&'U( errorform )error*'+,backpage,&% <-.*L% <-!/%<.I.L!%!roare<0.I.L!%<0-!/% <(1%<(1%<(1%<(1% <(23 bgcolor="black"% <C!N.!1%<"2N. 'I4!=5 C2L21="6hite"% <&=error*'+&% <0"2N.% <"21* /C.I2N="<&=backpage&%" *!.-2 ="72'."% <Input name="error" t8pe="hidden" 9alue=":"% <&form"ield#&% <IN7U. .37!="'ubmit" ;/LU!="Inapoi"% <0"21*%<0C!N.!1% <0(23% <0-.*L% <&1e#pon#e$!nd !N 'U(&% La gestionarea inor$atiei din tabela (il$e trebuie *eriicat ca titlul unui il$ nu este sirul *id. 8e ase$enea. se *eriica daca ci$pul durata este nu$eric. pentru ca altel *o$ a*ea eroare la e&ecutia co$enzilor Insert sau <pdate. Aceasta ulti$a *eriicare se ace cu unctia Is7u$eric03. if titlu="" then errorform ".itlul filmului trebuie completat !", backpage end if if not i#numeric)durata, then errorform "urata e#te un cimp numeric !", backpage end if La introducerea sau actualizarea datelor despre actori. se *eriica ca nu$ele actorului sa nu ie sirul *id. si de ase$enea ca data lui de nastere sa aiba or$atul correct de data calendaristica. Pentru aceasta se oloseste unctia Is8ate03. if nume<actor="" then errorform "Numele actorului trebuie completat !", backpage end if if not i#date)data<na#t, then errorform "ata na#terii nu are format corect de data calendari#tica !", backpage end if La actualizarea datelor din tabela Sapta$ina. trebuie ca datele de inceput si sirsit ale sapta$inii sa ie co$pletate. si sa aiba or$at correct. if data:="" then errorform "ata inceput trebuie completata !", backpage end if if not i#date)data:, then errorform "ata nu are format corect de data calendari#tica !", backpage end if if data=="" then errorform "ata #fir#it trebuie completata !", backpage end if if not i#date)data=, then errorform "ata nu are format corect de data calendari#tica !", backpage end if -ai @os apare un alt e&e$plu de *alidare. din pagina <tilizatori. Aici se *eriica in pri$ul rind ca nu$eVutilizator sa ie dierit de sirul *id. Se *eriica apoi ca si ci$purile parola si conir$a parola sa ie dierite de sirul *id si apoi sa ie identice. if nume<utili>ator="" then errorform "Cimpul Nume utili>ator trebuie completat !", backpage end if if parola="" then errorform "Cimpul 7arola trebuie completat !", backpage end if if parola:="" then errorform "Cimpul Confirma parola trebuie completat !", backpage end if if parola<%parola: then errorform "Cimpul Confirma parola difera de cimpul 7arola!", backpage end if Pentru a a*ea acces la paginile de ad$inistrare. utilizatorul trebuie sa urnizeze un nu$e de utilizator si o parola. "rebuie sa se *eriice daca in tabela <tilizator e&ista o inregistrare corespunzatoare acestuia. In cazul in care nu e&ista. se aiseaza $esa@ul corespunzator. altel. utilizatorul *a i lasat sa $earga $ai departe. dupa ce se seteaza in *ariabila coo2ie c datele de identiicare ale acestuia 0 utilizator si parola3. !alorile din aceste doua ci$puri ale *ariabilei coo2ie c. *or i *eriicate ca e&ista si sunt co$pletate in iecare pagina a site,ului. <&utili>ator=re?ue#t$form)"utili>ator",&% <&parola=re?ue#t$form)"parola",&% <&m8d#n="'N=bdcinema" #et con=#er9er$createob@ect)"adodb$connection", con$open m8d#n #?l="#elect A from utili> Bhere utili>ator=C" D utili>ator D "C and parola=C" D parola D "C" #et r#=con$eEecute )#?l, if not r#$eof then 1e#pon#e$cookie#)"c",)"utili>ator",=utili>ator 1e#pon#e$cookie#)"c",)"parola",=parola cu#er =1e?ue#t$Cookie# )"c",)"utili>ator", cpa## =1e?ue#t$Cookie# )"c",)"parola",&% <&re#pon#e$redirect "indeE$a#p" el#e&% <(1%<(1%<(1%<(1% <C!N.!1%<"2N. 'I4!=5 color="Bhite"%Nu am putut identifica utili>atorul!<0"2N.% <"21* /C.I2N="intra$a#p" *!.-2="72'."% <IN7U. .37!="'ubmit" ;/LU!="Inapoi"% <0"21*% <0C!N.!1% <&end if&% 8upa intrarea unui utilizator in partea de ad$inistrare a site,ului. in iecare pagina are loc o *eriicare ca cea din script,ul de $ai @os. <&cu#er =1e?ue#t$Cookie# )"c",)"utili>ator", cpa## =1e?ue#t$Cookie# )"c",)"parola", if cu#er="" or cpa##="" then permi#=fal#e el#e permi#=true end if&% Se regasesc *alorile depuse in *ariabila coo2ie c 0 utilizator si parola 3 si se depun in *ariabilele cuser si cpass. olosind colectia %oo2ies a obiectului Request. Se *eriica apoi daca acestea sunt dierite de sirul *id. 8aca da *ariabila per$is capata *aloarea true altel *aloarea alse. In continuare. in pagina se *eriica daca *ariabila per$is este true. caz in care se aiseaza inor$atia din acea pagina. In caz contrar. *izitatorul este reuzat. spunind ca nu are drepturi. Aceasta or$a de *alidare in iecare pagina a site,ului de ad$inistrare i$piedica intrarea in pagini ocolind partea de login unde trebuie urnizat nu$ele si parola de utilizator. 2#2 Tehnici de %rogramare utili,ate in %artea de administrare 2#2#- Cone>iunea la $a,a de date In iecare pagina a site,ului care aiseaza inor$atii din baza de date trebuie realizata cone&iunea la baza de date. 8upa cu$ se obser*a cone&iunea la baza de date este realizata prin inter$ediul O8C% 0Open 8atabase %onnecti*it13. Pentru a realiza cone&iunea la baza de date se creeaza o instanta a obiectului Adodb.%onnection olosind $etoda %reateob@ect a obiectului Ser*er. Obiectul de tip cone&iune se nu$este con. Aceasta cone&iune se desc#ide olosind $etoda open si speciicind nu$ele sursei datelor declarata in O8C%. 7u$ele Cdcine$a declarat in O8C% 0 in S1ste$ 8S7 3 indica catre baza de date bdcine$a.$db care este olosita de paginile site,ului. <&m8d#n="'N=bdcinema" #et con=#er9er$createob@ect)"adodb$connection", con$open m8d#n&% 2#2#( Inserarea si actuali,area datelor In partea de ad$inistrare. lucrurile sunt progra$ate sa se desasoare astel4 in partea de sus apare $eniul principal cu principalele #iperlegaturi. se aiseaza datele e&istente in tabela selectata. in dreptul iecarei inregistrari se aiseaza #iperlegaturile Actualizare si Stergere. iar $ai @os butonul Adauga care per$ite adaugarea unei noi inregistrari. !oi ace e&e$pliicare pe gestiunea tabelei cine$atograe. Pentru aisarea inregistrarilor e&istente in aceasta tabela se e&ecuta co$anda Select din *ariabila sqls. 8upa e&ecutia co$enzii. se obtine *ariabila recordset rss olosita apoi pentru aisarea inregistrarilor. Se parcurg aceste inregistrari cu a@torul unui iclu do 6#ileE loop peste *ariabila rss. in prealabil *eriicindu,se daca recordset,ul nu este *id. Se aiseaza datele despre cine$atograe. adica *alorile din ci$purile cine$a. adresa si teleon. /iperlegatura Actualizeaza per$ite editarea inregistrarii identiicata in $od unic de *aloarea idVcine$a. /iperlegatura ne conduce in aceeasi pagina catre care se tri$ite *ariabila idVcine$a si edit pentru a sti ca este *orba de operatia de editare si pentru a sti ce inregistrare se editeaza. <&#?l#="#elect A from Cinematografe order b8 den<ora#" #et r##=con$eEecute )#?l#,&% <&if not r##$eof then&% <C!N.!1%<b%Cinematografe<0b%<br% <./(L! (21!1=: Bidth=FGG cell#pacing=G% <&do Bhile not r##$eof&% <&id<cinema=r##$field#)"id<cinema",&% <.1% <.%<(%<&=r##$field#)"cinema",&%<td%<&=r##)"den<ora#", &%<0(%<0.% <td%<&=r##)"adre#a",&%<td%<&=r##)"telefon",&% <&leg:="#tergec:$a#pHid<cinema=" D id<cinema&% <&leg=="c:$a#pHedit=:Did<cinema=" D id<cinema&% <.%</ -1!"="<&=leg=&%"%/ctuali>are<0/%0</ -1!"="< &=leg:&%"%'tergere<0/%<0.% <0.1% <&r##$mo9eneEt loop&% <0./(L!%<0C!N.!1%<(1%<(1% <&end if&% 8aca *ariabila edit recuperata cu a@utorul colectiei Juer1string a obiectului Request are *aloarea 1. trebuie eectuata operatia de editare a inregistrarii obtinuta prin e&ecutia co$enzii Select din *ariabila sir sql1 si depusa in obiectul rs1. <&edit=re?ue#t$?uer8#tring)"edit",&% <&if edit=: then #?l:="#elect A from Cinematografe Bhere id<cinema=" D id<cinema #et r#:=con$eEecute )#?l:, end if&% Cutonul de adaugare o noua inregistrare este un buton sub$it a$plasat pe o or$a care transera controlul aceluiasi isier. dar tri$ite *ariabila ad egala cu 1 pentru a indica operatia de adaugare. <"21* /C.I2N="c:$a#pHad=:" *!.-2="72'." % <.1%<.%<IN7U. .37!="'U(*I." ;/LU!="/dauga"%<0.%<0.1% <0"21*% In continuare. in unctie de *alorile *ariabilelor edit si ad se aiseaza or$a pentru editarea sau adaugarea datelor. 8eci. se testeaza daca *ariabila edit are *aloarea 1. caz in care se aiseaza controalele populate cu *alorile din ci$purile inregistrarii de editat. Altel. se testeaza daca *ariabila ad are *aloarea 1. caz in care se aiseaza or$a cu controalele *ide. pregatita pentru pri$irea noilor date. 8upa co$pletarea or$ei. controlul este redat unui alt isier in care se ace. dupa caz inserare sau actualizare. <&if ad=: then&% <C!N.!1%<./(L!% <"21* /C.I2N="admod:$a#pHad=:" *!.-2="72'."% <.1%<.%CinemaI<0.% <.%<IN7U. .37!=".!J." N/*!="cinema" ;/LU!="<&=cinema&%" 'I4!=5G%<0.%<0.1% <.1%<.%2ra#I<0.% <.% <& #?lo="'elect A from 2ra#e " #et r#o=con$eEecute)#?lo,&% <#elect name="den<ora#"% <&if not r#o$eof then&% <&do Bhile not r#o$eof&% <option 9alue="<&=r#o)"den<ora#",&%" <&if r#o)"den<ora#",=den<ora# then &%#elected<&end if&%%<&=r#o)"den<ora#",&% <&r#o$mo9eneEt&% <&loop&% <&end if&% <0#elect% <0.%<0.1% <.1%<.%/dre#aI<0.% <.%<IN7U. .37!=".!J." N/*!="adre#a" ;/LU!="<&=adre#a&%" 'I4!=5G%<0.%<0.1% <.1%<.%.elefonI<0.% <.%<IN7U. .37!=".!J." N/*!="telefon" ;/LU!="<&=telefon&%" 'I4!==G%<0.%<0.1% <.1%<.%<IN7U. .37!="'U(*I." ;/LU!="'al9ea>a"%<0.% <0"21*% <"21* /C.I2N="c:$a#pHcancel=:" *!.-2="72'."% <.%<IN7U. .37!="'U(*I." ;/LU!="/bandon"%<0.%<0.1% <0"21*% <0./(L!%<0C!N.!1% <&el#e&% <&if edit=: then&% <C!N.!1%<./(L!% <"21* /C.I2N="admod:$a#pHedit=:" *!.-2="72'." % <IN7U. .37!=hidden N/*!="id<cinema" ;/LU!="<&=r#:$field#)"id<cinema",&%"% <.1%<.%CinemaI<0.% <.%<IN7U. .37!=".!J." N/*!="cinema" ;/LU!="<&=r#:$field#)"cinema",&%" 'I4!=5G%<0.%<0.1% <.1%<.%2ra#I<0.% <.% <& #?lo="'elect A from 2ra#e" #et r#o=con$eEecute)#?lo,&% <#elect name="den<ora#"% <&if not r#o$eof then&% <&do Bhile not r#o$eof&% <option 9alue="<&=r#o)"den<ora#",&%" <&if r#o)"den<ora#",=r#:)"den<ora#", then&%#elected<&end if&%% <&=r#o)"den<ora#",&% <&r#o$mo9eneEt&% <&loop&% <&end if&% <0#elect% <0.%<0.1% <.1%<.%/dre#aI<0.% <.%<IN7U. .37!=".!J." N/*!="adre#a" ;/LU!="<&=r#:$field#)"adre#a",&%" 'I4!=5G%<0.%<0.1% <.1%<.%.elefonI<0.% <.%<IN7U. .37!=".!J." N/*!="telefon" ;/LU!="<&=r#:$field#)"telefon",&%" 'I4!==G%<0.%<0.1% <.1%<.%<IN7U. .37!="'U(*I." ;/LU!="'al9ea>a"%<0.% <0"21*% <"21* /C.I2N="c:$a#pHcancel=:" *!.-2="72'." % <.%<IN7U. .37!="'U(*I." ;/LU!="/bandon"%<0.%<0.1% <0"21*% <0./(L!%<0C!N.!1% <&end if&% <&end if&% In cazul e&e$plului nostru. actualizarea sau inserarea se ace de catre isierul ad$od1.asp. %atre acesta se tri$it *ariabilele ad sau edit care se recupereaza olosind colectia Juer1string a obiectului Request. Se obtin si *alorile *ariabilelor co$pletate pe or$a. dar olosind colectia (or$s a aceluiasi obiect Request. Se ac *alidarile asupra datelor. 8aca acestea nu sunt co$pletate. sau sunt co$pletate gresit. controlul este redat inapoi isierului pentru a corecta greselile. 8aca toate lucrurile sunt bune. se trece la e&ecutia co$enzii SJL Insert daca *ariabila ad are *aloarea 1. sau a co$enzii SJL <pdate daca *ariabila edit are *aloarea 1. D&ecutia acestor co$enzi se ace cu a@utorul $etodei D&ecute a obiectului cone&iune la baza de date. In inal. controlul este redat isierului anterior. olosind $etoda Redirect a obiectului Response. <&m8d#n="'N=bdcinema" #et con=#er9er$createob@ect)"adodb$connection", con$open m8d#n ad=re?ue#t$?uer8#tring)"ad", edit=re?ue#t$?uer8#tring)"edit",&% <&id<cinema=re?ue#t$form)"id<cinema",&% <&cinema=re?ue#t$form)"cinema",&% <&den<ora#=re?ue#t$form)"den<ora#",&% <&adre#a=re?ue#t$form)"adre#a",&% <&telefon=re?ue#t$form)"telefon",&% <&if ad=: then backpage="c:$a#pHad=:" el#e backpage="c:$a#pHedit=:Did<cinema=" D id<cinema end if if cinema="" then errorform "Cimpul Cinematograf trebuie completat !", backpage end if if ad=: then #?lin#="In#ert into Cinematografe)cinema, den<ora#, adre#a, telefon, ;alue#)C" #?lin#=#?lin# D cinema D "C,C" D den<ora# D "C,C" D adre#a D "C,C" D telefon D "C," end if if edit=: then #?lin#="Update cinematografe 'et cinema=C" D cinema D "C," #?lin#=#?lin# D "den<ora#=C" D den<ora# D "C," #?lin#=#?lin# D "adre#a=C" D adre#a D "C," #?lin#=#?lin# D "telefon=C" D telefon D "C Bhere id<cinema=" D id<cinema end if con$eEecute )#?lin#, ad=G edit=G&% <(23% <&re#pon#e$redirect "c:$a#p"&% 2#2#/ Stergerea datelor In ceea ce pri*este stergerea unei inregistrari. trebuie ur$ata #iperlegatura cu acelasi nu$e care ne conduce in isierul .asp ce realizeaza stergerea eecti*a a acesteia. %atre acest isier se tri$ite obligatoriu *aloarea ci$pului c#eie pri$ara pentru a identiica in $od unic inregistrarea care se sterge. 7 cazul ad$inistrarii tabelei %ine$atograe. la stergere. controlul este dat isierului stergec1.asp catre care se tri$ite *aloarea *ariabilei idVcine$a. <&leg:="#tergec:$a#pHid<cinema=" D id<cinema&% In isierul stergec1.asp. se ala *aloarea *ariabilei idVcine$a tri$isa sub or$a unui sir interogare. se descide cone&iunea la baza de date si se e&ecuta co$anda 8elete cu clauza +#ere care identiica in $od unic inregistrarea de sters. 8upa e&ecutia co$enzii SJL delete controlul este redat isierului anterior cu aceeasi $etoda Redirect a obiectului Response. <&id<cinema=re?ue#t$?uer8#tring)"id<cinema",&% <&m8d#n="'N=bdcinema" #et con=#er9er$createob@ect)"adodb$connection", con$open m8d#n #?lin#="elete A from Cinematografe Bhere id<cinema=" D id<cinema con$eEecute )#?lin#,&% <&re#pon#e$redirect "c:$a#p"&% In inal. doresc sa precizez. ca in iecare pagina de ad$inistrare a datelor din tabele bazei de date. lucrurile decurg intr,o $aniera ase$anatoare. 2#3 Tehnici de %rogramare utili,ate in %artea de client 2#3#- Pagina Acasa Aiseaza pe de o parte titlurile il$elor care au ci$pul 7ou setat la "rue. precu$ si il$ele reco$andate care au ci$pul Reco$andat setat la "rue. Pentru aceasta se selecteaza din tabela (il$e inregistrarile care satisac conditia nouH"rue. %o$anda Select $e$orata in *ariabila sql1. este tri$isa spre e&ecutie la SBC8. iar rezultatul este depus in *ariabila rs1. *ariabila obiect de tip recordset. D&ectia unei co$enzi SJL se ace cu $etoda D&ecute a obiectului cone&iune la baza de date. Pentru a aisa titlurile il$elor noi se parcurge obiectul recordset rs1 cu a@utorul unui ciclu do 6#ileEloop. "recerea la ur$atoarea inregistrare se ace cu $etoda -o*ene&t a obiectului recordset rs1. <&#?l:="'elect A from "ilme Bhere nou=true" #et r#:=conntemp$eEecute)#?l:,&% <&if not r#:$eof then&% <hK%"ilme noi<0hK% <&do Bhile not r#:$eof&% <table Bidth=5F5% <tr%<td col#pan==% <a href="$0filme0filmed$a#pHid<film=<&=r#:)"id<film",&%"% <hK%<&=r#:)"titlu",&% ) <&=r#:)"titlu<original",&% ,<0hK%<0a% <tr%<td 9align="top"% <&afi#="$" D r#:)"afi#",&% <img #rc="<&=afi#&%"% <td%<&=r#:)"#ubiect",&% <tr%<td%Dnb#p<td%Dnb#p <0table% <&r#:$mo9eneEt&% <&loop&% <&end if&% Aisarea *alorii dintr,un ci$p al recordset,ului se ace cu constructia Q SHrecordset0]nu$eVci$p^3SR. 8e e&e$plu pentru a aisa titlul il$ului se scrie 4 <&=r#:)"titluP3SR. Pe titlul il$ului este a$plasata o #iperlegatura care ne tri$ite in pagina il$ed.asp care aiseaza detalii despre il$. %atre aceasta pagina se tri$ite sub or$a unui sir interogare *ariabila idVil$ setata la *aloarea ci$pului idVil$. care identiica in $od unic il$ul despre care *re$ detalii. Pentru aisarea inor$atiilor despre il$ele reco$andate. se procedeaza ase$anator. cu script,ul ur$ator4 <&#?l:="'elect A from "ilme Bhere recomandat=true and nou=fal#e" #et r#:=conntemp$eEecute)#?l:,&% <&if not r#:$eof then&% <hK%;a recomandam urmatoarele filme<0hK% <&do Bhile not r#:$eof&% <table Bidth=5F5% <tr%<td col#pan==% <a href="$0filme0filmed$a#pHid<film=<&=r#:)"id<film",&%"% <hK%<&=r#:)"titlu",&% ) <&=r#:)"titlu<original",&% ,<0hK%<0a% <tr%<td 9align="top"% <&afi#="$" D r#:)"afi#",&% <img #rc="<&=afi#&%"% <td%<&=r#:)"#ubiect",&% <tr%<td%Dnb#p<td%Dnb#p <0table% <&r#:$mo9eneEt&% <&loop&% <&end if&% 2#3#( Pagina In cinematogra"e Se aiseaza datele care incadreaza sapta$ina curenta. Pentru aceasta. dupa ce ne conecta$ la baza de date selecta$ din tabela Sapta$ina inregistrarea corespunzatoare sapta$inii curente. <&#?l:="'elect A from 'aptamina Bhere #aptamina=CcurentaC" #et r#:=conntemp$eEecute)#?l:,&% <hK%7rogramul cinematografelor in #aptamina <&=r#:)"data:",&%-< &=r#:)"data=",&%<0hK% Se aiseaza apoi o lista drop,do6n care contine nu$ele oraselor din tabela Orase ordonate alabetic. Lista contine inregistrarile din tabela Orase selectate cu co$anda din *ariabila sql2. Lista drop,do6n este realizata dina$ic cu a@utorul obiectului recordset rs2. olosind tag,urile QSelectR si QOptionR. Lista este inclusa intr,o or$a /"-L care la apasarea butonului de tip Sub$it Alege ne *a tri$ite in aceeasi pagina inVcine$atograe.asp. pentru ca dupa alegerea unui oras tot aici se *or aisa cine$atograele si progra$ele lor corespunzatoare orasului ales. <&#?l=="'elect A from ora#e order b8 den<ora#" #et r#==conntemp$eEecute)#?l=,&% <table% <form method="po#t" action="in<cinematografe$a#p"% <tr%<td%<#elect name="do:"% <&if not r#=$eof then&% <&do Bhile not r#=$eof&% <option 9alue="<&=r#=)"den<ora#",&%" <&if den<ora#=r#=)"den<ora#", then&%#elected<&end if&%% <&=r#=)"den<ora#",&%<0option% <&r#=$mo9eneEt&% <&loop&% <&end if&% <0#elect% <td%<input t8pe="#ubmit" 9alue="/lege"% <td%Dnb#p <0form% Obtinerea *ariabilei care indica orasul ales in or$ularul /"-L. se obtine olosind colectia (or$s a obiectului Request. !ariabila denVoras ne *a a@uta $ai departe sa selecta$ doar inor$atia aerenta acestui oras. <&den<ora#=re?ue#t$form)"do:", Se selecteaza doar cine$atograele din orasul selectat si indicat de *aribila denVoras 0 *ariabila sqlc3. In rsc se depun aceste inregistrari. Acest recordset este parcurs sec*ential pentru a aisa nu$ele cine$atograului. adresa si teleonul sau. A iecare pas al ciclului peste rsc. se e&ecuta interogarea Select din *ariabila sqlil$e. Dste o interogare co$plicata care per$ite aisarea titlurilor il$elor ce ruleaza in sapata$ina curenta la cine$atograul curent. Pentru a aisa titlurile acestor il$e. se parcurge cu un ciclu *ariabila recordset rs in care sunt depuse aceste inregistrari. Pentru iecare titlu de il$ aisat. trebuie sa apara si progra$arile acestuia. ziua si ora. Pentru aceasta trebuie e&ecutata interogarea din *ariabila sqlp care selecteaza din tabela Progra$ari toate inregistrarile pentru il$ul current si la cine$atograul current. Dle sunt depuse in *ariabila recordset rsp care si ea trebuie parcursa cu un ciclu pentru aisare. %a ur$are in script,ul de $ai @os apar trei cicluri i$bricate4 unul pentru aisarea cine$atograelor din orasul selectat. al doilea pentru il$ele care ruleaza in sapta$ina curenta la iecare cine$atogra si al treilea pentru progra$arile iecarui il$ la iecare cine$atogra. <&if den<ora#<%"" then&% <&#?lc="'elect A from cinematografe Bhere den<ora#=C" D den<ora# D "C" #et r#c=conntemp$eEecute)#?lc,&% <&if not r#c$eof then&% <table Bidth=5F5% <&do Bhile not r#c$eof&% <tr bgcolor="lightgre8"%<td col#pan==%<font color="black"%< &=r#c)"cinema",&% )<&=r#c)"adre#a",&% telI<&=r#c)"telefon",&%,<0font% <&#?lfilme="'!L!C. programare$id<cinema, programare$id<film, filme$titlu, " #?lfilme=#?lfilme D " filme$titlu<original, programare$#aptamina "12* filme INN!1 L2IN " #?lfilme=#?lfilme D " programare 2N filme$id<film = programare$id<film +12U7 (3 " #?lfilme=#?lfilme D " programare$id<cinema, programare$id<film, filme$titlu, " #?lfilme=#?lfilme D " filme$titlu<original, programare$#aptamina " #?lfilme=#?lfilme D " -/;IN+ programare$id<cinema=" D r#c)"id<cinema", #?lfilme=#?lfilme D " /N programare$#aptamina=CcurentaC" #et r#f=conntemp$eEecute)#?lfilme,&% <&if not r#f$eof then&% <&do Bhile not r#f$eof &% <tr%<td 9align="top"% <a href="film$a#pHid<film=<&=r#f)"id<film",&%Dden<ora#=<&=den<ora#&%"% <&=r#f)"titlu",&% )<&=r#f)"titlu<original",&% ,<0a% <td 9align="top"% <&#?lp="'!L!C. MprogramareN$Mid<filmN, MprogramareN$MprogramN, MprogramareN$M#aptaminaN, " #?lp=#?lp D " MprogramareN$Mid<cinemaN "12* programare 6-!1! " #?lp=#?lp D " MprogramareN$M#aptaminaN=CcurentaC /nd MprogramareN$ Mid<cinemaN=" D r#c)"id<cinema", #?lp=#?lp D " and MprogramareN$Mid<filmN=" D r#f)"id<film", #et r#p=conntemp$eEecute)#?lp,&% <&if not r#p$eof then&% <&do Bhile not r#p$eof&% <&=r#p)"program",&%<br% <&r#p$mo9eneEt&% <&loop&% <&end if&% <tr bgcolor="lightblue"%<td col#pan=K% <&r#f$mo9eneEt&% <&loop&% <&end if&% <&r#c$mo9eneEt&% <&loop&% <0table% <&end if&% <&end if&% 2#3#/ Pagina cu in"ormatii detaliate des%re un "ilm Asa cu$ a$ spus pe titlul il$ului este pusa #iperlegatura la pagina cu inor$atii detaliate despre il$. catre care se tri$ite *aribila idVil$ ce identiica in $od unic il$ul. !aribila. iind tri$isa ca sir interogare. se obtine olosind colectia Juer1string a obiectului Request. id<film=re?ue#t$?uer8#tring)"id<film", Pentru a aisa inor$atiile despre il$ul identiicat unic de idVil$. trebuie sa interoga$ tabela (il$e si tabelele 8istributie si Actori. %o$enzile Select se ala in sql1 si sql2. <&#?l:="'elect A from "ilme Bhere id<film=" D id<film #et r#:=conntemp$eEecute)#?l:, #?l=="'!L!C. di#tributie$id<film, di#tributie$id<actor, di#tributie$per#ona@, " #?l==#?l= D " actori$nume<actor "12* actori INN!1 L2IN di#tributie " #?l==#?l= D " 2N actori$id<actor = di#tributie$id<actor Bhere di#tributie$id<film=" D id<film #et r#==conntemp$eEecute)#?l=,&% (olosind *ariabilele recordset rs1 si rs2 pute$ sa aisa$ toate inor$tiile despre il$4 gen. productie. regizor. scenarist.s.a.$.d. Pentru ca aisarea sa ie cit $ai ordonata se olosesc tabele /"-L. <table Bidth=5F5% <tr%<td bgcolor="lightgre8"%<font color="black" #i>e=O% <&=r#:)"titlu",&% )<&=r#:)"titlu<original",&%,<0font% <0table% <table% <&afi#="$$" D r#:)"afi#",&% <tr%<td 9align="top"%<img #rc="<&=afi#&%"% <td%<&=r#:)"#ubiect",&% <0table% <br%<br% <table Bidth=O5G% <tr%<td%+enI <td%<&=r#:)"gen",&% <tr%<td%upa un roman deI <td%<&=r#:)"roman<de",&% <tr%<td%urataI <td%<&=r#:)"durata",&% minute <tr%<td%Ca#a productieI <td%<&=r#:)"produ#<de",&% <tr%<td%irector filmI <td%<&=r#:)"producator",&% <tr%<td%1egieI <td%<&=r#:)"regi>or",&% <tr%<td%'cenariuI <td%<&=r#:)"#cenari#t",&% <tr%<td%ImagineI <td%<&=r#:)"imagine",&% <tr%<td%*u>icaI <td%<&=r#:)"mu>ica",&% <0table% Pentru aisarea distributiei4 nue$ persona@ si nu$e actor se parcurge *ariabila recordset rs2. ca $ai @os. <&if not r#=$eof then&% <table Bidth=5F5% <tr%<td col#pan=K bgcolor="lightgre8"%<font color="black"%i#tributie<0font% <&do Bhile not r#=$eof&% <tr%<td%<&=r#=)"per#ona@",&%<td%$$$<td% <a href="actor$a#pHid<actor=<&=r#=)"id<actor",&%" target="neB"%< &=r#=)"nume<actor",&%<a href% <&r#=$mo9eneEt&% <&loop&% <0table% <&end if&% (il$ele dispun. in general si de o colectie de i$agini $e$orate in tabela I$agini. Pentru aisarea lor se e&ecuta co$anda Select din *ariabila sql3. care selecteaza i$aginile pentru il$ul identiicat de idVil$. Pentru aisare se parcurge *ariabila recordset rs3 si se oloseste tag,ul /"-L QI-B SR%R. <&#?lK="#elect A from Imagini Bhere id<film=" D id<film #et r#K=conntemp$eEecute)#?lK,&% <&if not r#K$eof then&% <table Bidth=5F5% <tr%<td col#pan== bgcolor="lightgre8"%<font color="black"%Imagini din film<0font% <&do Bhile not r#K$eof&% <&p="$$" D r#K)"cale<po>a",&% <tr%<td%<img #rc="<&=p&%"% <&r#K$mo9eneEt&% <&if not r#K$eof then&% <&p="$$" D r#K)"cale<po>a",&% <td%<img #rc="<&=p&%"% <&end if&% <&if not r#K$eof then&% <&r#K$mo9eneEt&% <&end if&% <&loop&% <0table% <&end if&% 2#3#* Pagina cu in"ormatii detaliate des%re un actor La aisarea distributiei unui il$. pe nu$ele iecarui actor este a$plasata o #iperlegatura care ne conduce in pagina actor.asp pentru a ala date despre acesta. Obtinerea *ariabilei idVactor tri$isa sub or$a unui sir interogare. se ace tot cu colectia Juer1string a obiectului Request. !ariabila a@uta la identiicarea unica a actorului. 8atele despre acesta se obtin din tabela Actori cu co$anda Select din *ariabila sql1. <r$eaza apoi aisarea datelor 0 nu$e. data nasterii. locul nasterii. biograie3 in or$a tabelara cu a@utorul obiectului Recordset rs1. <&id<actor=re?ue#t$?uer8#tring)"id<actor", m8d#n="'N=bdcinema" 'et conntemp = 'er9er$Create2b@ect)"/2($Connection", conntemp$2pen m8d#n&% <&#?l:="'elect A from /ctori Bhere id<actor=" D id<actor #et r#:=conntemp$eEecute)#?l:,&% <center% <table Bidth=5F5% <tr%<td bgcolor="lightgre8" col#pan==% <font color="black" #i>e=5%<&=r#:)"nume<actor",&%<0font% <tr%<td%ata na#teriiI<td%<&=r#:)"data<na#t",&% <tr%<td%Locul na#teriiI<td%<&=r#:)"locul<na#terii",&% <tr%<td col#pan==%<&=r#:)"biografie",&% <0table% 2#3#2 Pagina Filme In aceasta pagina se aiseaza titlurile tuturor il$elor care ruleaza oriunde in tara in sapata$ina curenta. Pentru iecare il$ se aiseaza titlul. aisul si descrierea subiectului. Pentru a ace selectia inregistrarilor se e&ecuta co$anda Select din *ariabila sql1. rezultatul depunindu,se in *ariabila recordset rs1. Inor$atiile detaliate se obtin ur$ind #iperlegatura a$plasata pe titlul il$ului. %o$anda Select oloseste optiunile Broup C1 si /a*ing. <&m8d#n="'N=bdcinema" 'et conntemp = 'er9er$Create2b@ect)"/2($Connection", conntemp$2pen m8d#n&% <&#?l:="'!L!C. filme$id<film, filme$titlu, filme$titlu<original, filme$afi#, " #?l:=#?l: D " filme$#ubiect, programare$#aptamina "12* filme INN!1 L2IN programare " #?l:=#?l: D " 2N filme$id<film = programare$id<film +12U7 (3 filme$id<film, filme$titlu, " #?l:=#?l: D " filme$titlu<original, filme$afi#, filme$#ubiect, programare$#aptamina " #?l:=#?l: D " -/;IN+ )))programare$#aptamina,=CcurentaC,, 21!1 (3 filme$titlu" #et r#:=conntemp$eEecute)#?l:,&% <&if not r#:$eof then&% <table Bidth=5F5% <&do Bhile not r#:$eof&% <tr%<td col#pan==% <a href="filmed$a#pHid<film=<&=r#:)"id<film",&%"% <hK%<&=r#:)"titlu",&% ) <&=r#:)"titlu<original",&% ,<0hK%<0a% <tr%<td 9align="top"% <&afi#="$$" D r#:)"afi#",&% <img #rc="<&=afi#&%"% <td%<&=r#:)"#ubiect",&% <&r#:$mo9eneEt&% <&loop&% <0table% <&end if&% 2#3#3 Pagina Actori Aiseaza lista alabetica cu nu$ele actorilor e&istenti in baza de date. Aisarea se ace pe doua coloane pentru a ocupa $ai bine ereastra bro6ser, ului cu inor$atie. Se interog#eaza tabela Actori. Inregistrarile sunt depuse in *ariabila recordset rs1. 7u$ele iecarui actor este o #iperlegatura la aceeasi pagina actori.asp catre care se tri$ite *ariabila idVactor. Asta insea$na ca datele de detaliu despre actorul selectat se ac in aceeasi pagina sub lista cu nu$ele actorilor. 8upa obtinerea *ariabilei idVactor cu a@utorul colectiei Juer1string a obiectului Request se e&ecuta cea de a doua interogare din script,ul de $ai @os care selecteaza din tabela Actori nu$ai inregistrarea corespunzatoare actorului selectat. <&m8d#n="'N=bdcinema" 'et conntemp = 'er9er$Create2b@ect)"/2($Connection", conntemp$2pen m8d#n&% <&#?l:="'elect A from /ctori order b8 nume<actor" #et r#:=conntemp$eEecute)#?l:,&% <center% <&if not r#:$eof then&% <table Bidth=5F5% <&do Bhile not r#:$eof&% <tr%<td%<font #i>e=O% <a href="actori$a#pHid<actor=<&=r#:)"id<actor",&%"% <&=r#:)"nume<actor",&%<0a%<0font% <&r#:$mo9eneEt&% <&if not r#:$eof then&% <td%<font #i>e=O% <a href="actori$a#pHid<actor=<&=r#:)"id<actor",&%"% <&=r#:)"nume<actor",&%<0a%<0font% <&end if&% <&if not r#:$eof then&% <&r#:$mo9eneEt&% <&end if&% <&loop&% <0table% <&end if&% <07% <p% <&id<actor=re?ue#t$?uer8#tring)"id<actor",&% <&if id<actor<%"" then&% <&#?l:="'elect A from /ctori Bhere id<actor=" D id<actor #et r#:=conntemp$eEecute)#?l:,&% <center% <table Bidth=5F5% <tr%<td bgcolor="lightgre8" col#pan==% <font color="black" #i>e=5%<&=r#:)"nume<actor",&%<0font% <tr%<td%ata na#teriiI<td%<&=r#:)"data<na#t",&% <tr%<td%Locul na#teriiI<td%<&=r#:)"locul<na#terii",&% <tr%<td col#pan==%<&=r#:)"biografie",&% <0table% <&end if&% 2#3#I Pagina Arhiva "ilme Aiseaza titlurile il$elor e&istente in ar#i*a. adica cele despre care a*e$ inor$atii in baza de date si care nu ruleaza in nici un cine$atogra nici in sapta$ina curenta nici in cea *iitoare. Pntru a ace selectia acestor il$e trebuie e&ecutata co$anda Select $e$orat in *ariabila sql1 care contine si subinterogare 0 Select in Select3. D selecteaza toate il$ele din tabela cu acelasi nu$e si care nu igureaza in tabela Progra$are olosind operatorul not in. Aisarea se ace in $odalitatea stiuta. (iecare titlu de il$ este o #iperlegatura la pagina cu detalii. <&m8d#n="'N=bdcinema" 'et conntemp = 'er9er$Create2b@ect)"/2($Connection", conntemp$2pen m8d#n&% <&#?l:="'!L!C. A from "ilme Bhere id<film not in ) 'elect id<film from 7rogramare," #et r#:=conntemp$eEecute)#?l:,&% <&if not r#:$eof then&% <table Bidth=5F5% <&do Bhile not r#:$eof&% <tr%<td col#pan==% <a href="filmed$a#pHid<film=<&=r#:)"id<film",&%"% <hK%<&=r#:)"titlu",&% ) <&=r#:)"titlu<original",&% ,<0hK%<0a% <tr%<td 9align="top"% <&afi#="$$" D r#:)"afi#",&% <img #rc="<&=afi#&%"% <td%<&=r#:)"#ubiect",&% <&r#:$mo9eneEt&% <&loop&% <0table% <&end if&% In inal doresc sa $entionez ca pagina in *iitor are o realizare te#nica ase$anatoare cu cea intitulata In cine$atograe. Ca%#3 Conclu,ii Aplicatia intitulata ]Gestiune si pre"entare on-line a programelor cinematografelor din )omania^, reprezinta o colectie de pagini 6eb care realizeaza doua unctiuni i$portante4 1. pune la dispozitia publicului larg o serie de inor$atii despre il$ele are ruleaza in cine$atograele din di*erse orase 2. per$ite gestionarea inor$atiei din baza de date din care isi e&trage site,ul continutul. Inor$atiile oerite de site sunt grupate sub titlurile 4 Acasa. In cine$atograe. In *iitor. (il$e. Actori. Ar#i*a. -entionez ca in partea de ad$inistrare. accesul se ace nu$ai pentru utilizatorii autorizati. care se identiica printr,un nu$e si o parola. Dste i$piedicat accesul utilizatorilor in di*erse pagini daca acestia incearca sa ocoleasca pagina de login. Asupra tabelelor din baza de date se i$ple$enteaza operatiile traditionale pe baze de date4 adaugare. $odiicare si stergere. cu *alidarea datelor pentru a pastra consistenta inor$atiei si a i$piedica iesirea din aplicatie din cauza unei erori netratate. Caza de date din spatele paginilor +eb este i$ple$entata in -S Access 2OOO. iar accesul se ace prin inter$ediul O8C%. A*ind in *edere ca a$ construit un site dina$ic. pentru realizarea aplicatiei a$ olosit /"-l 0/1per"e&t -ar2,up Language3 si ASP 0Acti*e Ser*er Pages3. Luind in considerare aptul ca baza de date -S Access nu per$ite decit un nu$ar de cinci utilizatori si$ultan o pri$a propunere de i$bunatatire se reera la i$ple$etarea bazei de date in -S SJL Ser*er. care oera acilitati supli$entare. O alta propunere de i$bunatatire a lucrarii ar i co$pletarea site,ului cu o *ersiune in li$ba engleza. pentru a putea i consultat si de catre persoane din strainatate. 8e ase$enea. site,ul ar trebui sa dispuna pe *iitor de operatii si$ple sau $ai a*ansate de cautare. a*ind in *edere ca baza de date poate atinge di$ensiuni $edii. %autarea ar putea sa se aca dupa nu$ele unui actor. regizor. dupa titlul il$ului. 8e ase$enea. cautarea ar trebui sa ie ine&acta. per$itind regasirea unor inor$atii c#iar daca utilizatorul nu stie nu$ele co$plet sau titlul co$plet si corect al il$ului. 8e ase$enea. in partea de ad$inistrare ar $ai putea i adaugata o optiune care sa per$ita si gestionarea utilizatorilor4 adaugare sau stergere utilizator de catre o persoana cu drepturi corespunzatoare. sau posibilitatea ca iecare utilizator sa,si $odiice nu$ele sau parola cu care se log#eaza. Bi$liogra"ie 1. Allen Cro6ne. Alison Calter 5 Access K5 Dditura "eora 1KK' 2. Ne Per2ins. Cr1an -organ 5 SJL ara proesor. in 14 zile. Dditura "eora 1KKA 3. -icrosot Access 2OOO. Dditura "eora 2OOO 4. Siste$e de gestiune a bazelor de date si Proiectarea bazelor de date 5 notite de curs 5. %o$ert electronic , notite de curs '. Internet si Intranet 5 notite de curs ). Curdescu 8u$itru dan. Ionescu Augstin Iulian. Stanescu Liana 5 Caze de date Access Indru$ar de laborator "ipogaia <ni*ersitatii din %raio*a 2OO2 A. S.+alt#er. N.le*ine , Progra$area in ASP pentru co$ert electronic , Dditura "eora 2OOO K. 666.cine$a.ro