Documente Academic
Documente Profesional
Documente Cultură
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
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
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
<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
<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
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
- 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
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
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
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
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
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.
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>
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
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
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
<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
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
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 ! ">  <in
put type=button value=albastru onclick="b()" onmouseover="window.status= Ati ale
s fundal albastru " onmouseout= "window.status= Alegeti culoarea fundalului ! ">
  <script type="text/javascript"> function r()
51
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
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
59
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.
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.
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
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.
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
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
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.
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
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 " &nb
sp;Mesaj 2<br>\n"; while (1) { echo " 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
onmousemove onmouseout onkeypress onkeydown onkeyup
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
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.
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
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
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 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
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); ?>
DELETE - terge nregistrri dintr-o tabel, tergerea se face dup un id, folosind sintaxa:
DELETE FROM nume_tabel WHERE id= $id ;
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
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
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