Sunteți pe pagina 1din 38

Capitolul IV Utilizarea bazelor de date n Internet

4.1 Pagini Web dinamice


4.1.1. Pagini dinamice vs. Pagini statice Paginile Web dinamice sunt folosite atunci cnd se dorete modificarea dinamic, a coninutului paginilor Web. Paginile Web realizate n HTML au dezavantajul c sunt statice, coninutul lor neputnd fi modificat odat ce au fost ncrcate pe un server dect aducndu-le napoi pentru a fi editate. Acest lucru este o problem serioas avnd n vedere c operaia este mare consumatoare de timp. n plus, lucrul cu baze de date nu este posibil n cazul paginilor statice. Spre exemplu dac avem un site de Web format doar din pagini HTML care afieaz notele i mediile studenilor pe serii i pe grupe i vrem s mai adugm nc un student va trebui s modificm att pagina grupei ct i pagina seriei precum i pe cele de medii. Acest fapt este neplcut i ngreuneaz foarte mult munca. Soluia care se adopt n astfel de situaii este plasarea informaiilor ntr-o baz de date i accesarea lor ori de cte ori se cere acest lucru de cineva. Mai exact n loc s se creeze 3-4 pagini Web n HTML care s fie modificate ori de cte ori apare o schimbare, se va crea o baz de date i cteva scripturi pe partea de server prin care vor construi dinamic, paginile HTML care vor fi afiate. Schimbrile se vor face doar la nivelul bazei de date ceea ce e mult mai simplu. Paginile Web se clasific n funcie de natura coninutului n pagini statice i pagini dinamice Principalele caracteristici ale paginile Web statice sunt: conin doar elemente HTML; codul surs vizualizat n navigator este identic cu cel al fiierului stocat pe disc; nu ofer interactivitate. Paginile Web dinamice se caracterizeaz prin urmtoarele:

coninutul lor este creat dinamic i poate diferi la accesri diferite; de exemplu la acelai URL coninutul paginii poate varia n funcie de anumii parametri cum ar fi locaia geografic a utilizatorului, ora, paginile vizitate anterior, profilul utilizatorului; ofer interactivitate; posibiliti de interaciune. n funcie de locul n care este evideniat caracterul dinamic al paginilor exist pagini dinamice pe parte de client i pagini dinamice pe partea de server. 4.1.2 Pagini dinamice pe partea client Exist mai multe tehnologii care permit realizarea de pagini dinamice pe partea de client. Dintre acestea se enumer: scripturi pe partea de cliente (client side scripts) DHTML (Dynamic HTML) Applet-uri Java Controale ActiveX Elemente multimedia Scripturile pe partea de client (client side scripts) sunt secvene de program incluse n pagina HTML care se execut de ctre navigator. Secvenele de program sunt incluse prin marcatorul <SCRIPT> sau n proprietile anumitor componente HTML ca rspuns la diferite evenimente. Limbajele utilizate pentru a realiza scripturi pe partea de client sunt JavaScript, Jscript i VBScript. Secvenele de program scrise folosind aceste scripturi nu ofer acces la resursele sistemului local (fiiere, reea). Scripturile pe partea de client sunt utilizate pentru asigurarea interactivitii (meniuri), pentru validarea formularelor, pentru a crea diferite efecte, pentru efectuarea de calcule, diverse elemente de animaie etc. DHTML (Dynamic HTML) este o tehnologie dezvoltat de Microsoft care combin HTML, foi de stiluri (CSS) i script-uri pentru a realiza pagini Web dinamice sau interactive. Permite utilizatorilor s interacioneze cu pagina fr a retrimite o cerere la serverul Web

Applet-uri Java reprezint aplicaii de dimensiune redus, scrise n limbajul Java. Codul binar al aplicaie este descrcat pe maina client de pe server i executat local, n maina virtual Java (JVM). Aproape toate calculatoarele permit execuia applet-urilor, ns pentru funcionarea acestora este necesar instalarea unei maini virtuale Java. n cadrul paginii HTML applet-urile sunt incluse prin intermediul marcatorilor <APPLET> sau <OBJECT>. Din applet-urile Java nu este permis accesul la sistemul local de fiiere i la reea, astfel riscul ca aceste aplicaii s conin cod maliios sunt reduse. Controalele ActiveX sunt componente binare incluse n paginile Web pentru a oferi interactivitate. Sunt asemntoare applet-urilor, ns spre deosebire de acestea ruleaz pe platforma Windows i au fost dezvoltate n special pentru Internet Explorer. Controalele ActiveX sunt incluse n cadrul paginii Web print intermediul marcatorului <OBJECT>. Spre deosebire de scripturile pe partea de client i nu au restricii n ceea ce privete accesul la disc, ceea ce face ca anumite componente de acest tip s fie susceptibile de cod ruvoitor, asemntor viruilor, viermilor sau cailor troieni. De aceea, n cazul n care o pagin conine controale ActiveX, navigatorul printr-o fereastr de dialog cere confirmarea utilizatorului pentru instalarea i rularea acestora. Elemente multimedia sunt dezvoltate n general folosind produsul Macromedia Flash. Acestea se prezint sub forma de fiiere SWF multimedia i sunt incluse n pagina Web prin intermediul marcatorului <OBJECT>. Pentru a putea rula pe partea de client aceste fiiere este necesar instalarea unui plug-in denumit Macromedia Shockwave Player. Fiierele multimedia Flash se realizeaz sub forma unor filme, care sunt proiectate cadru cu cadru. Acestea ofer diverse efecte multimedia (animaie, sunet) i permit interactivitatea cu utilizatorul. Sunt utilizate pentru meniuri, jocuri, filme de animaie etc. 4.1.3 Pagini dinamice generate pe partea server Interpretorul de scripturi tip server-side are rolul de a executa scripturi la cererea serverului de Web, de cele mai multe ori de a prelua rezultatul unor interogri la nivelul bazelor de date i de a trimite spre

serverul Web rezultatul execuiei scripturilor sun forma de coninut HTML pentru a putea fi afiat de ctre navigator. n momentul n care serverului Web i se solicit rularea unui script, acesta identific n funcie de extensia fiierului care din compilatoare trebuie s ruleze scriptul respectiv.
Client HTTP Cerere (URL) Navigator Web Server Web ASP, CGI Date Server

Rspuns (Pagina HTML)

Figura 4.1. Generarea paginilor dinamice pe server

Fiecrui interpetor de scripturi se asociaz unui limbaj de serverside scripting. Limbajele populare ale momentului sunt: PHP (Personal Home Pages), ASP (Active Server Pages), ASP.NET i JSP (Java Server Pages). La acestea se mai adaug i o serie de alte tehnologii de interes mai restrns. Caracteristicile generale ale paginilor Web dinamice generate pe partea de server, indiferent de limbajul de scripting folosit sunt: este necesit un procesor pentru paginile dinamice sau un mediu de execuie; ntr-o pagin de script (ASP, JSP, PHP) pot fi mbinate limbajul HTML i secvene de cod secvenele de cod care sunt executate pe partea de server, nainte de a trimite pagina la client exist astfel posibilitatea de a particulariza paginile n mod dinamic ofer posibilitatea de interaciune cu baze de date diferite. au acces la toate resursele serverului Web (fiiere, reea). n mod uzual prin intermediul scripturilor sunt prelucrare informaiile din cmpurile formularelor (<FORM>) din cadrul paginilor Web.

4.2 Active Server Pages (ASP)


4.2.1. Modelul ASP Tehnologia Active Server Pages (ASP) dezvoltat de Microsoft permite realizarea de scripturi pentru server i este folosit pentru crearea i rularea n mod dinamic a aplicaiilor Web server interactive. Cu ASP se pot combina pagini HTML, comenzi de script i controale ActiveX pentru crearea de pagini Web interactive sau aplicaii Web complexe. Cnd serverul primete o cerere pentru un fiier ASP, prelucreaz scriptul coninut n fiier pentru a construi pagina de Web care este trimis apoi la navigator. ASP ofer totodat posibilitatea de a stoca informaia dintr-un formular HTML ntr-o baz de date, de a personaliza site-uri Web, oferind diverse opiuni pentru vizitatorii site-ului sau de a folosi diferite caracteristici HTML bazate pe navigator. Pentru a prelucra un formular HTML pe server, ar trebui utilizat limbajul Perl sau C pentru construirea unui CGI convenional. Cu ASP se poate prelua informaia dintr-un formular HTML care va fi stocat ntr-o baz de date, folosind numai scripturi simple nglobate n documente HTML. ASP este proiectat independent de limbaj, deci se poate utiliza orice limbaj pentru care exist instalat un compilator compatibil COM. ASP are nglobate limbajele VBSscript i JScript., dar se pot instala i compilatoare pentru limbajele Perl, Rexx sau Python. Totodat, ASP ofer o cale flexibil pentru a crea pagini Web i de a dezvolta aplicaii Web ntr-un limbaj de programare ca Visual Basic, C++ sau Java. Se poate include i o sigl a aplicaiei n module care vor fi apelate i executate de ctre alte componente sau programe.

Server Web Navigator Web HTTP Request HTTP Response


Fig. 4.2. Modelul ASP

Active Server Page

Un script pentru server ncepe s se execute atunci cnd un program de navigare solicit un fiier ASP de pe server. La rndul su, serverul apeleaz ASP-ul care prelucreaz fiierul solicitat i execut fiecare comand din script, dup care trimite pagina ctre programul de navigare. Deoarece scripturile se execut mai mult pe server i mai puin pe client, serverul este responsabil pentru generarea paginii HTML trimis ctre programul de navigare. n acest fel, sursa scripturilor nu poate fi copiat (furat) deoarece la client ( programul de navigare) ajunge numai rezultatul scriptului, iar utilizatorul nu pot s citeasc comenzile scripturilor care au creat pagina. Scripturile ASP se creeaz de fapt n VBScript sau n JavaScript. Indiferent de limbajul folosit, navigatorul proceseaz scripturile identic, rezultatul HTML formatat fiind acelai. Alturi de scripturi simple, ASP poate crea aplicaii complexe, cum sunt colectarea i procesarea informaiilor de comand n aplicaii de e-commerce. Un fiier ASP este un fiier text cu extensia .asp, ce conine orice combinaie a urmtoarelor elemente: text; marcatori HTML; comenzi de script ASP. Dac se dorete adugarea unor scripturi la o pagin HTML, mai nti va trebui s se redenumeasc fiierul, atribuindu-i extensia .asp. Pentru a-l face accesibil utilizatorilor Web, este necesar activarea permisiunii de script sau de execuie pentru directorul unde se afl fiierul respectiv.

Pentru crearea fiierului ASP se poate folosi orice editor de text, dar este preferat un mediu cu suport pentru ASP cum este Microsoft Visual Studio sau Macromedia Dreamweaver MX 2004. Un script este constituit dintr-o serie de comenzi sau instruciuni. Fa de marcatorii HTML care formateaz un text sau prelucreaz un format de imagine, de video sau de sunet, comenzile de script indic serverului Web s execute o aciune. Comenzile de script sunt difereniate de text prin delimitatori. Un delimitator este un caracter sau o secven de caractere care marcheaz nceputul sau sfritul unei uniti. ASP utilizeaz pentru includerea comenzilor, delimitatorii <% i %>. Comenzile incluse ntre delimitatori sunt comenzi de script primare. Aceste comenzi sunt procesate folosind un limbaj de script primar. Limbajul implicit este VBScript, dar poate fi folosit orice limbaj de script pentru care este instalat un compilator. ntre delimitatorii ASP se poate include orice expresie, structur, procedur sau operator valid pentru limbajul de script respectiv. 4.2.2. Limbaje de script Limbajele de script sunt situate la un nivel intermediar ntre HTML i limbaje de programare cum sunt JAVA, C++ i Visual Basic. Dac HTML este folosit de regul pentru formatarea textului i crearea de legturi, iar limbajele de programare sunt utilizate pentru instruciuni complexe, limbajele de script pot fi folosite pentru specificarea unor instruciuni complexe a cror sintax este mai flexibil dect cea a limbajelor de programare. Totodat, limbajele de script pot s formateze text, realiznd i interaciunea ntre pagina Web i utilizator. ASP permite creatorului de pagini Web s scrie proceduri prin folosirea mai multor limbaje de script. Deoarece fiierele .asp sunt interpretate pe server, navigatorul clientului nu trebuie s aib suport pentru scripturi. ASP are inclus dou motoare de scripting: Microsoft Visual Basic Scripting Edition (VBScript) - implicit i Microsoft JScript, dar se pot instala motoare i pentru alte limbaje. n tabelul 4.1 sunt prezentate principalele caracteristici ale limbajelor VBScript i JScript, dintre care o parte vor fi detaliate n continuare.

Tabelul 4.1. Caracteristici ale limbajelor de script

Caracteristica Cometarii Case sensitive Variabile Constante

VBScript NU Dim Const

JScript // DA var vart

VBScript nu este case sensitive, astfel c un cuvnt scris cu majuscule are aceeai semnificaie dac este scris i cu minuscule. De exemplu, Request i request se refer la acelai obiect ASP ( Request ). Jscript este case sensitive, deci scrierea unui cuvnt cu caractere majuscule sau minuscule influeneaz semnificaia acestuia. Declararea unei variabile echivaleaz cu rezervarea unei locaii de memorie n care se va introduce o dat (un numr sau un text). Data introdus n variabil reprezint valoarea variabilei. VBScript nu necesit declararea unei variabile nainte de utilizare, dar este recomandat efectuarea ei. n acest scop se folosesc cuvintele cheie: Dim, Public sau Private. Cu <% Dim UserName %> se declarat o variabil de tip variat, adic poate s conin orice tip de dat Dac la nceputul fiierului .asp s-a introdus comanda Option Explicit, atunci declararea variabilelor VBScript devine obligatorie. n JScript declararea variabilelor este impus numai pentru variabilele locale din proceduri, dar este recomandat declararea oricrei variabile nainte de folosire. Pentru declararea unei variabile se folosete cuvntul cheie var :
<% var UserName; %>

Alturi de variabile locale i globale, se pot declara variabile dup domenii: variabile de sesiune i variabile de aplicaie. Variabilele globale sunt accesibile numai pentru o singur pagin .asp. O variabil avnd domeniul de sesiune este accesibil pentru toate paginile dintr-o aplicaie ASP rulat de un client. Aceste tipuri de variabile sunt utile pentru stocarea de informaii pentru un singur client; de exemplu, preferinele sau numele clientului respectiv.

O variabil avnd domeniul de aplicaie, este accesibil pentru toate paginile dintr-o aplicaie ASP rulat de orice client. Pentru a declara o variabil cu domeniu de sesiune, se folosete obiectul Session n care se va salva numele i valoarea variabilei. De exemplu n urmtorul script sunt salvate valorile a dou variabile de sesiune Nume i Prenume :
< % % > Session ( Nume ) = Mranu Session ( Prenume ) = Radu

Pentru accesarea variabilei cu domeniu de sesiune se folosete tot obiectul Session:


< % < % < % If Session Prenume) = Radu Then Ati vizitat deja pagina. Else % > Este prima vizita in aceasta pagina. End If % > % >

Pentru a declara o variabil cu domeniu de aplicaie, se folosete obiectul Application, n care se va salva numele i valoarea variabilei. De exemplu:
< % Application (salut) = O zi bun ! % >

O constant este alctuit dintr-un identificator ce nlocuiete un numr sau un ir de caractere. Unele componente ASP cum sunt ActiveX Data Objects (ADO), definesc constantele care pot fi folosite n scripturi; declararea constantelor se realizeaz n componenta type library constituit sub forma unui fiier n care se regsesc informaiile privind obiectele i tipurile acceptate de o component ActiveX. Pentru a declara tipul bibliotecii se folosete marcatorul <METADATA> n fiierul Global al aplicaiei. n VBScript declararea constantelor se efectueaz cu directiva Const, iar n JScript cu directiva var. Paginile ASP pot utiliza cteva directivele care nu aparin limbajului de script propriu zis. Ele se mpart n dou categorii:

directive de ieire; directive de procesare. Directivele de ieire au rolul de a afia valoarea unei expresii specificate ntre delimitatori; sunt de forma:
<% =expresie %>

O directiv de ieire este echivalent practic, cu o comand


Response.Write.

Directivele de procesare furnizeaz informaii privitoare la modalitatea de procesare a fiierului .asp. Formatul unei directive de procesare este:
<% @ cuvnt_cheie %>

Directiva de procesare
<%@ LANGUAGE=VBScript %>

seteaz VBScript ca limbaj de script implicit pentru pagin. Directiva trebuie s apar n primul rnd al fiierului .asp. Observaie: nu se pot specifica directive de procesare ntr-un fiier .asp inclus cu directiva #include. Cuvintele cheie ce se pot utiliza n cadrul directivelor de procesare sunt: LANGUAGE seteaz limbajul de script implicit al paginii; CODPAGE seteaz pagina de cod a paginii ASP; LCID seteaz identificatorul local al paginii; TRANSACTION verific dac pagina va rula n context tranzacional ENABLESESSIONSTATE arat dac se va activa modul sesiune pentru pagina respectiv. Ca orice limbaj de programare, VBScript si JScript pun la dispoziie structuri fundamentale de programare. Exemplul urmtor utilizeaz o structur alternativ IfThenElse n VBScript
<% If Time >=#06:00:00 AM# And Time< #20:00:00 PM#

salut= O zi bun ! Else salut= Noapte bun ! End If %> <% = salut %>

Then

n funcie de ora la care se solicit execuia, rezultatul ce se afieaz va fi O zi bun ! sau Noapte bun ! . Comanda <% = salut %> trimite valoarea variabilei salut ctre navigator. Comenzile ASP pot fi intercalate cu text HTML. n exemplul anterior, se poate realiza acelai lucru n felul urmtor:
<% If Time>= #06:00:00 AM# And Time< #20:00:00 PM# Then %> O zi bun ! <%Else%> Noapte bun ! <% End If %>

4.2.3 Crearea obiectelor Cheia dezvoltrii aplicaiilor Web complexe sunt componentele ActiveX. Ele furnizeaz obiectele care se folosesc n scripturi pentru scopuri diverse. O component ActiveX este un fiier care conine instruciuni pentru realizarea unui anumit program specific. Componentele sunt reutilizabile. Odat ce s-a instalat o component pe un server Web, ea poate fi apelat dintr-un script ASP, dintr-o aplicaie ISAPI, dintr-o alt component sau dintr-un program scris ntr-un alt limbaj compatibil COM. O component este un program executabil coninut ntr-un fiier cu extensia .dll (dynamic link library) sau .exe. O component poate instania obiecte, iar prin obiecte se pot accesa proprietile i metodele. Instanierea unui obiect se face cu metoda ASP Server.CreateObject care returneaz referina ctre obiectul creat, referin ce trebuie pstrat ntr-o variabil.

n ASP, pentru crearea obiectelor nu se folosete funcia limbajului de script (CreateObject n VBScript i New n Jscript). Exemplul urmtor creaz o instan a componentei AdRotator.
<% Set MyAds = Server.CreateObject (MSWC.AdRotator) %>

Obiectele se pot crea i prin intermediul <OBJECT>:


<OBJECT RUNAT=Server </OBJECT> ID=MyAd

marcatorului HTML

PROGID=MSWC.AdRotator>

ASP are cteva obiecte incluse, ce conin datele trimise spre server de ctre formularul HTML. Aceste obiecte nu trebuie instaniate, ele pot fi folosite direct n scripturi. Obiectul Application se folosete pentru a partaja informaiile ctre toi clienii unei aplicaii. Obiectul Request este folosit pentru a accesa orice informaii trimise printr-o cerere HTTP. Aceste informaii pot fi: parametri trimii dintr-un formular HTML prin metoda POST sau GET, cookie-uri alte certificri ale clienilor. Obiectul Request face totodat posibil accesarea informaiilor trimise sub form binar, cum sunt transmisiile de fiiere. Obiectul Response controleaz informaiile transmise ctre client. Controlul include transmiterea de informaii direct ctre navigator, redirectarea navigator-ului ctre un alt URL sau setarea unor valori cookie. Trimiterea de text HTML ctre navigator se poate realiza i prin intermediul comenzilor de script, situaie n care se va folosi obiectul Response. Exemplul anterior poate fi realizat astfel:
<% If Time >=#06:00:00 AM# And Time< #20:00:00 PM# Then Response.Write O zi bun ! Else Response.Write Noapte bun !

%>

End If

Funcia Write a obiectului Response are rolul de a trimite textul ctre navigator. Obiectul Server asigur accesul la metodele i proprietile de pe server. Cea mai folosit metod este aceea care instaniaz o component ActiveX (Server.CreateObject). Alte metode sunt codificarea URL sau HTML a irurilor de caractere, maparea cilor virtuale n ci fizice sau setarea perioadei de timeout pentru un script. Obiectul Session se utilizeaz pentru a pstra informaii pentru o sesiune particular. Informaiile din obiectul Session nu sunt pierdute ct timp utilizatorul se plimb printre pagini, ele persistnd de lungul accesrii paginilor aplicaiei de ctre client. Obiectul ObjectContext se folosete pentru a realiza sau abandona o tranzacie iniiat de un script ASP. Se pot defini i obiecte proprii n Jscript, prin crearea unei funcii constructor care creeaz i iniializeaz proprietile i metodele unui obiect nou. Obiectul este instaniat cnd n script se utilizeaz operatorul new care apeleaz constructorul. Dac obiectele JScript sunt definite cu domeniu de sesiune sau de aplicaie, atunci nu pot fi accesate metodele lui. Cnd este prelucrat un script ASP, orice text n afara delimitatorilor ASP sau a marcatorilor <SCRIPT> este returnat ctre navigator. Informaiile ctre navigator pot fi trimise explicit prin obiectul Response, metoda Write. 4.2.4. Proceduri ASP O procedur este alctuit dintr-un grup de comenzi de script care realizeaz o aciune specific, avnd ca rezultat o valoare a unei variabile. n ASP se pot crea diferite proceduri care s fie apelate ulterior. Procedurile pot fi pstrate n acelai fiier .asp sau n fiiere distincte. Pentru apelarea unei proceduri, fiierul/fiierele vor fi introduse prin intermediul directivei # include .

Procedurile scrise n limbajul de script implicit trebuie incluse ntre delimitatorii <% i %.>, iar cele scrise n alt limbaj dect limbajul implicit ntre <SCRIPT> i </SCRIPT>. Pentru execuia unei proceduri pe server, se va specifica explicit acest lucru. Exemplu:
<SCRIPT RUNAT = SERVER LANGUAGE = JSCRIPT> definirea procedurii </SCRIPT>

n acest caz toate comenzile vor fi incluse n corpul unei proceduri pentru a preveni apariia erorilor. Totodat, se va evita folosirea n corpul unei proceduri a construciei <% = expresie %>, utiliznd eventual comanda Response.Write. Pentru a apela o procedur se va folosi numele propriu atribuit la creare. Se pot apela proceduri JScript din scripturi VBScript, respectiv proceduri VBScript din scripturi JScript, acordnd atenie deosebit la folosirea parantezelor pentru apelul din Jscript. n VBScript se poate utiliza i Call, dar atunci se vor utiliza parantezele. Exemplu urmtor ilustreaz crearea i apelul de proceduri folosind limbajele VBScript i JScript:
<%@ LANGUAGE = VBSCRIPT %> <HTML> <BODY> <% Call Echo %> <BR> <% Call PrintDate ( ) %> </BODY> </HTML> <% Sub Echo Response.Write <TABLE> Response.Write<TR><TH>Name</TH><TH>Value</TH></TR> Set Params=Request.QueryString For Each p in Params Response.Write <TR> <TD> & p &</TD> <TD> & _

Params (p) & </TD> </TR> Next Response.Write </TABLE> End Sub %> <SCRIPT LANGUAGE=JScript RUNAT=Server> function PrintDate ( ) { var x x=new Date ( ) Response.Write (x.toString ( ) ) } </SCRIPT>

Majoritatea obiectelor ASP incluse, suport colecii. ntr-o colecie se pot pstra iruri de caractere, numere, obiecte sau alte valori. O colecie este asemntoare cu un vector care se expandeaz i se micoreaz automat la adugarea i tergerea unui element. Componentele unei colecii pot fi accesate prin nume, prin index sau prin iteraie. Componentele unei colecii se acceseaz prin nume. De exemplu, colecia Contents conine toate variabilele stocate n obiectul Session precum i toate obiectele create cu metoda Server.CreateObject. Se presupune c s-au stocat urmtoarele informaii n obiectul Session:
<% Session.Contents (Nume) = Mranu Session.Contents( Prenume)=Radu Session. Contents(Publicaii)= 84

%>

Pentru a accesa componenta Nume se va scrie umtoarea expresie:


<%=Session.Contents (Nume)%>

sau
<%=Session.Contents(1)%>

Componentele unei colecii pot fi parcurse i printr-o structur repetitiv de tip DO-FOR (n VBScript ForEach)
<% Declarare variabil index. Dim Nrart Pentru fiecare Nrart al coleciei, introducei valoarea. For Each Item in Session.Contents Response.Write Session .Contents (Nrart) & <BR> Next %>

Pentru a crea o pagin ASP se va folosi un editor de text cu ajutorul cruia se vor insera comenzi de script ntr-o pagin HTML, salvnd apoi pagina cu extensia ASP; extensia va indica serverului c urmeaz s prelucreze comenzi de script. Pentru a vizualiza rezultatele scriptului, se va solicita pagina ntrun navigator folosind protocolul http. Pentru a vizualiza un fiier ASP, calculatorul trebuie s aib instalat Internet Information Server 5.0 sau 6.0, iar n directorul unde se afl fiierul .asp trebuie activat Web sharing pentru scriere i scripting. Pentru a crea pagini ASP sunt necesare cunotine de HTML i de VBScript sau JavaScript. Urmtorul exemplu creaz o pagin simpl cu mesajul Bine ai venit n mediul Web ! cu font 10:
<HTML> <BODY> <FONT SIZE=10> Bine ai venit n mediul Web ! <BR> </FONT> </BODY> </HTML>

Dac s-ar dori repetarea acestui text de mai multe ori crescnd i dimensiunea fontului la fiecare iteraie, s-ar putea scrie de mai multe ori marcatorii HTML, modificnd dimensiunea de fiecare dat. Cnd un navigator deschide pagina HTML, linia va fi afiat de cteva ori.

Acest coninut poate fi ns generat i ntr-o manier mai dinamic (pentru exemplul urmtor s-a folosit limbajul JScript):
<%@ LANGUAGE=JScript %> <HTML> <BODY> <% for (i=4; i <=10; i++) { %> <FONT SIZE =<% = i %> > Bine ai venit n mediul Web ! <BR> </FONT> <% } %> </BODY> </HTML>

4.2.5. Prelucrarea formularelor HTML Majoritatea aplicaiilor Internet de server sunt scrise pentru a procesa formulare de subscriere completate pe navigator. Formularele HTML sunt cele mai utilizate metode pentru obinerea informaiilor Web, constnd n marcatori HTML speciale care prezint elementele de pe interfaa utilizator ntr-o pagin Web. Casetele de editare, butoanele, listele de selecie sunt exemple de elemente care permit utilizatorului s interacioneze cu pagina Web i s trimit informaii ctre un server Web. Prin intermediul ASP se pot include scripturi direct n fiierul HTML pentru a prelucra formularul. ASP prelucreaz comenzile de script i returneaz rezultatul navigatorului. Prin exemplul se creeaz un formular cu dou casete de editare pentru nume i prenume, un radio buton, un buton de Submit pentru subscriere i un buton Reset pentru a reseta formularul.
<HTML> <HEAD> <TITLE>Cerere</TITLE> </HEAD> <BODY> <H2>Exemeplu de cerere</H2> <P> Please provide the following information, the click Submit: <FORM METHOD=POST ACTION=response.asp>

<P> First Name: <INPUT NAME=fname SIZE=48> <P> Last Name: <INPUT NAME =lname SIZE =48> <P> Title:<INPUT NAME=title TYPE=RADIO VALUE=mr>Mr. <INPUT NAME =title TYPE=RADIO VALUE=ms>Ms. <P> <INPUT TYPE=SUBMIT VALUE=Submit> <INPUT TYPE= RESET VALUE=Reset> </FORM> </BODY> </HTML>

Dup crearea unui formular HTML, informaia introdus de utilizator va trebui s fie prelucrat, ceea ce nseamn trimiterea informaiei ctre un fiier .asp pentru a fi analizat i manipulat; n exemplul anterior, atributul ACTION al marcatorului <FORM> se refer la un fiier numit response.asp. Cnd utilizatorul trimite informaia HTML, navigatorul folosete metoda POST pentru trimiterea informaiei ctre un fiier .asp aflat pe server (n exemplul anterior, response.asp). Fiierul .asp poate s conin scripturi care prelucreaz informaia i interacioneaz cu alte scripturi, componente COM, sau resurse (de exemplu baze de date). Folosind ASP, exist trei metode de baz pentru colectarea informaiei din formulare HTML: un fiier .htm (sau .html) static conine un formular care trimite valorile sale ctre un fiier .asp; un fiier .asp poate s creeze un formular care s trimit informaia ctre un alt fiier .asp; un fiier .asp poate s creeze un formular care s trimit informaia ctre sine nsui, deci ctre fiierul .asp care conine formularul. Primele dou metode funcioneaz similar (un formular interacioneaz cu alte programe de pe server), dar n cazul celei de-a doua metode, sarcina de colectare i prelucrare a informaiei din formular este simplificat considerabil. Obiectul ASP Request furnizeaz dou colecii care faciliteaz sarcina de recepie a informaiei trimise n format de cerere URL:

colecia QueryString i colecia Form. Accesarea informaiilor obiectului Request se face prin:
Request.nume_colecie(nume_proprietate)

Colecia QueryString obine valorile din formular trimise ctre server cu metoda GET, ca un text care urmeaz dup semnul ntrebrii n cererea URL i este format din numele variabilei urmat de semnul = i valoarea variabilei. Pentru mai multe variabile, acestea vor fi separate prin semnul &. De exemplu, n formularul anterior dac s-ar fi folosit metoda GET (METHOD=GET) i utilizatorul ar fi introdus valorile Mranu, Radu i mr, atunci cererea URL ar fi artat astfel: ../response.asp?fname=Mranu&lname=Radu&title=mr Scriptul de prelucrare (n JScript) se regsete n Profil.asp:
FirstName = Request.Form(fname); LastName = Request.Form(lname); If (Title == mr) { Response.Write (Hi Mr. + FirstName + + LastName); } else { if (Title == ms) { Response.Write (Hi Ms. + FirstName+ +LastName) } }

n acest caz, serverul ar trimite urmtorul coninut la navigatorul utilizatorului: Hi Mr Mranu Radu Colecia QueryString are i un parametru opional care se poate utiliza pentru a accesa valori multiple care apar n cererea URL folosind

metoda GET. Totodat, se poate folosi proprietatea Count pentru a afla numrul de apariii al unei valori specifice. De exemplu, un formular conine o caset de tip list (list box) cu valori multiple: ../lista.asp?Alimente=Mere&Alimente=Pine&Alimente=Carne Pentru numrarea valorilor multiple se va proceda astfel:
<% nrAlim =Request.QueryString (Alimente) .Count For i = 1 to nrAlim Response.Write Request.QueryString(Alimente)(i) & _ <BR> Next

%>

Rezultatul va arta astfel: Mere Pine Carne Se poate afia ntreaga list de valori, ca iruri de caractere separate prin virgul:
<% Response.Write Request.QueryString (Item) %>

Rezultatul n aceast situaie ar arta astfel: Mere, Pine, Carne Cnd se folosete metoda GET pentru transmiterea unor valori lungi i complexe ctre server, exist riscul de a pierde informaia. Unele servere au tendina de a restriciona lungimea irului de caractere de cerere URL, deci cererile lungi vor fi trunchiate. Pentru a transmite informaii complexe este recomandat s se foloseasc metoda POST, care trimite datele n corpul cererii HTTP. Prin

aceast metod se pot trimite un numr aproape nelimitat de caractere ctre server. Pentru a recepiona i prelucra valori trimise cu metoda POST se va utiliza colecia Form a obiectului Request. Colecia Form stocheaz valorile ntr-o manier similar coleciei Query String. De exemplu, dac un utilizator a completat un formular introducnd o list lung de nume, lista se poate recepiona prin urmtorul script:
<% nrPersoane = Request.Form (Nume).Count For i = 1 to nrPersoane Response.Write Request.From (Nume) (i) & _ <BR> Next %>

Un formular bine conceput include un script pe partea de client care valideaz informaia introdus nainte ca aceasta s fie trimis ctre server. Scripturile de validare pot verifica dac utilizatorul a introdus un numr valid, dac o caset de text a fost completat, corectitudinea unor calcule i altele. Este recomandat efectuarea a ct mai multe validri executate de client deoarece utilizatorul este avertizat mult mai rapid asupra eventualelor erori, evitnd totodat i suprancrcarea inutil a serverului i eliberarea limii de band pentru alte aplicaii. De exemplu, se consider urmtorul script care se execut de ctre client, care validez un numr de cont introdus de utilizator nainte de a-l trimite serverului pentru efectuarea unei tranzacii.
<SCRIPT LANGUAGE=JScript> function ValidareNumr () { if (!isNaN(parseInt(document.Formular.NrCont.Value))) return true else { alert(V rog s introducei un numr de cont valid !) return false

</SCRIPT> <FORM METHOD=Get ACTION=nrcont.aspNAME=Formular ONSUBMIT=return ValidareNumr()> <INPUT TYPE=Text NAME=Text NAME=Acctno> <INPUT TYPE=Submit VALUE=Trimite> </FORM>

Validarea formularului la client este recomandat i n situaia n care se solicit accesul la o baz de date. O metod eficient pentru a degreva serverul de efectuarea validrii este aceea de a crea un formular care s trimit rezultatul validrii datelor introduse ctre el nsui; practic, rezultatul validrii este returnat ctre acelai fiier care l-a i validat. Prin aceast metod se poate mbunti i timpul de rspuns la formularele specificate. De exemplu, plasnd un cmp de informare cu privire la eventualele erori, lng cmpul din formular unde au fost introduse datele, va ajuta foarte mult utilizatorul s descopere sursa erorii. De obicei, formularele tipice de Internet trimit o pagin separat coninnd informaii despre eroare, genernd adesea dificulti utilizatorilor n nelegerea sursei erorilor. Ca exemplu se consider un script care s determine dac utilizatorul a introdus un numr de cont valid, poziionnd informaia de eroare n acelai formular (Verificare.asp), prin apelarea unor funcii definite de utilizator n vedera interogrii unei baze de date.
strCont = Request.Form(Cont) If NOT ContValid(strCont) Then ErrMsg = <FONT COLOR=Red>Numrul de cont introdus este incorect !!!</FONT> Else .prelucrarea datelor introduse. . . Server.Transfer(Completat.asp) End If Function ContValid(strCont) script de conectare la baza de date End Function <%

%>

n acest exemplu, scriptul se afl n fiierul Verificare.asp, acelai fiier care conine i formularul; el va trimite informaia ctre sine nsui specificnd Verificare.asp n atributul ACTION al marcatorului FORM. Dac se utilizeaz Jscript pentru validarea pe server, este necesar introducerea a dou paranteze cu coninut vid dup folosirea coleciilor QueryString sau Form a obiectului Request, n momentul atribuirii coleciei la o variabil local. Dac nu sunt introduse parantezele, coleciile returneaz mai degrab un obiect dect un ir de caractere. Exemplu de script pentru atribuirea coleciei la o variabil local cu JScript:
<% var Nume = Request.Form (Nume) () ; var Parol = Request.Form (Parol) () ; if (Nume > ) { if (Nume == Parol) Response.Write (Numele i parola sunt identice.) ; else Response.Write(Numele i parola dvs. sunt diferite.); } %>

i n VBScript se procedeaz la fel atunci cnd colecia conine valori multiple care sunt separate prin virgul sau accesate prin index. Att n VBScript ct i n JScript, n afara folosirii perechii de paranteze, se va mai specifica i indexul valorii accesate. De exemplu, urmtoarea linie de JScript returneaz numai primul dintre valorile multiple din formular:
var Nume = Request.Form(Nume) (1) ;

Cnd serverul Web returneaz un fiier ctre navigator, el transmite navigatorului tipul coninutului fiierului. Acest lucru face posibil pentru navigator s determine dac el nsui poate afia fiierul sau trebuie s lanseze o alt aplicaie n acest scop.

De exemplu, dac serverul Web returneaz o tabel Excel, atunci navigatorul trebuie s fie capabil s lanseze Microsoft Excel pentru a-l afia. Serverul Web face posibil recunoaterea tipului fiierului prin maparea extensiei ntr-o tipologie MIME. Pentru a seta tipologia coninutului trimis ctre utilizator, se va folosi proprietatea ContentType a obiectului Response. De exemplu:
<% Response.ContentType= application/x-cdf %>

Exist definite mai multe standarde de tipologii MIME, iar un server Web sau un navigator poate suporta orice fel de tipologie MIME. Navigator-ul poate fi redirectat ctre un alt URL prin metoda Redirect. De exemplu, pentru a afla dac un utilizator a intrat ntr-o aplicaie printr-un home-page unde a primit un ID, se poate verifica dac el are un ID; dac nu are un ID acceptat, el poate fi redirectat ctre homepage:
<% If Session (CustomerID) = 0 Then Response.Redirect homepage.asp End If

%>

Serverul Web returneaz implicit HTML i rezultatul scriptului simultan cu procesarea paginii ASP. Se poate seta proprietatea Buffer a obiectului Response astfel nct toate comenzile de pe pagin s fie procesate nainte de a trimite ceva ctre navigator. De exemplu, la anumit punct n script se poate decide s nu se mai trimit ctre client coninutul ce s-a creat pn atunci cu metoda Clear, ci un alt coninut, sau s se redirecteze navigatorul cu metoda Redirect.
<% activarea buffering-ului (trebuie s apar nainte de marcatorul <HTML>) Response.Buffer = True %> <html> <body> .

<% If Request(Fnume) = Then Response.Clear Reponse.Redirect /samples/test.html Else Response.Write Request(Fnume) End If %> </body> </html>

n mod implicit, buffering-ul este dezactivat i dup cum se observ acesta poate fi activat cu uurin. La ora actual este utilizat n paralel cu tehnologia ASP tehnologia ASP.NET care se bazeaz pe Microsoft .Net Framework. ASP.NET este o extindere a tehnologiei ASP, cu mici excepii paginile ASP fiind compatibile cu aceasta. Fiierele script au extensia aspx.

4.3 Baze de date on-line


4.3.1. Principii de funcionare Plasarea pe Internet a unor colecii complexe de informaii presupune stocarea acestora n baze de date care pot fi apoi accesate online de ctre utilizatori. Termenul de baz de date poate fi uor neltor deoarece n realitate sistemul care face vizibil aceast baz de date pe Internet este mult mai complex. Orice baz de date care ofer informaii utilizatorilor de servicii Internet trebuie stocat pe un server care este vizibil pe Internet i s foloseasc o tehnologie de scripting. Informaiile din baza de date trebuie extrase n conformitate cu nevoile specifice ale utilizatorului i apoi formatate astfel nct s fie corect afiate. Spre exemplu, cnd cineva scrie cuvntul Romnia pe motorul de cutare google.com sistemul va prelua solicitarea din formularul de cutare, va caut n baza de date elementele n care apare cuvntul Romnia dup care va formata aceste rezultate astfel nct ele s poate fi afiate de un navigator precum Internet Explorer.

O vedere general a arhitecturii serverului este oferit n schema din figura 4.3.
Utlizatori externi

Server Web
Interpretor de scripturi tip server-side

Fiiere html, imagini, scripturi, filme, i alte fiiere

Drivere

Baz de date
Figura 4.3. Arhitectura serverului Web cu suport de scripting

Dup cum se observ din figura 2.x arhitectura sistemului este structurat pe mai multe nivele. n momentul n care utilizatorul extern dorete s acceseze informaii situate pe server, el va folosi un navigator Internet pentru a se conecta la acesta. Accesarea serverul se face prin intermediul unui URL. Elementele principale care intr n componena arhitecturii serverului sunt: serverul Web, interpretorul de scripturi tip server-side, driverele de acces la baza de date, baza de date i coleciile de fiiere. Serverul Web care este o aplicaie complex responsabil pentru comunicarea cu navigatoarele externe. Practic serverul de Web ascult

portul HTTP (implicit 80) al mainii pe care este instalat. n momentul n care sosete o cerere pe acest port, serverul de Web o interpreteaz pentru a vedea ce informaii au fost solicitate. Informaiile solicitate de la server sunt de fapt fiiere care se afl pe hard-disc. Serverul de Web are rolul de a mpacheta aceste fiiere astfel nct ele s poat fi trimise mai departe. Fiierele solicitate pot fi mprite n dou categorii: Fiiere care conin informaii statice. Acestea se transmit mai departe ctre navigatoare fr nici un fel de modificare. Fiierele statice sunt de obicei imagini, fiiere HTML, filme, documente oferite spre download, filme, animaii Flash etc. Scripturi. Acestea sunt practici mici programe care se execut de ctre un intepretor, trimindu-se spre server-ul de Web doar rezultatul execuiei lor. Principalul rol al acestor script-uri este de a genera n mod dinamic documente de tip . Tehnica generrii dinamice a documentelor de tip HTML face posibil accesarea bazelor de date pe Internet. Rolul interpretorului de scripturi tip server-side a fost descris anterior. n cazul n care un script are nevoie de nregistrri dintr-o baz de date acesta va interaciona cu acesta prin intermediul unui driver. El va executa n SQL o cerere la nivelul bazei de date. n urma execuiei acestei cereri i se returneaz un cursor. Prelucrnd acest cursor se genereaz cod HTML care odat ajuns la un navigator determin afiarea datelor dorite. Driverele de acces la baza de date au menirea de a mijloci interaciunea dintre interpretorul de scripturi i baza de date propriu-zis. Ele sunt instrumente software foarte specializate care de obicei nu sunt vizibile nici programatorului nici utilizatorului. Driverele sunt importante deoarece alegerea lor eronat afecteaz semnificativ performanele sistemului. Baza de date const dintr-un SGBD (sistem de gestiune a bazelor de date) relaional care este fie instalat pe maina pe care se afl serverul Web, fie este accesibil prin reea sau Internet, fiind pe alt main. Teoretic orice SGBD relaional poate fi folosit pentru a stoca datele necesare unui server de Web. Practic, s-a observat ca SGBD-urile simple cum ar fi Fox Pro sau Access nu se preteaz pentru site-uri Web care sunt folosite intens. Pentru aplicaiile Web de dimensiune mare este nevoie de SGBD-uri de mare performan capabile s ruleze multe cereri simultan.

Principalele SGBD-uri folosite n aplicaiile Web sunt: mySQL, SQL Server i Oracle. Coleciile de fiiere sunt informaii cu caracter static care sunt trimise utilizatorilor la cerere. Este important de reinut ca scripturile ASP au rolul de a produce pagini HTML pe care le trimit navigatoarelor spre afiare. Beneficiul major al scripturilor ASP este c permit producerea dinamic a codului HTML n funcie de nevoile concrete. Spre exemplu se pot lua uor nregistrrile dintr-o tabel a unei baze de date i se pot mpacheta n format HTML pentru a putea fi afiate ntr-un navigator. Dei au fost gndite ca i aplicaii Web generale, majoritatea covritoare a aplicaiilor a scripturilor ASP sunt legate de lucrul cu baze de date on-line. n continuare va fi prezentat un mic exemplu. Pentru a putea realiza scripturi ASP trebuie s avem urmtoarele: un calculator pe care s fie configurat un server Web (de exemplu Internet Information Server sau Personal Web Server); orice sistem Windows poate fi uor configurat s suporte scripturi ASP; un editor de texte; se poate utiliza Notepad sau editoare specializate cum sunt FrontPage 2003 sau Macromedia Dreamweaver. un SGBD pentru crearea i actualizarea bazei de date utilizate prin intermediul scripturilor; un navigator Web cu care s vedem rezultatul execuiei scriptului; Avnd n vedere c scripturile ASP sunt realizate de obicei pentru a lucra cu baze de date este nevoie i de o baza de date pentru a executa scriptul. Aceasta trebuie s fie pe acelai calculator cu scriptul, preferabil n acelai director. 4.3.2. Accesul la baze de date ActiveX Data Objects (ADO) este o tehnologie ce permite accesarea bazelor de date din pagini Web. Practic, ADO se poate folosi pentru scrierea unor scripturi compacte n vederea conectrii la surse de date din pagini Web sau la surse de date compatibile OLE DB; totodat

ADO se utilizeaz i ca baze de date, foi de calcul tabelar, fiiere de date secveniale, sau directoare de e-mail. OLE DB este o interfa de programare la nivel de sistem care ofer setul standard de componente COM pentru managementul bazelor de date. Accesarea componentelor COM se realizeaz cu modelul de obiecte ADO i folosind scripturi VBScript sau JScript se pot accesa bazele de date din aplicaiile Web. ADO este utilizat i pentru deschiderea bazelor de date compatibile ODBC (Open DataBase Connectivity). Pentru crearea unei aplicaii cu acces la baze de date, ADO va solicita o cale de identificare a sursei de date. Aceasta se realizeaz prin completarea unui ir de caractere pentru conectare, ce const dintr-un ir de argumente separate cu ; de exemplu, numele furnizorului sursei de date (data source provider) i locaia sursei de date. ADO folosete irul de caractere pentru conectare n scopul identificrii furnizorului de OLE DB (provider), tabelul 4.2. Furnizorul este o component care reprezint sursa de date, el punnd la dispoziia aplicaiei informaii despre formatul datelor.
Tabelul 4.2 irurile de conectare la baze de date prin OLE DB Sursa de date ir de caractere pentru conectare OLE DB (Connection String) Microsoft Provider=Microsoft.Jet.OLEDB.4.0;Data Source = calea Access ctre un fiier .mdb Microsoft SQL Provider=SQLOLEDB.1;Data Source=calea la o baz de Server date pe server Oracle Provider=MSDAORA.1;Data Source=calea la o baz de date pe server Microsoft Provider=MSIDXS.1;Data Source=calea la un fiier Indexing Service

Pentru compatibilitate, furnizorul OLE DB suport sintaxa ODBC pentru irul de caractere pentru conectare. Cele mai utilizate iruri de caractere pentru conectare ODBC sunt redate n tabelul 4.3. irul de caractere pentru conectare care refer o surs de date aflat pe un calculator ndeprtat, poate s conin informaii de securitate (nume utilizator, parol ). Pentru a preveni accesul neautorizat

la sursele de date, se creeaz conturi de Windows pentru calculatoarele care vor accesa sursele de date, cu drepturi NTFS corespunztoare fiierelor.
Tabelul 4.3 irurile de conectare la baze de date prin ODBC Driver sursa de Date ir de caractere pentru conectare ODBC (Connection String) Driver={Microsoft Access Driver(*.mdb)}; Microsoft Access DBQ=calea fizic la un fiier .mdb SQL Server Driver={SQL Server}; SERVER=calea la server Driver={Microsoft ODBC for Oracle}; Oracle SERVER=calea la server Driver={Microsoft Excel Driver (*.xls)}; Microsoft Excel DBQ=calea fizic la un fiier .xls; DriverID=278 Driver={Microsoft Excel Driver (*.xls)}; Microsoft Excel 97 DBQ=calea fizic la un fiier .xls;DriverID=790 Driver={Microsoft Paradox Driver (*.db)}; Paradox DBQ=calea fizic la un fiier .db; DriverID=26 Driver={Microsoft Text Driver (*.txt, *.csv)}; Text DefaultDir=calea fizic la un fiier Driver={Microsoft Visual FoxPro Driver}; Microsoft Visual Foxpro (cu SourceType=DBC;SourceDb=calea fizic la un fiier container baz de date) .dbc Driver={Microsoft Visual FoxPro Driver}; Microsoft Visual FoxPro (fr SourceType=DBF;SourceDb=calea fizic la un fiier container baz de date) .dbf

Pentru stabilirea i manipularea conexiunilor ntre aplicaie i sursele de date compatibile OLE DB sau bazele de date compatibile ODBC, ADO pune la dispoziie obiectul Connection. El are proprieti i metode ce permit deschiderea i nchiderea conectrilor la bazele de date, respectiv formularea interogrilor pentru actualizarea datelor. Pentru stabilirea conexiunii la o baz de date, se va crea o instan a obiectului Connection. De exemplu, urmtorul script instaniaz obiectul Connection i deschide o conectare.
<% `Crearea obiectului de conectare Set cnn= Server.CreateObject(ADODB.Connection) `Deschiderea unei conexiuni folosind irul caractere pentru conectare OLE DB

de

cnn. Open Provider-Microsoft.Jet.OLEDB.4.0; Data Source=c:\MarketData\ProjectedSales.mdb %>

irul de caractere pentru conectare nu conine spaii nainte sau dup semnul egal (=). n exemplul anterior, metoda Open a obiectului Connection se refer la irul de caractere pentru conectare. 4.3.3. Utilizarea interogrilor SQL Prin intermediul metodei Execute a obiectului Connection pot fi trimise comenzi spre sursele de date sub form de interogri SQL (Structured Query Language). Metoda Execute accept ca parametrii specificarea unor comenzi (sau interogri), numrul de articole afectate i tipul comenzii utilizate. Exemplu Urmtorul script folosete metoda Execute pentru emiterea unei interogri sub forma unei comenzi SQL (INSERT) care insereaz date ntr-o tabel dintr-o baz de date (de exemplu, insereaz numele Marsanu Radu ntr-o tabel denumit Clieni).
` Definirea irului de caractere pentru conectare strConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;DataSource _ =c:\Data\firma.mdb" Instanierea obiectului Connection i deschiderea conectrii Set cnn=Server.CreateObject("ADODB.Connection") cnn.Open strConnectionString ` definirea comenzii SQL INSERT strSQL="Insert INTO Clienti (Nume,Prenume) values('Marsanu','Radu')" `Folosirea metodei Execute pentru emiterea unei interogri cnn.Execute strSQL,,adCmdText + adExecuteNoRecords %> <%

n comanda Execute au fost specificai adCmdText i AdExecuteNoRecords:

doi

parametri:

parametrul opional adCmdText specific faptul c furnizorul (provider) trebuie s evalueze o interogare (n exemplu, o interogare SQL) definit n format text; parametrul AdExecuteNoRecords indic pentru ADO s nu creeze articole de date pentru rezultate deoarece aplicaia nu returneaz rezultate; parametrul se utilizeaz numai cu comenzi definite ca text, cum sunt i interogrile SQL sau procedurile interne ale bazelor de date; dei parametrii adCmdText i AdExecuteNoRecords sunt opionali, folosii cu metoda Execute mbuntesc performantelor aplicaiei. nainte de utilizarea n scripturi, parametrii ADO trebui definii. O modalitate preferabila pentru definirea parametrilor este folosirea unei biblioteci de definire a componentelor constituit sub forma unui fiier ce conine definiiile pentru toi parametrii ADO. Pentru implementare, biblioteca de definire a componentelor trebuie mai nti declarat. Alturi de comanda SQL INSERT, se pot utiliza comenzi de actualizare a coninutului (UPDATE), respectiv tergerea articolelor (DELETE) din baza de date. Comanda SQL UPDATE modific anumite cmpuri ale unei tabele dintr-o baza de date. Urmtorul script folosete comanda UPDATE pentru a modifica n tabela Clieni cmpurile Nume (noul nume va fi Ionescu) al cror cmp Prenume este Ioan.
<% Set cnn = Server.CreateObject("ADODB.Connection") cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Data\ Firma.mdb" cnn.Execute "UPDATE Clienti SET Nume = `Ionescu` WHERE Prenume = `Ioan` ", , adCmdText + adExecuteNoRecords %>

Pentru a terge articole dintr-o tabel se folosete comanda SQL DELETE. O comand DELETE fr folosirea clauzei WHERE, va terge toate liniile dintr-o tabel, deci trebuie specificate exact liniile vor fi terse. Urmtorul script terge toate liniile din tabela Clieni care au prenumele Eugen:

<% Set cnn = Server.CreateObject("ADODB.Connection") cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:\Data\ Firma.mdb" cnn.Execute "DELETE FROM Clienti WHERE Prenume= `Eugen`" , , adCmdText + adExecuteNoRecords %>

Pentru aflarea unor date, examinarea rezultatelor i efectuarea de modificri n bazele de date, ADO pune la dispoziie obiectul Recordset. El are i alte facilitai care permit obinerea si vizualizarea seturilor de linii sau articole din baza de date. Obiectul Recordset menine poziia fiecrui articol returnat de o interogare, ceea ce va permite parcurgerea secvenial a articolelor. Aplicaiile de pe Internet mai performante, nglobeaz att obiectul Connection pentru stabilirea de legturi, ct i obiectul Recordset pentru manipularea datelor returnate. Prin combinarea funciilor speciale ale acestor obiecte se pot dezvolta aplicaii complexe ale bazelor de date. Urmtorul script pentru server folosete obiectul Recordset pentru executarea unei comenzi SQL SELECT. Comanda SELECT returneaz un set specific de informaii bazate pe constrngerile interogrii. Interogarea conine clauza SQL WHERE pentru a reduce interogarea la un criteriu specific. n acest exemplu clauza WHERE limiteaz interogarea la toate articolele care conin numele Popescu din tabela Clieni.
<% 'Stabilirea conexiunii strConnectionString "Provider=Microsoft.Jet.OLEDB.4.0;Data Source C:\Data\Firma.mdb" Set cnn = Server.CreateObject (ADODB.Connection) cnn.open strConnectionString 'Instanierea obiectului Recordset Set rstClienti = Server.CreateObject("ADODB.Recordset") 'Utilizarea metodei Open pentru Recordset 'i conectarea prestabilit deschiderea unui

= =

strSQL = "SELECT Nume, Prenume FROM Clienti WHERE nume = 'Popescu' " rstClienti.Open strSQL, cnn `Parcurgerea Recordset-ului, afiarea rezultatelor i incrementarea `poziiei articolului curent cu metoda MoveNext Set objNume = rstClienti("Nume") Set objPrenume = rstClienti("Prenume") Do Until rstClienti.EOF Respose.Write objNume & " " objPrenume & "<BR rstClienti.MoveNext Loop %>

n exemplul anterior, obiectul Connection stabilete conectarea cu baza de date, iar obiectul Recordset folosete aceiai conectare pentru obinerea rezultatelor din baza de date. Metoda este avantajoas atunci cnd se dorete configurarea precis a legturii cu baza de date. De exemplu, pentru a putea specifica timpul de ateptare pentru ncercarea conectrii fr abandonare, se va folosi obiectul Connection. Pentru stabilirea unei legturi normale cu setri obinuite, se poate utiliza metoda Open a obiectului Recordset.
<% strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\Data\Firma.mdb" strSQL = "SELECT Nume, Prenume FROM Clienti WHERE Nume = `Popescu` " Set rstClienti = Server.CreateObject("ADODB.Recordset") `Deschiderea unei conectari cu metoda Open i utilizarea irului de `caractere pentru conectare rstClienti.Open strSQL, strConnectionString `Parcurgerea Recordset-ului, afiarea rezultatelor `i incrementarea poziiei articolului curent cu metoda MoveNext Set objNume = rstClienti("Nume") Set objPrenume = rstClienti("Prenume") Do Until rstClienti.EOF Respose.Write objNume & " " objPrenume & "<BR>"

rstClienti.MoveNext Loop %>

O conectare se nchide implicit dup terminarea execuiei. nchiderea conectrilor se poate efectua i explicit, dac ele nu mai sunt necesare la un moment dat; nchiderea acestor conectri vor conduce la reducerea cererilor ctre baza de date, deci a ncrcrii serverului. Pentru a ncheia explicit o conexiune, se va folosi metoda Close a obiectului Connection. Urmtorul script deschide i nchide explicit o conexiune la o baz de date Access:
<% strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = _ C:\Data\Firma.mdb" Set cnn=Server.CreateObject ("ADODB.Connection") cnn.Open strConnectionString cnn.Close %>

n continuare este prezentat un alt exemplu n care baza de date utilizat conine o tabel denumit Studenti este realizat n Microsoft Access (figura 4.4.). Ea conine o list de studeni care au susinut un anumit examen i notele obinute la acel examen.

Figura 4.4. nregistrrile tabelei Studenti

Se va realiza un script ASP care afieaz lista studenilor. Scriptul ASP realizat este unul minimal i va realiza trei operaii: conectarea la

baza de date, interogarea bazei de date i prelucrarea informaiilor obinute ca urmare a interogrii. Conectarea la baza de date este o operaie care se realizeaz de ctre sistem utilizatorul fiind responsabil doar pentru furnizarea parametrilor de conectare(numele bazei de date i driver). Interogarea bazei de date se realizeaz utiliznd limbajul SQL i se face n baza unei cereri SQL construite de realizatorul scriptului Prelucrarea informaiilor returnate de cererea de cutare i afiarea lor. Se observ c secvenele de cod ASP sunt marcate cu <% %>. n felul acesta serverul poate s le recunoasc i sa le ruleze. Ele sunt plasate printre secvene de cod HTML care sunt ignorate de interpretorul ASP i sunt trimise mai departe spre navigator fr nici o prelucrare.
<html> <head> <title>Note studenti</title> </head> <body> <div align="center"><font size="8"> Note Studenti</font> <br> <br> <% //Se creaza obiectul conexiune la baza de date set myconn = server.createobject("adodb.connection") //Se presupune ca baza de date se afla in sub-directorul db dbpath = server.mappath("/db") //Secventa de conectare cString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & dbpath & "\studenti.mdb" myconn.open(cString) set result = server.createobject("adodb.recordset") //Interogarea bazei de date sql = "SELECT * FROM studenti" set result = myconn.execute(sql) //Afisarea rezultatelor %> <table border="1"> <tr> <td><b>Nume</b></td>

</tr> <% while not result.EOF response.write("<tr>") response.write("<td>" & response.write("<td>" & response.write("<td>" & response.write("<td>" & response.write("</tr>") result.movenext() wend %> </table> </div> </body> </html>

<td><b>Prenume</b></td> <td><b>Grupa</b></td> <td><b>Nota</b></td>

result("nume") & "</td>") result("prenume") & "</td>") result("nota") & "</td>") result("grupa") & "</td>")

Figura 4.5. Rezultatele rulrii scriptului

n cazul n care n tabela Studenti a bazei de date sunt adugate noi nregistrri (pe msur ce sunt corectate lucrrile), la accesarea URLului i rencrcarea paginii n navigator, modificrile se vor reflecta imediat.