Sunteți pe pagina 1din 121

UNIVERSITATEA TITU MAIORESCU FACULTATEA DE INFORMATICA

TEHNOLOGII WEB
Mironela Prnu
- 2010 1

Cuprins Modulul I. CREAREA PAGINILOR WEB CU HTML Modulul II. JAVASCRIPT Modulul
III. CONSTRUIREA DOCUMENTELOR XML Modulul IV. PHP i MySQL Modulul V. Dezvoltarea
si apelarea servleturilor Bibliografie Modele bilete examen
Nota final care se va acorda fiecrui student, va conine urmtoarele componente n proce
ntele menionate: - examen final 60% - lucrari practice/ proiect, etc. 30% - teste
pe parcursul semestrului 10% Conditia de participare la examen, este ca fiecare
student, sa realizeze un site, care va cuprinde minim 3 pagini pentru fiecare mod
ul (Html, JavaScript, XML, Php si MySql). Codul sursa al paginilor, vor contine
si comentariile corespunzatoare.
2

Modulul I. CREAREA PAGINILOR WEB CU HTML


Crearea unei pagini Web folosind HTML presupune: - Editarea i salvarea fiierului c
u extensia .html sau .htm folosind: - un editor de texte obinuit (Notepad, Wordpa
d, Word, etc.); - un editor de texte dedicat (Front Page, Dreamwaver, Homesite,
HotDog, HotMetal, etc.) - Rezolvarea referinelor coninute n pagina Web (legturi, ima
gini, sunete, aplicaii Java, etc.) Dup cum ne putem da seama nc din denumirea sa, HT
ML-ul nu este un limbaj de programare ci mai degrab un limbaj de marcare a textulu
i, un set de coduri speciale care se insereaz ntr-un text, pentru a aduga informaii d
espre formatare i despre legturi. Aceast marcare a textului se face cu ajutorul uno
r tag-uri (marcaje, etichete). Un tag este introdus ntotdeauna ntre paranteze ungh
iulare, sub forma: <nume_tag atribut1=valoare1 atribut2=valoare2 > Marcajele html po
t avea sau nu i o form de nchidere: </nume_tag> Marcajele html se aplic unui text sa
u chiar altor marcaje prin cuprinderea lor ntre forma de deschidere i forma de nchi
dere. Spre exemplu, marcajul <HTML> indic browser-ului c documentul este scris i fo
rmatat n limbajul HTML. Forma de nchidere este </HTML>. De reinut faptul c browser-e
le Web ignor formatrile aplicate textului cu ajutorul procesoarelor de texte valab
ile fiind doar formatrile aplicate cu ajutorul tag-urilor html. Un fiier html este
de obicei mprit din motive de organizare, n dou seciuni: - antetul (header-ul) care c
onine informaii introductive de formatare a documentului. Este demarcat de forma d
e deschidere i forma de nchidere a marcajului <HEAD> </HEAD>. Informaiile cuprinse d
e acest marcaj nu apar n pagina Web. - corpul efectiv al documentului adic ceea ce
este vizualizat n fereastra browser-ului este cuprins ntre marcajele <BODY> i </BO
DY>. Observaie: O etichet poate fi scris att cu litere mari, ct i cu litere mici. Inse
rarea unui titlu pentru pagina web Un lucru subtil dar simplu pe care l putem fac
e este s inserm un titlu pentru o pagin Web, titlu ce va fi afiat n bara de titlu a b
rowser-ului folosit. Acest titlu se poate introduce cu ajutorul marcajului <TITL
E> </TITLE>. Acestea vor fi introduse n interiorul marcajelor <HEAD> </HEAD>, ca n
exemplul: <html> <head> <title> Prima mea pagin Web </title> </head> <body> My fi
rst page ! Prima mea pagina ! </body> </html> Sfritul de linie Dup cum se observ, ca
racterele enter , tab i spaiile multiple sunt ignorate de ctre browser. Trecerea pe o
inie nou se face prin inserarea marcajului <br> (line break). Nu are form de nchidere
. Introducerea unui spaiu se poate face prin construcia: &nbsp;. Culoarea de fond i
culoarea textului O culoare poate fi precizata n doua moduri: - Printr-un nume d
e culoare. Sunt disponibile cel puin 16 nume de culori: aqua, black, fuchsia, gra
y, green lime, maroon, navy, olive, purple, red, silver, teal, white i yellow.
3

Prin construcia " #rrggbb " unde r (red), g (green), sau b (blue) sunt cifre hexa
zecimale i pot lua valorile: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, A, b, B, c, C, d, D
, e, E, f, F; se pot defini astfel 65536 de culori. De exemplu, construcia #ff000
0 definete culoarea roie (red), #00ff00 definete culoarea verde (green), #000000 re
prezint negru, iar #ffffff reprezint alb. Culoarea fondului paginii Web se stabilet
e n cadrul etichetei <body> prin atributul bgcolor. Culoarea textului paginii Web
se stabilete n cadrul etichetei <body> prin atributul text. Urmtorul exemplu prezi
nt o pagina cu fondul de culoare albastra i textul de culoare alb. <html> <head> <t
itle>atribute multiple </title> </head> <body bgcolor=blue text=white> Fond de culoa
re albastra si text de culoare alba. </body> </html> Stiluri pentru blocurile de
text Unui text i se pot aplica diverse stiluri prin folosirea marcajelor: <b>..
.</b> - bold, ngroat <i>...</i> - italic, nclinat <u>...</u> - underline, subliniat
<sub>...</sub> - subscript <sup>...</sup> - superscript <s>...</s>, <strike></st
rike> - strike, tiat <html> <head> <title>Stiluri pentru blocuri de text </title>
</head> <body> <b>Text scris cu caractere ingrosate.</b><br> <i>Text scris cu ca
ractere italice.</i> <br> n aceasta linie <sup>sus</sup> este superscript iar <su
b>jos</sub> este subscirpt.<br> <strike>Aceasta linie este n intregime sectionata
de o linie orizontala.</strike> <br> n aceasta linie urmatorul cuvant este <u>su
bliniat</u>, iar cuvantul <s>strike</s> sectionat. </body> </html>
Formatarea textului
Blocuri paragraf Cu ajutorul etichetei paragraf <p> este posibil trecerea la o l
inie noua i permite: - inserarea unui spaiu suplimentar nainte de blocul paragraf;
4

inserarea unui spaiu suplimentar dup blocul paragraf, daca se folosete delimitatoru
l </p> (acesta fiind opional); - alinierea textului cu ajutorul atributului align
, avnd valorile posibile " left ", "center " , " right "i "justify" <html> <head>
<title> Blocuri paragraf</title></head> <body> Prima linie <p> Linie generata de
un paragraf (implicit paragraful este aliniat la stanga). <p align="right"> Par
agraf aliniat la dreapta.Paragraf aliniat la dreapta.Paragraf aliniat la dreapta
.Paragraf aliniat la dreapta. Paragraf aliniat la dreapta.Paragraf aliniat la dr
eapta.Paragraf aliniat la dreapta. <p align="center"> Paragraf aliniat n centru.P
aragraf aliniat n centru.Paragraf aliniat n centru.Paragraf aliniat n centru. Parag
raf aliniat n centru.Paragraf aliniat n centru.Paragraf aliniat n centru. </body></
html> Blocuri de titlu Intr-un text titlurile (headers) de capitole pot fi intro
duse cu ajutorul etichetelor <h1>, <h2>, <h3>, <h4>, <h5>, <h6>. Toate aceste et
ichete se refera la un bloc de text i trebuie nsoite de o eticheta de ncheiere simil
ara. Aceste etichete accepta atributul align pentru alinierea titlului blocului
de text la stanga (n mod prestabilit ) , n centru i la dreapta. Tag-ul <h1> permite
scrierea unui titlu cu caractere mai mari i aldine, pe cnd <h6> folosete caractere
le cele mai mici . <html> <head> <title> Blocuri de titlu</title></head><body> <
h1 align="center"> Titlu de marime 1 aliniat n centru </h1> <h2 align="right"> Ti
tlu de marime 2 aliniat la dreapta. </h2> <h4> Titlu de marime 4 aliniat la stan
ga (implicit) </h4> <h6> Titlu de marime 6</h6> </body></html>
Blocuri titlu
Linii orizontale Intr-o pagina Web pot fi inserate linii orizontale. Acest lucru
se face cu ajutorul etichetei <hr>. Pentru a configura o linie orizontala se ut
ilizeaz urmtoarele atribute ale etichetei <hr>: - align permite alinierea liniei o
rizontala. Valorile posibile sunt " left " ," center " i " right "; - width permi
te alegerea lungimii liniei;
5

- size permite alegerea grosimii liniei; - noshade cnd este prezent definete o lin
ie fr umbra; - color permite definirea culorii liniei . <html><head><title> Linii
orizontale</title> </head><body> <h1 align="center"> Tipuri de linii orizontale
</h1> O linie implicita alinierea stanga, latime 100%, grosime 2 cu umbra. <hr>
Urmeaza o linie aliniata n centru , de latime 50%, grosime 5 pixeli , fara umbra.
<hr align="center" width="50%" size="5" noshade> Urmeaza o linie aliniata la dr
eapta , de latime 150 de pixeli, grosime 12 pixeli , de culoare rosie. <hr align
="right" width=150 size=12 color="red"> </body></html>
Linii orizontale
Blocuri <center> Blocul introdus de etichetele <center>...</center> aliniaz centr
at toate elementele pe care le conine. Fonturi Un font este caracterizat de urmtoa
rele atribute: - culoare (stabilit prin atributul color); - nume (stabilit prin a
tributul face); - mrime (definit prin atributul size); Toate aceste atribute aparin
etichetei <font>, care permite inserarea de blocuri de texte personalizate. Fam
ilia fontului Pentru a scrie un text intr-o pagina pot fi folosite mai multe fon
turi (stiluri de caractere). Exista cinci familii generice de fonturi care sunt
de regul disponibile pe toate calculatoarele utilizatorilor: serif, sans serif, c
ursive, monospace i fantasy. Tipul de font necesar poate fi stabilit prin atribut
ul face al etichetei font. Pot fi introduse mai multe fonturi separate prin virg
ula. n acest caz browserul va utiliza primul font din list instalat pe calculatoru
l client. Mrimea fontului Pentru a stabili mrimea unui font se utilizeaz atributul
size al etichetei . Valorile acestui atribut pot fi: - 1, 2, 3, 4, 5, 6, 7 ( 1 p
entru cel mai mic font i 7 pentru cel mai mare); - +1, +2, etc. pentru a mari dim
ensiunea fontului cu 1, 2, etc. fata de valoarea curenta; - -1, -2, etc. pentru
a micora dimensiunea fontului cu 1, 2, etc. fata de valoarea curenta. <html> <hea
d> <title> Caracteristicile fontului</title> </head>
6

<body> Aceste linie este scrisa cu caractere normale. <br> <font color="red">Ace
asta linie este rosie.</font> <br>Aici<font color="green">fiecare</font> <font c
olor="blue">cuvant</font> <font color="yellow">are</font> <font color="cyan">alt
a</font> <font color="#3478fa">culoare.</font> <br><font face="monospace">Linie
scrisa cu caractere monospatiate.</font> <br> <font face="arial">Linie scrisa cu
caractere arial.</font> Aceste linie este scrisa cu caractere normale. <br> <fo
nt size="5">Fonturi de marime 5.</font> <br> <basefont size="4">Fonturi de marim
e 4.</font> <br> <font size="-3">Fonturi de marime 1.</font> <br> <font size="+2
">Fonturi de marime 4.</font> <br> </body> </html>
Configurarea fonturilor
Liste Unul din cele mai obinuite elemente din documentele cu mai multe pagini est
e un set de definiii, referine sau indexuri. Glosarele sunt exemple clasice n acest
sens; cuvintele sunt listate n ordine alfabetica, urmate de definiii ale termenil
or respectivi. n HTML, ntreaga seciune a unui glosar va fi gestionata printr-o list
a de definiii, care este inclusa intr-o pereche de marcaje de lista de definiii: O
bservaii: <dl>...</dl> (de la "definition list" = lista de definiii)
Un termen al listei este iniiat de eticheta
<dt> (de la "definition term" = termen definit); Definiia unui termen este iniiata
de eticheta <dd> (de la "definition description" =
descrierea definiiei); - Definiia unui termen ncepe pe o linie noua i este indentat;
<html><head><title>listex_1</title></head> <body><h1 align=center>O lista de def
initii</h1><hr> <dl> Glosar de termeni de World Wide Web <dt><b>hypertext</b> <d
d>- o interconectare Web de informatii de tip text, n care orice cuvant sau fraza
poate face legatura catre un alt punct din document sau catre un alt document <
dt><b>date</b> <dd>- fluxul nesfarsit de materiale care apar pe Internet, spre d
eosebire de informatii care sunt
7

date cu un anumit inteles sau valoare <dt><b>informatie</b> <dd>- sub-setul de d


ate care are efectiv semnificatie i care este util la momentul curent </dl> </bod
y></html>
List de definiii
Liste neordonate O lista neordonat este un bloc de text delimitat de etichetele c
orespondente <ul>...</ul> (" ul " vine de la " unordered list " = lista neordona
t). Fiecare element al listei este iniiat de eticheta <li> (list item). Lista va f
i indentat fata de restul paginii Web i fiecare element al listei ncepe pe un rnd no
ua. Tag-urile <ul> ... </ul> i <li> pot avea un atribut type care stabilete caract
erul afiat n faa fiecrui element al listei. Valorile posibile al acestui atribut sun
t : o "circle" (cerc) "disc" (disc plin) (valoarea prestabilita); "square" (patr
at) <html> <head><title>listex_2</title></head> <body><h1 align=center>O lista n
eordonata</h1><hr> Glosar de termeni de World Wide Web <ul typesquare>Culori uzuale
disponibile prin nume <li>Black <li>White <li>Red </ul> </body> </html>
List neordonat
Liste ordonate
8

O lista ordonata de elemente este un bloc de text delimitat de etichetele coresp


ondente <ol>...</ol> ("ol" vine de la "ordered list" = lista ordonata). Fiecare
element al listei este introdus de eticheta <li> (list item). Lista va fi indent
at fa de restul paginii Web i fiecare element al listei ncepe pe un rnd nou. Tag-urile
<ol> i <li> pot avea un atribut type care stabilete tipul de caractere utilizate
pentru ordonarea listei. Valorile posibile sunt: - " A " pentru ordonare de tipu
l A , B , C , D etc.; - " a " pentru ordonare de tipul a , b , c , d etc.; - " I
" pentru ordonare de tipul I , II , III , IV etc.; - " i " pentru ordonare de t
ipul i , ii , iii , iv etc.; - " 1 " pentru ordonare de tipul 1 , 2 , 3 , 4 etc
Urmtorul exemplu este o lista ordonata cu cifre romane : <html> <head><title>list
ex_5</title></head> <body><h1 align=center>O lista ordonata cu cifre romane</h1>
<hr> <ol type="I">Culori uzuale disponibile prin nume <li>Black <li>White <li>Re
d <li>Green <li>Blue <li>Yellow <li>Purple <li>Aqua </ol> </body> </html>
List ordonat

Tag-ul <ol> poate avea un atribut start care stabilete valoarea iniiala a secvenei
de ordonare. Valoarea acestui atribut trebuie sa fie un numr ntreg pozitiv. Legturi
Legaturile (link-urile) reprezint partea cea mai important a unei pagini Web. Ele
transform un text obinuit n hipertext sau hiperlegatura, care permite trecerea rap
ida de la o informaie aflata pe un anumit server la alt informaie memorat pe un alt
server aflat oriunde n lume. Legturile sunt zone active ntr-o pagin Web, adic zone de
pe ecran sensibile la apsarea butonului stng al mouse-ului. O legatura catre o pa
gina aflata n acelai director O legtur ctre o pagina aflata n acelai director se forme
z cu ajutorul etichetei <a> (de la "anchor"=ancora). Pentru a preciza pagina indi
cata de legtur se utilizeaz un atribut al etichetei <a> numit href, care ia valoare
numele fiierului HTML aflat n acelai director. Zona activ care devine sensibil la aps
area butonului stng al mouse-ului este formata din textul cuprins intre etichetel
e <a>...</a>. Prezenta etichetei de sfrit </a> este obligatorie. <html><head> <tit
le> Comutarea intre doua pagini</title> </head> <body>
9

<h3>Pagina 1 </h3> <a href=" ex_1.14b.html"> Link catre pagina 2 </a> </body></h
tml> O legtur ctre o pagina aflata pe acelai disc local Daca pagina referit se afla p
e acelai disc local, dar ntr-un alt director atunci pentru a preciza poziia ei n str
uctura de directoare se poate folosi adresarea relativ plecnd de la directorul cur
ent .
Legturi prin adresare relativ

Ancore ntr-o pagin foarte lung pot exista puncte de reper ctre care se definesc legtu
ri. O ancora se definete de asemenea prin eticheta <a>. Pentru a defini ancora se
utilizeaz atributul name care primete ca valoare un nume atribuit ancorei (de exe
mplu "leg1"). Pentru a insera o legtur catre "leg1" definit n aceeai pagina se utiliz
eaz eticheta <a> avnd atributul href de valoare "#leg1". Pentru a introduce o legtu
r ctre o ancor definit n alt document (alt pagin) aflat n acelai director, atributul
primete o valoare de forma "nume_fisier.html#nume_ancora". <html> <head> <title>
Ancore definite n acelasi document si n alt document</title> </head> <body> <h3>A
ncore definite n acelasi document si n alt document </h3> <a href="#ancora1">Link
catre ancora 1 </a> <a href="legaturi.html#anc">Link catre o ancora din alt docu
ment </a> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><b
r ><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><b r><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>< br><br><br><br
><br><br><br><br> <a name="ancora1">ancora 1</a> </body> </html> Alegerea culori
lor pentru legaturi n mod prestabilit se utilizeaz trei culori pentru legaturi: o culoare pentru legaturile nevizitate (nu s-a efectuat nici un clic pe ele) - o
culoare pentru legaturile vizitate (s-a efectuat cel puin un clic pe ele) - o cu
loare pentru legaturile active (cnd se execut clic i se ine apsat). Aceste atribute p
ot fi stabilite cu ajutorul a trei atribute ale etichetei <body>: link pentru le
gaturile nevizitate; vlink pentru legaturile vizitate; alink pentru legaturile a
ctive. Valorile pe care le pot lua aceste atribute sunt culori definite prin num
e sau conform standardului RGB. <html> <head>
10

<title> Culori pentru lagaturi</title> </head> <body link="blue" vlink="green" a


link="red"> <h3>Setarea culorilor pentru link-uri:<br>rosu pentru legaturi activ
e, verde pentru legaturi vizitate si albastru pentru legaturi nevizitate </h3> <
a href=leg_ex1.html> Link catre pagina 1 <br> <a href=leg_ex2.html> Link catre p
agina 2 <br> <a href=leg_ex11.html> Link catre pagina 11 </a> </body> </html> Ut
ilizarea potei electronice Intr-o pagina Web se poate afla legaturi care permit l
ansarea n execuie a aplicaiei de expediere a mesajelor electronice. Pentru aceasta
se utilizeaz n construcia adresei URL cuvntul mailto: urmat de o adresa e-mail valid
a. Pentru ca exemplul urmtor sa funcioneze trebuie ca: - pe calculator sa fie inst
alat o aplicaie de expediere a mesajelor electronice (Outlook Express, Microsoft
Outlook etc.) - adresa sa fie valida i calculatorul sa fie conectat la Internet.
<html> <head> <title> Expediere de mesaje electronice</title> </head> <body> <h3
>Expediere de mesaje electronice</h3><br> <a href="mailto:student@yahoo.com"> Me
saje catre autorul paginii </a> </body> </html> Legaturi ctre fiiere oarecare O pa
gina Web poate conine legaturi ctre orice tip de fiiere aflate pe orice servere din
Internet. Pentru aceasta se utilizeaz eticheta <a> avnd valoarea atributului href
egala cu adresa URL a fiierului destinaie. Atunci cnd se efectueaz clic pe legtura d
in exemplul urmtor browserul va deschide o caseta de dialog - File download - car
e va permite: - sa salvai pe discul local fiierul - sa lansai n execuie aplicaia capab
ila sa interpreteze corect fiierele de tipul respectiv <html> <head> <title> Lega
turi catre fiiere oarecare</title> </head> <body> <h3>Legaturi catre fisiere oare
care</h3><br> <a href="fisier.zip">Link catre fisierul fisier.zip </a> </body> <
/html> Atributul target Dac dorim ca pagina solicitat s fie ncrcat ntr-o alt fereastr
cea curent, atunci trebuie lansat n execuie o nou instan a browserului care va conin
oua pagin. Acest lucru se
11

realizeaz folosind atributul target al etichetei <a>, care primete ca valoare un n


ume. Numele ferestrei poate fi folosit ca valoare pentru atributul target i pentr
u alte legturi caz n care paginile respective vor fi ncrcate n aceeai fereastr. Atribu
ul target accept i alte valori cum ar fi _blank caz n care pagina se va ncrca ntr-o fe
reastr nou, anonim (nu poate fi folosit pentru ncrcarea altor pagini). <html> <head> <
title> Atributul target</title> </head> <body> <h3>Atributul target</h3><br> <a
href="ex_1.1.html " target="fereastra"> legatura 1<a> <br> <a href="ex_1.2.html
" target="fereastra"> legatura 2<a> </body> </html> Imagini Imaginile sunt stoca
te n fisiere cu diverse formate. Formatele acceptate de browsere pentru fiierele i
magine sunt: - GIF (Graphics Interchange Format) cu extensia .gif; - JPEG (Joint
Photographic Experts Group) cu extensia .jpeg sau .jpg; - XPM (X PixMap) cu ext
ensia .xmp; - XBM (X BitMap) cu extensia .xbm; - BMP (BitMap) cu extensia .bmp (
numai cu Internet Explorer); - TIFF (Tagged Image File Format) cu extensia .tif
sau .tiff; Daca imaginea se afla n acelai director cu fisierul HTML care face refe
rire la imagine, atunci adresa URL a imaginii este formata numai din numele imag
inii, inclusiv extensia. < img src=imagine.gif> Atributul alt permite afiarea unui
text alternativ n locul imaginii dac aceasta nu este ncrcat sau lng mouse atunci cnd
sta este plasat peste imagine. <html><head><title> O pagina cu imagine</title></
head> <body> O pagina care contine o imagine
<img src="poza.jpg" alt=Imagine ...........> Text dupa imagine
</body></html> Chenarul i dimensionarea unei imagini Daca dorii sa adugai un chenar n
jurul imaginii, folosii atributul border al etichetei <img>. Valorile acestor at
ribute sunt numere ntregi pozitive. O imagine are anumite dimensiuni pe orizontal i
vertical, stabilite n momentul crerii ei. Daca nu se cere altfel, aceste dimensiun
i sunt respectate n momentul afirii ei n pagina Web. Dimensiunile prestabilite ale u
nei imagini pot fi modificate prin intermediul atributelor width i height. Ca val
ori, cele dou atribute, pot primi un numr de pixeli sau procente din limea i respecti
v nlimea ferestrei <html> <head> <title> Imagine cu chenar si redimensionata</title
> </head>
12

<body>
O imagine cu chenar i dimensiuni de 200 pixeli X 15 %
<img src="poza.jpg" border="5" width="350" height="15%"> Text dupa imagine.
</body> </html>
Alinierea unei imagini
Alinierea unei imagini se poate face prin intermediul atributului valori:
align care poate lua urmtoarele
- "left" - aliniere la stnga; celelalte componente sunt dispuse pe n partea dreapt
a; - "right" - aliniere la dreapta; celelalte componente sunt dispuse pe n partea
stnga; - "top" - aliniere deasupra; partea de sus a imaginii se aliniaz cu partea
de sus a textului ce precede imaginea; - "middle" - aliniere la mijloc; mijlocu
l imaginii se aliniaz cu linia de baz a textului ce precede imaginea. - "bottom" aliniere la baza; partea de jos a imaginii se aliniaz cu linia de baz a textului<
html>
<head> <title> Alinierea unei imagini</title> </head> <body> Alinieri pe vertica
la:<br><br><br><br><br> Sus<img src="w3.gif" align="top"><br><br><br> La mijloc:
<img src="w3.gif" align="middle"><br><br><br> Jos: <img src="w3.gif" align="bot
tom"> </html> Alinierea textului n jurul imaginii
Atributele hspace i vspace precizeaz distanta n pixeli pe orizontal, respectiv pe ve
rtical,
13

dintre imagine i restul elementelor din pagina.


<html> <head> <title> Alinierea textului</title> </head> <body> <h4>Imagine alin
iat la stanga inconjurata de text la distanta de 30 de pixeli. </h4><p> Text ina
inte de imagine.Text inainte de imagine.Text inainte de imagine.Text inainte de
imagine. Text inainte de imagine.Text inainte de imagine.Text inainte de imagine
.Text inainte de imagine. <img src="poza.jpg" align="left" width=200 height=200
hspace="30" vspace="30"> Text dupa imagine.Text dupa imagine.Text dupa imagine.T
ext dupa imagine.Text dupa imagine. Text dupa imagine.Text dupa imagine.Text dup
a imagine.Text dupa imagine.Text dupa imagine. </body> </html> Imagini pentru fo
ndul unei pagini O imagine poate fi utilizata pentru a stabili fondul unei pagin
i Web. n acest scop se folosete atributul background al etichetei <body>, avnd ca v
aloare adresa URL a imaginii. Imaginea se multiplica pe orizontala i pe verticala
pn umple ntregul ecran.
Atributul bgproperties=fixed menine imaginea fix la realizarea unei defilri n pagin.
<html> <head> <title> Pagina cu imagine de fond</title> </head> <body background
="w3.gif" bgproperties=fixed> <b><font color=red> text text text text text text
text text text text text text text text text text text text text text text text
text text text text text text text text text text text text text text text text
text text text text text text text text text text text text text text text text
text text text text text text text text text text text text text text text text
text text text text text text text text text text text text text text text text
text text text text text text text text text text text text text text text text
text text text text </body></html> Imagini folosite ca legturi Pentru a utiliza i
maginea "poza.jpg" drept legatura catre pagina ex_1.1.html utilizam sintaxa:
<a href ="ex_1.1.html"><img src= "poza.jpg"></a>
n mod prestabilit, imaginea utilizat pe post de zon activ este nconjurat de un chenar
avnd culoarea unei legaturi. Daca stabilim pentru atributul border al etichetei <
img> valoare 0 acest chenar dispare. Tabele Tabelele ne permit sa crem o reea dreptu
nghiular de domenii, fiecare domeniu avnd propriile opiuni pentru culoarea fondului
, culoarea textului, alinierea textului etc. Pentru a insera un tabel se foloses
c etichetele corespondente
14

<table> </table> Un tabel este format din rnduri. Pentru a insera un rnd ntr-un tab
el se folosesc etichetele <tr> ("table row"= rnd de tabel). Folosirea etichetei de
sfrit este opional. Un rnd este format din mai multe celule ce conin date. O celul de
date se introduce cu eticheta <td>. <html><head><title>tabel</title></head> <bod
y><h1 align=center>Un tabel simplu format din 4 linii si 2 coloane</h1><hr> <tab
le border> <tr> <td>cell 11 <td>cell 12 <tr> <td>cell 21 <td>cell 22 <tr> <td>ce
ll 31 <td>cell 32 <tr> <td>cell 41 <td>cell 42 </table> </body></html>
n mod prestabilit, un tabel nu are chenar. Pentru a aduga un chenar unui tabel, se
utilizeaz atributul border. Acest atribut poate primi ca valoare orice numr ntreg
(inclusiv 0) i reprezint grosimea n pixeli a chenarului tabelului. Dac atributul bor
der nu este urmata de o valoare atunci tabelul va avea o grosime prestabilita eg
al cu 1 pixel, o valoare egal cu 0 semnific absena chenarului. Cnd atributul border a
re o valoare nenul chenarul unui tabel are un aspect tridimensional. Alinierea ta
belului Pentru a alinia un tabel intr-o pagina Web se utilizeaz atributul align a
l etichetei table cu urmtoarele valori posibile: "left" (valoarea prestabilita),
"center", "right". Definirea culorilor de fond pentru un tabel Culoarea de fond
se stabilete cu ajutorul atributului bgcolor, care poate fi ataat ntregului tabel p
rin eticheta table, unei linii prin eticheta tr sau celule de date prin eticheta
td. Valorile pe care le poate primi bgcolor sunt cele cunoscute pentru o culoar
e. Dac n tabel sunt definite mai multe atribute bgcolor, atunci prioritatea este u
rmtoarea: celul, linie, tabel. <html> <head><title>culoare tabel</title></head> <b
ody><h1 align=center>Un tabel simplu colorat</h1><hr> <table border="3" bgcolor=
"green"> <tr> <td>verde 11 <td bgcolor="red">rosu 11 <tr bgcolor="blue"> <td>alb
astru 21 <td bgcolor="yellow">galben 22 <tr bgcolor="cyan"> <td>cell 31 <td>cell
32 <tr> <td>cell 41 <td bgcolor="white">cell 42 </table> </body> </html>
15

Culoarea unui table


Dimensionarea celulei unui tabel Distana dintre dou celule vecine se definete cu aj
utorul atributului cellspacing al etichetei table. Valorile acestui atribut pot
fi numere ntregi pozitive, inclusiv 0, i reprezint distana n pixeli dintre dou celule
vecine. Valoarea prestabilita a atributului cellspacing este 2. Distana dintre ma
rginea unei celule i coninutul ei poate fi definit cu ajutorul atributului cellpadd
ing al etichetei table. Valorile acestui atribut pot fi numere ntregi pozitive. V
aloarea prestabilita a atributului cellpadding este 1 . <html> <body> <h4 align=
center>Un tabel cu distana ntre celule de 10 pixeli iar distana ntre celule i continu
t de 20 pixeli</h1><hr> <table cellspacing=10 cellpadding=20 border=5 align=cent
er> <tr> <td> 11 <td> 12 <tr> <td>21 <td> 22 </table> </body></html>
Distana ntre celule i coninut

Dimensionarea unui tabel Dimensiunile unui tabel - limea i nlimea - pot fi stabilite e
xact prin intermediul a dou atribute, width i height, ale etichetei table. Valoril
e acestor atribute pot fi: - numere ntregi pozitive reprezentnd limea respectiv nlimea
pixeli a tabelului; - numere ntregi ntre 1 i 100, urmate de semnul %, reprezentnd f
raciunea din limea i nlimea total a paginii. n exemplul urmtor se utilizeaz un tru
rmite afiarea intr-o pagina Web a unui text poziionat n centrul paginii. <html> <he
ad><title>text centrat</title></head> <body> <table width="100%" height="100%">
<tr> <td align="center">
16

<h2>Text centrat.</h2> </table> </body> </html> Alinierea coninutului unei celule


Alinierea pe orizontala a coninutului unei celule se face cu ajutorul atributulu
i align care poate lua valorile: "left" (la stnga),"center" (centrat , valoarea p
restabilita ), "right" (la dreapta). Alinierea pe verticala a coninutului unei ce
lule se face cu ajutorul atributului valign care poate lua valorile: "bottom" (j
os), "middle" (la mijloc, valoarea prestabilita), "top" (sus). Aceste atribute p
ot fi ataate att etichetei tr pentru a defini tuturor elementelor celulelor unui rn
d, ct i etichetelor td pentru a stabili alinierea textului ntr-o singur celul. <html>
<head><title>alinierea n celule</title></head> <body><h3 align=center>Un tabel a
vand continutul celulelor aliniate</h3> <table border width="300" height="300">
<tr align="right"><td>Aici <td>alinierea<td>este centru<td>dreapta <tr> <td alig
n="left">stanga <td align="center">centru<td valign="top">sus <td valign="bottom
">jos <tr align="left"><td>aici<td>alinierea <td>este centru<td>stanga (implicit
a) </table> </body></html> Dimensionarea exacta a celulelor unui tabel Dimensiun
ea unei celule poate fi stabilit exact cu ajutorul a doua atribute ale acestor et
ichete: width pentru lime i height pentru nlime. Valorile posibile ale acestor atribut
e sunt: - numere ntregi pozitive (inclusiv 0) reprezentnd dimensiunea n pixeli a limi
i, respectiv a nlimii unei celule; - procente din limea , respectiv nlimea tabelului.
bele de forme oarecare Un tabel trebuie privit ca o reea dreptunghiular de celule.
Cu ajutorul a doua atribute ale etichetelor td o celul se poate extinde peste ce
lule vecine. Astfel: - extinderea unei celule peste celulele din dreapta ei se f
ace cu ajutorul atributului colspan, a crui valoare determina numrul de celule car
e se unific. - extinderea unei celule peste celulele dedesubt se face cu ajutorul
atributului rowspan, a crui valoare determina numrul de celule care se unifica. S
unt posibile extinderi simultane ale unei celule pe orizontala i pe verticala. Ce
lule vide ale unui tabel Daca un tabel are celule vide, atunci aceste celule vor
aprea n tabel fara un chenar de delimitare. n scopul de a afia un chenar pentru cel
ule vide se utilizeaz urmatoarele trucuri: - dupa td se pune &nbsp; - dupa td se
pune<br>. Atribute Internet Explorer pentru tabele Urmtoarele atribute ale etiche
tei table funcioneaz cu Internet Explorer - background permite stabilirea unei ima
gini pentru fondul unui tabel. Primete ca valoare adresa URL a imaginii folosite
pentru fond; - bordercolor permite stabilirea culorii pentru chenarul unui tabel
; - bordercolorlight permite stabilirea culorii feei luminate pentru chenarul 3D
al unui tabel; - bordercolordark permite stabilirea culorii feei ntunecate pentru
chenarul 3D al unui tabel; Atributele frame i rules Atributul frame al etichetei
table permite specificarea prilor din chenarul unui tabel care vor fi afiate. Valor
ile posibile sunt:
17

- void - elimina toate muchiile exterioare ale tabelului; - above - afieaz o muchi
e n partea superioara a cadrului tabelului; - below - afieaz o muchie n partea infer
ioara a cadrului tabelului; - hsides - afieaz cate o muchie n partea superioara i in
ferioara cadrului tabelului; - lhs - afieaz o muchie n partea din stnga a cadrului t
abelului; - rhs - afieaz o muchie n partea din dreapta a cadrului tabelului; - vsid
es - afieaz o muchie n partea din stnga i din dreapta a cadrului tabelului; - box - a
fieaz o muchie pe toate laturile cadrului tabelului; - border - afieaz o muchie pe t
oate laturile cadrului tabelului; Atributul rules permite alegerea unor delimita
tori pentru celulele unui tabel. Valorile posibile sunt: - none - elimina toate
muchiile interioare ale tabelului; - rows - afieaz muchii orizontale intre toate l
iniile tabelului; - cols - afieaz muchii verticale intre toate coloanele tabelului
; - all - afieaz muchii intre toate liniile i coloanele; <html> <head><title>Atribu
te frames si rules</title></head> <body><h1 align=center>Atributele frames si ru
les</h1> <table width="400" frame=box rules=rows cellspacing=10> <tr> <td>cell 1
1 <td>cell 12<td>cell 13 <tr> <td>cell 21 <td>cell 22<td>cell 23 </table> </body
> </html>
Atribute frames i rules pentru un tabel

Cadre n HTML (frames) Cadrele ne permit s definim n fereastra browserului zone n car
e sa fie ncrcate documente HTML diferite. Cadrele sunt definite ntr-un fiier HTML sp
ecial, n care blocul <body>...</body> este nlocuit de blocul <frameset>...</frames
et>. n interiorul acestui bloc, fiecare cadru este introdus prin eticheta <frame>
. Un atribut obligatoriu al etichetei <frame> este src, care primete ca valoare a
dresa URL a documentului HTML care va fi ncrcat n acel cadru. Definirea cadrelor se
face prin mprirea ferestrei pe orizontal sau pe vertical. - mprirea unei ferestre n
numr de cadre pe vertical se face cu ajutorul atributului cols al etichetei <fram
eset>; - mprirea unei ferestre ntr-un numr de cadre pe orizontal se face cu ajutorul a
tributului rows al etichetei <frameset>; Valoarea atributelor cols i rows este o
list de elemente separate prin virgul, care descriu modul n care se face mprirea.
18

Elementele listei pot fi: - un numr ntreg de pixeli; - procente din dimensiunea fe
restrei (numr intre 1 i 99 terminat cu %); - n* care nseamn n pri din spaiul rmas; Ex
lul <frameset cols=200,*,50%,*> nseamn o mprire n 4 cadre pe vertical, dintre care pri
ul are 200 pixeli, al treilea ocup jumtate din spaiul total disponibil, iar al doil
ea i al patrulea ocup n mod egal restul de spaiu rmas disponibil. Exemplu <frameset r
ows=200,1*,50%,2*> nseamn o mprire n 4 cadre, dintre care primul are 200 pixeli , al t
reilea ocup jumtate din spaiul total disponibil, iar al doilea i al patrulea ocup n mo
d egal restul de spaiu rmas disponibil, care se mparte n trei pri egale, al doilea cad
ru ocupnd o parte , iar al patrulea ocupnd 2 pri. Observatii: - dac mai multe element
e din list sunt configurate cu * , atunci spaiul disponibil rmas pentru ele se va mpri
n mod egal. - ntr-un cadru se poate ncrca un document HTML sau poate fi mprit la rnd
su n alte cadre (folosind <frameset>). n exemplul urmtor este creat o pagina Web cu t
rei cadre orizontale. Pentru al doilea cadru valoarea atributului src este adres
a URL a unei imagini <html><head><title>cadre</title></head> <frameset rows="100
,*,20%"> <frame src="p1.html"> <frame src="poza.jpg"> <frame src="p2.html"> </fr
ameset> </html> n exemplul urmtor este creat o pagina Web cu trei cadre mixte. Pent
ru a o crea se procedeaz din aproape n aproape. Mai nti, pagina este mprit n dou ca
tip coloan, dup care al doilea cadru este mprit n doua cadre de tip linie. <html> <hea
><title>cadre</title></head> <frameset cols="20%,*"> <frame src="p1.html"> <fram
eset rows="*,*"> <frame src="p2.html"> <frame src="p1.html"> </frameset> </frame
set> </html>
19

Culori pentru chenarele cadrelor i dimensionarea chenarului unui cadru Pentru a s


tabili culoarea chenarului unui cadru se utilizeaz atributul bordercolor. Acest a
tribut primete ca valoare un nume de culoare sau o culoare definit n conformitate c
u modelul de culoare RGB. Atributul bordercolor poate fi ataat att etichetei <fram
eset> pentru a stabili culoarea tuturor chenarelor cadrelor incluse, ct i etichete
i <frame> pentru a stabili culoarea chenarului pentru un cadru individual. Atrib
utul border al etichetei <frameset> permite configurarea limii chenarelor tuturor
cadrelor la un numr dorit de pixeli. Valoarea prestabilita a atributului border e
ste de 5 pixeli. O valoare de 0 pixeli va defini un cadru fr chenar. n mod prestabi
lit, chenarul unui cadru este afiat i are aspect tridimensional. Afiarea chenarului
unui cadru se poate dezactivata dac se utilizeaz atributul frameborder cu valoare
"no". Acest atribut poate fi ataat att etichetei <frameset> (dezactivarea fiind v
alabila pentru toate cadrele incluse) ct i etichetei <frame> (dezactivarea fiind v
alabil numai pentru un singur cadru). Valorile posibile ale atributului framebord
er sunt: "yes" - echivalent cu 1; "no" - echivalent cu 0; Bare de defilare Atrib
utul scrolling al etichetei <frame> este utilizat pentru a aduga unui cadru o bar
de derulare care permite navigarea n interiorul documentului afiat n interiorul cad
rului. Valorile posibile sunt: - "yes" - barele de derulare sunt adugate ntotdeaun
a; - "no" - barele de derulare nu sunt utilizabile; - "auto" - barele de derular
e sunt vizibile atunci cnd este necesar <html> <head><title>cadre</title></head>
<frameset cols="*,*,*"> <frame src="p1.html" scrolling="yes" noresize> <frame sr
c="p2.html" scrolling="no" noresize> <frame src="p1.html" scrolling="auto" nores
ize> </frameset> </html> Atributul noresize al etichetei <frame> (fr nici o valoar
e suplimentar) dac este prezent, inhib posibilitatea prestabilit a utilizatorului de
a redimensiona cadrul cu ajutorul mouse-ului. Poziionarea documentului ntr-un cad
ru Atributele marginheight i marginwidth ale etichetei <frame> permit stabilirea
distanei n pixeli dintre coninutul unui cadru i marginile verticale, respectiv orizo
ntale ale cadrului. Valori posibile: - numr de pixeli; - procent din limea, respect
iv din nlimea cadrului; <html><head><title>cadre</title></head> <frameset cols="*,*
,*"> <frame src="p1.html">
20

<frame src="p2.html" marginheight=50> <frame src="p1.html" marginwidth=50> </fra


meset> </html>
Poziionarea documentelor n cadre
Cadre interne (n-line) Un cadru intern este specificat prin intermediul blocului
<iframe>...</iframe>. Un cadru intern se introduce ntr-o pagina Web n mod asemntor c
u o imagine aa cum rezulta din urmtorul exemplu: <iframe src="ex_3.1.html" height=
40% width=50%> </iframe> n acest caz, am specificat un cadru intern care are 40%
din nlimea i 50% din limea paginii curente. Atributele acceptate de eticheta <iframe>
sunt n parte preluate de la etichetele <frame> i <frameset>, cum ar fi: src, borde
r, frameborder, bordercolor, marginheight, marginwidth, scrolling, name, noresiz
e; sau de la eticheta <img> vspace, hspace, align, width, height; <html> <head><
title>cadre interne</title></head> <body> <a href="p1.html" target="icadru">Fisi
erul1</a><br> <a href="p2.html" target="icadru">Fisierul2</a><br> <center> <ifra
me width="60%" height="50%" border=2 bordercolor=red name="icadru" src="p1.html"
></iframe></center> </body> </html>
21

Cadre interne

inte pentru legaturi n mod prestabilit, la efectuarea unui clic pe o legtura noua p
agin (ctre care indic legtura) o nlocuiete pe cea curent n aceeai fereastr (acelai
Acest comportament se poate schimba n doua moduri: - prin plasarea n blocul <head>
...</head> a unui element <base> care precizeaz, prin atributul target numele fer
estrei (cadrului) n care se vor ncrca toate paginile noi referite de legaturile din
pagina curenta conform sintaxei: <base target="nume_ferastra/frame_de_baza"> prin plasarea n eticheta <a> a atributului target, care precizeaz numele ferestrei
(cadrului) n care se va ncrca pagina nou referit de legtur, conform sintaxei: <a href
="fiier.html" target="nume fereastra/frame"> ... </a> Valori pentru atributul tar
get Atributul target al etichetei<frame> accepta anumite valori predefinite de o
valoare deosebita pentru creatorii de pagini Web. Aceste valori sunt: "_self" (n
crcarea noii pagini are loc n cadrul curent); "_blank" (ncrcarea noii pagini are loc
intr-o fereastra noua anonima); "_parent" (ncrcarea noii pagini are loc n cadrul p
arinte al cadrului curent daca acesta exista, altfel are loc n fereastra browseru
lui curent); "_top" (ncrcarea noii pagini are loc n fereastra browserului ce contin
e cadrul curent) Formulare Un formular este un ansamblu de zone active alctuit di
n butoane, casete de selecie, cmpuri de editare etc. Formularele sunt utilizate pe
ntru construirea unor pagini Web care permit utilizatorilor s introduc efectiv inf
ormaii i s le transmit serverului. Formularele pot varia de la o simpl caset de text,
pentru introducerea unui ir de caractere pe post de cheie de cutare - element cara
cteristic tuturor motoarelor de cutare din Web - pn la o structur complex, cu multipl
e seciuni, care ofer faciliti puternice de transmisie a datelor. O sesiune cu o pagi
na web ce conine un formular cuprinde urmtoarele etape: - utilizatorul completeaz f
ormularul i l expediaz unui server. - o aplicaie dedicat de pe server analizeaz formul
arul completat i (dac este necesar) stocheaz datele ntr-o baz de date. - dac este nece
sar serverul expediaz un rspuns utilizatorului. Un formular este definit intr-un b
loc delimitat de etichetele corespondente <form> i </form>. Atribute eseniale ale
elementului <form> - atributul action precizeaz ce se va ntmpla cu datele formularu
lui odat ce acestea ajung la destinaie. De regul, valoarea atributului action este
adresa URL a unui script aflat pe un server WWW care primete datele formularului,
efectueaz o prelucrare a lor i expediaz ctre utilizator un raspuns. <form action=htt
p://www.yahoo.com/cgi - bin/nume_fis.cgi>. Script-urile pot fi scrise n limbajele
CGI, Perl, C, PHP, Unix shell etc. - atributul method precizeaz metoda utilizata
de browser pentru expedierea datelor formularului. Sunt posibile urmtoarele valor
i: - get (valoarea implicita). n acest caz ,datele din formular sunt adugate la ad
resa URL precizata de atributul action; nu sunt permise cantiti mari de date (maxi
m 1 Kb)- intre adresa URL i date este inserat un "?". Datele sunt adugate conform
sintaxei: nume_camp = valoare_camp. ntre diferite seturi de date este introdus un
"&". Exemplu: "http://www.yahoo.com/cgibin/nume_fis.cgi?nume1 = valoare1&nume2
= valoare2"; - post. n acest caz datele sunt expediate separat. Sunt permise cant
iti mari de date (ordinul MB) Pentru ca un formular sa fie funcional, trebuie preci
zat ce se va ntmpla cu el dup completare i expediere. Cel mai simplu mod de utilizar
e a unui formular este expedierea acestuia prin posta electronica (e-mail). Pent
ru aceasta se folosete atributul action care primete ca valoare "mailto:adresa e-m
ail".
22

Formular cu cmp de editare i buton de expediere Majoritatea elementelor unui formu


lar sunt definite cu ajutorul etichetei <input>. Pentru a preciza tipul elementu
lui se folosete atributul type al etichetei <input>. Pentru un cmp de editare, ace
st atribut primete valoarea "text". Alte atribute pentru un element <input> sunt:
- atributul name ,permite ataarea unui nume fiecrui element al formularului. - at
ributul value ,care permite atribuirea unei valori iniiale unui element al formul
arului. Un buton de expediere al unui formular se introduce cu ajutorul etichete
i <input>, n care atributul type este configurat la valoarea "submit". Acest elem
ent poate primi un nume prin atributul name. Pe buton apare scris "Submit Query"
sau valoarea atributului value , dac aceasta valoare a fost stabilit. <html> <hea
d><title>FormEx_1 </title></head> <body><h4> Un formular cu un camp de editare i
un buton de expediere</h4> <hr> <form action="mailto:xxxxx@xxx.com" method="post
"> Numele:<input type="text" name="numele" value="Numele si prenumele"><br> <inp
ut type="submit" value="expedieaza"> </form></body> </html>
Formular cu caset text i buton de expediere
Pentru elementul <input> de tipul cmp de editare (type = "text") , alte doua atri
bute pot fi utile: - atributul size specifica limea cmpului de editare; - atributul
maxlength specifica numrul maxim de caractere pe care le poate primi un cmp de ed
itare; Observaii: - daca atributul type lipsete intr-un element <input> , atunci cm
pul respectiv este considerat n mod prestabilit ca fiind de tip "text". - formula
rele cu un singur cmp (de tip text) nu au nevoie de un buton de expediere, datele
sunt expediate automat dup completarea i apsarea tastei ENTER. Butoane Butonul Res
et Daca un element de tip <input> are atributul type configurat la valoarea "res
et", atunci n formular se introduce un buton pe care scrie "Reset". La apsarea ace
stui buton, toate elementele din formular primesc valorile prestabilite (definit
e odat cu formularul ), chiar dac aceste valori au fost modificate de utilizator.
Un buton Reset poate primi un nume cu ajutorul atributului name i o valoare print
r-un atribut value. Un asemenea buton afieaz textul "Reset" dac atributul value lip
sete, respectiv valoarea acestui atribut n caz contrar. <html> <head><title>formex
_2</title></head> <body><h1>Un formular cu un buton reset</h1><hr> <form action=
"mailto:xxxxx@xxx.com" method="post"> Introduceti numele:<input type="text" name
="nume" value="Numele"><br>
23

Introduceti prenumele:<input type="text" name="prenume" value="Prenumele"><br> <


input type="reset" value="sterge"> <input type="submit"> </form></body></html>

Cmp de editare de tip "password" Daca se utilizeaz eticheta <input> avnd atributul
type configurat la valoarea "password", atunci n formular se introduce un element
asemntor cu un cmp de editare obinuit (introdus prin type="text"). Toate atributele
unui cmp de editare rmn valabile. Singura deosebire const n faptul c acest cmp de edi
are nu afieaz caracterele n clar. <html> <head><title>formex_3</title></head> <body
><h1>Un formular cu un camp de parola</h1> <hr> <form action="mailto:xxxxx@xxx.c
om" method="post"> Nume:<input type="text" name="nume" value="Numele"><br> Prenu
me:<input type="text" name="prenume" value="Prenumele"><br> Password:<input type
="password" name="parola" ><br> <input type="reset" value="sterge"> <input type=
"submit" value="trimite"> </form></body> </html>
Butoane radio Butoanele radio permit alegerea, la un moment dat, a unei singure
variante din mai multe posibile. Butoanele radio se introduc ca familii de butoa
ne prin eticheta <input> cu atributul type avand valoarea "radio", iar atributul
name trebuie s primeasc aceeai valoare pentru fiecare buton dintro familie.
24

<html> <head><title>formex_4</title></head> <body><h1>Un formular cu butoane rad


io</h1> <hr> <form action="mailto:xxxxx@xxx.com" method="post"> Alegeti sexul:<b
r> <input type="radio" name="sex" value="m">masculin<br> <input type="radio" nam
e="sex" value="f">feminin<br> <input type="reset"> <input type="submit"> </form>
</body> </html>
Butoane radio
La expedierea formularului se va transmite una dintre perechile "sex=m" sau "sex
=f", n funcie de alegerea fcut de utilizator. Casete de validare O caseta de validar
e (checkbox) permite selectarea sau deselectarea unei opiuni. - Pentru inserarea
unei casete de validare se utilizeaza eticheta <input> cu atributul type configu
rat la valoarea "checkbox" . Observatii: - fiecare caseta poate avea un nume def
init prin atributul name. - fiecare caseta, ca i un buton radio, poate avea valoa
rea prestabilita "selectat" definita prin atributul checked. <html> <head><title
>formex_5</title></head> <body><h1>Un formular cu casete checkbox</h1><hr> <form
action="mailto:xxxxx@xxx.com" method="post"> Alegeti meniul:<br> <input type="c
heckbox" name="pizza" value="o portie">Pizza<br> <input type="checkbox" name="ne
ctar" value="un pahar"> Nectar<br> <input type="checkbox" name="bere" value="o s
ticla"> Bere<br> <input type="checkbox" name="cafea" value="o ceasca"> Cafea<br>
<input type="reset"> <input type="submit"> </form></body> </html>
25

Casete de validare
Casete de fiiere Intr-o pereche "name = value" a unui formular se poate folosi ntr
egul coninut al unui fiier pe post de valoare. Pentru aceasta se insereaz un elemen
t <input> intr-un formular , cu atributul <type> avnd valoarea "file" (fiier). Atr
ibutele pentru un element de tip caseta de fisiere: - atributul name permite ataa
rea unui nume - atributul value primete ca valoare adresa URL a fiierului care va
fi expediat o data cu formularul. Aceasta valoare poate fi atribuita direct atri
butului value, poate fi tastata intr-un cmp de editare ce apare o data cu formula
rul sau poate fi selectata prin intermediul unei casete de tip File Upload sau C
hoose File care apare la apsarea butonului Browse... din formular. <html> <head><
title>formex_6</title></head> <body><h1>Un formular cu caseta de fisiere</h1><hr
> <form action="mailto:xxxxx@xxx.com" method="post"> Alegeti fisierul:<input typ
e="file" name="fisier" value="c:\temp\proba.html" enctype="multipart/form-data">
<br><input type="reset"> <input type="submit"> </form></body></html>
Caseta de fiiere
Liste de selectie O lista de selectie permite utilizatorului sa aleag unul sau ma
i multe elemente dintr-o list finit. Lista de selecie este inclus n formular cu ajuto
rul etichetelor corespondente <select> i </select>. O list de selecie poate avea ur
mtoarele atribute: - atributul name, care ataeaz listei un nume (utilizat n perechil
e "name=value" expediat serverului); - atributul size, care precizeaz (printr-un
numr ntreg pozitiv , valoarea prestabilita fiind 1) cte elemente din list sunt vizib
ile la un moment dat pe ecran (celelalte devenind vizibile prin acionarea barei d
e derulare ataate automat listei).
26

Elementele unei liste de selecie sunt incluse n lista cu ajutorul etichetei <optio
n>. Doua atribute ale etichetei option se dovedesc utile: - atributul value prim
este ca valoare un text care va fi expediat server-ului n perechea "name=value";
dac acest atribut lipsete , atunci ctre server va fi expediat textul ce urmeaz dup <o
ption>; - atributul selected (fr alte valori) permite selectarea prestabilita a un
ui element al listei . <html> <head><title>formex_7</title></head> <body><h1>Un
formular cu o lista de selectie</h1> <hr> <form action="mailto:xxxxx@xxx.com" me
thod="post"> Universitatea absolvita:<br><br> <select name="universitate" size="
3"> <option value="B"> Universitatea din Cluj <option value="UNBM" selected> Uni
versitatea de Nord Baia Mare <option value="UTT"> Universitatea Technica din Tim
isoara <option value="UTB"> Universitatea Technica din Brasov </select><br><br>
<input type="reset"> <input type="submit"> </form></body> </html> Cmpuri de edita
re multilinie Intr-un formular cmpuri de editare multilinie pot fi incluse cu aju
torul etichetei <textarea>. Eticheta are urmtoarele atribute: - atributul cols, c
are specifica numrul de caractere afiate intr-o linie; - atributul rows, care spec
ifica numrul de linii afiate simultan; - atributul name, care permite ataarea unui
nume cmpului de editare multilinie; - atributul wrap, care determin comportamentul
cmpului de editare fa de sfritul de linie. Acest atribut poate primi urmtoarele valor
i: a) " off "; n acest caz: ntreruperea cuvintelor la marginea dreapt a editorului
se produce numai cnd dorete utilizatorul; caracterul de sfrit de linie este inclus n
textul transmis serverului o data cu formularul; b) " hard "; n acest caz: se pro
duce ntreruperea cuvintelor la marginea dreapta a editorului ; caracterul de sfrit
de linie este inclus n textul transmis serverului o data cu formularul; c) " soft
"; n acest caz: se produce ntreruperea cuvintelor la marginea dreapta a editorulu
i; nu se include caracterul de sfrit de linie n textul transmis serverului o data c
u formularul . <html> <head><title>formex_9</title></head> <body><h1>Un formular
cu un camp de editare multilinie</h1> <hr> <form action="mailto:xxxxx@xxx.com"
method="post"> <textarea name="text multilinie" cols="30" rows="5" wrap="off"> P
rima linie din textul initial. A doua linie din textul initial. </textarea> <inp
ut type="reset"> <input type="submit"> </form></body> </html>
27

Cmp de editare multilinie


Intr-un formular pot fi afiate butoane fr un rol prestabilit. Cnd utilizatorul apas u
n buton, se lanseaz n execuie o funcie de tratare a acestui eveniment. Limbajul HTML
nu permite scrierea unor astfel de funcii (acest lucru este posibil daca se util
izeaz limbaje de scriptare precum JavaScript, VBScript). Pentru a insera un buton
intr-un formular , se utilizeaz eticheta <input> avand atributul type configurat
la valoarea "button". Alte doua atribute ale elementului "button" sunt: - atrib
utul name, care permite ataarea unui nume butonului - atributul value, care primet
e ca valoare textul ce va fi afisat pe buton. <html> <head><title>formex_10</tit
le></head> <body><h1>Butoane</h1> <hr> <center> <input type=button value="Apasa
!" onclick="alert( De ce apesi ??? )"> </body> </html> Stiluri Stilurile pun la
dispoziia creatorilor de site-uri noi posibiliti de personalizare a paginilor Web.
Un stil reprezint un mod de a scrie un bloc de text (adic anumite valori pentru fo
nt, mrime, culoare, aliniere, distane fa de margini etc). Exista doua modaliti de a de
fini un stil: - sintaxa CSS (Cascading Style Sheets) prezentat n continuare; - sin
taxa Javascript. Stilurile sunt introduse n doi pai: - definirea stilului; - preci
zarea domeniului de aplicare a stilului. Stilurile sunt de finite n cadrul blocul
ui <head></head> ntre etichetele <style></style>. n funcie de modul de definire, pute
m avea: Stiluri dedicate Aceste stiluri se aplica blocurilor de text pentru care
sunt definite. De exemplu: <head><style> h1 {text-align:center; color:red;} </s
tyle> </head> Toate titlurile care apar n pagina ca fiind de mrime 1 vor fi de cul
oare roie i centrate. Daca dorim ca acelai stil s fie utilizat de ctre mai multe elem
ente (de ex. "h1", "h2", i "p") atunci se utilizeaz o lista acestor elemente, sepa
rate prin virgula:
28

<style> h1, h2, p {text-align:center; color:red;} </style> Clase de stiluri Aces


te stiluri permit definirea unui stil general i folosirea lui oriunde este necesa
r. Exemplu: Definim o clas de stiluri "ac" (albastru i centrat) n interiorul blocul
ui <style>...</style>, aflat la rndul lui n blocul <head>...</head>: <style> .ac {
text-align:center; color:blue;} </style> Dac dorim ca un titlu de mrimea 2 sa folo
seasc clasa de stiluri "ac" atunci scriem: <h2 class = ac>Acesta este un header d
e marime 2 albastru si centrat</h2> Stiluri "identificate" Toate elementele unui
document admite un atribut universal numit id. Atributul id poate identifica st
ilul utilizat de un element. Pentru a utiliza un stil "identificat" procedai astf
el: - n blocul <style>...</style> introducei definiia stilului conform sintaxei: <s
tyle> #verde { color: green } </style> - n elementul n care se dorete utilizarea lo
cal a acestui stil, folosii atributul id care primete valoare numele stilului defin
it anterior. <h3 id=green>Acesta este un header de marime 3 verde</h3> <html> <h
ead><title>stiluri</title> <style> p {color:red; text-align:right} .ac {text-ali
gn:center; color:blue;} #verde { color: green } </style> </head> <body> <p> para
graf rosu aliniat dreapta <br> <p class=ac>Acesta este un paragraf albastru si c
entrat <h3 id=verde>Acesta este un header de marime 3 verde</h3> </body> </html>
Siluri
Stiluri n-line Stilurile n-line sunt definite chiar n eticheta ce iniiaz blocul n care
dorim s se aplice aceste stiluri. Pentru aceasta se utilizeaz atributul universal
style (comun practic tuturor etichetelor ce
29

apar intr-un document HTML).Valoarea data atributului style este tocmai descrier
ea stilului, cuprins nu intre acolade {..} ci intre ghilimele "...". De exemplu:
<h2 style = " color: red; text-align: center;"> Acest header de marimea 2 este d
e culoare rosie si este centrat.</h2> Daca dorim utilizarea unui anumit style pe
ntru un fragment de text, atunci includem acest text intrun bloc cu ajutorul del
imitatorilor <span>...</span>, dup care utilizam atributul style pentru eticheta
<span>. Stiluri definite n fiiere externe Stilurile definite n interiorul unui bloc
<style>...</style> pot fi transferate ntr-un fiier extern existnd astfel posibilit
atea utilizrii lor n mai multe fiiere HTML. Pentru a utiliza un stil definit intr-u
n fiier extern se procedeaz astfel: - se creeaz un fiier care sa conin numai descriere
a stilurilor i se salveaz cu extensia .css sau .html. Continutul acestui fiier coin
cide cu coninutul unui bloc <style>...</style> , fr ca aceti delimitatori sa fie inc
lui. - n fiierul HTML care utilizeaz stilurile definite la pasul anterior, se includ
e n blocul <head>...</head> o eticheta <link> avnd trei atribute. - atributul rel
cu valoarea "stylesheet" - atributul href avnd ca valoare adresa URL a fiierului c
reat la punctul 1 ; - atributul type cu valoarea "text/css". Se utilizeaz titluri
le definite n fiierul extern ca i cum ar fi definite n fiierul HTML curent intrun blo
c <style>...</style>. Pseudoclase. Pseudoclasele se utilizeaz pentru personalizar
ea legturilor. Ele se definesc n blocul <style>...</style> sau ntr-un fiier extern,
conform sintaxei: a: link {color: black; font-size: 20pt} a: active {color: blue
; font-style: italic} a: visited {color: cyan; text-decoration: none} Pentru ca
numai anumite legaturi sa utilizeze un stil se pot folosi urmtoarele doua metode:
- a: link.CLASA1 {...} combinat cu <a class = CLASA1 href=" "> ...</a> - a: lin
k#ID1 {...} combinat cu <a id = ID1 href=" "> ...</a> Configurarea fontului folo
sind stilurile Mrimea fontului este stabilit prin atributul font-size. Valori posi
bile: - predefinite: xx-small, x-small, small, medium, large, x-large, xx-large
- numr urmat de unitate de msur (pt, px, n, mm, cm) Tipul fontului este stabilit prin
atributul font-family: list de fonturi separate prin virgula. Se pot utiliza cel
e 5 familii generice: serif, sans-serif, cursive, monospace, fantasy. Grosimea f
ontului - font-weight: valori posibile: - normal, bold, bolder, lighter. - numer
e intre 100 (cel mai subtire) i 900 (cel mai gros) Stilul fontului - font-style:
normal, italic, oblique Setarea textului Culoarea textului este stabilit prin atr
ibutul color: valori posibile: - nume culoare - construcie n hexazecimal #rrggbb apelul funciei rgb(r,g,b) sau rgb(%r,%g,%b) Culoarea fondului textului este stab
ilit prin atributul background-color. Valori posibile aceleai cu ale atributului c
olor. Imaginea de fond a textului este stabilit prin atributul background-image =
url(adresa imaginii folosite) Alinierea textului este stabilit prin atributul text
-align: left, center, right, justify. Decorarea textului este stabilit prin atrib
utul text-decoration: none, underline, line-through, overline
30

Straturi Un strat este vzut ca un bloc de text sau elemente HTML care poate fi di
mensionat i poziionat cu exactitate n pagin. Straturile pot fi transparente sau opac
e i se pot suprapune. Se definesc cu ajutorul atributelor stilurilor i se introduc
n pagina prin marcaje <div> sau <span>. Un strat motenete toate atributele stiluri
lor i accept i atribute referitoare la dimensiune i poziionare. Dimensiunile unui str
at se stabilesc prin atributele width i height. Ca valori pot primi un numr urmat
de unitate de msur. Poziionarea unui strat poate fi de doua tipuri: - absolut, strat
ul fiind poziionat n funcie de colul din stnga sus al ferestrei sau a blocului din ca
re face parte - relativ, stratul fiind poziionat n funcie de ultimul element introdu
s n pagina Tipul poziionrii este stabilit prin atributul position cu valorile posib
ile absolute sau relative. Poziia stratului este stabilita cu ajutorul atributelo
r top i left. Chenarul unui strat este stabilit prin atributul border-style cu val
ori posibile: none, solid, dotted, dashed, double, inset, outset, groove, ridge.
Culoarea chenarului este stabilit prin atributul border-color. Grosimea chenarul
ui este stabilit prin atributul border-width: numr cu unitate de msur Exemplu de str
aturi poziionate absolut, suprapuse. <html> <head><title>straturi suprapuse</titl
e> <style> #strat1 { width:200;height:100; position:absolute; top:100;left:100;
border-style:solid; border-color:red; color:red;} #strat2 { width:100;height:200
; position:absolute; top:50;left:150; border-style:double; border-color:blue; co
lor:blue;} </style> </head> <body> <div id=strat1>strat 1 strat 1 strat 1 strat
1 strat 1 strat 1 strat 1 strat 1 strat 1 strat 1 strat 1 strat 1 </div> <div id
=strat2>strat 2 strat 2 strat 2 strat 2 strat 2 strat 2 strat 2 strat 2 strat 2
strat 2 strat 2 strat 2</div> </body> </html>
Straturi suprapuse
31

Daca straturile prezint i culoare de fundal atunci ele sunt opace.


Efect de umbra cu ajutorul straturilor . <html><head><title>efect umbra</title>
<style>#strat1 {font-size:2cm;font-weight:900; position:absolute; top:100;left:1
00;color:red;} #strat2 {font-size:2cm;font-weight:900; position:absolute; top:10
5;left:105;color:silver;} </style> </head> <body> <div id=strat2>TEXT</div> <div
id=strat1>TEXT</div> </body> </html>
Efect de umbr cu ajutorul straturilor
32

Modulul II. JAVASCRIPT


Firma Netscape Communications, din dorina de a extinde funcionalitatea popularului
su program de navigare Netscape Navigator, a dezvoltat un limbaj de programare,
astfel nct programele scrise n acest limbaj s poat fi incluse n cadrul paginilor Web.
Iniial Netscape i-a denumit noul limbaj LiveScript, iar apoi, pentru a profita de
renumele obinut de limbajul de programare Java, denumirea a fost schimbat n JavaScr
ipt. n general, aplicaiile, indiferent ct de bine sunt realizate, nu pot satisface
cerinele tuturor utilizatorilor, motiv pentru care acestora li se pune la dispozii
e un limbaj simplu de programare cu ajutorul cruia pot s creeze extensii ale aplic
aiei. De obicei, aceste miniprograme nu sunt compilate, ci interpretate linie cu
linie n timpul rulrii aplicaiei. Cel mai obinuit exemplu de astfel de microaplicaii l
reprezint macro-urile din Microsoft Office. Aceste microaplicaii poart denumirea ge
neric de script-uri, iar colecia de comenzi i instruciuni care pot aprea n cadrul unui
script poart denumirea de limbaj de scriptare sau limbaj de tip script. JavaScri
pt este un limbaj de scriptare a crui sintax seamn, ntr-o oarecare msur, cu cea a limb
jelor C, C++, Pascal, Java sau Delphi, dar care are anumite particulariti care l fa
c s se deosebeasc esenial de orice alt limbaj de programare. Pentru ca programul de
navigare s poat executa instruciuni JavaScript, el trebuie configurat n aa fel nct s
ignore astfel de instruciuni. Totodat programul de navigare trebuie s recunoasc ins
truciunile JavaScript; Netscape Navigator ofer suport pentru JavaScript ncepnd cu ve
rsiunea 2.0, n timp ce Internet Explorer ofer acest suport ncepnd cu versiunea 3.0.
Limbajul JavaScript este un limbaj bazat pe obiecte, adic un limbaj orientat obie
ct care conine obiecte predefinite. De asemenea JavaScript este un limbaj proiect
at astfel nct s reacioneze n momentul apariiei unui eveniment. Totodat JavaScript este
un limbaj sigur n sensul c, n principiu, nu pot fi scrise microaplicaii care s aib aci
ni duntoare asupra calculatorului pe care este vizualizat pagina Web. De exemplu, n
u va putea fi scris un script care s scaneze discul i s tearg anumite fiiere. Totui ex
st posibilitatea pstrrii anumitor parole introduse de ctre utilizator, ceea ce ar pu
tea deranja pe unii dintre acetia. Din aceast cauz majoritatea programelor de navig
are ofer o opiune a crei activare nu permite executarea script-urilor. n sfrit, JavaSc
ript este un limbaj independent de platforma pe care ruleaz, adic un acelai script
va putea fi executat sub Unix, MacIntosh sau Windows fr a fi necesar prezena unui em
ulator sau efectuarea anumitor modificri. JavaScript i Java Java este un limbaj de
programare orientat obiect, dezvoltat de firma Sun Microsystems, n timp ce JavaS
cript are o structur bazat pe obiecte i a fost dezvoltat de firma Netscape Communic
ations. Limbajul Java poate fi folosit pentru proiectarea de aplicaii independent
e sau pentru proiectarea de microaplicaii care pot fi incluse n cadrul paginilor W
eb i care poart denumirea de applet-uri i sunt i ele independente de platform. Iat cte
a deosebiri eseniale ntre Java i JavaScript: aplicaiile Java sunt compilate n fiiere
inare care sunt apoi interpretate de ctre VJM (Virtual Java Machine - Main Virtual J
ava), n timp ce codul JavaScript este transmis ca un text obinuit i este interpreta
t. Java este orientat obiect n timp ce JavaScript este bazat pe obiecte.
33

codul JavaScript este inclus n cadrul documentului HTML; applet-urile Java sunt r
eferite din cadrul unui document HTML, dar codul se afl ntr-un fiier separat. scrip
t-urile JavaScript sunt incluse prin intermediul marcajului <script type=text/java
script>, iar applet-urile Java prin intermediul marcajului <OBJECT>; exist i marcaj
ul <APPLET> dar folosirea lui nu mai este recomandat. n cadrul script-urilor JavaS
cript variabilele nu trebuie declarate, n timp ce n cadrul aplicaiilor Java variabi
lele trebuie declarate nainte de a fi folosite. Mai mult, n cadrul script-urilor J
avaScript, o variabil care este considerat ca avnd un anumit tip la un moment dat p
oate fi considerat ulterior ca avnd un alt tip; de exemplu, o variabil poate fi fol
osit ca fiind un ir de caractere pentru ca apoi s fie considerat ca fiind un numr rea
l. JavaScript folosete legarea dinamic, adic referinele sunt verificate n timpul rulr
i, n timp ce Java folosete legarea static, adic referinele trebuie s existe n momentul
compilrii. n general, limbajul JavaScript este folosit pentru efectuarea de calcul
e, citirea unor date dintr-o tabel, proiectarea de ecrane HTML fr a folosi script-u
ri CGI.

2.2 Marcajul <script type=text/javascript>


n interiorul unui document HTML, instruciunile JavaScript sunt cuprinse, de obicei
, n interiorul marcajului <script type=text/javascript>. Acest marcaj poate aprea att
antetul documentului HTML (marcajul <HEAD>), ct i n corpul documentului (marcajul
<BODY>). Script-urile definite n antet sunt ncrcate naintea ncrcrii restului paginii,
ntetul fiind un loc excelent pentru plasarea funciilor JavaScript pentru a fi sig
uri c acestea vor fi disponibile atunci cnd sunt apelate n alte seciuni ale document
ului HTML. Pentru a insera cod JavaScript ntr-un document HTML deja existent, est
e necesara introducerea n fisier a etichetei <script type=text/javascript> ....... <
/script>. Aceasta eticheta are aributul type, sau language ( acesta din urma este depr
eciat in standardul XHTML) care va specifica browserului limbajul folosit pentru
interpretarea codului inclus. In interiorul etichetei <script type=text/javascrip
t> ... </script> vom scrie codul surs. Exemplu de script-ul prin intermediul cruia
poate fi afiat mesajul Hello World! n fereastra programului de navigare.
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN http://www.w3.org/TR/xhtml1/DT
D/xhtml1-strict.dtd> <html xmlns=http://www.w3.org/1999/xhtml lang=en> <head> <meta ht
p-equiv=Content-Type content=text/html; charset=utf-8 /> <title>Test JavaScript</title
> <title>Cod JavaScript</title> </head> <body> <script type=text/javascript> docume
nt.write(Hello World! ); </script> </body> </html>
34

Instructiunile JavaScript se pot introduce i ntr-un alt fisier extern, care va ave
a extensia .js, iar pentru editarea acestui fisier se poate utiliza un editor simpl
u de texte. Avantajul este c se poate utiliza acelai cod n mai multe pagini HTML. D
ac codul JavaScript se afla ntr-un fisier extern, eticheta <script type=text/javascr
ipt> va trebui s contina s atributul src a carui valoare determina locatia fisierului
in care se afla codul JavaScript. In fisierul extern cu extensia js nu trebue s scri
em eticheta <script type=text/javascript>, se scriu direct instructiunile scriptului.
ac fiierul extern este info.js, atunci fiierul HML care apeleaz fiierul extern .JS ar
at:
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN http://www.w3.org/TR/xhtml1/DT
D/xhtml1-strict.dtd> <html xmlns=http://www.w3.org/1999/xhtml lang=en> <head> <meta ht
p-equiv=Content-Type content=text/html; charset=utf-8 /> <title>Test JavaScript</title
> <title>Cod JavaScript</title> </head> <body> <script src=info.js type=text/javascri
pt> </script> </body> </html> Fisierele JavaScript externe nu pot conine dect decla
raii i funcii JavaScript, iar extensia trebuie s fie .js.
Comentarii n Javascript
La versiuni mai vechi de browsere, instruciunile JavaScript sunt scrise ntre comen
tarii. Sintaxa generala este: <script type=text/javascript> <! - - Inceput comentar
iu Instructiuni JavaScript <! - - Sfarsitul comentariului - - > </SCRIPT> Proiec
tanii introduc instruciunile JavaScript ntre comentarii HTML astfel nct browserele ca
re nu permit JavaScript vor ignora instruciunile, interpretndu-le drept comentarii
. Comentariile n JavaScript pt fi definite ca n (applet-urile) JAVA, C i C++ astfel
: /* Comentariu pe mai multe linii */ // Comentariu pe o singur linie
2.3 Elementele limbajului JavaScript
Elementele limbajului pot fi: Numerele care pot fi: numere ntregi i numere reale ,
Boolean ce are valorile true i false, null este o valoare nedefinit, undefined: o
proprietate de nivel superior poate avea valoarea undefined, NaN: Not a Number,
String text. Pentru orice literal de tip string se utilizeaz metodele clasei Strin
g.
35

Vectori i elemente de tip Obiect . JavaScript este un limbaj dinamic-tipizat sau sla
b-tipizat (loosely-typed), ceea ce nseamn c nu trebuie s specific tipul unei variabil
e cnd o declar fiindc ea va fi convertit automat dac va fi nevoie n timpul execuiei sc
riptului. O variabil se poate declara n dou moduri: atribuindu-i o valoare: x=124 c
u ajutorul cuvntului rezervat var: var x=124 O variabil JavaScript creia nu i-a fos
t atribuit o valoare va avea valoarea undefined. Rezultatul evalurii unei variabil
e depinde de modul n care a fost declarat, astfel: - dac variabilei nu i-a fost atr
ibuit o valoare i a fost declarat fr var rezultatul evalurii variabilei va fi o eroare
runtime. - dac variabilei nu i-a fost atribuit o valoare, dar a fost declarat folo
sind cuvntul rezervat var rezultatul evalurii variabilei va fi undefined sau NaN n
context numeric. Variabilele, definite n afara funciilor, se numesc variabile glob
ale i ele sunt accesibile oriunde n documentul curent. Variabilele, definite n inte
riorul funciilor, se numesc variabile locale i ele sunt vizibile numai n interiorul
funciilor n care sunt declarate. iruri (de caractere) JavaScript ntr-un scenariu Ja
vaScript, irurile de caractere constante se delimiteaz ntre apostrofuri simple sau
duble. Exemplu : sir1= Sir 1 sir2=Sir 2 sir3= Sir 1 + Sir 2 Operatorul + semnifica
concatenarea irurilor de caractere. Ca i n C, JAVA, irurile de caractere pot conine
secvene Escape: \n, \t, \f etc. n JavaScript sunt admise urmatoarele categorii de
expresii: aritmetice,iruri de caractere i logice. Operatorii utilizai de limaj pot
fi: Matematici: +, -, *, /, ^, %(modulo) - unari: se aplic la un singur operand:
a++, a - binari: se aplic la 2 operanzi: a+b, a-b a+=2 echivalent cu a=a+2 De comp
araie, folosii pentru scrierea unor expresii logice. La evaluarea acestora se poat
e obine true sau false: <, >, <=, >=, ==, != Exist n JavaScript o serie de funcii pr
edefinite cum ar fi: eval(expr): evalueaz o expresie data ca i parametru (string);
isFinite(number) : determin dac argumentul este un numr finit; isNaN(testValue) :
determina dac testValue este NaN; parseFloat(str) : transform stringul str n valoar
e float i o returneaz;

36

parseInt(str [, radix]) : transform str ntr-o valoare de tip ntreg i o returneaz; rad
ix este baza de numeraie; Number(obj) : convertete obj la number; String(obj) : co
nvertete obj la string; escape/unescape(str) : folosite pentru codificare/decodif
icare stringuri. Crearea de casete simple de mesaj Pentru afiarea unui mesaj adre
sat utilizatorului sub forma unei casete de dialog, se poate utiliza funcia alert
(figura 3.1).
<html> <head> <title> javascript </title> </head><body> <h1> <script language=java
script> alert(mesaj afisat\n ntr-o caseta alert); </script></body> </html>
Figura 3. 1 Caset alert
Preluarea de intrri tip text de la utilizator n cazul cnd este nevoie de citirea un
ei linii text de la utilizator, se poate utiliza funcia prompt pentru afiarea unei
casete de dialog care ofer utilizatorului un prompter (cursor) pentru a introduc
e date i pentru preluarea ulterioara a intrrii utilizatorului. Funcia arat prompt (
text, [valoare iniiala] ) i provoac apariia unei casete n care utilizatorul va putea
introduce un ir de caractere. Caseta conine i un buton OK . Controlul de editare
este iniializat cu valoare iniial, dac acest argument este prezent, altfel este iniia
lizat cu textul (undefined) (figura 3.2).
<html> <head> <title> prompt </title> </head> <body> <script type=text/javascript>
var nume, varsta; nume=prompt(introduceti numele dvs.:,); varsta=prompt(introduceti v
arsta dvs.:,); alert(nume+ are +varsta+ ani) </script> </body> </html>

Figura 3.2. Caseta prompt


37

Funcia EVAL se utilizeaz pentru a converti un ir de caractere la o valoare ntreag. Ex


emplu:
<html> <head> <title> calcul </title> </head> <body> <script type=text/javascript>
a=eval(prompt(intr i nr:,0)) b=eval(prompt(intr al ii-lea nr:,0)) suma=a+b alert(sum
e: +suma) </script> </body> </html>

Funcia confirm() are rolul de a crea o fereastr prin intermediul creia se cere conf
irmarea utilizatorului pentru efectuarea unei aciuni. Funcia returneaz o valoare lo
gic (true sau false), iar sintaxa ei este confirm(mesaj). Fereastra creat are dou b
utoane: Ok i Cancel, nu poate fi minimizat sau redimensionat i are un buton special
pentru nchidere. n cazul apsrii butonului Ok sau a tastei ENTER valoarea returnat est
e true, iar n cazul apsrii butonului Cancel, a butonului de nchidere sau a tastei ES
C valoarea returnat este false (figura 3.3).
<html> <head> <script type=text/javascript> function culoare() { if(confirm(culoare
text rosu ?)) document.fgColor=red } </script> </head> <body> <input type=button value
loare text onclick=culoare()><br>text </body> </html>
Figura 3.3. Funcia confirm
Obiectul document n JavaScript, obiectul document corespunde documentului HTML cu
rent. Daca un script utilizeaz metod write pentru obiectul document n vederea afirii
ieirii, browserul va reda ieirea n documentul curent.Exemple de utilizare: document
.write(text)
38

document.write(variabil) Putem intercala cod JavaScript cu cod HTML. n document.wr


ite se pot utiliza etichetele HTML cu condiia de a fi scrise ntre ghilimele. Dac n c
adrl ghilimelelor amen nevoie de alte ghilimele atunci pentru cele din urm se uti
lizeazo apostrof. De exemplu, putem afia texte scrise cu fonturi bold, respectiv
italic ca n exemplu alturat.
<html> <head> <title> document.write </title> </head> <body> <script type=text/jav
ascript> document.write(<b>bold</b> <i>italic</i>); </script> </body> </html>

S se scrie setul de comenzi cu ajutorul crora se citesc 2 numere i s se afieze suma l


or.
<script type=text/javascript> a=eval(prompt(Intr un nr:,0)); b=eval(prompt(Intr un nr
suma=a+b; document.write(a=+a+<br>+b=+b+<br>+a+b=+suma); </script>

Instruciuni JavaScript Instruciunile JavaScript pot fi terminate s nu cu caracterul


;. Acest caracter este obligatoriu doar atunci cnd sunt mai multe instruciuni pe
acelai rnd. Instruciunea de atribuire a fost utilizat i n exemple anterioare i este ce
cunoscut din C i Java. Instruciunea IF este o instruciunea condiional i folosete cuv
ele cheie if i else avnd urmtoarea sintax:
if (condiie) { instruciuni pentru condiie adevrat } else { instruciuni pentru condiie
als }

Acoladele au un rol foarte important n JavaScript, cu ajutorul lor se pot grupa m


ai multe instruciuni ntr-un singur bloc de instruciuni care sunt tratate ca o singu
r instruciune. S se sciteasca numele i parola unui utilizator iar n funcie de acestea
s se afieze un anumit mesaj (figura 3.4).
<script type=text/javascript> nume=prompt(Introduceti numele,); parola=prompt(Introdu
i parola,) ; n_valid=student ; p_valid=utm ; if((nume==n_valid)&&(parola==p_valid))
rt(Date corecte!) ;
39

document.write(Bun venit pe pagina studentilor de la facultatea...) ; } else { ale


rt(Date incorecte!) ; document.write(Apasati F5 i mai incercati !!!...) ; } </script>
Figura 3.4

Instruciuni de ciclare Adeseori se dorete executarea repetat a mai multor instruciun


i. Acest lucru este posibil, cu ajutorul instruciunilor de ciclare. n JavaScript e
xist instruciunile de ciclare: for, while i do...while. Sintaxa instruciunii for est
e: for (iniializare; condiie; incrementare) {corpul ciclului; } - Oricare dintre c
ele patru seciuni (de iniializare, condiia, de incrementare sau corpul) poate lipsi
. S se scrie text cu nlimi de la h1 la h6 i apoi s realizeze cu tabel cunumrul de lini
i coloane definit de utilizator (figura 3.5). <script type=text/javascript> a=eval(
prompt(Definiti nr de linii:,)) b=eval(prompt(Definiti nr de coloane:,)) for(i=1;i<=6
+) document.write(<h+i+> Acest text este introdus cu H+i+</h+i+>) document.write(<t
rder>) for(i=1;i<=a;i++) { document.write(<tr>) for(j=1;j<=b;j++) document.write(<td>c
elula +i+j) } </script>
40

Figura 3. 5 Text scris n mod programat


Sintaxa instruciunii while este:
while (condiie) { corpul ciclului }
n cazul instruciunii while poate lipsi corpul ciclului, prezena condiiei fiind oblig
atorie.

<script type=text/javascript> i=; while(i!==student) { i=prompt(Introduceti parola,


ment.write(Password accepted); </script>
Instruciunea SWITCH Poate fi folosit pentru alegerea unei opiuni din mai multe opiun
i. Sintaxa instruciunii este:
switch (expresie) { case eticheta : instruciune; break; case eticheta: instruciune
; break; ... default : instruciune; } <script type=text/javascript>
41

opt=eval(prompt(Introduceti nr zilei, )) switch (opt) { case 1: zi=luni;break case 2:


i=marti;break case 3: zi=miercuri;break case 4: zi=joi;break case 5: zi=vineri;br
zi=sambata;break case 7: zi=duminica;break default: zi=Introduceti un nr ntre 1 i
ment.write(zi) </script>

Instruciunile break i continue Instruciunea break permite ieirea forat dintr-o instruc
une de ciclare. n momentul n care interpretorul JavaScript ntlnete o astfel de instru
ciune, el ntrerupe execuia ciclului n interiorul cruia se afl aceasta. Instruciunea co
tinue permite saltul peste anumite instruciuni din corpul ciclului care nu mai tr
ebuie executate n anumite condiii. n cazul unui ciclu for, se trece n mod automat, l
a ultimul pas al execuiei ciclului, n timp ce n cazul unui ciclu while se trece la
primul pas. Folosirea tablourilor de elemente n JS
Un tablou de elemente (ir) este o structur complex care nglobeaz mai multe variabile
de acelai tip sub un nume. Un ir de elemente are o anumit dimensiune, are un anumit
numr de elemente, fiecare element avnd o valoare i este identificat prin poziia n ca
drul irului. Un ir se definete prin: numeir = new Array(). S se introduc 3 nume de la
tastatur i s se afieze n pagin unul dup cellalt. <script type=text/javascript> n=e
t(Introduceti nr de elemente,)); sir=new Array(); for(i=0;i<3;i++) { sir[i]=prompt(In
troduceti numele +(i+1),): document.write(<br>+sir[i]);}</script> Exemplu: S se reali
e un buton care schimb culorile fundalului unei pagini. <script type=text/javascrip
t> culoare=new Array(4); culoare[0]=red; culoare[1]=blue; culoare[2]=green; i=-1; f
change() { i++; document.bgColor=culoare[i]; if(i==2) i=-1;
42

} </script> <input type=button value=culoare fundal onclick=change()>

2.4 Funcii i evenimente n Java Script O funcie este vzut ca un bloc de instruciuni ide
tificat printr-un nume care poate primi anumite argumente i ntoarce o valoare. Sin
taxa unei funcii este: function numefuncie (list parametri formali) { instruciuni; r
eturn (valoare) } Apelul funciei se realizeaz numefuncie(parametri efectivi). Funcii
le sunt definite de obicei n zona HEAD i sunt apelate apoi, ori de cte ori este nev
oie, n BODY. F(x)=x+1 unde x parametru formal, F(2)=3 unde 2 parametru efectiv.
function suma (a,b) { s=a+b;return s; }
Se poate apela x=suma (1,1). Exemplu: funcia titlu (parametru), s afieze parametru
aceasteia cu font albastru de mrime 5 (figura 3.6).
<script type=text/javascript> function titlu (a) {document.write(<font color=red siz
e=7>+a+</font>)} x=prompt(Introduceti titlul,);titlu(x); </script>
Figura 3.6 Text scris prin aplelul unei funcii

Funciile pot fi definite i fr parametri i pot returna sau nu o valoare. <script type=t
xt/javascript> function titlu () {document.write(<font color=red size=7>+a+</font>);}
=prompt(Introduceti titlul,); titlu();</script>
43

Aplicatie: utiliznd funcii s se realizeze fereastra din figura 2.4.


Figura 2. 7 Definirea funciilor ntr-un fiier html
Coninutul fiierului html este urmtorul: <html> <head> <title> Utilizare functii </t
itle> <script> function nume(){a=prompt("Introduceti numele:","");} function var
sta(){b=prompt("Introduceti varsta:",""); b=parseInt(b);} function afisare(){ale
rt("Numele este:"+" "+a+"\n"+"Varsta este: "+" "+b);} // "\n" trece la randul ur
mator </script></head> <body><form> <h1><center> Functii Javascript</center></h1
> <input type="button" name="b1" value="Introduceti numele dvs" onclick="nume()"
> <br><br><br> <input type="button" name="b2" value="Introduceti varsta dvs" onc
lick="varsta()"> <br><br><br> <input type="button" name="b3" value="Afiseaza dat
e" onclick="afisare()"> </form> </BODY> </html>
Utilizarea casetelor de validate Coninutul enei casete de validare se preia cu pr
opietatea value care se aplica casetei astfel: numecaseta.value. Daca caseta fac
e parte dintr-un formular atunci continutul casetei se acceseaz: numeformular.num
ecaseta.value. S se preia dintr-un formular numele i parola, s se verifice i s se afie
ze un mesaj ntr-o alt caset a formularului (figura 3.8).
<html>
44

<head> <title> Formular butoane java casete text </title> <script> function afis
are(){ // pot s pun varibile formale a=form1.t1.value; b=form1.t2.value; if (a==12
3 && b==abc) form1.t3.value=Corect!; else if(a==123 && b!=abc) form1.t3.value=parol
ecta!; else if(a!=123 && b==abc) form1.t3.value=user ncorrect!; else form1.t3.value=u
incorrect! i parola incorecta; } function sterge(x) {x.value=} // \n trece la randul
urmator // sintaxa if: if(conditie) executa o secventa s1; else executa secventa
s2 // observatie: daca conditia are 2 elem se grupeaza inte {} // secventa s2 p
oate s lipseasca i atunci se reduce la if(conditie) S1; </script> </head> <body><f
orm name=form1> <h1><center> casete de text</center></h1> User: <input type=text nam
e=t1 value= onclick=sterge(t1) size=40 > <br><br><br> parola: <input type=password
alue= onclick=sterge(t2)> <br><br> <br>mesaj: <input type=text name=t3 value= oncli
e(t3) size=40> <input type=button name=b1 value=testare onclick=afisare()> </form>
/html>
Figura2.8. Testare user i parola
Utilizarea casetelor de tip checkbox
45

Pentru o caset de tip checkbox starea acesteia se preia cu proprietate checked. A


plicaie: S se realizeze testul din figura 3.9.
<html><head><title> casete checkbox </title> <script>function nota(a4,a1,b1,c1,a
2,b2,c2,a3,b3,c3){ x=1;x=parseInt(x);nume=a4.value; if(a1.checked && !b1.checked
&& c1.checked) x= x+3; if(!a2.checked && b2.checked && !c2.checked ) x= x+3; if
(!a3.checked && !b3.checked && !c3.checked ) x= x+3; if(nume=="") alert("Nu ati
completat numele"); else { alert (nume+" ai luat nota: " + x); if (x<5) alert("A
i picat") else alert("Felicitari!"); }} function sterge(x) {x.value=""} // "\n"
trece la randul urmator // sintaxa if: if(conditie) executa o secventa s1; else
executa secventa s2 // observatie: daca conditia are 2 elem se grupeaza inte {}
// secventa s2 poate s lipseasca i atunci se reduce la if(conditie) S1; </script><
/head><body> <h1><center> TEST GRILA</center></h1> <form> <input type="text" nam
e="t1" value="" onclick="sterge(t1)"> <ol><li>Prima intrebare</li> <ol type="a">
<li> <input type="checkbox" name="c1a" value=""> raspuns a </li><li> <input type
="checkbox" name="c1b" value=""> raspuns b </li> <li><input type="checkbox" name
="c1c" value="">raspuns c </li></ol><li> Intrebarea a doua</li> <ol type="a"> <i
nput type="checkbox" name="c2a" value=""> raspuns a </li><li><input type="checkb
ox" name="c2b" value=""> raspuns b </li><li><input type="checkbox" name="c2c" va
lue="">raspuns c </li></ol><li> Intrebarea a treia</li> <ol type="a"><li> <input
type="checkbox" name="c3a" value=""> raspuns a </li><li><input type="checkbox"
name="c3b" value=""> raspuns b </li><li><input type="checkbox" name="c3c" value=
"">raspuns c </li></ol></ol><input type="button" name="b1" value="Nota" onclick=
"nota(t1,c1a,c1b,c1c,c2a,c2b,c2c,c3a,c3b,c3c)"> </form></BODY></html>
46

Figura 2.9. Utilizarea casetelor de tip checkbox


Utilizarea butoanelor de tip radio Dac butoanele de tip radio fac parte din acelai
grup, atunci ele sunt gestionate ntr-un vector, astfel nct primul element este pe
poziia zero. Proprietatea utilizat pentru a testa starea elementului (dac a fost se
lectat sau nu) este tot checked, asemntor ca la casetele de tip ckeckbox. Exemplu
<html> <head> <title> butoane radio </title> <script> function test(x){ if(x[0].
checked) alert ("Ati selectat culoarea "+ x[0].value); if(x[1].checked) alert ("
Ati selectat culoarea "+ x[1].value); if(x[2].checked) alert ("Ati selectat culo
area "+ x[2].value); } </script> </head> <body>
Utilizarea listelor de selecie
47

Propietatea utilizat pentru a testa dac un element dintr-o lista de selecie a fost
selectat este selected. Valoarea ataat atributului value este preluat cu .value, la
fel ca la casetele de tip text. Exemplu:
<html> <head> <title> </title> <script> function lista(x) { for(i=0;i<6;i++) if
(x[i].selected) alert("ati selectat produsul "+ x[i].value) } </script> </head>
<body> <h1><center> liste selectie </center></h1> <form> <SELECT name="s" size="
3"> <option value="test 11">test 11</option> <option value="test 12">test 12</op
tion> <option value="test 13">test 13</option> <option value="test 14">test 14</
option> <option value="test 15">test 15</option> <option value="test 16">test 16
</option> </select> <br><br><br> <input type="button" name="b1" value="afiseaza"
onclick="lista(s)"> </form></BODY></html
Utiliznd propritile casetelor care apar ntr-un formlar s se realizeze pagina din figu
ra 3.10.
<html> <head> <title> </title> <script> function curs(t1,t2,s,c1,c2,p,r,t3) { nu
me=t1.value; prenume=t2.value; x=" "; for(i=0;i<4;i++) if (s[i].selected) x=s[i]
.value; if(x==" ") x="nu ai selectat curs" y=" "; if(c1.checked) y=y+c1.value+"
"; if(c2.checked) y=y+c2.value+" "; if(y==" ") y="nu ai selectat nivelul" q=" ";
for(i=0;i<3;i++)
48

if (p[i].checked) q=p[i].value; if(q==" ") q="nu ai selectat mod plata" z=" "; f
or(i=0;i<3;i++) if (r[i].checked) z=r[i].value; if(y==" ") y="nu ai selectat ora
r" if (nume=="" && prenume=="") alert ("nu ai completat numele i prenumele") else
if (prenume=="") alert ("nu ai completat prenumele") else if (nume=="") alert (
"nu ai completat numele") else alert ("Domnul/doamna "+nume+" "+prenume+" s-a in
scris la cursul "+x+" la nivelul: "+y+ " in orarul: " +z+ " i plateste prin: " +q
+" cu observatiile: "+t3.value); } </script></head><body> <h1><center><font colo
r="blue">FORMULAR INSCRIERE CURS</font></center></h1> <form name="formular_inscr
iere"> <table border="1" width="50%" height="50%" align="center"> <tr><td rowspa
n="3" align="center">Nume: </td> <td rowspan="3" align="center"><input type="tex
t" name="t1" maxlength="50" size="20"></td> <td rowspan="3" align="center">Mod p
lata:</td> <td><input type="radio" name="P" value="cash" checked>Cash</td> </tr>
<tr> <td><input type="radio" name="P" value="Banca">Banca</td> </tr><tr> <td><in
put type="radio" name="P" value="card">Card</td> </tr><tr> <td align="center">Pr
enume: </td> <td align="center"><input type="text" name="t2" maxlength="50" size
="20"></td> <td rowspan="3" align="center">Orar: </td> <td><input type="radio" n
ame="R" value="8-12" checked> 8 - 12 </td> </tr><tr><td rowspan="2" align="cente
r">Cursul: </td> <td rowspan="2"> <SELECT name="s" size="3" align="center"> <opt
ion value="web">A1 </option> <option value="contabilitate"> A2 </option> <option
value="informatica"> A3 </option> <option value="limba engleza"> A4 </option> <
/select></td><td><input type="radio" name="R" value="12-16"> 12 - 16 </td> </tr>
<tr><td><input type="radio" name="R" value="16-20"> 16 - 20 </td> </tr><tr><td r
owspan="2" align="center">Nivel: </td> <td align="center"><input type="checkbox"
name="c1" value="1">Incepatori </td> <td rowspan="2" align="center">Comentarii:
</td> <td rowspan="2"> <textarea name="t3" rows="7" cols="20"> </textarea> </td
></tr><tr><td align="center"><input type="checkbox" name="c2" value="2">Avansati
</td></tr><tr>
49

<td colspan="2" align="center"><input type="button" name="ok" value="Inscriere"


onClick="curs(t1,t2,s,c1,c2,P,R,t3)"> </td><td colspan="2" align="center"><input
type="reset" name="ok" value="RESET"> </td> </tr></table> </form></body></html>
Figura 2.10. Realizarea unui formular complex
Evenimente
Limbajul JavaScript este bazat pe evenimente, acestea fiind folosite pentru a co
ntrola interaciunea dintre utilizator i aplicaie. Programele convenionale opereaz ntro manier diferit, codul acestora fiind executat secvenial. Pentru a specifica instr
uciunile JavaScript care trebuie executate la apariia unui eveniment, limbajul HTM
L pune la dispoziie anumite atribute pentru diferite marcaje, atribute care au ca
valori instruciuni JavaScript (de obicei apeluri de funcii). Cele mai multe eveni
mente sunt legate de aciuni ale mouse-ului ca de exemplu: un clic (poate fi trata
t cu atributul onclick), mouse deasupra cu atributul (onmouseover), mouse n afar c
u atributul (onmouseout) etc. Pentru fiecare astfel de eveniment se pot defini h
andlere de evenimente care sunt functii javascript sau secvente de instructiuni
care se vor executa atunci cand evenimentul respectiv are loc. Evenimentele i han
dlerele de evenimente care se pot folosi sunt urmatoarele:
Eveniment Abort Blur Handler de ev. OnAbort OnBlur are loc pentru oprirea incarc
arii unei imagini pierderea focusului se aplic Image Window i elem. ale obiectului
Form
50

Change Click DragDrop Error Focus KeyDown KeyPress KeyUp Load MouseDown MouseMov
e MouseOut MouseOver MouseUp Move Reset Resize Select Submit Unload
OnChange OnClick OnDragDrop OnError OnFocus OnKeyDown OnKeyPress OnKeyUp OnLoad
OnMouseDown OnMouseMove OnMouseOut OnMouseOver OnMouseUp OnMove OnReset OnResize
onSelect onSubmit onUnload
Window i elem. ale obiectului Form Document, Image, Link, TextArea Document, Imag
e, Link, apasarea sau mentinerea apasata a TextArea unei taste eliberarea unei t
aste Document, Image, Link, TextArea incarcarea paginii in Document navigator ap
asarea butonului Document, Button, Link de mouse mutarea cursorului Nici unui ob
iect Area, Link mutarea cursorului de mouse in afara obiectului mutarea cursorul
ui Link peste un link eliberarea butonului Document, Button, Link de mouse depla
sarea ferestrei Window click pe butonul Form reset redimensionarea Window ferest
rei selectarea unui Text, TextArea elem. al campului apasarea pe submit Form par
asirea paginii Document
schimbarea valorii unui element utilizatorul face click plasarea unui obiect n fe
reastra browserului eroare la ncarcarea obiectului elementul capata focus apasare
a unei taste
Text, TextArea, Select Button, Checkbox, Link, Radio, Submit, Reset Window Image
, Window
Exemplu Script care afieaz n pagin 2 butoane pentru alegerea culorii de fundal a pag
inii. La plasarea mouse-lui deasupra unui buton, pe bara de stare a ferestrei ap
are un text. Alt text apare la ndeprtarea mouse-lui de pe buton (figura 2.11). <in
put type=button value=rosu onclick="r()" onmouseover="window.status= Ati ales fu
ndal rosu " onmouseout="window.status= Alegeti culoarea fundalului ! ">&nbsp <in
put type=button value=albastru onclick="b()" onmouseover="window.status= Ati ale
s fundal albastru " onmouseout= "window.status= Alegeti culoarea fundalului ! ">
&nbsp <script type="text/javascript"> function r()
51

{ document.bgColor="red" } function b() { document.bgColor="blue" } </script>


Figura 2.11. Evenimente legate de aciuni cu mouse-ul

window.status=text afieaz text n bara de stare, document.title=text afieaz tex


tlu. n afara evenimentelor generate de utilizator pot fi tratate i evenimente ce s
e produc automat. Apar evenimente ca: load ncrcarea paginii poate fi gestionat cu
atributul onload unload nchiderea documentului - poate fi gestionat cu atributul
onunload Ambele atribute aparin marcajului BODY. <script type=text/javascript> a=Bun v
enit pe pagina mea; b=Multumesc!...Good Bye ! function f(x) { alert(x) } </script> <
body onload=f(a) onunload=f(b)>
2.5 Obiecte n Java Script
Un obiect trebuie neles ca o structur ce reunete mai multe funcii i variabile sub acel
ai nume. Funciile unui obiect reprezint metode iar variabilele obiectului sunt prop
rieti. Obiectele permit reutilizarea unui cod deja existent i sunt folosite n mai to
ate limbajele de programare orientate pe obiect. Java Script este un limbaj baza
t pe obiecte i pune la dispoziie un set predefinit de obiecte. Fiecare obiect este
identificat prin nume. O proprietate a obiectului este apelat prin numeobiect.pr
oprietate (document.bgColor = red). O metod este adresat prin numeobiect.metod(argumen
t). Obiectele JavaScript sunt ierarhizate. Un obiect poate fi derivat, inclus n c
adrul unui alt obiect. Ierarhia de obiecte JS are 4 ramuri principale, reprezenat
e de obiectele: window, navigator, screen, language. Din window deriveaz: frame,
document, location, history, din document deriv image, form, .a.m.d.Pe
52

lng acestea, JS pune la dispoziie obiecte predefinite referitoare n general la tipur


i de date: String, Math, Date. Obiectul String ncapsuleaz un ir de caractere. Este
creat automat atunci cnd unei variabile i se asociaz o valoare de tip ir de caracte
re. Dintre metodele lui String ntlnim: Metoda anchor() big() blink() bold() charAt
() charCodeAt() concat() fixed() fontcolor() fontsize() fromCharCode() indexOf()
italics() lastIndexOf() link() match() Efect returneaza un sir ca i "anchor" ret
urneaza un sir cu text mare returneaza un sir care clipeste returneaza un sir cu
litere ingrosate returneaza un caracter de la pozitia care este specificata ret
urneaza codul ascii al unui caracter de la o pozitie specificata returneaza doua
siruri concatenate returneaza un sir cu caractere tip returneaza un sir cu o cu
loare specificata returneaza un sir cu litere de o anume marime returneaza valoa
re unicode a unui caracater returneaza pozitia primei aparitii a unui subsir in
un sir, sau daca subsirul nu e gasit, valoarea returneaza un sir in italic (scri
s aplecat) returneaza pozitia primei aparitii a unui subsir in un sir, sau daca
acesta nu e gasit, returneaza un sir ca hyperlink similar cu indexof i lastindexo
f, dar aceasta metod returneaza sirul specificat sir, sau "null", in locul unor v
alori numerice inlocuieste unele caractere specificate cu altele noi specificate
. returneaza un numar intreg daca sirul contine caracterele specificate, altfel
returneaza returneaza un sir incepand de la pozitia index specificata returneaza
un sir cu caractere mai mici imparte un sir in mai multe siruri, in functie de
caracterele specificate returneaza un sir taiat cu o linie la mijloc returneaza
un sir ca indice returneaza un subsir specificat converteste un sir in litere mi
ci converteste un sir in litere mari
replace() search() slice() small() split() strike() sub() substr() toLowerCase()
toUpperCase()
53

Proprietatea acestui obiect string este length care returneaza numarul de caract
ere dintr-un sir.

Obiectul Date
Obiectul Date este folosit pentru a obine informaii referitoare la ceasul sistem d
e pe calculatorul vizitatorului paginii Web. Prin intermediul acestui obiect pot
fi determinate data i ora curent, pot fi efectuate diferite operaii cu date calend
aristice sau momente ale zilei sau poate fi controlat modul n care este afiat pagin
a Web n funcie de informaiile furnizate de metodele acestui obiect. Pentru a crea u
n obiect care s conin data i ora curent secvena JavaScript corespunztoare este data=ne
Date(). Metodele obiectelor de tip sunt grupate n trei categorii: metode pentru
preluare de informaii, metode pentru setarea anumitor caracteristici i metode pent
ru conversie. Principalele metode ale obiectului Date() sunt: Date() getDate() g
etDay() returneaza un obiect Date returneaza data (ziua) din luna (ntre 131) retu
rneaza ziua dintr un obiect Date (ntre 0 i 6; 0=Duminica, 1=Luni, etc.) getMonth()
returneaza luna dintr un obiect Date getFullYear() returneaza anul cu 4 cifre g
etYear() returneaza anul dintr un obiect Date getHours() returneaza ora getMinut
es() returneaza minutele getSeconds() returneaza secunda setTimeout(funcie,timp) ti
mp se exprim n ms

Exemple Script care s afieze Ai intrat pe pagina astzi: ora <script type=text/jav
data=new Date() zi=data.getDate() luna=data.getMonth()+1 an=data.getYear() ora=
data.getHours() min=data.getMinutes() sec=data.getSeconds() document.write(Ati in
trat pe pagina astazi: +zi+-+luna+-+an+ ora+ora+:+min+:+sec) </script> Script car
eas n timp real n linia de stare: <script type=text/javascript> function timp() { cea
s=new Date() ora=ceas.getHours()
54

min=ceas.getMinutes() sec=ceas.getSeconds() window.status=ora+:+min+:+sec setTimeout


(timp(),100) } setTimeout(timp(),100) </script>

Obiectul Window
Este plasat la cel mai nalt nivel, fiind printele tuturor obiectelor dintr-o pagin.
Metode fundamentale: open(), close() alert(), prompt(), confirm() blur(), focus
() setTimeout() Obiectul window este important pentru gestionarea ferestrelor n c
are sunt ncrcate documentele html. Folosind metodele open() i close() putem deschid
e ferestre, putem ncrca anumite documente n ferestrele respective i le putem stabili
anumite proprieti. Deschiderea unei ferestre window.open (URL, nume,opiuni) - URL
resa documentului care va fi ncrcat n fereastra respectiv - nume poate fi folosit pe
ntru a referi fereastra respectiv cu ajutorul atributului target - opiuni reprezin
t o list de elemente pentru stabilirea aspectului ferestrei n cadrul scriptului fer
eastra deschis poate fi identificat prin variabil: f=window.open () Are sens: f.doc
ument.write() scrie n fereastra f f.document.title() stabilete titlul ferestrei f.
document.bgColor() stabilete culoare de fond a documentului din fereastra deschis
<script type=text/javascript> function fereastra() { f=window.open() f.document.wri
te(<H1>RECLAMA</H1>) f.document.bgColor(cyan) } </script> <body onload=fereastra()> M
etod open permite specificarea unor parametri legai de aspectul ferestrei deschise
. Acetia se introduc separai prin virgul n cadrul seciunii opiuni din construcia metod
i open: - width - limea n pixeli a suprafeei ferestrei - height - nlimea n pixeli a s
afeei ferestrei - toolbar = yes/no - afieaz sau nu bara de instrumente - menubar =
yes/no - afieaz sau nu bara de meniuri - scrollbars = yes/no - afieaz sau nu bara de
scroll - left = nr de pixeli fa de marginea din stnga a ecranului - top = nr de pi
xeli fa de marginea sus a ecranului nchiderea ferestrelor se poate realiza prin met
od close() Poate fi apelat prin: window.close() - pentru fereasta curent f.close()
- pentru un obiect de tip fereastra
55

Metod moveTo(i,j) mut o fereastr cu i pixeli spre dreapta i j pixeli n jos. Exemplu:
Script care s deschid o fereastr ce se deplaseaz n partea de sus pna la mijlocul ecran
ului. Un buton va nchide fereastra. <script type=text/javascript> function fer() { f
=window.open(,,width=200, height=100, top=0, left=0) f.document.write(Reclama) for(i
300;i++) f.moveTo(i,0) } </script> <body onload=fer()> <input type=button value=Inchi
de fereastra onclick=f.close()> Obiectul document Este derivat din obiectul window i
este folosit ca metod de acces la toate elementele html. Proprietile obiectului doc
ument seteaz n primul rnd proprietile i atributele html incluse n marcajul HEAD sau n
rcajul BODY. Principalele proprieti sunt: document.title = text n bara de titlu doc
ument.bgColor = culoarea fundalului document.fgColor = culoarea textului documen
t.alinkColor = culoarea legturilor active document.vlinkColor = culoarea legturilo
r vizitate document.linkColor = culoarea legturilor nevizitate document.cookie =
fisier cookie asociat cu documentul Metodele obiectului document permit generare
a paginilor html n mod dinamic. Principalele metode sunt:
close() - inchide fluxul datelor de iesire spre document contextual() - permite
s aplicam in mod selectiv un stil unui element HTML care apare ntr-un anumit conte
xt specific getSelection() - intoarce textul selectat handleEvent() - apeleaza h
andlerul pentru evenimentul specificat open() - deschide fluxul datelor de iesir
e spre document write() - adauga text in document writeln() - adauga text i un ca
racter linie noua in document (textul pe linia lui)
Gestionarea cadrelor
Atunci cnd introducem cadre este creat automat un obiect parent, care include un i
r de obiecte, fiecare nglobnd un cadru din interiorul ferestrei: parent.frames[0]
refer primul cadru parent.frames[1] refer al doilea cadru s.a.m.d. De exemplu, par
ent.frames[0].document.write() - scrie n primul cadru. Dac atunci cnd au fost intro
duse cadrele acestea au primit i un nume putem referi un cadru prin construcia: pa
rent.numecadru De exemplu, parent.cadru.document.write() - scrie n cadrul cu nume
le cadru.
56

Obiectul location ncapsuleaz adresa URL a paginii curente. Permite deplasarea la o


alt adres URL sau permite extragerea unor elemente din cadrul URL curent. Cea mai
folosit proprietate este href - specific ntreaga adres URL De exemplu, ncrcarea unei
alte pagini web se poate face prin construcia: window.location.href = URL Exemplu de
buton cu funcie de legtur: <input type=button value=Student onclick=window.location.
f=http://www.microsoft.com> ncrcarea unui fiier ntr-un cadru se poate face prin parent
cadru.location.href=URL

Construirea unui banner


La ncrcarea unui pagini se deschide o fereastr nou n care, din 2 n 2 secunde se succed
3 imagini. <script type=text/javascript> imagini=new Array() imagini[0]=x.gif imagini
[1]=y.gif imagini[2]=z.gif function deschide() { f=window.open(,,width=200, heigh
llbars=no, menubar=no, toolbar=no) } i=-1 function banner() { i++ f.location.href
=imagini[i] if(i==2) i=-1 setTimeout(banner(),2000) } </script> <body onload=deschid
e();banner()>

Obiectul Image Cuprinde proprietile i metodele necesare pentru lucrul cu imagini. S


e creeaz cu new Image() poza=new Image() Proprieti: poza.src=sursa imaginii; poza.w
idth=limea imaginii n pixeli; poza.height=nlimea imaginii n pixeli; poza.border=grosim
a chenarului n pixeli; poza.name=numele imaginii; La introducerea imaginilor ntr-o
pagin web se creeaz n mod automat un ir de obiecte imagine. Fiecrui obiect de tip im
agine i se pot aplica toate proprietile imaginilor. Este identificat prin document
.images[i], unde i este numrul de ordine al imaginii din cadrul documentului. Rea
lizarea unui efect RollOver
Un efect RollOver nseamn schimbarea fiierului surs al imaginii de fiecare dat cnd se p
laseaz mouse-ul deasupra imaginii. Se revine la imaginea iniial atunci cnd mouse-ul
este scos de pe imagine. Dac imaginea la care v referii este prima din pagin va funci
ona exemplul <img src=x.gif onmouseover=document.images[0].src=y.gif
57

onmouseout=document.images[0].src=x.gif> Dac la introducerea imaginii acesta primete i


un nume, acesta poate fi folosit n cadrul unui script pentru referirea imaginii
<img src=x.gif name= poza Onmouseover = document.poza.src =y.gif onmouseout = documen
oza.src = x.gif>.
Exemplu: Pagin ce afieaz 2 imagini mici. Cnd se plaseaz mouse-ul pe o imagine aceasta
s apar cu chenar iar cnd se executa clic s apar mai jos redimensioant:
<table> <tr><td> <img src=x.gif width=50 height=40 onmouseover=document.images[0].b
order=2 onmouseout=document.images[0].border=0 onclick=document.images[2].src= x.g
if > <td><img src=y.gif width=50 height=40 onmouseover=document.images[1].border=2 on
mouseout=document.images[1].border=0 onclick=document.images[2].src= y.GIF > </table
> <br><br><br><br> <img src= width=200 height=100 alt=Afiseaza poza>

Exemplu: Script ce deruleaz n pagin trei imagini, din 3 n 3 secunde


<html> <script type=text/javascript> imagini=new Array() imagini[0]=x.gif imagini[1]=
if imagini[2]=z.gif i=-1 function banner() { i++ document.images[0].src=imagini[i] i
f(i==2) i=-1 setTimeout(banner(),3000) } </script> <body onload=banner()> <img src=x.
gif></html> Aplicatie: realizai o pagina ca n figura 2.12 ce permite salectarea un
ei date i afisarea acesteia. <html><head><title> aplicatie obiecte java </title>
<script> function f1(z,l,a) { zi=""; luna=""; an=""; for(j=0;j<31;j++)
58

if (z[j].selected) zi=z[j].value; for(j=0;j<12;j++) if (l[j].selected) luna=l[j]


.value; for(j=0;j<40;j++) if (a[j].selected) an=a[j].value; r=an+"-"+luna+"-"+zi
alert(r) } </script></head><body><form> <h1><center> Obiectul document</center>
</h1> <table><tr><td><center> ziua </center></td> <td><center> luna </center></t
d> <td><center> anul </center></td> </tr><tr><td><script> document.write("<selec
t name= z >"); for(i=1;i<=31;i++) {document.write("<option value="+i+">"); docum
ent.write(i); document.write("</option>"); } document.write("</select>") </scrip
t> </td><td> <script> document.write("<select name= l >"); for(i=1;i<=12;i++) {d
ocument.write("<option value="+i+">"); document.write(i); document.write("</opti
on>"); } document.write("</select>") </script> </td> <td> <script> document.writ
e("<select name= a >"); for(i=2030;i>=1951;i--) {document.write("<option value="
+i+">"); document.write(i); document.write("</option>"); } document.write("</sel
ect>") </script> </td> <input type="button" name="b1" value="afiseaza" onclick="
f1(z,l,a)"> </form></BODY></html>

59

Figura 2.12 Selectare elemte de tip data i afiarea acestora


Realizai pagina html care permite crearea unui tabel cu numrul de linii i coloane s
pecificat. Tabelul are culoarea de fundal aleas dintr-o lista, ca n figura 3.13.
<html><head><title> Comanda window </title> <script>function tab(t1,t2,s) { r=t1
.value; r=parseInt(r); c=t2.value; c=parseInt(c); //cul="white"; //for(i=0;i<3;i
++) //if(s[i].selected) cul=s.value; document.write("<table border= 1 , width=10
0, height=100 bgcolor="+cul+">"); for(i=1;i<=r;i++) {document.write("<tr>"); for
(j=1;j<=c;j++) document.write("<td><br></td>"); document.write("</tr>"); }docume
nt.write("</table>") }</script></head> <body><h1><center> aplicatie tabel </cent
er></h1> <form><br><table><tr> <td>Nr. randuri </td><td><input type="text" name=
"t1"></td> <tr><td>Nr. coloane </td> <td><input type="text" name="t2"></td> <tr>
<td>Culoare fundal tabel </td> <td><select name="s" size="3"> <option value="red
"> Rosu </option> <option value="blue"> Albastru </option> <option value="green"
> Verde </option> </td></select><tr> <td><input type="button" name="genereaza" v
alue="Genereaza tabel" onclick="tab(t1,t2,s)"></td> <input type="reset" name="b2
" value="reset"> </table></form></BODY> </html>
60

Figura 2.13. Creare i personalizare tabel n modul programat


S se realizeze o pagin cu funcii complexe ca n figura 3.14, care utilizeaz obiectele
document, window i date.
<html><head><title> </title> <script>function f1() {fer=window.open("../24 ian/e
x1.html","_blank","top=0,left=500, width=500, height=350, toolbar=yes ,menubar=y
es, scrollbars=yes") } function f2() {fer.close() } function f3(){window.close()
} function f4(){fer.blur()} function f5(){fer.focus()} function f6(){fer.moveBy(
100,100); fer.focus();} function f7(){fer.moveTo(500,300); fer.focus();} functio
n f8() { fer1=window.open("","","width=100, height=100, top=300, left=0") for(i=
0;i<=1000;i++) {fer1.moveTo(i,300); fer1.focus();if (i==1000) fer1.close() }} fu
nction f9() { fer1=window.open("","","width=100, height=100, top=300, left=0") f
or(i=0;i<=1000;i++) {fer1.moveTo(i,300); fer1.focus();
61

//setTimeout("comanda",perioada de intarziere - e in milisecunde) }setTimeout("f


er1.close()",2000); }</script></head><body> <form> <h1><center> Aplicatie comple
xa cu obiecte Javascript</center></h1> <input type="button" name="b1" value="des
chidere fereastra" onclick="f1()"> <input type="button" name="b2" value="inchide
re fereastra deschisa" onclick="f2()"> <input type="button" name="b3" value="inc
hidere fereastra curenta" onclick="f3()"> <input type="button" name="b4" value="
ascundere fereastra" onclick="f4()"> <input type="button" name="b5" value="alway
s on top" onclick="f5()"> <input type="button" name="b6" value="muta la coordona
tele" onclick="f6()"> <input type="button" name="b7" value="muta la distanta de.
.." onclick="f7()" > <input type="button" name="b8" value="deschide,muta i inchid
e o fereastra" onclick="f8()"> <input type="button" name="b8" value="deschide,mu
ta i inchide o fereastra - delay" onclick="f9()" ></form></BODY></html>
Figura 2.13. Utilizarea obiectelor din JavaScript
62

MODULUL III. CONSTRUIREA DOCUMENTELOR XML


3.1 Construirea documentelor XML i importana acestora XML (Extensible Markup Langu
age ) este o form condensat a Standard Generalized Markup Language (SGML) care per
mite dezvoltatorilor s creeze etichete particularizate, care ofer flexibilitate n o
rganizarea i prezenarea informaiilor. XML este format de fapt din dou metalimbaje, a
mbele descrise n acelai document. Primul este un set de reguli pentru realizarea d
e documente XML construite corect, n timp ce al doilea este un set de reguli pent
ru realizarea unei definiii a tipului documentului XML, sau DTD (Document Type De
finition), care permite ca structura documentului XML s se supun unor constrngeri i
s fie validat fa de acele constrngeri. XML are o natur dual fiind: un metalimbaj car
ermite descrierea de noi structuri de documente i vocabulare; un limbaj utilizat
ca s exprime acea structur i acel vocabular n cazul unui document. Definiiile tipului
documentului XML (DTD-urile) descriu instane ale limbajului XML, numite uneori v
ocabulare XML. Dcumentele XML sunt create utiliznd acele limbaje. XML este un lim
baj cu etichete i atribute asemntor cu HTML, dar un HTML transformat att de mult, nct
nu mai poate fi recunoscut. XML este mult mai structurat dect HTML. n timp ce proc
esoarele HTML accept n mod curent cod incorect i diform i ncearc s i dea sens pe ecra
XML trebuie s se opreasc atunci cnd gsete o eroare fatal, care poate fi aproape orice
tip de eroare. Dac n HTML avem un numr relativ mic de etichete, XML are un numr de e
tichete aproape infinit, structurate n aproape orice fel se dorete. Oricum, fundam
entele au rmas aceleai, XML reprezentnd un pas evolutiv al HTML. Nu numai c un HTML
bine fcut este foarte aproape de XHTML un nlocuitor al HTML care respect XML dar un
cod HTML 4.0 curat este destul de lizibil ca XHTML 1.0. Deoarece HTML 4.0 a fos
t structurat ca o aplicaie SGML, iar XML este o submulime a SGML, acest lucru este
logic. Diferenele sintactice minore dintre XHTML, un vocabular XML, i HTML, un vo
cabular SGML, pot fi ajustate automat dac este nevoie. Autorul unui document XML
ofer de obicei un manual de creare sau codare (sau o foaie, pentru DTD-uri mici)
descriind etichetele utilizate n aplicaia XML, atributele lor, valorile posibile i
modul lor de imbricare. Urmrirea unui astfel de manual de codare nu este mai difi
cil dect reinerea faptului c o linie de tablou <td> trebuie s fie imbricat n interioru
unui tablou <table> i nu are, sau nu ar trebui s aib, sens n afara acelui context.
Pentru majoritatea situaiilor, acest lucru este suficient. XML este capabil s ofer
e autorilor suficient ajutor n nvarea modului de utilizare a unei anumite aplicaii, d
eoarece acetia sunt ncurajai s dea etichetelor nume sugestive, care s fie uor de reinu
. Cu toate c orice procesor XML poate spune despre o poriune de cod dac este sau nu
construit corect, iar un manual poate ajuta la construirea unui document valid,
DTD-ul permite verificarea fr ambiguiti a codului. Totui, n funcie de tipul de creare
utilizat, acesta poate fi un pas diferit de procesul de editare. Codul ndeplinete
acest ideal n funcie de utilizarea dat numelor etichetelor, totui ntre anumite limite
: Numele de etichete care ncep cu irul xml, indiferent de tipul literelor, sunt reze
rvate; adic, indiferent de situaie, nu este permisa crearea lor;
63

Numele de etichete care conin caracterul dou puncte pot fi interpretate ca identif
icatori avnd asociat o zon de nume, deci utilizarea celor dou puncte n numele etichet
elor este puternic combtut i poate fi chiar interzis; Un nume de etichet trebuie s n
p cu o liter, care n acest context este orice liter sau ideogram Unicode/ISO/IEC 10646
sau cu o liniu de subliniere.

3.2 Caracteristicile lui XML


XML este sensibil la tipul literelor deoarece majusculele nu reprezint un concept
universal Dac s-ar trata literele mari i mici ca fiind echivalente, ar trebui s se
fac la fel pentru mii de alte variante de litere n alte limbi, o operaie mpovrtoare.
Unele limbi nici nu au tipuri de litere. De exemplu, n limba ebraic nu exist litere
mici, iar limba arab nu face distincie ntre forma iniial, de mijloc i final a literel
r. Pentru cei care prefer s scrie etichetele cu majuscule i atributele cu litere mi
ci, pentru a le evidenia, aceasta este o tire teribil. Dar editoarele de cod modern
e nu mai acord o importan aa de mare acestui lucru ca nainte. De exemplu, precizarea
anumitor culori pentru a marca etichete este un lucru obinuit, deci utilizarea ma
jusculelor este ntructva un anacronism istoric, asemenea numerelor de linii n COBOL
. XML este foarte precis cu privire la imbricarea corect a etichetelor Etichetele
nu se pot ncheia ntr-un context diferit de cel de nceput. Deci, dac se dorete <bold><
italics>, fraza evideniat trebuie nchis cu </italics></bold>, pentru a evita o eroar
e fatal. Deoarece XML poate referi i include documente XML i fragmente de documente
oriunde pe Web, fiecare document XML trebuie s se supun acelorai reguli pentru a n
u strica documentele altora. XML nu este bine protejat mpotriva recursivitii Cu toa
te c este posibil stabilirea excluderilor explicite la un anumit nivel, la o struc
tur complex a unui document este dificil meninerea acelor excluderi la un nivel redu
s, mai ales atunci cnd se utilizeaz etichete care pot fi aplicate la orice nivel.
Deci, interdicia HTML referitoare la includerea unei etichete ancor <a> n interioru
l altei etichete ancor exist i n XML, dar nu este impus dincolo de includerea direct.
XML oblig la nchiderea fiecrei etichete, chiar i a etichetelor vide Deoarece este po
sibila crearea unui document XML care s nu utilizeze un DTD, un procesor XML nu a
re de unde s tie dac o etichet este sau nu vid. Deoarece toate documentele XML trebui
e s fie construite corect, etichetele vide trebuie marcate cu o sintax special care
spune unui procesor XML c eticheta este vid i nchis. Acest lucru se realizeaz plasnd
n spaiu i un caracter slash la sfritul etichetei, astfel: <break /> XML necesit ncadr
rea valorilor atributelor fie ntre apostrofuri, fie ntre ghilimele Acolo unde HTML
este indulgent, mai ales n ceea ce privete numerele i aproape orice ir fr spaii n in
ior, XML trateaz totul ca ir de caractere i las aplicaia s i dea seama singur de toa
estea. XML recunoate mai multe limbi Spre deosebire de HTML, seturile de caracter
e extinse utilizate n multe limbi europene nu sunt pe deplin recunoscute n mod pre
stabilit. Exist un mecanism simplu pentru includerea acestora, precum i a ntregului
set de caractere Unicode (cunoscut, de asemenea, i ca ISO/IEC 10646) care are pe
ste un milion de caractere, deci suportul pentru chinez, arab i multe alte limbi ma
i exotice ale lumii este un lucru uor. n afar de diferenele menionate n
64

aceast list, XML este foarte asemntor cu HTML din punctul de vedere al marcrii etiche
telor, al argumentrii atributelor i al trecerii coninutului ntre perechi de etichete
. Limbajul XML a fost proiectat astfel nct s fie transparent la utilizare pentru a
putea fi neles i utilizat cu uurin. Descrierile XML succinte sau complicate din majori
tatea documentelor sunt greu de neles n efortul de a fi explicit ntr-un mod n care pr
ogramatorii s l poat translata cu uurin n aplicaii care s funcioneze. Un document X
o colecie de entiti care pot fi sau nu analizate. Datele care nu sunt nelese de un p
rocesor XML, date binare sau date care au sens numai pentru alte aplicaii, reprez
int date neanalizate. Datele nelese de XML, fie ca i caractere fie ca marcaje, sunt
date analizate. Un document XML trebuie s fie construit corect.

3.3 Construirea prologului unui document XML


Prologul unui document XML conine mai multe instruciuni. Prima, declaraia XML, afir
m c documentul urmtor este XML. Cea de a doua, declaraia tipului documentului (Docum
ent Type Declaration), este metod utilizata pentru a identifica definiia tipului d
ocumentului (Document Type Definition - DTD) folosit de un anumit document. Faptu
l c acronimul DTD poate fi aplicat la Document Type Declaration este o coinciden ne
fericit. DTD se refer numai la Document Type Definition. ntr-un document XML poate
exista o singur declaraie a tipului documentului, deci este introdus chiar n instana
documentului. Deoarece pot fi combinate mai multe DTD-uri pentru a forma un sing
ur document, aceasta permite controlul ncrcrii DTD-urilor n fiecare document. Declar
aia tipului documentului (DOCTYPE) are dou pri, ambele opionale. Prima se refer la un
DTD extern, i utilizeaz cuvinte cheie PUBLIC sau SYSTEM pentru a identifica o intr
are dintr-un catalog, respectiv un URI. n cazul n care cataloagele nu sunt impleme
ntate n procesorul XML, se pot specifica ambele pri deodat, fr cel de al doilea cuvnt
heie: <!DOCTYPE nume-document PUBLIC {catalog id}> <!DOCTYPE nume-document PUBLIC {
catalog id} {uri}> <!DOCTYPE nume-document SYSTEM {uri}> Cea de a doua parte opional a
declaraiei DOCTYPE permite introducerea submulimii interne a unui DTD direct n docu
ment. Exist restricii severe cu privire la genul de informaie care poate fi introdu
s n DTD-ul intern, dar oricum se pot face destul de multe. Submulimea intern a unui
DTD este ncadrat ntre paranteze drepte, astfel: <!DOCTYPE nume-document [ {declaraii
le DTD-ului intern} ]> De asemenea, cele dou pot fi combinate, permind adugarea anum
itor tipuri de declaraii i entiti aproape n orice mod: <!DOCTYPE nume-document PUBLIC
{catalog id} {uri} [ {declaraiile DTD-ului intern} ]> Pentru claritate, submulimea in
tern este evideniat ca mai jos: <!DOCTYPE nume-document PUBLIC {catalog id} {uri} [
65

{declaraiile DTD-ului intern} ]> Definirea corpului documentului Un document XML


este alctuit din text, care de obicei este format din mai multe marcaje i date car
acter. Prologul conine numai marcaje, dar nu aceasta este partea interesant, deoar
ece este nevoie de date care s nsoeasc marcajele care, altfel, nu ar fi dect nite cuti
i goale. Corpul documentului conine aproape tot ceea ce conteaz din perspectiva un
ei aplicaii mprtiate generos n cadrul marcajelor. Un DTD poate declara multe tipuri d
e date care s poat fi utilizate ntr-un document, dar tipul de date prestabilit este
ntotdeauna CDATA, pentru date obinuite de tip caracter. Foaia sau manualul de cod
are indic ce tip de dat poate fi introdus n fiecare atribut sau cmp cu coninut elemen
t. Presupunnd c tipul de date este CDATA, n cmp se poate pune aproape orice se dorete
att timp ct nu conine un marcaj n afara unei secvene escape. Marcajul este format di
n ansamblu de date non-caracter dintr-un fiier XML. Diversele forme pe care le po
ate lua un marcaj sunt prezenate n tabelul urmtor: Tabel cu sintaxa marcajului XML
Eticheta de pornire Eticheta de terminare Eticheta definire element vid Referina
entitate Referina caracter comentariu Delimitatoare sectiune CDATA Declaratiile t
ipului documentului Instructiuni de prelucrare Declaratia XML <numeElement [atri
bute]>.... ...</numeElement> <numeElement [atribute]/> &numeEntitate; sau%parame
tru_nume_entitate &#numarzecimal; <!comentariu - -> <![CDATA[ informatii cdata]]>
<!DICTYPE nume idextermen? [informatii DTP]> <?Idprocesor date?> <?xml version
encoding standalone?>

Marcajul ncepe ntotdeauna fie cu caracterul <, caz n care se ncheie ntotdeauna cu car
acterul >, fie cu caracterul &, caz n care se ncheie ntotdeauna cu caracterul ;. Form
area structurilor logice n XML Imbricarea elementelor este singurul mecanism util
izat pentru a arta structura logic dintrun document XML. Etichetele de pornire i nch
eiere din fluxul de text spun procesorului XML c a fost ntlnit un nod. Dac procesoru
l XML ntlnete o alt etichet de pornire nainte de eticheta de ncheiere corespunztoare,
unci procesorul tie c acesta este fie un nod nou n arbore, fie o frunz. Dac nu gsete o
nou etichet de pornire i ntlnete o etichet de ncheiere, atunci procesorul tie c ace
te o frunz i c poate aciona iterativ la acel nivel al arborelui pn cnd ntlnete o al
t de pornire sau de ncheiere. Prelucrarea acioneaz treptat, bazndu-se pe aceast regul
impl. Dac procesorul valideaz documentul, atunci fiecrui nod i se poate asocia o reg
ul care s determine ce tip de coninut poate aprea n el. O etichet vid este, prin defin
e, o frunz, deoarece nu poate avea nici un coninut. n XML sunt utilizate dou tipuri
de etichete, etichete cu coninut i etichete vide. Etichetele cu coninut trebuie s ai
b o etichet de pornire i o etichet de ncheiere. Eticheta de pornire conine numele elem
entului ncadrat ntre paranteze unghiulare, avnd opional
66

atribute ca argumente. Eticheta de ncheiere conine numele elementului precedat de


caracterul slash, totul fiind ncadrat ntre paranteze unghiulare. n eticheta de nchei
ere nu putei trece atribute. Codul urmtor reprezint o etichet cu coninut: <titlu subt
itlu=o excursie >dus-ntors</titlu> Seamn mult cu etichetele HTML standard i nu ar treb
i s ridice alte probleme n afara celei de construire corect, care cere ca ele s se i
mbrice ntr-adevr una n cealalt. Nu pot exista etichete care s alterneze ntre ele ca n
cest exemplu greit construit: <bold><italic>text ingrosat i inclinat</bold></itali
c> Cu toate c este o eroare obinuit n HTML, XML este cu mult mai pretenios i nu va per
mite aceast construcie. Etichetele trebuie imbricate corect, dup cum se vede n exemp
lul urmtor: <bold><italic> text ingrosat i inclinat </italic></bold> Acum etichete
le sunt imbricate corect. Trebuie nchis fiecare etichet care ncepe n contextul unei a
numite etichete (sau a mai multor etichete) nainte de nchiderea contextului etiche
tei respective. Etichetele vide au disponibil un format special, cu toate c aceeai
schem, etichet de pornire/ etichet de ncheiere, poate fi utilizat atta timp ct se in
ont de faptul c nu trebuie pus nici un fel de coninut ntre eticheta de pornire a el
ementului vid i eticheta de ncheiere care urmeaz imediat dup ea. De asemenea, poate
exista preocuparea c este posibil ca documentul XML s fie vizualizat cu un browser
Web obinuit, deoarece etichetele de ncheiere pentru elementele care arat ca etiche
te HTML vide pot duce la blocarea browserului sau la un comportament ciudat al a
cestuia. Totui, pentru utilizare general, formatul special este mnemonic n sine, un
avantaj deoarece se poate vedea c eticheta este vid i nu blocheaz aproape nici un b
rowser. De obicei, etichetele vide sunt pornite i ncheiate n cadrul aceleiai perechi
de paranteze unghiulare, plasnd dup numele elementului i toate atributele sale pos
ibile un spaiu, un caracter slash i apoi paranteza unghiular nchis: <image source=imag
ne.jpeg type=JPEG /> Fiecare element dintr-un document XML valid a fost definit n DTD
-ul asociat acelui document prin declaraia DOCTYPE. DTD-ul declar urmtoarele: numel
e efective ale elementelor, regulile utilizate pentru a determina care elemente
se pot imbrica n alte elemente i n ce ordine, atributele posibile i valorile lor pre
stabilite sau constante, valorile caracter ale tipurilor enumerate, entitile neana
lizate utilizate n document i modul n care sunt referite prin nume, codificrile de l
imb utilizate n document, alte informaii importante pentru prelucrarea i redarea doc
umentului. Entiti neanalizate O entitate neanalizat este orice lucru care nu poate
fi recunoscut de un procesor XML, fie date binare, cum ar fi un fiier imagine sau
audio, fie text care trebuie s fie transferat unei aplicaii fr a fi prelucrat n vreu
n fel. HTML utilizeaz comentarii pentru a ascunde un astfel de text de browserul
HTML, dar XML are cteva mecanisme care funcioneaz mult mai sigur. O entitate neanal
izat trebuie mai nti s fie declarat ca NOTATION, o declaraie special care numete o ap
aie de asisten care tie cum s lucreze cu entiti de un
67

anumit tip. Notaiei i este dat un nume, un identificator public opional i apoi numel
e mai puin opional al aplicaiei de asisten, ca n una din variantele urmtoare:
<! NOTATION nume-mnemonic PUBLIC identificator-public> <! NOTATION nume-mnemonic P
UBLIC identificator-public nume-aplicaie.exe> <! NOTATION nume-mnemonic SYSTEM nume-ap
licaie.exe>

Prima opiune funcioneaz numai dac exist un catalog. Nu se poate pune baza pe un catal
og deoarece acesta funcioneaz indiferent dac exist sau nu catalog. Nu se poate baza
pe un catalog deoarece acesta este un instrument SGML pe care multe procesoare X
ML actuale l-au motenit implicit de la predecesoarele lor SGML. Studierea catalog
ului nu este specificat n recomandarea W3C i nu se poate conta niciodat pe ea. Dac es
te posibil, se recomand utilizarea ultimele dou versiuni. Pe de alt parte, codarea
hard a informaiilor despre locaia i identitatea aplicaiei de asisten n absolut fiecare
DTD este un anacronism predispus la erori pe Web.

3.4 XML-ul ca baz de date


Un document XML este o baz de date n sensul cel mai strict al cuvntului i anume este
o colecie de date. Se poate considera c aceste documente nu sunt diferite de oric
e alt tip de fiiere n fond, toate fiierele conin anumite tipuri de date. Avnd formatu
l unei baze de date documentele XML prezint anumite avantaje. De exemplu, este au
to-descris (tag-urile descriu structura i numele tipurilor de date, dar nu i seman
tica), este portabil (Unicode), i poate descrie date n structuri de arbori sau gra
furi. De asemenea are i dezavantaje. De exemplu, este prolixs(neclar) i accesul la
date este greoi datorit analizrii i conversiei textului. Putem considera i c XML i te
hnologiile asociate constituie o baz de date n sensul mai larg al cuvntului adic, un
sistem de gestiune a bazelor de date (SGBD). XML ofer multe din avantajele bazel
or de date: stocare (documente XML), scheme (DTD-uri, scheme XML, RELAX NG, .a,),
limbaje de interogare (XQuery, XPath, XQL, XML-QL, QUILT, etc.), interfee de pro
gramare (SAX, DOM, JDOM). Totui multe componente ale bazelor de date convenionale:
stocare eficient, indeci, securitate, tranzacii i integritatea datelor, accesul mul
ti-user, triggere, interogri fcute pe mai multe documente .a. Astfel, se pot folosi
documente XML ca o baz de date ntr-un mediu cu cerine modeste i date puine, dar acea
st soluie nu este viabil ntr-un mediu pentru producie n mas, unde exist muli utiliza
cerine stricte de integritate a datelor i nevoia de o performan bun. Cel mai importa
nt factor n alegerea unei baze de date este ce va stoca aceasta: date sau documen
te?. XML-ul poate fi folosit doar pentru a transporta date ntre baza de date i o a
plicaie sau poate fi folosit integral ca n cazul documentelor XHTML i DocBook. Scop
ul utilizrii XML este important deoarece toate documentele centrate pe date au an
umite caracteristici comune, la fel se ntmpla i n cazul informaiilor centrate pe docu
mente, i aceste caracteristici influeneaz felul cum XML-ul este stocat n baza de dat
e. Documentele centrate pe date sunt documente care folosesc XML-ul pentru trans
portul datelor. Aceste documente sunt folosite de ctre aplicaii i nu are nici o imp
ortan faptul c informaiile folosite au fost reinute pentru o perioad de timp n documen
e XML. Exemple de documente centrate pe date sunt ordine de plat, programarea zbo
rurilor, date tiinifice. Documente centrate pe date au o structur regulat, datele su
nt atomice (cea mai mic unitate independenta de date este un element sau un atrib
ut). Ordinea elementelor care apar n document nu este important, dect n momentul val
idrii documentului. Informaiile care exist n documentele centrate pe date pot proven
i din baza de date (caz n care se dorete extragerea lor n fiiere XML), dar i din afar
a bazei de date (caz n care se
68

dorete stocarea acestora n baza de date). Un exemplu de informaii care provin dintr
-o baz de date sunt cantitile de date stocare n bazele de date relaionale, iar un exe
mplu de informaii care se doresc a fi introduse ntr-o baz de date pot fi considerat
e datele tiinifice obinute de un sistem de msurtori i convertite n XML. Urmtorul mode
ste un document centrat pe date:
<OrdinVanzari NumarOV=35442> <Client NumarClient=423> <NumeClient>Alfa 123</NumeClient
> <Strada>Calea Vacaresti.</Strada> <Oras>Bucuresti</Oras> <Sector>IL</Sector> <
CodPostal>0040</CodPostal> </Client> <DataOrdin>20032009</DataOrdin> <Item Numar
Item=1> <Parte NumarParte=123> <Descriere> <p><b>caiet cu sina:</b><br /> Hartie alba,
garantie</p> </Descriere> <Pret>122</Pret> </Parte> <Cantitate>110</Cantitate>
</Item> <Item NumarItem=2> <Parte NumarParte=4516> <Descriere> <p><i>Separator:</i><br
/> Aluminiup> </Descriere> <Pret>533</Pret> </Parte> <Cantitate>130</Cantitate>
</Item> </OrdinVanzari>
Pe lng documentele centrate pe date, cu structura asemntoare cu documentul din exemp
lul anterior, multe documente care conin i text adiional sunt centrate pe date. Spr
e exemplu, s considerm o pagin web care conine informaii despre o carte. Dei pagina co
nine n mare parte text, structura acelui text este regulat, i o parte din acel text
este comun tuturor paginilor care descriu cri, fiecare poriune de text specific avnd
dimensiuni limitate. Astfel pagina ar putea fi construit dintr-un document XML si
mplu, centrat pe date care conine informaii despre o singur carte i este obinut dintr
-o baz de date i un stylesheet XSL care adaug textul care leag informaiile din XML. n
general orice site web care construiete documente HTML dinamic prin completarea u
nui template cu informaii dintr-o baz de date poate fi nlocuit cu mai multe documen
te XML centrate pe date i unul sau mai multe stylesheet-uri XSL. 3.5 Date, docume
nte i baze de date De obicei, datele sunt stocate ntr-o baz de date tradiional cum su
nt cele relaionale sau orientate-obiect. Documentele sunt stocate ntr-o baz de date
nativ XML (o
69

baz de date destinat stocrii XML) sau un sistem de gestionare a coninuturilor (conte
nt management system) o aplicaie destinat administrrii documentelor i construit peste
o baz de date nativ XML. Totui, aceste reguli nu sunt stricte. Datele, n special da
tele semistructurate, pot fi stocate n baze de date native XML i documentele pot f
i stocate n baze de date tradiionale, atunci cnd nu sunt necesare foarte multe cara
cteristici specifice XML. n plus, graniele dintre bazele de date tradiionale i cele
native XML devin din ce n ce mai neclare, deoarece la bazele de date tradiionale s
e adaug facilitai native XML i bazele de date native XML suport stocarea fragmentelo
r de documente n baze de date, de obicei relaionale, externe. Pentru transferarea
datelor ntre documente XML i o baz de date, este necesar maparea schemei documentulu
i XML (DTD, Scheme XML, RELAX NG, etc.) pe schema bazei de date. Software-ul pen
tru transferul de date este construit peste aceast mapare. Software-ul poate folo
si un limbaj de interogare XML (cum ar fi XPath, XQuery) sau poate transfera dir
ect date conform cu maparea (echivalentul n XML al interogrii SELECT * FROM Tabel).
n al doilea caz, structura documentului i structura necesar pentru mapare trebuie
s fie identice. Deoarece acest lucru se ntmpl destul de rar, produsele care folosesc
aceast strategie sunt adesea folosite mpreun cu XSLT. Astfel, nainte de transferare
a datelor n baza de date, documentul este nti adus la structura necesar maprii i apoi
datele sunt transferate. Similar, dup transferarea datelor din baza de date, docu
mentul obinut este adus la structura folosit de ctre aplicaie. Maprile ntre schemele d
ocumentelor i schemele bazelor de date sunt efectuate pe tipurile elementelor, at
ribute, i text. Aproape ntotdeauna, se omit structurile fizice (cum ar fi entitile i
informaia codificat) i unele structuri logice (cum ar fi instruciunile de procesare,
comentariile). Aceste omiteri nu au o influen prea mare, deoarece baza de date i a
plicaia sunt interesate numai de datele din documentul XML. Maparea, bazat pe tabe
le, este folosit de multe produse care efectueaz transferul de date ntre un documen
t XML i o baz de date relaional. Aceasta modeleaz un document XML ca o singur tabel sa
ca un set de tabele. Structura documentului XML este artat n exemplul urmtor. <baza
dedate>
<tabela> <linie> <coloana1>...</coloana1> <coloana2>...</coloana2> ... </linie>
<linie> ... </linie> ... </tabela> <tabela> ... </tabela> ... </bazadedate>
n funcie de software datele din coloane pot fi stocate ca elemente descendente sau
ca
70

atribute. n plus, produsele care folosesc mapri bazate pe tabele de multe ori incl
ud metadate fie la nceputul documentului fie ca atribute asociate fiecrui element
din tabel sau coloan. Maparea, bazat pe tabele, este utilizat pentru serializarea da
telor relaionale, ca n cazul transferrii datelor ntre dou baze de date relaionale. Dez
avantajul acestei mapri este c nu poate fi folosit pentru un document XML care nu r
espect formatul din exemplu. Instanierea obiectelor din model depinde de produsul
folosit. Unele produse dau posibilitatea generrii claselor n model i apoi, folosire
a obiectelor din aceste clase n aplicaii. n cazul folosirii acestor produse, datele
sunt transferate ntre documentul XML i aceste obiecte, i ntre aceste obiecte i baza
de date. Alte produse folosesc aceste obiecte numai pentru a vizualiza maparea i
transferul de date direct ntre documentul XML i baza de date. Modul n care maparea
obiectual-relaional este suportat variaz de la produs la produs. De exemplu: toate p
rodusele suport maparea tipurilor complexe de elemente pe clase i a tipurilor simp
le de elemente i atribute pe proprieti. toate produsele dau posibilitatea desemnrii
unui element rdcin care nu este mapat pe modelul obiect sau pe baza de date. Acest
element este folositor atunci cnd se dorete stocarea obiectelor cu mai multe nivel
e n acelai document XML. majoritatea produselor ofer posibilitatea specificrii dac pr
oprietile sunt mapate pe atribute sau pe elemente descendente n documentul XML. Une
le produse permit combinarea atributelor cu elementele descendente; altele cer f
olosirea numai a elementelor descendente sau a atributelor. majoritatea produsel
or permit folosirea numelor diferite n documentul XML i baza de date, dar sunt anu
mite produse care necesit folosirea acelorai nume att n documentul XML ct i n baza de
ate. majoritatea produselor permit specificarea ordinii n care elementele descend
ente apar n printele lor, dar care face imposibil construirea mai multor modele pen
tru coninut. Din fericire, modelele pentru coninut suportate sunt suficiente pentr
u majoritatea documentelor centrate pe date (ordinea este important numai dac se f
ace validarea documentului). multe produse transfer date direct conform cu modelu
l pe care sunt construite. O schema XML se genereaz dintr-o schem relaional astfel:
pentru fiecare tabel se genereaz un tip de element pentru fiecare coloan care nu es
te cheie n acea tabel, dar i pentru coloanele chei primare, se adaug la model un atr
ibut la tipul elementului sau un element descendent ce conine numai PCDATA. La fi
ecare tabel pentru care cheia primar este exportat, se adaug un element descendent l
a model i se proceseaz tabela recursiv. Pentru fiecare cheie strina, se adaug un ele
ment descendent la model i se proceseaz tabela cu cheie strin recursiv. Exist cteva de
zavantaje la aceste procedee. Multe dintre acestea se pot corecta uor de ctre prog
ramator, cum ar fi coliziuni de nume i specificarea lungimilor i tipurilor de date
ale coloanelor. DTD-urile nu conin informaii despre tipurile de date, deci nu est
e posibil cunoaterea tipurilor de date care ar trebui folosite n baza de date. Tipu
rile de date i lungimile pot fi prevzute dintr-o schem XML. O problem mai important e
ste aceea c modelul de date folosit de documentul XML este adesea diferit i de obi
cei mai complex dect cel mai eficient model pentru stocarea datelor n baza de date
. De exemplu, se consider urmtorul fragment XML:
71

<Client> <Nume>ABC </Nume> <Adresa> <Strada>Calea Vacaresti.</Strada> <Sector>1<


/Sector> <Tara>Romania</Tara> <CodPostal>0040</CodPostal> </Adresa> </Client>

Procedura pentru generarea unei scheme relaionale dintr-o schem XML ar crea dou tab
ele: una pentru clieni i una pentru adrese. Totui, n majoritatea cazurilor, ar fi ma
i bine s se rein adresa n tabela de clieni, i nu ntr-o tabel separat. Elementul <Adr
este un bun exemplu pentru un element wrapper. Elementele wrapper sunt n general
folosite din dou motive. n primul rnd, ele ofer structuri adiionale ceea ce face docu
mentul mai uor de neles. n al doilea rnd, ele sunt de obicei folosite ca o form de red
actare a datelor. De exemplu, elementul <Adresa> ar putea fi trimis la o rutin ca
re transform toate adresele n obiecte Adresa, indiferent unde apar acestea. Daca e
lementele wrapper sunt folositoare n XML, n general ele cauzeaz probleme atunci cnd
sunt mapate la baza de date dac acestea se gsesc sub forma extra-structurilor. Din
aceast cauz, ele ar trebui eliminate din schema XML naintea generrii schemei relaion
ale. Din moment ce este puin probabil c modificarea schemei XML ar trebui s fie per
manent, acest lucru duce la o neconcordan ntre documentul existent i documentele pres
upuse de ctre soft-ul de transfer de date, din moment ce elementele wrapper nu su
nt incluse n mapare. Acest lucru poate fi rezolvat prin transformarea documentelo
r la rulare cu XSLT: elementele wrapper sunt eliminate naintea transferrii datelor
n baza de date i sunt inserate dup transferul datelor din baza de date. Cu toate a
ceste dezavantaje, procedurile de mai sus ofer n continuare un punct de pornire fo
lositor pentru generarea schemelor XML din scheme relaionale i invers, n special n s
isteme mari. Pentru stocarea documentelor XML exist dou strategii de baz: stocarea
lor n sistemul de fiiere sau ca un BLOB ntr-o baz de date relaional i acceptarea func
alitilor XML limitate, sau stocarea lor ntr-o baz de date nativ XML. Dac se lucreaz cu
un set simplu de documente, cum ar fi un set mic de documentaie, cea mai uoara cal
e de stocare este n sistemul de fiiere. Se pot folosi instrumente cum ar fi grep pent
ru interogarea lor, i sed pentru modificarea lor. Cutrile complete de text n documente
e XML sunt inexacte, pentru c ele nu pot distinge marcajul de text i nu pot nelege f
olosirea entitilor. Totui, ntr-un sistem mic, aceste inexactiti ar putea fi acceptabil
e. Dac se dorete un simplu control al tranzaciilor, documentele pot fi ntreinute cu o
versiune de control a sistemului cum ar fi CVS sau RCS.
3.6 Stocarea documentelor n BLOB-uri
O opiune puin mai sofisticat este stocarea documentelor ca BLOB-uri ntr-o baz de date
relaional. Aceast modalitate ofer un numr de avantaje a bazelor de date: controlul t
ranzaciilor, securitate, acces multiuser. n plus, multe baze de date au instrument
e pentru cutri de text i pot face cutri complete de text, cutri aproximative, cutri
ime i cutri fuzzy. Unele dintre aceste instrumente sunt construite pentru a recunoat
e XML, ceea ce va elimina problemele care apar la cutrile documentelor XML ca simp
lu text.
72

Atunci cnd se stocheaz documente XML ca BLOB-uri, se pot implementa uor indexri simp
le care recunosc XML, chiar dac baza de date nu poate indexa XML. O modalitate de
a face acest lucru este crearea a dou tabele, o tabel index i o tabel document. Tab
ela document conine o cheie primar i o coloan BLOB n care este reinut documentul. Tabe
la index conine o coloan n care se gsete valoarea ce va fi indexat i o cheie strin c
uce la cheia primar a tabelei document. Atunci cnd documentul este stocat n baza de
date, el este cutat pentru toate instanele elementului sau atributului care este
indexat. Fiecare instana este stocat n tabela index, mpreuna cu cheia primara a docu
mentului. Coloana de valori este apoi indexat, i permite unei aplicaii s efectueze o
cutare rapid a unei anumite valori a unui element sau atribut i s recupereze docume
ntul corespunztor. De exemplu, se consider un set de documente cu urmtorul DTD i se
dorete construirea unui index de autori: <!ELEMENT Brosura (Titlu, Autor, Continu
t)> <!ELEMENT Titlu (#PCDATA)> <!ELEMENT Autor (#PCDATA)> <!ELEMENT Continut (%I
nline;)> <!-- Inline entity from XHTML --> Acestea ar putea fi stocate n urmtoarel
e tabele: Autori Brosuri ---------------------- --------Autor VARCHAR(50) Brosur
ID INTEGER BrosuraID INTEGER Brosura LONGVARCHAR Cnd se insereaz o brour n baza de da
te, aplicaia insereaz broura n tabela Brouri, apoi caut elementele <Autor>, reinnd va
ile acestora i ID-ul brourii din tabela Autori. Aplicaia poate recupera brourile n fu
ncie de autor cu o simpl fraza SELECT. De exemplu, pentru a recupera toate brourile
scrise de autorul Chen, aplicaia execut urmtoarea interogare: SELECT Brosura FROM Bro
suri WHERE BrosuraID IN (SELECT BrosuraID FROM Autori WHERE Autor= Ionescu ) Un
ele baze de date native XML pot include date aflate la distan n documente stocate n
baza de date. De obicei, aceste date sunt recuperate dintr-o baz de date relaional
cu ODBC, OLE DB, sau JDBC i sunt modelate folosind maparea bazat pe tabele sau map
area relaional-obiectual. Daca aceste date sunt live, adic dac actualizrile documentul
i din baza de date nativ XML sunt reflectate n baza de date aflat la distan depinde d
e baza de date nativ XML. n viitor, majoritatea bazelor de date native XML vor sup
orta date live aflate la distan. Sisteme de management ale coninuturilor Sistemele de
management ale coninuturilor sunt un alt tip specializat de baze de date native
XML. Acestea sunt proiectate pentru operarea cu documente scrise de oameni, cum
ar fi manualele de utilizare, i sunt construite peste baze de date native XML. Ba
za de date, este n general, ascuns de utilizator n spatele unui front end care ofer ca
acteristici, precum: control al versiunilor i al accesului; motoare de cutare; edi
toare XML/SGML; motoare de publicare pe hrtie, CD sau pe Web; separarea coninuturi
lor i a stilurilor;
73

extinderea n scripturi i programare; integrarea datelor din baza de date. Termenul


de sistem de management al coninuturilor, spre deosebire de sistem de management
al documentelor, reflect faptul c asemenea sisteme permit, n general, mprirea documen
telor n fragmente cu coninut discret, cum ar fi exemple, proceduri, capitole, dar i
metadate cum ar fi numele autorilor, datele reviziilor, i numerele documentelor,
dect s opereze cu fiecare document ca un ntreg. Nu numai c, astfel se simplific coor
donarea lucrului mai multor scriitori la acelai document, dar permite i asamblarea
unor documente noi din componente care exist deja. Ce este RSS? Feed-urile RSS s
unt de obicei folosite pentru a oferi coninut sau poriuni de coninut (articole, mes
aje, tiri, anunuri, etc) ntr-un format standard, care poate fi preluat de aplicaii s
pecializate (gen browsere, editoare de tiri, roboi de cutare, etc) i afiate apoi dest
inatarului. Dect s verificm n fiecare or ce a mai aprut nou pe paginile preferate, fol
osii o aplicaie care va afia noutile direct cnd apar. Un fiier RSS este scris n metal
ajul de marcare XML (eXtensible Markup Language), extensia fiierului este .rss sa
u .xml (dar poate fi i .html sau .php, dar atunci nu este nestandard) iar tipul M
IME al fiierului trebuie s fie application/rss+xml. Pentru a introduce un fiier RSS
n paginile unui site trebuie specificat n partea de HEAD a documentului web urmtoa
rea linie <link rel="alternate" type="application/rss+xml" title="RSS" unde pent
ru href trebuie specificat calea ctre fiierul RSS. Astfel spunem browserului sau a
plicaiei (client) de unde s citesc informaiile.Se poate face referire la un feed RSS
i printr-un link direct (de obicei se folosete o poz standard pentru RSS) iar n ace
st caz vizitatorul este invitat s dea click pe acea imagine pentru a prelua feedurile oferite de acea pagin web. n interiorul unui feed-RSS se gsesc itemuri (obiec
te). Orice fiier RSS trebuie s conin cel puin un item. Item-urile sunt n general pagin
ile web care dorim s le dm ctre ali vizitatori. De exemplu, dorii s informm cititorii
e apariia unui nou articol pe site. Informaia despre acea pagin va forma un item. P
entru a introduce un item n fiierul RSS va trebui s completm elementele: Titlul- Des
crierea- LinkTitlul. Fiierele XML utilizeaz taguri pentru a specifica titlul, desc
rierea i linkul. Exemplu pentru descrierea unui item:
<item> <title>Titlul articol1</title> <description>Descrierea articolului 1 </de
scription> <link>http://www.legatura_catre_pagina_articolului1.ro</link> </item>
<item> <title>Titlu2 articol </title> <description> Descrierea articolului 2 </
description> <link>http:/www.legatura_catre_pagina_articolului2.ro </link> </ite
m>
Deci, un feed-RSS este format dintr-o serie de iteme, iar acestea sunt legate mpr
eun pentru a crea un "Canal". Canalul apare la nceputul fiierului i la fel ca itemur
ile, canalele utilizeaz titlul, descrierea i linkul pentru a descrie coninutul. De
asemenea trebuie s indicai ce tip de document este, introducnd pentru aceasta tagur
ile pentru document de tip XML i RSS. Sfritul fiierului va arta ca n exemplul urmtor:
<?xml version="1.0"?> <rss version="2.0"> <channel>
74

<title>Titlul canalului </title> <description>Explicatia</description> <link>htt


p://www.legatura_catre_pagina_articolului</link> <item> <title>Primul titlu</tit
le> <description>Descriere</description> <link>http://www.legatura_catre_pagina_
articolului</link> </item> <item> <title>Titlul 2 </title> <description>Descrier
ea</description> <link>http://www.legatura_catre_pagina_articolului</link> </ite
m> </channel> </rss>
75

Modulul IV. PHP i MySQL


PHP este un acronim care provine din "Hypertext Preprocessor" i este un limbaj de
scripting, realizat i distribuit n sistem Open Source, special realizat pentru a
dezvolta aplicaii web, prin integrarea codului PHP n documente HTML. Sintaxa sa pr
ovine din C, Java i Perl i este uor de nvat. Scopul principal al limbajului este acela
de a scrie rapid pagini web dinamice i ofer suport pentru manipularea bazelor de
date de tip SQL (dBase, Informix, MySQL, mSQL, Oracle, PostgreSQL, Solid, Sybase
, ODBC etc.) ct i acces la sisteme hipermedia. De asemenea, PHP suport ncrcarea fiiere
lor de pe calculatorul client, operaie cunoscut sub numele de upload (standard pro
pus de E. Nebel i L. Masinter de la Xerox) i ofer suport pentru cookies (mecanism d
e stocare a datelor n navigatorul client pentru identificarea utilizatorilor, pro
pus de Netscape). Aceast aplicaie este disponibil, gratuit, pe Internet, pentru med
ii Unix ct i pentru medii Windows, integrndu-se n severul Apache. Istoria PHP-ului nc
epe la sfritul anului 1994, cnd Rasmus Lerdorf dezvolt prima versiune, ca proiect pe
rsonal. PHP-ul este fcut public n anul 1995 sub denumirea de Personal Home Page To
ols, fiind considerat un analizor simplist ce puteau fi incluse n cadrul document
elor HTML, permind contorizarea accesului la paginile. Analizorul a fost rescris l
a mijlocul aceluiai an i denumit apoi PHP/FI 2.0, unde FI era o alta aplicaie scris
de Rasmus Lenford. Ultetrior a fost adugat i suportul pentru bazele de date mSQL i
astfel PHP/FI a nceput s aib succes, fiind disponibil gratuit pe Web. Programatorii
Zeev Suraski i Andi Gutmans rescriu analizorul PHP i noua aplicaie formeaz nucleul
versiunii PHP 3.0 care include o parte din vechile surse PHP/FI 2.0. Relativ rec
ent, la nceputul anului 2000, a fost fcut public versiunea PHP 4.0, utiliznd puternic
ul motor de scriptare Zend i oferind suport nu numai pentru serverul Apache ci i p
entru alte servere Web. De asemeni, PHP 4.x ofer posibilitatea accesrii documentel
or XML via DOM. PHP n versiunea curent 5.2.8 lansat pe 08 decembrie 2008 i reprezin
t un pachet puternic care ofer un limbaj de programare accesibil din cadrul fiierel
or HTML, limbaj asemntor cu Perl sau C. Marea calitate i cel mai mare avantaj al li
mbajului PHP este posibilitatea de conexiune cu un numr mare de baze de date. A r
ealiza o pagin web dinamic cu o baz de date este extrem de simplu. Cea mai folosit d
intre ele este denumit MySQL. Limbajul PHP are deasemenea suport pentru diverse s
ervicii server, utiliznd protocoale precum IMAP, SNMP, NNTP, POP3 i HTTP. Paginile
HTML sunt de tip static, adic informaiile prezentate n aceste pagini sunt identice p
entru toi vizitatorii, fiind simple pagini de prezentare. Web-ul este ns dinamic, a
dic pentru unel pagini este nevoie s fie actualizate n timp real. Dac doi vizitatori,
aflai n locuri diferite, acceseaz acelai site de joburi n acelai timpasrefel nct unul
rete afiarea joburilor din domeniul economic, iar al doilea dorete afiarea joburilor
din domeniul securitii i sntii n munc, atunci serverul web va afia pentru fiecare
or al site-ului pagina corespunztoare cerinelor specificate. Acest lucru este posi
bil datorit tehnologiilor de tip client-server. Acest tip de tehnologii presupun
stocarea datelor pe un server web i apoi afiarea acestora la cererea fiecrui vizita
tor, n forma dorit de acesta.
76

Un server web reprezint un calculator conectat permanent la Internet, care trimi


te ctre client (care este un calculator pe care ruleaz un browser) pagini n format
HTML. La un server se pot conecta simultan mai muli clieni, care pot avea acces la
aceleai informaii. Diferena este esenial comparativ cu paginile simple HTML, care su
nt afiate n browserul vizitatorului aa cum au fost construite. Web-ul este dinamic,
iar programele care fac posibil acest lucru sunt numite scripturi CGI sau scrip
turi server-side, ntruct acestea folosesc o interfa standard numit Common Gateway. Sc
ripturile sunt scrise n limbajul C sau cu ajutorul unui limbaj specializat, numit
i limbaj de scripting (cele mai utilizate fiind PHP, ASP i Perl) i sunt stocate pe
serverul web pe care i ruleaz. Diferena dntreun limbaj de scripting pe partea de cl
ient (ex. JavaScript) i unul server-side este esenial doarece JavaScript ruleaz n bro
wserul clientului, pe cnd un script serverside ruleaz pe server, avnd acces la unel
e informaii stocate pe server la care un script client-side nu are acces. Un exem
plu sugestiv este un contor de pagina web. De cte ori cineva acceseaz pagina, scri
ptul server-side va contoriza vizitarea paginii ntr-o baz de date stocat pe server.
ntr-o sesiune client-server care conine i interogarea unei baze de date au loc urmt
oarele etape: introducerea adresei n bara de adrese a browserului; serverul web p
rimete cererea i determin execuia unui script de pe server; scriptul extrage unele d
ate dintr-o baz de date; datele extrase sunt prelucrate i convertite n format HTML;
pagina n format HTML este transmis serverului web; serverul web transmite pagina
browserului care a trimis cererea; browserul afieaz informaiile utilizatorului. n pr
actic pentru a crea aplicaii web interactive, avem nevoie de: un server web (softw
are), un limbaj de scripting pe partea de server, un server de baze de date. Ace
ste elemente se pot descrca gratuit din Internet de la adresele: serverul web Apa
che ( http://www.apache.org/ ) avnd variante Apache pentru Linux ct i pentru Window
s i este gratis, stabil i rapid. limbajul PHP ( http://www.php.net/ ) este folosit
de peste 45% din site-urile interactive i este gratis, uor de nvat (sintaxa asemntoar
cu C), ofer foarte multe funcii, ofer suport pentru multe tipuri de baze de date (
nici un alt limbaj nu ofer asemenea suport). serverul de baze de date MySQL ( htt
p://www.mysql.com/) este gratis i rapid . Combinaia PHP i MySQL este folosit prepond
erent. Dac se lucreaz local, atunci vizualizarea (testarea aplicaiilor php) se real
izeaza in cadrul unui browser, cu condiia ca, n bara de adrese, s se editeze http:/
/localhost/eventual numele folderului ce contine sursele php (vezi figura 4.1 i 4
.2).
77

Figura 4.1 Fereastra localhost


Figura4.2 Fereastra browserului pentru rularea scripturilor
78

VARIABILE GLOBALE sunt sunt disponibile n orice zona a codului surs. Exemple:
$GLOBALS $_SERVER $_GET i $_POST $_COOKIE $_FILES $_ENV $_REQUEST $_SESSION cupri
nde referine spre orice variabil global care este accesibil scriptului PHP curent; c
onine o serie de variabile ale cror valori sunt setate de server-ul web. (majorita
tea depind de mediul de execuie al script-ului curent); sunt variabile array glob
ale. $_GET poate fi folosit pentru a trimite variabile cu valori prin intermediul
link-urilor. $_POST poate fi folosit pentru a trimite variabile cu valori prin i
ntermediul formularelor. conine valorile variabilelor care cuprind informaii refer
itoare la cookie-urile pstrate pe calculatorul utilizatorului ce acceseaz pagina w
eb. conine variabile primite de script prin intermediul ncrcrilor de fiiere prin meto
da post. conine variabile disponibile prin intermediul mediului n care este execut
at. variabile disponibile prin intermediul oricrui tip de mecanism cu ajutorul cru
ia utilizatorul poate introduce date. variabile care corespund sesiunii curente
a script-ului.

Constante constant stocheaz o valoare, ca i o variabil, doar c dup ce a fost stabilit


u mai poate fi modificat n script. numele constantelor se scriu cu majuscule. defi
nirea lor se realizeaz cu funcia define(). diferena important ntre constante i variab
le este faptul c o constant nu are n faa denumirii semnul $.
<?php define(DISCIPLINA,PHP-MySQL); define(SPECIALIZARE,informatica); echo Specializ
SPECIALIZARE. studiaza disciplina .DISCIPLINA; ?>
Constante predefinite limbajul PHP conine un numr mare de constante predefinite pe
ntru fiecare script care ruleaz.
__LINE__ __FILE__ __FUNCION__ __CLASS__ __METHOD__ conine numrul curent al liniei d
in fiier calea i numele fiierului curent returneaz numele funciei care a fost declara
t returneaz numele clasei care a fost declarat returneaz numele metodei care a fost
declarat;
Crearea scripturilor PHP
79

Pentru crearea scripturilor PHP este necesar un editor de texte obinuit, dei exist i
editoare specializate. Totui, dac folosii un instrument diferit de Notepad, trebui
e s luai msuri pentru a salva scriptul dumneavoastr sub form de document text, n caz c
ontrar, fiierul script conine informaii de formatare care vor deruta serverul PHP.
Numele fiierului trebuie s fie alctuit numai din caractere minuscule, cifre i liniue.
Utilizarea spaiilor i a altor caractere este interzis. Extensia numelui fiierelor t
rebuie s fie *.php. Fiecare script PHP include dou linii, care indic serverului c te
xtul cuprins ntre acestea este format din instruciuni PHP.
<?php // continutul scriptului ?> sau, echivalent: <? // continutul scriptului ?
>
Scripturile PHP execut urmtoarele de operaii elementare: preluarea datelor de la ut
ilizator, prelucrarea acestor date, obinerea accesului la datele stocate pe serve
r, prelucrarea datelor stocate pe server i afiarea datelor. Scripturile PHP sunt f
ormate din instruciuni iar cea mai simpl instruciune PHP este cea de afiare a unui t
ext n browser.
echo Informaii afiate n browser;
Tag-urile HTML se introduc n codul PHP astfel: echo <b> <i> Introducerea codului H
TML ntr-un script </i> </b>; Un comentariu se introduce ntr-un script PHP cu ajutor
ul marcajului // (cnd comentariul este scris pe o singur linie) sau /* coninutul co
mentariului */ (atunci cnd comentariul este scris pe mai multe linii).
<?php // comentariu pe o linie //continutul scriptului ?> <?php /* comentariu pe
mai multe linii */ // continutul scriptului ?>
Structuri de control ntlnite n PHP sunt: Alternative o IF o Else o Elseif o Switch
Repetitive o While o For o Do while
80

Break Continue Declare Exemplu:


<?php $arr = array( a , b , c , stop , d , e ); while (list (, $val) = each (
$arr)) { if ($val == stop ) { break; } echo "$val<br />\n"; } /* Utilizand argu
mente optionale. */ $i = 0; while (++$i) { switch ($i) { case 5: echo "At 5<br /
>\n"; break 1; /* sfarsit switch-ul. */ case 10: echo "Mesaj 1<br />\n"; break 2
; /*sfarsit switch i while. */ default: break; } } ?>

Instruciunea continue este utilizat ntr-o bucl iar execuia iteraiei curente este ntrer
p i se trece la execuia iteraiei urmtoare. Instruciunea continue accept un argument nu
eric opional care va indic cte bucle imbricate vor fi ignorate. Exemplu:
<?php $i = 0; while ($i++ < 5) { echo "mesaj 1<br>"; while (1) { echo "&nbsp;&nb
sp;Mesaj 2<br>\n"; while (1) { echo "&nbsp;&nbsp;Mesaj 3r<br>\n"; continue 3; }
echo "Acesta nu va fi afisat.<br>\n"; } echo "Nici una din acestea.<br>\n";
81

} ?>
Instruciunea foreach versiunea PHP4 (nu i PHP3) dispune de comanda foreach, ca Per
l sau alte limbaje. Instruciunea ofer un mod simplu de a parcurge un tablou. Exist
dou sintaxe posibile: foreach( array_expresion as $value) { list de instruciuni } f
oreach( array_expresion as $key => $value) { list de instruciuni } Prima form trece
n revist tabloul array_expression. La fiecare iteraie, valoarea elementului curent
este atribuit lui $value i pointerul intern al tabloului este incrementat cu un e
lement (astfel, la urmtoarea iteraie avei acces la urmtorul element). A doua form fac
e acelai lucru, dar indicele elementului curent va fi atribuit variabilei $key la
fiecare iteraie. Cnd foreach ncepe s fie executat, pointerul intern al fiierului este
automat repoziionat pe primul element al tabloului. Acest lucru nseamn c nu vei avea
nevoie s facei apel la reset() nainte de foreach. Exemplu
<?php $arr = array("1", "2", "3"); reset ($arr); while (list(, $value) = each ($
arr)) { echo "Value: $value<br />\n"; } foreach ($arr as $value) { echo "Value:
$value<br />\n"; } ?>
sau
<?php $arr = array("1", "2", "3"); reset($arr); while (list($key, $value) = each
($arr)) { echo "Key: $key; Value: $value<br />\n"; } foreach ($arr as $key => $
value) { echo "Key: $key; Value: $value<br />\n"; } ?>
82

Folosirea PHP-ului cu formulare HTML


Caracterizarea formularelor HTML Permit introducerea datelor de ctre vizitatorul
paginii web. Crearea se face ncepnd cu matematicachea de etichete <form></form>. At
ributele lui <form> sunt: action i method. Action precizeaz ce se va ntmpla cu datel
e introduse n formular. n general i se asociaz adresa unui script aflat pe server (n
cazul nostru numele fiierului PHP) care va prelucra datele. Method se refer la mo
dul n care vor fi trimise datele spre scriptul de pe server. Valorile posibile su
nt: GET i POST. GET permite trimiterea cantiti restrnse de date prin adugarea lor la
URL POST permite trimiterea cantitilor mari de date iar acestea sunt expediate sep
arat. O regul empiric privind alegerea ntre GET i POST ar fi urmtoare: muli programato
ri utilizeaz GET pentru formularele care execut o cutare sau interogare i POST pentr
u formularele care actualizeaz o baz de date sau un fiier. Astfel, datele trimise p
rin metoda GET pot fi vizualizate de catre utilizator. Pentru a realiza un formu
lar se utilizeaz eticheta FORM exemplificat n capitolul HTML: <FORM name =numeformul
ar METHOD=metoda ACTION=url > Atributul ACTION specific adresa URL a scriptului PHP ca
re prelucreaz datele transmise prin intermediul formularului. Adresa URL poate fi
o adresa complet, care include protocolul, numele gazdei i calea de acces, respec
tiv o adres parial, care specific o locaie relativ la locaia paginii curente. Exemplu:
<FORM method=POST action=test1.php> Pricipalele controale care pot fi incluse n formu
lar (vezi capitolul de HTML) ct i principalele evenimente ataate acestora sunt: Lis
t controale: textbox (text), password textbox (password), butoane radio (radio),
casete de validare (checkbox), butoane (button, submit, reset), lista derulant (s
elect), editbox (textarea), caseta de fiier (file). List evenimente: onclick ondbl
click onmousedown onmouseup onmouseover
83


onmousemove onmouseout onkeypress onkeydown onkeyup

Prin intermediul formularului se trimite la server un fiier astfel: <input type=fi


le accept=tip_mime name=nume value=text> unde: accept este un atribut care specific
l fiierului, name este numele casetei, value se folosete pentru un nume prestabili
t de fiier, MIME (Multipurpose Internet Mail Extensions). n eticheta form trebuie
adugat i atributul enctype=multipart/form-data . n general prelucrarea datelor transm
ise la server se face ntr-un fiier distinct dect cel care conine formularul, caz n ca
re action=nume_fiier.php. Verificari i exemple nainte de a prelucra date este indicat
s: - se testeaz dac au fost trimise datele pentru fiecare cmp (funcia isset), - se v
erific dac acel cmp conine valoare nenula (funcia empty), - dac prelucrarea datelor se
face n acelai fiier cu formularul, se va introduce i o linie de iniializare a variab
ilelor echivalente cmpurilor din formular. O variabil se preia dintr-un formular p
rin una din modalitile : 1. $_POST[nume_variabil] sau cu $_GET[nume_variabil] (n fun
atributul method al formului, acesta poate fi post sau get), 2. se poate utiliz
a i $HTTP_POST_VARS[nume_variabil] rspectiv $HTTP_GET_VARS[nume_variabil], 3. dac n
ni (fisierul de configurare al php-ului) este setat register_globals=on atunci s
e poate utiliza forma $nume_variabil. Exemplu pentru preluare date din fiierul test
.html i transmiterea acestora fiierului test.php.
<form action="test.php" method="POST"> Introduceti numele : <input type="text" n
ame="name"><br> <input type="submit" value="Trimite"> </form>
Fiierul test.php arat
<?php echo "Bun venit ".$_POST["name"]." !!"; ?>
84

Exemplu pentru preluare date din fiierul test1.html i transmiterea acestora fiierului
test1.php.
<form action="test1.php" method="POST"> Alb <input type="checkbox" name="color_a
lb" value="alb"><br> Rosu <input type="checkbox" name="color_rosu" value="rosu">
<br> Verde <input type="checkbox" name="color_verde" value="verde"><br> <input t
ype="submit" value="Trimite"> </form>
Fiierul test1.php arat
<?php echo "Ati selectat culorile :<br>"; if($_POST["color_alb"]!="") echo "Culo
area ".$_POST["color_alb"]." !!<br>"; if($_POST["color_rosu"]!="") echo "Culoare
a ".$_POST["color_rosu"]." !!<br>"; if($_POST["color_verde"]!="") echo "Culoarea
".$_POST["color_verde"]." !!<br>"; ?>
Exemplu pentru preluare date din fiierul test2.html i transmiterea acestora fiierului
test2.php.
<form action="test2.php" method="POST"> Alb <input type="radio" name="color" val
ue="alb"><br> Rosu <input type="radio" name="color" value="rosu"><br> Verde <inp
ut type="radio" name="color" value="verde"><br> <input type="submit" value="Trim
ite"> </form>
Fiierul test2.php arat
<?php echo "Ati selectat culoarea :".$_POST["color"]." !!!"; ?>
Exemplu pentru preluare date din fiierul test3.html i transmiterea acestora fiierului
test3.php.
<form action="test3.php" method="POST"> Selecteaz culoare : <select name="color[]
" MULTIPLE size="3"> <option>alb</option> <option>negru</option> <option>rosu</o
ption> <option>verde</option> <option>albastru</option> <option>galben</option>
</select> <input type="submit" value="Trimite">
85

</form>
Fiierul test3.php arat
<?php if(is_array($_POST["color"])){ $c=count($_POST["color"]); echo "Ati select
at culorile<br>"; foreach ($_POST["color"] as $key => $value) echo "$value<br>";
} else{ echo "Ati selectat culoarea :".$_POST["color"]." !!!"; } ?>
Exemplu de aplicaie care opereaz cu liste de selecie din care preiau date cu metoda
POST i sunt transmise fiierului exemplu.php. Fiierul *.HTML conine:
<html> <head> <title></title> </head> <body> <form name="f" action="exemplu.php"
method="post"> <SELECT name="s" size="3"> <option value="Carti">Carti</option>
<option value="Caiete">Caiete</option> <option value="Rechizite">Rechizite</opti
on> <br> <input type="submit" value="trimite"> <input type="reset" value="reset"
> </form> </body> </html>
Fiierul exemplu.php conine:
<?php $a=$_POST["s"]; if ($a) echo $a; else echo "nu ai bifat nimic" ?>
Aplicaie care preia numele i parola ultilizatorului, le compar iar dac nu sunt corec
te reafieaz formularul (vezi figura 4.3).
86

Figura 4.3 Fereastra browserului pentru testare user i parola


Fiierul html are codul de mai jos.
<html> <head> <title></title> </head> <body> <form name="f" action="test.php" me
thod="post"> <h1>Nume:</h> <input type="text" name="t1"> <br> <h1>Parola:</h><in
put type="password" name="t2"> <br> <input type="submit" value="trimite"> <input
type="reset" value="reset"> </form> </body> </html>
Fiierul test.php la care sunt transmise datele are codul:
<?php $a=$_POST["t1"]; $b=$_POST["t2"]; if ($a=="student" && $b=="utm") echo "ok
"; else echo "<h1>ai gresit</h>"; include "ex12.html"; //functia include are rol
de reapelare a fisierului html, n scopul reafirii formularului. ?>
Aplicaie care prin intermediul butoanelor radio modific culoarea de fundal a pagin
ii ca n figura 4.4.
87

Figura 4.4 Fereastra browserului cu butoane radio


Fiierul html are codul:
<html> <head> <title></title> </head> <body> <form name="f" action="ex13.php" me
thod="post"> <input type="radio" name="r" value="red">rosu <br> <input type="rad
io" name="r" value="blue"> albastru <br> <input type="radio" name="r" value="gre
en"> verde <br> <input type="submit" value="trimite"> <input type="reset" value=
"reset"> </form> </body> </html> Fiierul ex13.php la care sunt transmise datele a
re codul: <?php $a=$_POST["r"]; if ($a) echo "<html> <head> <title></title> </he
ad> <body bgcolor= ".$a." > <form name= f action= ex13.php method= post > <inp
ut type= radio name= r value= red >rosu <br> <input type= radio name= r valu
e= blue > albastru <br> <input type= radio name= r value= green > verde <br> <
input type= submit value= trimite > <input type= reset value= reset > </form><
/body> </html>" ?>
88

Funcii n PHP
Definirea unei funcii se realizeaz function nume_funcie(param1, param2,,paramN){ ins
truciuni; } Apelarea unei funcii se realizeaz: $var_returnat=nume_funcie(param1,param
2,..,paramN); O funcie poate fi definit oriunde n cadrul script-ului, iar n interior
ul unei funcii poate s apar orice secven valid de cod (poate cuprinde definirea altor
funcii, clase etc.). Pentru ca funcia s returneze un rezultat se folosete construcia
return urmat de un parametru ce reprezint valoarea funciei. n momentul ntlnirii aceste
i construcii execuia funciei se ncheie. Rezultatul obinut dup apelarea unei funcii poa
e fi de orice tip de dat. Funciile pot returna vectori i obiecte. Funcii de afiare Pr
int(ir) Print_r($variabil) afieaz informaii despre o variabil, ntr-un format uor de
nl2br(ir) insereaz rnduri noi (HTML) acolo unde a fost folosit caracterul special
\n. var_dump(variabil) afieaz informaii despre o variabil Funcii pentru iruri str_
t($ir, $n) repet irul $ir de un numr de n ori. strrchr($ir, $caracter) returneaz
unui $ir, ncepnd cu ultima apariie a caracterului $caracter n irul $ir. trim($ir)
n spaiile din stnga i din dreapta unui ir. explode($separator, $ir) rupe valorile
un ir n care ele sunt delimitate de un separator, i le plaseaz ntr-un vector implode(
$ir, $vector) - preia valorile dintr-un vector i le reunete ntr-un ir number_format($
numr) afieaz valoarea numeric folosind separatorul de mii. strpos($sir_princip,$sir_
cutat) - returneaz poziia n care se regsete irul cutat n irul principal. substr($
$end) extrage parte dintr-un ir ncepnd din poziia $start i pn n poziia $end. int
tring str) returneaz lungimea unui ir de caractere; string strstr(sirul de baza, si
rul cautat) returneaz subirul din irul de baz care ncepe cu irul cutat (exemplu: $em
= abc@utm.com ; $domain = strstr($email, @ ); print $domain; // tipareste @ut
m.com.). string strtolower( string str) convertete un ir la litere mici. string st
rtoupper(string str) convertete un ir la litere mari. string ucwords(string str) c
onvertete un ir astfel ncat va avea fiecare iniiala a fiecarui cuvant scris cu majusc
ul. Restul literelor rmn neschimbate. string ucfirst(string str) convertete un ir as
fel nct va fi scris cu iniiala majuscula. Restul literelor ramn neschimbate.

89

int strcmp(string str1, string str2) compar irul str1 cu irul str2 din punct de ved
ere al codului ASCII, i returneaz urmatoarele valori ntregi:<0 dac str1 este mai mic
decat str2, > 0 dac str1 este mai mare decat str2 i 0 dac sirurile sunt egale. tri
m() - funcie care elimina spatiile goale de al inceputul i sfarsitul unui sir de c
aractere specificat ca parametru (asemanator funcie standard n C); Exemplu de scri
pt care utilizeaz funciile print_r i implode.
<?php $t=array("ianuarie", "februarie","martie","aprilie", "mai","iunie","iulie"
,"august" ,"septembrie","octombrie","noiembrie","decembrie"); echo $t[4]."<br><b
r><br><br>"; for ($i=0;$i<12;$i++) echo $t[$i]."<br>"; sort ($t); echo"<br>"; fo
r ($i=0;$i<12;$i++) echo $t[$i]."<br>"; echo "<br><br><br><br><br>"; //for ($i=0
;$i<12;$i++) //echo $t[$i]."<br>"; print_r($t); echo "<br>"; echo "<br>"; echo "
<br>"; $tab=array ("primul"=>"luni", "al doilea"=>"marti", "al treilea"=>"miercu
ri"); echo $tab["primul"]; echo "<br>"; echo "<br>"; echo "<br>"; print_r($tab);
echo "<br>"; echo "<br>"; echo "<br>"; $sir=implode($tab,", "); echo $sir; ?>
Unele funcii PHP au argumente opionale, care pot fi specificate sau omise, n confor
mitate cu inteniile programatorului. Cnd se produce o eroare n timpul execuiei unei
funcii, PHP genereaz mesaje de eroare. Uneori, asemenea mesaje de eroare sunt nedo
rite. n acest caz, puteti suprima generarea mesajelor de eroare prin prefixarea n
umelui funcie invocate cu ajutorul caracterului @. De exemplu, pentru a suprima m
esajele de eroare care pot aparea n timpul execuiei funcie f( ), invocati aceasta f
uncie dupa cum urmeaz: Y = @f(x); Funcii utilizator Pentru a defini o funcie rebuie
s se respecte suntaxa: function nume_funcie(list argumente)
90

{ // corpul funcie; } Cuvntul cheie function, numele funcie i lista cu argumente for
meaz antetul funcie. Termenul de corp al funcie se refer la instruciunile incluse ntre
acoladele care urmeaz dupa antetul funcie. Instruciunile din corpul funcie sunt exe
cutate atunci cnd funcia este apelat. Exemplu de funcie care returneaz aria unui drep
tunghi. function calculeaz_arie($lungime,$latime) { return $lungime, * $latime; }
Corpul funcie este alcatuit dintr-o singura instructiune; cu toate acestea, corp
ul unei funcii poate conine un numar arbitrar de instruciuni. Dac dorii ca o funcie s
eturneze o valoare, trebuie s determinai funcia s execute o instruciune return care f
urnizeaz valoarea respectiv. Instruciunea return determin orpirea executarii funcie.
Dac se creaz o funcie care nu are nici o instructiune return, atunci funcia va retur
na valoarea speciala NULL. O funcie definita de utilizator poate fi apelat n acelas
i mod ca o funcie incorporata. Funcii pentru lucru cu fiiere
funcie basename chgrp chown copy rol primete ca parametru un ir reprezentnd un nume
de cale i returneaz numele fiierului din calea respectiv schimb grupul fiierului filen
ame n group i nu este diponibil pe Windows schimb proprietarul fiierului filename cu
user group i nu este diponibil pe Windows funcia copie un fiier surs ntr-un fiier dest
naie. Returneaz TRUE dac copierea s-a realizat cu succes i FALSE n caz contrar. funcia
returneaz numele directorului din calea path. nchide fiierul referit prin fp. ntoar
ce TRUE n caz de succes i FALSE n caz contrar. Variabila fp trebuie s indice un fiier
valid, adic un fiier deschis cu fopen() sau fsockopen(). Returneaz TRUE dac pointer
ul de fiier este poziionat pe EOF sau n caz de eroare, altfel returneaz FALSE. sinta
x string basename( string path) int chgrp( string filename, mixed group) int chow
n( string filename, mixed user) int copy( string source, string dest) string dir
name( string path) int fclose( int fp)
dirname fclose
feof
ffush
foreaz scrierea tuturor bufferelor de ieire
int feof( int fp) Variabila fp trebuie s indice un fiier valid, adic un fiier deschi
s cu fopen(), popen() sau fsockopen(). int fflush( int fp)
91

n fiierul indicat de fp. Returneaz TRUE n caz de succes i FALSE n caz contrar. Variabi
la fp trebuie s indice un fiier valid, adic un fiier deschis cu fopen() sau fsockope
n(). fgetc returneaz un caracter citit din fiierul fp. Returneaz FALSE n cazul n care
caracterul citit este EOF. returneaz un ir de maxim length-1 octei citii din fiierul
indicat de fp. Citirea se ncheie cnd au fost citii length-1 octei, cnd se citete new
line (este inclus n valoarea returnat) sau EOF. Dac apare o eroare la citire return
eaz FALSE. ntoarce TRUE dac fiierul specificat prin filename exist i FALSE n caz contr
r. ntoarce dimensiunea fiierului specificat prin filename dac acesta exist i FALSE n c
az de eroare. funcia deschide un fiier sau un URL. n cazul deschiderii unui URL se
stabilete o conexiune ctre serverul Web specificat. n cazul unui fiier obinuit acesta
este cutat n sistemul propriu de fiiere i deschis. funcia scrie irul string n fiieru
p n ntregime (dac argumentul length lipsete) sau numai length octei din acesta. fputs
() este un alias pentru fwrite() i este identic cu aceasta. funcia citete cel mult
length octei din fiierul binar fp. Citirea se ncheie cnd s-au citit length octei sau
EOF. funcia scrie coninutul argumentului string n fiierul indicat de fp. Dac argument
ul length este precizat scrierea se oprete dup length octei sau dac irul string s-a t
erminat. ntoarce TRUE dac filename exist i este un fiier obinuit. ntoarce TRUE dac fi
ame exist i poate fi scris. string fgetc( int fp)
fgets
string fgets( int fp, int length)
file_exists filesize
int file_exists( string filename) int filesize( string filename) int fopen( stri
ng filename, string mode [, int use_include_path]) int fputs( int fp, string str
[, int length])
fopen
fputs
fread
string fread( int fp, int length) int fwrite( int fp, string string [, int lengt
h])
fwrite
is_file is_writeable
boolean is_file( string filename) boolean is_writeable ( string filename)
92

pclose readfile
rmdir unlink
nchide fiierul indicat de fp. Variabila fp trebuie s indice un
st deschis cu popen() . citete coninutul fiierului filename i
rd. n caz de succes ntoarce numrul de octei citii din fiier
rectorul dirname numai dac acesta este gol, iar n caz de eroare
rul filename i returneaz 0 sau FALSE n caz de eroare.

fiier valid care a fo


l tiprete la ieirea sta
i FALSE n caz de eec. t
ntoarce 0. terge fiie

int pclose(int fp) int readfile( string filename [, int use_include_path]) int r
mdir( string dirname) int unlink( string filename)
Funcii pentru lucru cu tablori (array)
funcie array rol sintax creaz i ntoarce un tablou de valori. array array( [mixed... ]
) Array() este un constructor de limbaj utilizat pentru a reprezenta tablouri i n
u o funcie obinuit. funcia returneaz un tablou folosind valorile din tabloul de intra
re, input, drept chei i frecvena lor drept valori. funcia returneaz un tablou coninnd
toate valorile lui array1 care sunt prezente n toate celelalte argumente; cheile
sunt pstrate. funcia returneaz cheile (numerice sau iruri de caractere) ale tabloulu
i input. funcia concateneaz elementele a dou sau mai multe tablouri astfel nct elemen
tele unui tablou se adaug la sfritul tabloului precedent. funcia trateaz tabloul ca p
e o coad i introduce valorile primite ca argumente la sfritul tabloului. funcia retur
neaz un nou tablou care conine elementele tabloului array n ordine invers funcia calc
uleaz i returneaz suma elementelor din tabloul arr ca un numr ntreg sau float. array
array_count_values( array input) array array_intersect( array array1, array arra
y2 [, array ...]) array array_keys( array input [, mixed search_value]) array ar
ray_merge( array array1, array array2 [, array ...]) int array_push( array array
, mixed var [, mixed ...]) array array_revers( array array [, bool preserve_keys
]) mixed array_sum( array arr)
array_count_val ues array_intersect
array_keys
array_merge
array_push array_revers
array_sum array_unique
array array_unique( array funcia elimin valorile duplicate din array) tablou; retu
rneaz un tablou nou care nu conine valori duplicate; cheile nu se modific.
93

arsort
asort
count

funcia sorteaz descresctor tabloul array astfel nct legturile dintre indicii asociativ
i i valorile indicate de ctre acetia s se menin. Vei folosi aceast funcie pentru a s
tablouri asociative n care ordinea actual a elementelor este important. funcia sorte
az cresctor tabloul array astfel nct legturile dintre indicii asociativi i valorile in
dicate de ctre acetia s se menin. Vei folosi aceast funcie pentru a sorta tablouri as
ative n care ordinea actual a elementelor este important. funcia returneaz numrul de e
lemente din argumentul var, care este de obicei un tablou. ntoarce 1 dac variabila
nu este un tablou i 0 dac variabila nu a fost iniializat.
void arsort( array array [, int sort_flags])
void asort( array array [, int sort_flags]))
int count( mixed var)
each
rsort sort sizeof
funcia returneaz cheia curent i array each( array array) valoarea corespunztoare din
tabloul array i avanseaz pointerul tabloului. Aceast pereche de valori este returna
t ntr-un tablou cu 4 elemente, cu cheile 0, 1, key i value. Elementele 0 i key conin
numele elementului din tablou, iar 1 i value conin valoarea. funcia sorteaz un tablo
u n ordine void rsort( array array [, int descresctoare. sort_flags]) funcia sortea
z elementele unuii tablou n ordine cresctoare. funcia returneaz numrul elemente dintrun tablou. de void sort( array array [, int sort_flags])]) int sizeof( array arr
ay)
Utilizarea variabilelor globale Variabilele globale sunt declarate n afara oricar
ei funcii. Variabilele de formular reprezinta un tip important de variabile globa
le. Cu toate acestea, puteti crea o variabil globala atribuindu-i acesteia o valo
are, atata timp cat instructiunea de atribuire respectiva nu se afla n interiorul
corpului unei funcii. Totalitatea locurilor unde este accesibil o variabil se nume
ste domeniu de existenta al variabilei. n mod prestabilit, variabilele globale nu
pot fi accesibile din interiorul corpului unei funcii; cu alte cuvinte, domeniul
de existenta al unei variabile globale, nu include corpurile funciilor. Dac dorii
sa obinei accesul la o variabil globala n cadrul unei funcii, putei extinde domeniul d
e existen al variabilei prin specificarea numelui acesteia n interiorul unei instru
ctiuni global. Instructiunea global are urmatoarea forma: global variabil1, varia
bil2, variabil3;
94

Dup cuvntul cheie global pot urma una sau mai multe variabile; fiecare variabil est
e separat prin virgul. Exemplu de utilizare a instruciunii global:
function not_global() { echo "<BR>nuglobal: x=$x"; } function yes_global() { glo
bal $x; echo "<BR>global: x=$x"; } $x = 1; not_global(); yes_global;
Utilizarea variabilelor locale i a variabilelor statice Variabilele globale sunt
create atunci cand li se atribuie o valoare i exist pe toat durata programului. Var
iabilele locale sunt create la apelarea funcie asociate i sunt distruse la incheie
rea apelului acesteia. Variabilele locale sunt disponibile doar pe durata execuie
i funcie asociate. Argumentele funciilor reprezint un tip important de variabil loca
la. Se poate crea o variabil locala prin simpla atribuire a unei valori unei vari
abile din interiorul unei funcii. Pentru a ilustra deosebirea dintre variabilele
locale i cele globale. Exemplu de script care definete o variabil locala $x i o vari
abil globala cu acelai nume.
function este_local() { $x = 2; echo "<BR>corpul funcie: x = $x"; } $x = 1; echo
"<BR> corpul scriptutlui: x = $x"; este_local(); echo "<BR> corpul scriptului: x
= $x";

Utilizarea variabilelor cookie Variabilele cookie sunt utile pentru stocarea pre
ferinelor utilizatorilor i a altor informaii care trebuiesc reinute atunci cnd utiliz
atorul trece la o nou pagin web. Valorile variabilelor dispar atunci cnd scriptul P
HP care le conine i ncheie execuia. Spre deosebire de acestea, valorile variabilelor
cookie se pot pstra un timp indefinit. Browserul utilizatorului stocheaza variabi
lele cookie n unitatea de hard-disk local a utilizatorului. Variabilele cookie sun
t utile pentru pstrarea preferinelor utilizatorului. Cnd utilizatorul revine la pag
ina vizitat, variabilele cookie permit browserului s recunoasc utilizatorul i s resta
ureze opiunile selectate de utilizator. Valoarea variabilei cookie este automat p
us la dispoziie ca variabil PHP avnd acelai nume cu acela al variabilei cookie. De ex
emplu, s presupunem c ai creat o variabil cookie denumit "cursuri" i c i atribuii va
a "informatica". Aceast pereche cursuri95

informatica este apoi pus la dispoziia fiecrui script PHP asociat paginilor web. Va
loarea variabilei cookie se poate afia folosind instruciunea echo "Valoarea variab
ilei cookie este $cursuri"; care va afia: Valoarea variabilei cookie este cursuri
. Variabila PHP de tip tablou asociativ HTTP_COOKIE_VARS conine numele i valoarea
fiecrei variabile cookie curent. Dac dorii s vizualizai fiecare variabil cookie dispon
bil i valoarea acesteia, putei utiliza funcia phpinfo(), care afieaz valoarea tabloulu
i HTTP_COOKIE_VARS. De asemenea se poate utiliza i scriptul: foreach($HTTP_COOKIE
_VARS as $numevar => $valoare) echo "<br>$numevar => $valoare"; Pentru a crea o
variabil cookie, trebuie invocat funcia setcookie(), care are sintaxa setcookie(num
e, valoare, expirare) tergerea unei variabile cookie - o variabil cookie are o dat
de expirare, aceasta va fi tears automat la un oarecare interval de timp dup creare
a sa. O variabila cookie se poate terge i imediat, daca se fixeaza momentul expirri
i variabilei cookie la un moment de timp din trecut. Un site web poate stoca num
ai 20 de variabile cookie n sistemul unui utilizator, rezult c, capacitatea de a st
oca mai multe valori ntr-o singur variabil cookie este util. Pentru aceasta, se inse
reaza valorile ntr-un tablou i se utilizeaz funcia serialize() pentru a "mpacheta" el
ementele tabloului ntr-un ir; valoarile tabloului se pot recupera cu funcia unseria
lize(). Exemplu care depaete limita de 20 de variabile cookie dar nu poate depi limi
ta spatiului de 4 KB (pentru stocarea ntr-o variabil cookie).
<?php // definire tablou for ($i = 0; $i < 35; $i++) $tablou[$i] = $i; // se imp
acheteaza intregul tablou intr-un sir $sir = serialize($tablou); // se creeaza o
variabila cookie setcookie("cookies", $sir); if (isset($cookies)) { // se despa
cheteaza valoarea variabilei cookie $rezultat = unserialize(stripslashes($cookie
s)); // se afiseaza elementele tabloului din variabila cookie foreach($rezultat
as $i => $cookie) { echo "<br>$i => $cookie"; } } ?>
Utilizarea MySQL
MySQL este un server de baze de date disponibil gratuit, cu sursa deschis (open-s
ource) care ofer fiabilitate i avantaje reale. A fost dezvoltat de firma suedez MyS
QL AB.
96

Administrarea bazei de date se realizez folosind utilitare care lucreaz n linia de c


omand. Cel mai important utilitar este mysql, un shell interactiv pentru controlu
l i interogarea bazei de date. Utilitarele ruleaz cel mai bine pe sistemul Linux,
platform pe care MySQL a fost dezvoltat iniial. Alte dou utilitare cu surs deschis, o
ferite pe platform Windows, care ofer un set de comenzi de administrare sunt MySql
Manager, un utilitar de interogare n mod grafic similar cu mysql i WinMySQL admin,
o consol pentru administrarea detaliilor configurrii lui MySQL. Recent cea mai ut
ilizat metod pentru serverele care au instalat panoul de comand CPANEL este PHPMyAd
min, care ofer o interfat grafic pentru manipularea datelor din MySQL. MySQL realiz
eaz cu uurin importarea diverselor baze de date i exportarea sub forma fiierelor sql.
Tranzaciile nu sunt parte a tabelelor implicite(ISAM) ale lui MySQL, dar sunt inc
luse dou tipuri noi de tabele Berkley DB(BDB) i InnoDB care au fost dezvoltate de
alte firme. MySQL opereaz n baz unui model client/server. Orice main care dorete sa pr
oceseze interogri asupra unei baze de date MySQL trebuie s ruleze MySQL server(mys
qld), care este responsabil de tot traficul de tip intrri/ieiri (incoming/outgoing
) cu baz de date. Modelul de securitate folosit de MySQL se bazeaz pe nume de util
izator, parol, nume server (hostname) sau adres de IP i privilegii, fiind similar c
elui generic folosit de sistemele Unix. Prin privilegii se neleg n cazul MySQL oper
aiunile ce vor fi permise asupra bazei/bazelor de date, tabelelor sau indecilor, c
um sunt de exemplu SELECT, INSERT, UPDATE, DELETE, CREATE, DROP. Datele sunt obi
ectul celor mai multe operaii de prelucrare, iar sistemele de gestiune a bazelor
de date furnizeaz cele mai complexe i puternice faciliti pentru lucrul cu datele. PH
P include o bibliotec de funcii care furnizeaz o interfa cu sistemul MySQL de gestiun
e a bazelor de date. Folosind aceste funcii, un program PHP poate obine accesul la
datele rezidene ntr-o baz de date MySQL i le poate modifica. O baza de date (n cazul
nostru MySQL) este un program ce poate stoca o cantitate foarte mare de informai
i i o poate organiza ntr-un format accesibil n mod direct sau de ctre un alt program
(in cazul nostru PHP). ntr-o baz de date, informaia este organizat sub form tabelar,
care coloanele se numesc cmpuri iar liniile se numesc nregistrri. Capul de tabel d
etermin structura bazei de date. Un sistem de gestionare a bazelor de date (SGBD)
este un program care permite utilizatorilor interaciunea cu baza de date. Un SGB
D asigur: crearea bazei de date introducerea informaiilor n baza de date actualizar
ea informaiilor extragerea datelor controlul accesului la date Obiectivul esenial,
al unui SGBD este furnizarea unui mediu eficient, adaptat utilizatorilor care d
oresc s consulte sau s actualizeze informaiile coninute n baza de date.O baza de date
poate conine mai multe tabele, ce pot fi legate intre ele. Un cmp se caracterizea
z prin: numele cmpului (reprezint un nume simbolic prin care cmpul se poate identifi
ca), tipul cmpului (pentru identificarea tipului de date care pot fi stocate n cmpu
l respectiv), lungimea cmpului (numrul maxim de caractere care pot fi stocate n cmpu
l respectiv).
97

MySQL a fost creat n anul 1996 de ctre o compania suedez i este un SGBD foarte rapid
, care poate lucra cu baze de date de mari dimensiuni. MySQL permite lucru cu cmp
uri numerice, dat i ir. Caracteristicile MySQL-ului sunt: este o platform deosebit d
e stabil; este independent de sistemul de operare pe care ruleaza (Windows, Linux
, Unix, etc); este gratuit n anumite condiii de liceniere (Open Source Software) .
Afiarea interogrii n execuie i rularea ei pe baza de date se face cu ajutorul unor ap
licaii separate. Cele mai bune dou instrumente sunt: Monitorul MySQL un instrument
cu linie de comand pentru interactionarea cu serverul MySQL; phpMyAdmin, o inter
fa MySQL bazat pe PHP. Interfaa grafic n mediul integrat de lucru cu PHPMyAdmin arat c
n figura 4.6.
Figura 4.6 Intertefaa grafic phpMyAdmin
O baz de date poate conine mai multe tabele, fiecare cu propria sa structur (figura
4.7).
Figura 4.7 Tabela carti din baza de date cursuri
98

Cmpuri numerice Unul dintre cele mai utilizate tipuri de cmpuri n MySQL este Int (i
nteger), care poate stoca valori cuprinse ntre 2.144.483.648 i 2.144.483.644. Acest
tip de cmp poate fi folosit cu opiunea auto_increment, pentru a defini cheia prim
ar a unei tabele. Cheia primara este un cmp care face posibil identificarea unica a
fiecrei nregistrri. De obicei este vorba de un cmp numeric, care va fi incrementat
la fiecare operaie de adugare. Tipuri de cmpuri dat/or Exist n MySQL cinci tipuri de c
uri folosite pentru stocarea datei calendaristice i a orei care sunt: Date Dateti
me Timestamp Time Year Cmpul de tip date stocheaz valori n format AAAA-LL-ZZ i perm
te introducerea valorilor cuprinse ntre 1000-01-01 i 9999-12-31. Cmpul de tip datet
ime stocheaz valori n format AAAA-LL-ZZ HH:MM:SS, cuprinse ntre 1000-01-01 00:00:00
i 9999-12-31 23:59:59. Cmpul de tip timestamp stocheaz automat timpul atunci cnd se
modific valoarea unei nregistrri (printr-o operaie de introducere sau actualizare).
Cmpul de tip time stocheaz timpul n format HH:MM:SS. Cmpul de tip year poate stoca
date cuprinse ntre 1901 i 2155. Cmpuri de tip ir sunt: Char Varchar Tinytext Text
diumtext Longtext Enum Cmpul de tip char are lungimea maxim de 255 caractere. Este
de lungime fix (atunci cnd introducem o valoare cu lungimea mai mic dect lungimea m
axim a cmpului, cmpul va fi completat n partea dreapt cu spaii). Cmpul de tip varchar
re lungimea maxim de 255 caractere, dar este de lungime variabil (cmpurile nu vor m
ai fi completate cu spaii ca la tipul char). Cmpurile de tip blob i text pot stoca
o cantitate variabil de date. Cmpurile de tip enum permit stocarea unei valori din
tr-o mulime de valori specificat. Toate tipurile de date ce se pot utiliza pentru
un cmp sunt vizibile n figura 4.8.
99

Figura 4.8 Tipurile de dat pentru un cmp


Principalele comenzi MySQL Cele mai uzuale operaii cu bazele de date sunt: Comand
a CREATE DROP INSERT DELETE UPDATE SELECT ALTER SHOW USE Semnificatie creaz o baz
a de date sau un tabel sterge o baza de date sau un tabel adauga inregistrari in
tr-un tabel sterge inregistrari dintr-un tabel actualizeazninregistrarile dintr-u
n tabel selecteaz un tabel modific structura unui tabel Afiare baze de date, tabele
Deschide o baz de date
1. Crearea unei baze de date se face cu comanda: CREATE DATABASE nume_baz; De exe
mplu, crearea bazei de date, numit student se realizeaz cu comanda CREATE DATABASE
student; Caracterul ; este obligatoriu la sfritul oricrei comenzi.. 2. Afiarea baze
lor de date existente pe server se face cu comanda: SHOW DATABASES; 3. Accesarea
(deschiderea) unei baze de date pentru a putea fi folosit se face cu comanda: US
E nume_baz; 4. Crearea unei tabele ntr-o baz de date presupune mai nti deschiderea ba
zei de date i apoi crearea propriu-zis a tabelei: USE biblioteca;
100

CREATE TABLE carti ( codc int(4) NOT NULL auto_increment, numecarte varchar(40)
default NULL, autor varchar(30) default NULL, data date default NULL, pret int(3
) NOT NULL default 0 , stoc int(5) default NULL, valoare int(5) default NULL, P
RIMARY KEY (codc) ) TYPE=MyISAM;

Explicaii: o AUTO_INCREMENT funcioneaz cu orice tip intreg. La fiecare rnd nou adugat
n baza de date, numarul asociat va fi incrementat; o NULL nseamn fr valoare (diferit
de spaiu sau zero); o NOT NULL nseamn c orice nregistrare completat cu ceva; PRIMARY
KEY reprezint elementul de referin pentru fiecare linie. 5. Afiarea tabelelor coninut
e de o baz de date presupune deschiderea bazei de date i apoi folosirea comenzii S
HOW TABLES; 6. Afiarea structurii unei tabele se face cu comanda DESC nume_tabel; n
acest caz, vor fi afiate numele cmpurilor, tipul i lungimea lor. 4. Pentru a modif
ica structura unei tabele se folosete comanda ALTER TABLE. De exemplu, pentru a m
odifica lungimea cmpului pret de la int(3) la int(4) se folosete comanda ALTER TAB
LE carti MODIFY pret int(4); Pentru a aduga un nou cmp, numit observatii, comanda
este: ALTER TABLE cursuri . carti ADD observatii VARCHAR(40) NOT NULL; Pentr
u a schimba denumirea cmpului observatii n obs, comanda este: ALTER TABLE cursuri
. carti CHANGE observatii obs VARCHAR(40) NOT NULL; 8. tergerea unei tabele
se face cu comanda DROP TABLE; De exemplu, pentru tergerea tabelei numit diverse, v
om folosi comanda DROP TABLE diverse; Comanda DROP TABLE trebuie folosit cu mare
grij, ntruct, n urma executrii ei, att structura ct i datele coninute n tabele sunt
9. Comanda INSERT introduce nregistrri ntr-o tabel existent.
101

Forma general a comenzii este: INSERT INTO nume_tabel [(cmp1,camp2,,cmp n)] VALUES (v
aloare1,valoare2,, valoare n); Exemplu: INSERT INTO carti ( codc , numecarte ,
autor , data , pret , stoc , valoare , observatii ) VALUES ( 22 , Inform
atica , Pirnau Mironela , 01/03/2009 , 0 , 100 , NULL, ); 10. Comanda SELE
CT este utilizat pentru a extrage nregistrrile din una sau mai multe tabele. Sintax
a general este: SELECT [DISTINCT] cmp1, cmp2,, cmp n FROM nume_tabel WHERE condiie GRO
P BY nume_cmp ORDER BY nume_cmp [ASC | DESC] LIMIT [numrul_primei_nregistrri_dorite,
numrul_de_nregistrri_returnat] Exemplu: SELECT codc , numecarte , autor , data , p
ret , stoc , valoare , observatii FROM carti WHERE 1 LIMIT 0, 30 n MySQL se po
t folosi caracterele % (care nlocuiete orice ir de caractere) i _ (underline) pentru
nlocuirea unui singur caracter, n combinaie cu operatorul LIKE. De exemplu, pentru
a afia posturile n a cror descriere se ntlnete irul de caractere web, comanda este:
ct * from posturi where descriere like %web%; Pentru a afia numrul de nregistrri se fo
losete funcia COUNT: select count (*) from posturi where domeniu=Informatica; PHP pe
rmite lucrul cu un numr mare de funcii MySQL. n PHP exista funcii pentru toate opera
tiile executate asupra bazelor de date MySQL. Cele mai importante funcii sunt: my
sql_connect() stabilete o conexiune la serverul de baze de date MySQL. Conectarea
la MySQL se face astfel:
<?php $link = mysql_connect("mysql_host","mysql_user","mysql_password") or die("
Nu se poate conecta"); ?>

Funcia mysql_connect se conecteaz la MySQL folosind ca parametri adresa serverului


unde ruleaz MySQL (dac il aveti instalat pe propriul calculator aceasta este loca
lhost), user-ul ( dac il aveti instalat pe propriul calculator aceasta ar trebui
sa fie root) i parola (dac il aveti instalat pe propriul calculator aceasta ar tre
bui sa nu existe). Dac MySQL instalat pe staia de lucru atunci conexiunea la baza
de date se realizeaz:
<?php $link = mysql_connect("localhost", "root", "")
102

or die("Nu se poate conecta"); ?>

Funcia die nu face altceva decat s afiseze mesajul i s nu mai execute nici un cod du
p. Variabil $link reprezint un identificator pentru aceasta conxiune. mysql_select_
db() selecteaz o baz de date. Sintaxa este: mysql_select_db(nume baz) or die (baza de
date nu poate fi selectata!). Dup conectarea, trebuie s-i spunem serverului MySQL c
e baza de date dorim sa folosim, operaie ce se realizeaz:
<?php $link = mysql_connect("mysql_host", "mysql_user", "mysql_password") or die
("Nu se poate conecta"); mysql_select_db("cursuri", $link) or die("nu se poate a
lege baza de date"); ?>

Funcia mysql_select_db este cea care i transmite serverului MySQL ce baz de date vr
em sa folosim. mysql_query() interogheaz o baz de date aflat pe server. Sintaxa est
e: $resultat=mysql_query(Interogare SQL) Exemplu: $resultat=mysql_query("select *
from utizatori") mysql_fetch_array() returneaz un array (matrice) corespunztor int
erogrii efectuate. mysql_num_rows() returneaz numrul nregistrrilor (rndurilor) rezult
te dintr-o interogare.Exemplu:
<HTML> <? $gazda="localhost"; $user="root"; $parola=""; MYSQL_CONNECT($gazda,$us
er,$parola) or die("Conexiune MYSQL eronat!"); $b="carti"; mysql_select_db("$b")
or die("Conexiune cu baza de date eronat!"); $tabel="cv"; $query="select * from $
tabel "; $result=mysql_query($query); $x=mysql_num_rows($result); echo "Numrul de
rnduri este $x "; mysql_close();
mysql_affected_rows() returneaz numrul de nregistrri(rnduri) afectate de o interogare
INSERT, DELETE SAU UPDATE. Aceast funcie nu opereaz i cu comanda SELECT. Exemplu:
103

$query=delete from cv where id=12; $result=mysql_query($query); $rnduri=mysql_affec


ted_rows(); echo S-au ters $rnduri nregistrri din baza de date;
mysql_free_result() elibereaz zona de memorie folosit de o interogare. Aceast funcie
este util n cazul n care interogarea returneaz un numr mare de rezultate, dup care sc
riptul continu s execute operaii. mysql_close() nchide o conexiune MySQL. Cnd o conex
iune este nchis (fie folosind aceast funcie, fie la terminarea scriptului), PHP elib
ereaz memoria folosit de interogare. mysql_create_db() creaz o baz de date MySQL. my
sql_drop_db() terge o baz de date MySQL. mysql_list_dbs() returneaz bazele de date
aflate pe un server MySQL. mysql_list_tables() returneaz tabelele dintr-o baz de d
ate MySQL. Aceast funcie trebuie folosit mpreun cu funcia mysql_tablename(). Exemplu p
entru a lista tabelele din baza de date numit carti: $tabele=mysql_list_tables(car
ti); for($i=0; $i<mysql_num_rows($tabele); $i++) {echo mysql_tablename($tabele, $
i);} mail($to, $subject, $message, $headers) funcie folosit pentru a trimite un em
ail (de la $to, cu subiectul $subiect, avnd ca mesaj $message cu headerele adiiona
le $header); exemplu:
$to="test@diverse.ro"; $subiect="functia mail"; $mesaj="Mail trimis cu functia m
ail din PHP"; mail($to, $subiect, $mesaj);
mysql_error() returneaz mesajul de eroare sub forma de ir de caractere generat de
baza de date MySQL dac este cazul; session_start() - initializeaz o seciune de date
bazata pe ID-ul de sesiune trimis printr-o cerere GET sau POST; session_destroy
()- distruge toate datele asociate cu sesiunea curent; ob_start()- oprete afiarea b
ufferului pn la terminarea execuiei scriptului; print() - initializeaza listarea la
imprimanta a unei pagini web;
104

require() - funcie care include n scriptul curent coninutul unui fiier cu verificare
a de a fi introdus o singura dat (stre deosebire de funcia include() - care permit
e includerea fiierului de mai multe ori); crypt($pass, "BB") funcie care cripteaz u
n ir de caractere ($pass) dup o cheie de criptare (BB); Exemplu: introducem date i
ntr-un formular cu 2 campuri nume i prenume i apoi cu ajutorul scriptul insert.php
datele se introduc n baza de date.
/* fisierul adaugare.html */ <html> <head> <title>Formular</title> </head> <body
> <b>Adaugare inregistrari</b> <form method="POST" action="insert.php"> Nume: <i
nput type="text" name="nume"><br> Prenume: <input type="text" name="prenume"><br
> <input type="submit" value="Trimite"> </form> </body> </html> /* fisierul inse
rt.php */ <?php include "conexiune.php"; $nume=$_POST[ nume ]; $prenume=$_POST[
prenume ]; $query="INSERT INTO proba (nume, prenume) VALUES $nume , $prenume )"
; if (!mysql_query($query)) { die(mysql_error()); } else { echo "datele au fost
introduse"; } mysql_close($conexiune); ?>

n funcie de valoarea mysql_query este afiat un mesaj despre introducerea datelor n t


abel. Utilizarea proprietilor Select, Update si Delete SELECT - poate fi utilizata
intr-o comanda mysql_query pentru a selecta anumite informaii din tabelele bazei
de date. Sintaxa pentru introducerea datelor n tabelul bazei de date este:
$sql=mysql_query("SELECT * FROM nume_tabel");
Pentru a afia fiecare rnd din tabel se folosete o bucla while i comanda mysql_fetch_
row, ca n exemplu:
<?php include "conexiune.php";
105

$sql=mysql_query("SELECT * FROM carti"); echo "<table border=1>"; echo "<tr><td>


ID</td><td>titlu</td><td>Autor</td></tr>"; while ($row=mysql_fetch_row($sql)) {
echo "<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>"; } echo "</tabl
e>"; mysql_close($conexiune); ?>
Datele au fost afisate fiecare intr-o celula a unui tabel. Folosind funcia mysql_
num_rows($sql) putem afla numarul de linii continute de baza de date. Exemplu pr
ecedent la care se adaug numarul de linii al tabelei din baza de date.
/* urmeaz fisierul select.php */ <?php include "conexiune.php"; $sql=mysql_query(
"SELECT * FROM carti"); $rows=$mysql_num_rows($sql); echo "<b>$rows</b> inregist
rari n baza de date<p>"; echo "<table border=1>"; echo "<tr><td>ID</td><td>titlu<
/td><td>autor</td></tr>"; while ($row=mysql_fetch_row($sql)) { echo "<tr><td>$ro
w[0]</td><td>$row[1]</td><td>$row[2]</td></tr>"; } echo "</table>"; mysql_close(
$conexiune); ?>
Exemplu: cautarea n baza de date dupa o anumita inregistrare folosind conditia WH
ERE.
/* urmeaz fisierul cautare.html */ <html> <head><title>Cautare</title> </head> <b
ody> <b>Cautare inregistrari</b> <form method="POST" action="where.php"> Numele
cautat: <input type="text" name="nume1"><br> <input type="submit" value="Trimite
"> </form> </body> </html> /* urmeaz fisierul where.php */ <?php include "conexiu
ne.php"; $nume1=$_POST[ nume1 ]; $sql=mysql_query("SELECT * FROM proba WHERE num
e= $nume1 "); echo "<table border=1>"; echo "<tr><td>ID</td><td>Nume</td><td>Pre
nume</td></tr>"; while ($row=mysql_fetch_row($sql)) {
106

echo "<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>"; } echo "</tabl


e>"; mysql_close($conexiune); ?>
UPDATE - modific valoarea cmp dintr-o nregistrare a unei tabele, eventual pentru un
anumit id. Sintaxa este:
UPDATE nume_tabel SET cmp1 = $val1, cmp2= $val2,..., cmpn= $valn WHERE id= $nou_i
d ;

DELETE - terge nregistrri dintr-o tabel, tergerea se face dup un id, folosind sintaxa:
DELETE FROM nume_tabel WHERE id= $id ;

Aplicaia 1 S se preia dint-un formular datele de identificarea ale unui student, s


se rspund la 2 intrebari gril i s se afieze apoi nota obinut (figura 4.9)
Figura 4.9 Fereastra de autentificare i ferestra de completare chestionar
Fiierul *.html are sursa: <html> <head> <title></title> <script> function sterg(a
) {a.value="";} </script> </head>
107

<body> <form name="f1" method="post" action="f2.php"> Nume <input type="text" na


me="t1" onclick="sterg(t1)"><br> Prenume <input type="text" name="t2" onclick="s
terg(t2)"><br> Grupa <input type="text" name="t3" onclick="sterg(t3)"><br> Anul
<input type="text" name="t4" onclick="sterg(t4)"><br><br> <input type="submit" v
alue="Adauga">&nbsp <input type="reset" value="Sterge"> </form> </body> </html>
Fiierul f2.php este: <?php $num=$_POST["t1"]; $pren=$_POST["t2"]; $gr=$_POST["t3"
]; $an=$_POST["t4"]; if($num!=" " && $pren!=" " && $gr!=" " && $an!=" ") echo" <
html> <head> <title></title> </head> <body> <form name= f1 method= post action
= f3.php > Echipamentul standard de intrare este:<br> <input type= radio name=
a1 value= Imprimanta > Imprimanta<br> <input type= radio name= a1 value= Tast
atura > Tastatura<br> <input type= radio name= a1 value= Mouse >Mouse-ul<br><b
r> Echipamentul standard de iesire este <br> <input type= radio name= b1 value
= Monitor > Monitorul<br> <input type= radio name= b1 value= Imprimanta > Impr
imanta<br> <input type= radio name= b1 value= Plotter > Plotter-ul<br><br> <in
put type= hidden name= x1 value= ".$num." ><br> <input type= hidden name= x2
value= ".$pren." ><br> <input type= hidden name= x3 value= ".$gr." ><br> <inp
ut type= hidden name= x4 value= ".$an." ><br><br> <input type= submit value=
Calculeaza >&nbsp <input type= reset value= Sterge > </form> </body> </html>";
else echo"NU ati completat toate datele"; ?> Fiierul f3.php este:
108

$a=$_POST["a1"]; $b=$_POST["b1"]; $d1=$_POST["x1"]; $d2=$_POST["x2"]; $d3=$_POST


["x3"]; $d4=$_POST["x4"]; echo"Studentul, <b>".$d1." ".$d2."</b> din anul ".$d4.
" grupa ".$d3 ; $nota=2; if($a=="Tastatura") $nota=$nota+4; if($b=="Imprimanta")
$nota=$nota+4; echo" a obtinut<b><font color= red > ".$nota."</font></b> puncte
"; if($nota >=5) echo" si sunteti<b><font color= red > ADMIS</font></b>"; else e
cho" si sinteti <b>RESPINS</b>"; ?>

Problema propusa S se creeze n baza de date agend, tabela prieteni, care va avea s
tructuta: CREATE TABLE prieteni ( id int(3) NOT NULL auto_increment, nume varcha
r(15) default NULL, prenume varchar(15) default NULL, virsta tinyint(3) default
NULL, telefon varchar(10) default NULL, adresa text, poze varchar(20) default NU
LL, PRIMARY KEY (id) ) TYPE=MyISAM; S se realizeze o interfaa cu ajutorul creia s se
populeze tabela, s se actualizeze numarul de telefon, s se terg nregistrri pe baz de
d i eventual s se afieze coninutul tabelei. Interfaa va arta ca n figura 4.10.
Figura 4.10. Interfata care interacioneaz cu baza de date
109

Modulul V. Dezvoltarea si apelarea servleturilor


Un servlet este un cod de program Java care poate fi accesat printr-o interfa stan
dard ntr-un serviciu de re ea, asemenea programelor CGI aflate pe un site Web. Serv
leturile permit unui serviciu de re ea, cum ar fi un server Web sau un server Ftp,
s fie extins dinamic pentru a furniza noi facilit i. Unul din scopurile uzuale n car
e sunt folosite servleturile este de a crea o punte ntre un browser Web i o baz de
date ncorporat; browserul Web se conecteaz la un server Web, care execut un servlet
care se conecteaz la baza de date i execut cererea browserului. Serverul Web nu tre
buie s aib suport intern pentru accesul la baza de date; n schimb el poate fi dinam
ic extins cu servleturi care vor executa aceste func ii. De fapt, servleturile sun
t un mecanism potrivit pentru a implementa aproape orice serviciu de acces n re ea.
Servleturile au mecanism curat pentru implemetarea unor func ii variate. Servletu
rile pot fi folosite n locul tradi ionalelor aplica ii CGI, dar binenteles cu mbunt iril
duse de limbajul de programare Java. Servleturile ntrec tradi ionalul CGI, prin col
aborarea ntre aplica ii i prin mbunt irea perfoman elor. Servleturile pot de asemenea s
folosite pentru a genera dinamic pagini HTML. API-ul servlet-urilor Toate servle
turile trebuie s implementeze interfaa Servlet. Aceast interfa descrie mecanismul exa
ct prin care serverul reea va interaciona cu servleturile, incluznd iniializrile, fin
alizarea i rspunsul procesului. Detalii despre rspunsul fiecrui client sunt date de
servlet prin intermediul interfeei ServletRequest (figura 1). Aceast interfa descrie p
roprietile generale ale cererii care a fost fcut ctre servlet. Servletul rezolv cerere
a i apoi rspunde clientului prin intermediul interfeei ServletResponse. Aceast inter
fa are un mecanism pentru ca servletul s seteze tipurile de date pentru rspuns i s scr
ie n fiierul de ieire acest rspuns.
Figura1. Model de servlet cerere/rspuns Ciclul de via al servlet-ului Servletul API
specificat definete ciclul de via al servletului. Ciclul de via ncepe cnd un servlet
ste iniializat, dup care cererea este prelucrat, i se termin atunci cnd servletul este
distrus. n general, un servlet este creat o singur dat, prima dat cnd clientul o cer
e. nainte ca aceast prim cerere s fie preluat, servletul este automat iniializat de se
rviciul de reea cu diferii parametrii predefinii. Cnd serviciul de reea decide s dezin
staleze servletul, este apelat un destructor, astfel nct servletul s elibereze resu
rsele pe care le-a ocupat (figura2).
110

Figura2. Ciclul de via al servlet-ului Parametrii Servlet-urilor Sunt dou mecanisme


importante pentru a transmite informaiile de configurare ntr-un servlet. Parametr
ii de iniializare sunt transmii servletului atunci cnd acesta este ncrcat prima dat; e
i sunt specificai ntr-o configuraie suplimentar, separat de cea a servletului. Aceti p
arametrii sunt folosii pentru configurarea de informaii generale, care se aplic tut
uror cererilor. Ei sunt de obicei configurai static de instrumentul de admistrare
grafic, altfel pentru servleturile SSI pot de asemenea s fie declarate ntr-un tag
servlet in-line. Depiznd de metoda folosit pentru a invoca servletul, parametrii
cerui pot fi de asemenea specificai ntr-o cerere. Dac parametrii sunt dai n timpul exe
cuiei, spre deosebire de parametrii dai n momentul iniializrii, pot fi folosii pentru
furniza informaii particulare unei anumite cereri. Din momentul n care serverele c
reeaz o instan a unui servlet pentru a prelua cereri distincte i uneori concurente,
programatorul trebuie s se concentreze asupra siguranei firelelor de execuie pentru
ca tehnicile de sincronizare standard s fie folosite ca s se asigure c servletul p
reia cererile n siguran. Toate potenialele accesri concurente ale unui servlet vor fa
ce apelri concurente ctre metoda service( ). Blocurile de cod din aceast metod ar treb
ui s nu fie executate concurent, ele ar trebui sincronizate cu lactele respective.
Servlet Beans Servlet beans sunt servleturi adugate la specificaiile JavaBeans. U
n servlet bean are mai multe avantaje fa de servleturile standard. n primul rnd, un
servlet bean poate fi distribuit ntr-un fisier JAR care conine toate clasele i resu
rsele servletului. Fiierul servlet JAR este instalat deobicei n subdirectorul serv
letbeans al serverului. Un al doilea avantaj este c serverul gazd poate folosi int
rospecia pentru a accesa proprietile servletului n stilul JavaBean. Acest lucru perm
ite ca servletul s primeasc informaii noi fr s fie rencrcat. Serverele, cum ar fi Jav
eb Server, permit administrarea grafic a proprietilor servlet bean prin intermediul
acestui mecanism. Alt avantaj al servleturilor bean este c serverul gazd poate s l
e serializeze automat. Odat ce o proprietate a fost modificat, noul bean poate fi
automat serializat astfel nct schimbarea s fie efectuat. Urmtoarea dat cnd server-ul v
ncrca servletul, el poate fi ncrcat din fiierul .ser n loc s-l ncarce din fiierul o
al JAR. Aciuni i componente JavaBeans Aciunile sunt tag-uri JSP predefinite care fo
losesc varianta XML. Spaiul de nume utilizat este http://java.sun.com/JSP/Page i d
e regul se utilizeaz prefixul jsp. Componente JavaBeans Java, prin intermediul com
ponentelor JavaBeans, ofer posibilitatea utilizrii acestora de ctre instrumente de
editare a aplicaiilor fr ca programatorul s intervin direct n codul acestora. Este ofe
rit i facilitatea de reflexie, prin care putem determina atributele i metodele unei
clase.
111

ns n cazul aplicaiilor Web nu avem nevoie de toate facilitile i restriciile dictate d


avaBeans. Cele mai importante lucruri pe care trebuie s le cunoatem despre compone
ntele JavaBeans, n contextul aplicaiilor Web, sunt: Constructor fr parametri. Dintre
toi constructorii clasei, trebuie s existe unul fr parametri sau s nu definim niciun
ul, caz n care va fi creat automat constructorul implicit. Nici un membru nestati
c nu va fi public. Atributele nestatice vor fi declarate protected sau private.
Eventual se poate utiliza modificatorul de acces implicit (package). Pentru modi
ficarea valorilor se vor utiliza metode care s efectueze i validri asupra datelor (
de exemplu, atributul vrst nu poate avea o valoare negativ). Utilizarea de metode s
etter i getter pentru accesarea membrilor nestatici. De exemplu, dac avem atributu
l vrst de tip int, pentru modificarea valorii vom avea o metod cu prototipul void s
et varsta int varstaNoua, iar pentru obinerea valorii, int get Varsta(). Pentru o
binerea valorilor atributelor de tip boolean se vor utiliza metode cu prefixul is
, de exemplu, boolean is Batran() pentru atributul batran. Pentru a utiliza o co
mponent JavaBeans n aplicaiile Web vom utiliza aciunea jsp: useBean. Aceasta posed at
ributele din tabelul urmator: Atribut Descriere Stabilete un identificator pentru
a putea fi referit ulterior. Se va crea o Id variabil cu acest nume. Scope Class
beanName Type Stabilete domeniul de vizibilitate pentru componente. Valorile pos
ibile sunt page, request, session i application. Implicit este page. Numele compl
et al clasei (inclusiv numele pachetului). Numele componentei JavaBeans. Tipul v
ariabilei care va fi creat. Poate coincide cu numele clasei (dat de atributul cla
ss sau beanName), poate fi numele unei superclase a acesteia sau numele unei int
erfee implementate.
n cazul n care o component cu acelai identificator exist deja n domeniul de vizibilita
te specificat, se va utiliza respectiva component i nu se va mai crea una nou. Nu v
om utiliza niciodat simultan atributele class i beanName. Acestea se exclud unul p
e cellalt. Declararea componentei: <jsp:useBean id="categ" class="ro.mag.Categori
e" /> este similar cu: <% ro.mag.Categorie categ = new ro.mag.Categorie(); %> Pen
tru setare, avem la dispoziie aciunea jsp:setProperty. Aceasta prezint atributele d
in tabelul de mai jos. Atribut name property param value Descriere Numele compon
entei asupra creia se opereaz. Numele proprietii (datei membre) pentru care se dorete
actualizarea valorii. Valoarea datei membre va fi dat ca parametru paginii JSP c
u numele specificat de acest atribut. Indic valoarea care va fi atribuit datei mem
bre specificate.
Componentele JavaBeans pot fi accesate i n expresiile cuprinse ntre $ { i }. Acestea
vor fi evaluate n momentul execuiei i se vor nlocui cu valorile rezultate. <h3>$ {c
ateg.denumire} </h3> <p style="color: ${opiuni.culoare}"> Bine ai venit ${param.u
tilizator}!</p> Expresiile de acest tip se pot utiliza i n interiorul tag-urilor,
dar i la valoarea atributelor.
112

Interfa a Servlet Interfa a Servlet defineste modurile standard prin care un server
de reea poate accesa un servlet. Toate servleturile funcioneaz sub paradigma cerere
/raspuns; totui, des, servleturile menin date individuale despre clieni deci nu sun
t chiar aa de statice cum sugereaz interfaa de baz. Dei toate servleturile trebuie nu
maidect s implementeze aceast interfa, multe vor profita de facilitile date de mai mul
e implementri specifice a acestei clase cum ar fi GenericServlet ori HttpServlet, i as
tfel vor respecta API-ul acestor clase specifice. Metode Urmtoarele metode define
sc interfaa de baz a unui servlet: void init(ServletConfig config) throws ServletE
xception . Aceast metod d unui servlet o ans pentru a executa orice operaii de startup
cerute, nainte de a servi cererea. Exemple pot fi alocarea memoriei, stabilirea
conexiunii prin reea, si altele. Aceast metod este apelat o dat i numai o dat i este
minat atunci cnd prima cerere este preluat. Cererile care sunt primite nainte ca met
oda init() s fie terminat vor fi blocate pn cnd se va termina cu aceast metod. Paramet
ii ServletConfig conin informaii de iniializare pentru servlet. Chiar dac nu sunt fo
losii, acest parametru ar trebui inut pentru a fi returnat de metoda getServletCon
fig(). Multe implementri standard a interfeei Servlet, cum ar fi GenericServlet, a
u grij de acest lucru automat. void service (ServletRequest request, ServletRespo
nse) throws ServletException, IOException. Metoda service() este apelat de ctre se
rviciul de reea care gzduiete servletul de fiecare dat cnd clientul face o cerere ctre
servlet. Servletul poate citi din cerere date i parametrii prin intermediul para
metrului de tip ServletRequest, request, i ar trebui s trimit rspunsul su napoi prin i
ntermediul parametrului response de tip ServletResponse. void destroy(). La un m
oment dat dup ce un servlet a terminat de servit cererea, gazda poate decide s des
carce servletul. Pentru acest lucru se apeleaz metoda destroy(). Cnd un servlet es
te distrus, el trebuie s elibereze toate resursele pe care le deine i s salveze oric
e informaie care trebuie s fie inut permanent. Multe servleturi menin conexiunile des
chise cu resurse cum ar fi baze de date, servere RMI, ori fiiere. Aceste resurse
ar trebuie nchise i eliberate cnd metoda destroy() este apelat. ServletConfig getSer
vletConfig(). Aceast metod trebuie s ntoarc un obiect ServletConfig care ar fi trebui
t salvat de metoda init(). String getServletInfo(). Aceast metod ar trebui s return
eze informaii generale despre servleturi cum ar fi autor, versiune, si copyright.
Interfaa SingleThreadModel Implicit, o singur instan a unui servlet poate fi apelat
pentru a prelua cereri multiple concureniale. Asta nseamn c n general, autorii de ser
vleturi trebuie s aib grij de sigurana firelor de execuie. Dac se implementeaz interfa
SingleThreadModel, API-ul servletului garanteaz c dou fire de execuie nu vor executa
concurenial metoda service() n aceai instanta a unui servlet. Aceast interfa nu are m
etode. Intefaa ServletConfig Aceast interfa este folosit de un serviciu de reea pentru
a transmite informaii de configurare unui servlet atunci cnd este iniializat. Serv
letConfig este transmis ntr-un servlet n metoda init() i poate fi accesat n timpul u
nei cereri cu metoda getServletConfig().
113

Interfaa ServletRequest Interfaa ServletRequest descrie informaiile cerute care sun


t transmise ctre metoda service(). O cerere este alctuit formal din trei pri: Cererea
URL, care se identific cu obiectul cerut; parametrii cererii, care au detalii de
spre cerere; i corpul cererii, care este alctuit din datele specifice aplicaiei cer
erii. Interfaa ServletResponse Interfaa ServletResponse descrie cum un rspuns poate
fi ntors clientului. Toate rspunsurile sunt de tip MIME; un tip MIME este asociat
cu un volum de date. Acest tip indic cum vor trebui interpretate datele de ctre c
lient. Interfaa ServletContext Interfaa definete un set de metode pe care un servle
t le poate folosi pentru a comunica cu containerul su. Prin aceast interfa, servletu
l poate nregistra evenimente importante i poate accesa informaii specifice reelei de
care aparine serverului. Un context al unui servlet poate fi obinut prin apelarea
metodei getServletContext() n configuraia iniial a servletului. void log(String mes
sage). Aceast metod nregistreaz un eveniment servlet ntr-un fiier de nregistrari a ser
letului. void log(Exception ex, String message). Aceasta este o metod folositoare
pentru a nregistra urma unei erori i mesajele de eroare n fiierul de nregistrri al se
rvletului. void log(String message, Throwable throwable). Aceasta este varianta
din JSDK. Enumeration getServletName(). Aceast metod ntoarce o enumeraie a numelor s
ervleturilor gzduite de server. n general nu trebuie folosit aceast metod. Servlet ge
tServlet(String name) throws ServletException. Aceast metod ntoarce servletul cu re
spectivul nume, ori null dac nu este gsit. n general nu trebuie folosit aceast metod.
String getRealPath(String Path). Aceast metod transform o cale virtual folosind regu
li locale, i ntoarce calea fiierului dependent de platform. String getMimeType(Strin
g file). Aceast metod ntoarce tipul MIME al fiierului specificat, ori null dac nu est
e cunoscut. String getServletInfo(). Aceast metod ntoarce informaii despre serverul
care gzduiete servletul, incluznd numele su, i numarul versiunii. Object getAttribute
(String name). Aceast metod ntoarce un nume, un atribut dependent de server. Aceast
metod poate fi folosit pentru ca s se obin servicii specifice serverului. Clasa HttpS
ervlet Atunci cnd se scrie un servlet care va fi invocat printr-o cerere Http, se
va extinde aproape ntotdeauna clasa HttpServlet. Aceast clas implementeaz multe det
alii folositoare de preluare a cererilor Http, i are multe clase utilitare pentru
primirea de cereri HTTP i pentru trimiterea rspunsurilor HTTP formatate corespunzt
or. Clasa HttpServlet este o subclas a clasei GenericServlet, i c are toate facilitil
e clasei respective. Definirea metodelor HTTP Cererea clientului HTTP poate fi d
e dou feluri : cerere simpl sau complet.
114

n general, programul trebuie s utilizeze cereri complete, n afara cazului n care se


lucreaz cu HTTP, versiunea 0.9. Singura metod care utilizeaz cererea simpl este GET,
utilizat pentru a regsi o resurs. Sintaxa este : GET URI <CR/LF> n schimb, o cerere
complet ncepe cu o linie de cerere, <CR/LF>, apoi informaia codificat sub forma unu
i antet (optional), <CR/LF> i corpul entitii (optional). Linia de cerere are sintax
a : Metoda Cerere-URI versiune-HTTP <CR/LF> Diferena ntre o cerere simpl i una compl
et este prezent cmpului versiune HTTP i posibilitatea de a specifica mai multe cerer
i HTTP (nu numai GET, ci i HEAD, POST, ...). Metoda GET cere serverului Web s regse
asc informaia identificat de URI. Serverul obine resursa cerut de client utiliznd adre
sa resursei. Metoda GET devine GET condiional dac mesajul cerere trimis de client
include un cmp antet If-Modified-Since. O metod GET condiional cere ca serverul s tr
ansfere resursa specificat numai dac a fost modificat de la data specificat n cmpul If
-Modified-Since. n cazul n care clientul a transferat deja obiectul i a ascuns enti
tatea GET condiional reduce gradul de utilizare al reelei pentru c nu mai este nevo
ie de un transfer inutil. Metoda HEAD este similar lui GET, cu excepia faptului c s
erverul nu returneaz un corp de entitate n rspuns. Aplicaiile utilizeaz HEAD pentru a
obine informaii (n special de antet) despre resursa identificat de URI, fr a transfer
a corpul entitii. Informaia de antet (metainformatie) trebuie s fie aceeai cu informai
a trimis de server ca rspuns la o cerere cu metoda GET. Aplicaiile utilizeaz metoda
HEAD pentru a testa validitatea, accesibilitatea i modificrile legturilor hipertext
. Metoda POST cere serverului Web s utilizeze obiectul din cerere ca resurs identi
ficat de URI n linia de cerere. Deci clientul spune serverului Web aceasta este nou
a surs pe care o utilizai cu URI-ul pe care vi l-am furnizat. n majoritatea cazurilo
r, POST creaz sau nlocuiete o resurs asociat cu URI-ul trimis cu metoda POST. Totui, u
n POST completat cu succes nu cere ca entitatea s fie resursa pe serverul de orig
ine (serverul care recepioneaz cererea complet) sau s fie accesibil pentru o viitoare
referin. Deci, e posibil ca aciunea realizat de metoda HTTP POST s nu furnizeze o re
surs identificabil prin URI. n acest caz, serverul va returna un cod de stare 200 (
OK) sau 204 (fara continut), depinznd de includerea (sau nu) n rspuns a unui obiect
care s descrie rezultatul. Dac un client creaz o resurs pe un server de origine, cl
ientul trebuie s creeze un cod de stare 201 care conine un obiect (text, HTML, ...
) care descrie starea cererii. Toate cererile HTTP POST necesit un cmp Content Len
gth valid. Un server HTTP trebuie s corespund cu un cod de stare 400 (cerere erona
ta) dac nu poate determina lungimea coninutului mesajului cerere. Alte metode HTTP
: CHECKIN, CHECKOUT, DELETE, LINK, PUT, SEARCH, SHOWMETHOD, SPACEJUMP, TEXTSEAR
CH i UNLINK. Acestea sunt mai puin utilizate i nu toate serverele permit aceste met
ode. Pentru furnizorii de servicii Web care ofer servicii bazate pe aplicaii Web d
inamice, aplicaia este cheia afacerii i tehnologia folosit n serverul de aplicaie poa
te avea un impact major asupra rezultatelor obinute n afacere. Containerul Web est
e parte a unui server care gestioneaz servlets, Java Server Pages (JSP) pecum i al
te componente Web. Aceast tehnologie a containerului Web joac un rol vital n determ
inarea performanelor si capacitii de adaptare a componentelor aplicaiei Web. Exist o
legtur direct ntre aceast tehnologie folosit de ctre dezvoltatori i performana i ag
a aplicaiilor. Compania Sun susine c serverul GlassFish este de departe mult mai ex
tensibil, mai modular, mai uor de folosit i mai adaptabil dect serverul de aplicaii
Apache Tomcat oferind n acelai timp performane foarte bune. Cu suport pentru cluste
ring, mesaje, servicii enterprise, precum i alte caracteristici cheie care lipses
c n Tomcat, i cu suportul companiei Sun i sprijinul unei mari i nfloritoare comuniti,
lassFish este o alternativ superioar pentru cei care dezvolt aplicaii Web.
115

GlassFish este un server open source, dezvoltat de ctre Comunitatea GlassFish, ca


re a fost lansat de ctre compania Sun n anul 2005. n anul 2008 versiunea a doua a s
erverului (GlassFish v2) a atins aproape 9 milioane de descrcri i 300.000 de nregist
rri. Versiunea actual, GlassFish v3 Prelude, ofer o arhitectur modular n mod implicit,
care permite dezvoltarea aplicaiilor Web in mod rapid i cu suport pentru limbaje
dinamice. Este o platform excelent pentru implementarea aplicaiilor Web susinut de Ja
va sau de limbaje dinamice, cum ar fi JRuby. GlassFish Enterprise Server v2 mpreu
n cu Java Enterprise Edition (EE) 5 adaug un plus de calitate op iunilor disponibile
pentru comunitatea open source ridicndu-se totodat la standardele impuse de ctre c
ompania Sun. Tomcat a fost dezvoltat la Apache, de ctre un grup de dezvoltatori d
e la Sun i Jserv, iar codul iniial a venit de la Sun. A devenit implementare de re
ferin pentru primele versiuni de servlets i pentru specificaii JSP. Tomcat a jucat u
n rol vital n nceputul dezvoltrii aplicaiilor de server oferite de Java. A fost disp
onibil sub licen open source nc de la nceput i a contribuit la sporirea popularitii s
n cadrul organizaiilor de tip Enterprise. n general, aplicaiile care ruleaz pe Tomca
t, vor rula neschimbate i pe GlassFish. Cu toate acestea exist diferene importante
care afecteaz n mod direct performanele, scalabilitatea i productivitatea aplicaiilor
. La toate nivelurile, GlassFish este pur i simplu o op iune mult mai bun dect Tomcat
att pentru dezvoltatori ct i pentru companii: GlassFish este o colectie de contain
ere Java EE, nu doar un Container Web. GlassFish este mult mai extensibil i mai m
odular dect Tomcat i dezvoltatorii pot profita mult mai uor de capabilit ile acestuia,
cum ar fi: mesaje, clustering, failover, gestionare de sesiuni, EJB, JMS, JSR,
etc.
BIBLIOGRAFIE
1. PRNU, M., [2009], Tehnologii Web, Editura Titu Maiorescu, Bucureti, (245 pag.); IS
BN 978-606-8002-23-1/004.55; 2. PRNU, M., [2006], Utilizarea calculatoarelor i servi
cii Internet, Editura Elisavaros, Bucureti, (240 pag.); ISBN(10) 973-8400-42-2; IS
BN(13) 978-973-8400-42-9 3. S. Buraga, Tehnologii XML, Polirom, Iai, 2006 4. S. B
uraga, Semantic Web, Matrix Rom, Bucureti, 2004 5. Gangemi, P. Mika, Understanding
the Semantic Web through Descriptions and Situations,International Conference OD
BASE03, Italy, Springer, 2003 6. T. Anghel Dezvoltarea aplicaiilor WEB folosind X
HTML, PHP I MySQL Ed. Polirom Iai 2005 7. World Wide Web Consortium - W3C: http://
www.w3c.org 8. www.php.net 9. www.w3schools.com 10. www.apache.org 11. www.mysql
.com 12. http://www.oracle.com/technetwork/java/index.html 13. http://www.netbea
ns.org.
116

Nota final care se va acorda fiecrui student, va conine urmtoarele componente n proce
ntele menionate: - examen final 60% - lucrari practice/ proiect, etc. 30% - teste
pe parcursul semestrului 10% Conditia de participare la examen, este ca fiecare
student, sa realizeze un site, care va cuprinde minim 3 pagini pentru fiecare mod
ul (Html, JavaScript, XML, Php si MySql). Codul sursa al paginilor, vor contine
si comentariile corespunzatoare.
117

Modele bilete examen


BILET EXAMEN 1

1. Realizai un formular care sa permit introducerea numelui, prenumelui i a adresei


e-mail. La apsarea
butonului de submit datele introduse n formular s apar ntr-o fereastr nou ca n exemplu
: Studentul Popescu Ion poate fi contactat la adresa adresamail@yahoo.com. 2. Creai
un fiier php care preia dintr-un formular html numele i parola. Se verific dac nume
le este student i parola Titu_Maiorescu. n caz afirmativ se afieaz mesajul OK, altfe
l reafieaz formularul nsoit de un mesaj de eroare. 3. S se creeze o funcie javascript
care afieaz pe ecran ce buton radio s-a bifat.

4. Realizai un script care s afieze n pagin data curent. GRIL 1. a. b. c. 2. a. b. c.


. a. b. c. 4. a. b. c. 5. a. b. c. 6. O clasa de stiluri se apeleaz prin: <DIV ID
=clasa> <DIV CLASS=clasa> <DIV STYLE=clasa> Alegei atributul corect pentru tagul <tabl
> color align text Introducerea unei imagini se realizeaz prin: <a src=x.jpg> <a hr
ef=x.jpg> <img src=x.jpg> Pentru afiarea unui mesaj in bara de stare putem folosi: on
Change() window.status OK document.title O zon de text se introduce prin: <input
type=textarea> <textarea> <select textarea> Culoarea de fond a unei pagini Web se
stabilete prin proprietatea: a. windows.status b. document.fgColor c. document.bg
Color 7. O list de selecie se introduce prin instruciunea: a. <input type=select> b.
<select> c. <form select> 8. Atributul checked ataat unui buton radio are ca efec
t: a. Bifarea implicit a butonului b. Nu exist acest atribut c. Trebuie ataat oblig
atoriu la toate butoanele radio din acelai grup 9. In PHP numele variabilelor tre
buie s nceap cu: a. _ b. $ c. ? 10. Alegei varianta corect pentru introducerea unei f
uncii javascript: a. function suma numere() b. function suma_nr() c. sumanumere
Nota se calculeaz: 4 ntrebri * 1.5 punct + 10 ntrebri gril * 0,3 puncte+1 punct din of
iciu =10.
118

BILET EXAMEN 2 1. Realizai un script care s deschid o fereastr cu dimensiunile 300x1


00 pixeli n care s apar textul FACULTATEA STIINTA SI TEHNOLOGIA INFORMATIEI astefel i
ncat proprietatile textului afisat vor fi centrat, inclinat si de culoare albastr
a. 2. Creai un fiier php care preia dintr-un formular html campurile nume i parola.
Se verific dac numele este student i parola Titu_Maiorescu. n caz afirmativ se afiea
z mesajul Bun venit, altfel se reafieaz formularul nsoit de un mesaj de eroare. 3. S
scrie o funcie javascript pentru calculeaza suma primelor n numere naturale. Numa
rul n este preluat dintr-o caseta de text, iar rezultatul este afisat ntr-o alt ca
set de text ca in figura alaturata.
4. Scriei codul html care mparte fereastra browser-ului n dou cadre verticale. n prim
ul cadru se ncarc fiierul student.html, iar n al doilea cadru se ncarc o pagina care c
ontine doar data curenta. 5. Realizai un formular care sa permit introducerea nume
lui, prenumelui i a adresei de e-mail. La apsarea butonului de submit datele intro
duse n formular s apar ntr-o fereastr nou ca de exemplu: Studentul Popescu Ion poate
contactat la adresa popescu.ion@yahoo.com. 6. S se creeze o funcie javascript care a
fieaz pe ecran, care buton radio s-a bifat dintr-un grup cu 4 elemente (vezi figur
a alaturata).
Nota pentru partea scrisa se calculeaza: 6 ntrebri * 1.5 puncte +1 punct din ofici
u =10.
2

BILET EXAMEN -3 1. Realizai un script care s deschid o fereastr cu dimensiunile 300x


200 pixeli n care s apar textul FACULTATEA DE INFORMATICA astfel incat proprietatile
textului afisat vor fi centrate, inclinate si de culoare #ad123f. 2. Creai un fiie
r php care preia dintr-un formular html campurile marca student, nume student si
grupa. Se verific dac marca_student exista in tabela student. n caz afirmativ se a
fieaz mesajul Student la Facultatea de Informatica, altfel, se va reafisa formularul
nsoit de mesajul eroare. 3. Realizati un script php care utilizeaz funciile print_r,
explode i implode. 4. Realizai un formular care sa permit introducerea numelui, pre
numelui i a adresei de e-mail. La apsarea butonului de submit datele introduse n fo
rmular s apar ntr-o fereastr nou, cu urmatorul continut : Studentul Popescu Ion poate
i contactat la adresa popescu.ion@yahoo.com. 5. Realizati un script ce deruleaz n pa
gin 4 imagini, din 5 n 5 secunde. 6. Explicati cel putin 5 functii php care au efe
ct asupra tabelor dintr-o baza de date MySql.
Nota pentru proba scrisa se calculeaza: 6 ntrebri * 1.5 puncte +1 punct din oficiu
=10.
3