Documente Academic
Documente Profesional
Documente Cultură
Structura cursului:
HTML si CSS
JAVASCRIPT
PHP i MySQL
CONSTRUIREA DOCUMENTELOR XML.
Utilizarea servlet-urilor.
2014-2015
Unitatea de invatare I.
CREAREA PAGINILOR WEB CU HTML
Aceasta unitate are ca scop cunoasterea si utilizarea tagurilor HTML, care stau la baza crearii
site-urilor WEB. Un site web desemneaz o grup de pagini web multimedia (coninnd texte, imagini
fixe, animaii .a.), accesibile n Internet pe o tem anume i care sunt conectate ntre ele prin aa-numite
hiperlinkuri.
Cuprins:
1. Crearea paginilor Web folosind HTML
1.1. Tag-uri de baz
1.2. Utilizarea ancorelor
1.3. Utilizarea imaginilor
1.4. Crearea tabelelor
1.5. Cadre n HTML(frames)
1.6. Definirea formularelor
1.7. Stiluri
1.8. Straturi
Intrebari de control; Tema de casa; Exemple rezolvate; Formular feedback;
activeaza pe web.Paginile Web sunt coninute n fisiere pe un calculator server. Un astfel de server este, de
exemplu, www.yahoo.com, sau www.google.ro. Calculatoarele care acceseaz paginile Web sunt clieni. De fapt,
pe clieni ruleaz programe dedicate vizualizarii paginilor Web, numite browsere Web i acestia acceseaz i
afieaz pagina Web pe calculatorul local.
WWW Consortium perfecioneaz standarde noi, ofer programe pentru servere i clieni, documentaie etc.
Productori de browsere implementeaz n browserele lor standardele W3C, dar dezvolt i ei standarde pe care
numai browserele lor le suport. Din aceste motiv, o pagin web trebuie s fie test cu mai mult browsere.
Internetul pune la dispoziia utilizatorilor mai multe servicii, printre care:
Article I.
Validarea documentelor HTML
Toate documentele trebuie validate pentru elimiarea erorilor, ca de exemplu lipsa unei ghilimele,
neinchiderea unei paranteze, elemente sau atribute scrise gresit sau structurate invalid. Erorile nu sunt
vizibile mereu in browser deoarece fiecare le recupereaza in modul propriu. Validarea acestor documente
se face cu un serviciu special W3C care poate fi accesat de oricine la adresa: http://validator.w3.org. Un
validator verifica definitia tipului documentului(DTD) si nu siguranta legaturilor din document.
Elementul DOCTYPE
Documentul HTML validat trebuie declarat in functie de versiunea pe care o utilizeaza.
Declararea tipului este definita de DTD(Document Type Definition), in HTML 4 pot exista 3 DTD
specifici, astfel autorul trebuie sa include in pagina sa tipul de document in functie de versiune.
Elementele care se pot utiliza n cadrul paginilor depind de versiunea HTML utilizat.n tabelul 1 avem lista cu
versiunile HTML i modul de declarare al acestora la ncepul oricrui fiier html (DOCTYPE):
declaraia DOCTYPE
HTML 4.01
HTML 3.2
HTML 1.0
XHTML 1.0
XHTML 1.1
Atenie! Nu se poate valida un document, dac nu se utilizeaz una din declaraiile din tabelul 1, la nceputul
acestuia. De asemenea, anumite motoare de indexare caut elemente META n paginile HTML, elemente care au
rolul de a defini o list de cuvinte cheie, separate cu virgul. Motoarele de cautare pot prezena aceste cuvinte
cheie, ca rezultat al unei cautari.
Etichetele META au atributele NAME i CONTENT i se folosesc conform sintaxei:
<META NAME= meta nume CONTENT= coninut>
Exemplu de utilizarea a acestei etichete n antetul unei paginii
<meta name=informatica content=importanta informaticii in procesul de invatamant>
Etichete meta se poate utiliza i pentru a nlocui comenzile Refresh sau Reload care au rolul de a
renmprospta coninutul paginii ncrcate n browser.
Exemplu: pentru remprosptarea la 10 secunde a unui pagini ncarcate ntr-un browser:
<meta http-equiv=refresh content=10;url=http://www.test_site.ro>
Inserarea unui titlu pentru pagina web
Un lucru subtil, dar simplu, pe care l putem face este s inserm un titlu pentru o pagin Web, titlu ce va fi afiat n
bara de titlu a browser-ului folosit. Acest titlu se poate introduce cu ajutorul marcajului <title> </title>. Acestea
vor fi introduse n interiorul marcajelor
Article II.
HTML 5
HTML 5.0 Acest limbaj se bazeaza pe prezentarea continutului si structurarea in world wide
web , o tehnologie nucleu pentru Internet propusa si initial pentru Opera.
Este a cincea revizuire a standardului HTML si din octombrie 2011 este in curs de dezvoltare.
Acest limbaj se bazeaza pe prezentarea continutului si structurarea in world wide web.
Obiectivele sale principale au fost acelea de a imbunatati limbajul cu un suport pentru cele mai recente
aparitii multimedia. HTML 5 isi propune sa cuprinda nu numai HTML 4.0 dar si XHTML 1.
HTML 5 devine o incercare de a define un singur limbaj de marcare care poate fi scris in oricare
dintre sintaxele HTML sau XHTML.
Acesta include modele detaliate de prelucrare pentru a incuraja mai multe implementari
interoperabile, extinde, imbunatateste si rationalizeaza disponibilitatile pentru documentele web si
introduce marcarea si aplicatii API(application programming interfaces) pentru aplicatii web complexe.
HTML 5 este un posibil candidat pentru aplicatiile de platforme mobie, multe caracteristici au fost
create din considerarea ca va trebui sa devina capabil sa ruleze pe dispositive cum ar fi o tableta sau un
smart-phone.
Aduce multe noi caracteristici sintactice, acesta cuprinzand elemente ca <video>, <audio>,
precum si integrarea continutului SVG(Scalable Vector Graphics) care inlocuieste utilizarea tag-ului
<object> .
Aceste noutati sunt proiectate pentru a facilita includerea si manipularea in web a continuturilor
multimedia si grafice fara a fi nevoie sa se recurga la proprietatile de plugin si API.
XHTML5
XHTML5 este serializarea XML a HTML5, documentele XML trebuie servite cu un tip XML
media de internet. HTML 5 necesita utilizarea stricata a XML, sintaxa bine formata.
Alegerea intre HTML5 si XHTML5 se rezuma la alegerea tipului de continut MIME: tipul de
media ales determina ce tip de document se va folosi. In XHTML5 html exista si poate fi chiar omis.
Lista elementelor noi in HTML 5.0:
Tag-ul
Descrierea
<article>
marcheaza un articol
<aside>
marcheaza un continut aparte fata de continutul paginii, dar care are legatura cu el.
<audio>
<canvas>
<details>
<dialog>
<embed>
<figure>
marcheaza un grup de elemente care au legatura unul cu celalalt si care pot fi considerate in
pagina, continut de sine statator.
<footer>
<header>
<hgroup>
<keygen>
<mark>
<meter>
<nav>
<output>
<progress>
<rp>
defineste continut care va fi afisat in cazul in care browser-ul nu supotra tag-ul ruby
<rt>
<ruby>
<section>
marcheaza o sectiune oarecare (header, footer, bara de navigare, capitole sau orice alta
sectiune)
<source>
<time>
<video>
Tag-ul
tel
search
url
datetime
date
month
week
time
datetime-local
number
range
color
placeholder
Article III.
1.1 Tag-uri de baz
Sfritul de linie
Dup cum se observ, caracterele enter , tab i spaiile multiple sunt ignorate de ctre browser. Trecerea pe o
linie nou se face prin inserarea marcajului <br> (line break). Nu are form de nchidere. Introducerea unui
spaiu se poate face prin construcia: .
Ghilimele
"
"
Apostrof
'
Sectiune
§
§
Copyright
©
©
Multiplicare
×
×
mpartire
÷
÷
Euro
€
€
Culoarea de fond i culoarea textului
O culoare se compune din diferite procentaje ale culorilor de baza rosu, verde i albastru (RGB Red, Green,
Blue) i poate fi precizat n trei moduri:
1. folosind numele culorii (red, de exemplu, adic rou); sunt disponibile cel puin 16 nume de culori: aqua,
black, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white i yellow.
2. cu combinaia valorii zecimale a celor trei culori de baza, fiecare lund o valoare ntreaga de la zero la 255,
de exemplu rgb(255,0,0), care este tot rou (verdele i albastrul sunt zero); observai sintaxa
(rgb(codrosu,codverde,codalbastru));
3. cu combinatia valorii hexazecimale a celor trei culori de baza, fiecare lund o valoare de la zero la FFhexa,
de exemplu #FF0000 este tot rou, deoarece FF (pentru rou) hexazecimal este 255 zecimal, iar 00
este zero i n zecimal;
Culorile specificate n hexazecimal sunt recunoscute de toate browserele.
Tabelul 3. Utilizarea codurilor hexa
DENUMIRE
COD HEXA
CULOARE
aqua
#00FFFF
black
#000000
blue
#0000FF
fuchsia
#FF00FF
gray
#808080
green
#008000
lime
#00FF00
maroon
#800000
navy
#000080
olive
#808000
purple
#800080
red
#FF0000
silver
#C0C0C0
teal
#008080
white
#FFFFFF
yellow
#FFFF00
Section 3.02
Utilizarea culorilor pentru tagul <body>
n tag-ul <body>, puteti specifica culoarea fundalului, sau a textului, a legaturilor nevizitate, a celor vizitate sau a
celor activate.
atribut
efect
bgcolor
fundal
text
text
link
legatur nevizitat
vlink
legatur vizitat
alink
legatur activ
Stiluri pentru blocurile de text. Unui text i se pot aplica diverse stiluri prin folosirea marcajelor:
NUME TAG
<b><b>
<big></big>
<em></em>
<i></i>
<small></small>
<strong> </strong>
<sub></sub>
<sup></sup>
<s>.</s>
<del></del>
<u></u>
EFECT
text ngrosat
text cu caractere mari
text evidentiat
text italic
text cu caractere mici
text mai evidentiat dect <em>
indice inferior (subscript)
indice superior (superscript)
text taiat
text sters
text subliniat
Blocuri paragraf
Cu ajutorul etichetei paragraf <p> este posibil trecerea la o linie noua i permite:
- inserarea unui spaiu suplimentar nainte de blocul paragraf;
- inserarea unui spaiu suplimentar dup blocul paragraf, daca se folosete delimitatorul </p> (acesta fiind
opional);
- alinierea textului cu ajutorul atributului align, avnd valorile posibile left , center , right i
justify.
Blocuri de titlu
ntr-un text titlurile (headers) de capitole pot fi introduse cu ajutorul etichetelor <h1>, <h2>, <h3>, <h4>, <h5>,
<h6>.
Toate aceste etichete se refera la un bloc de text i trebuie nsoite de o eticheta de ncheiere similara.
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
caracterele cele mai mici.
Linii orizontale
ntr-o pagina Web pot fi inserate linii orizontale. Acest lucru se face cu ajutorul etichetei <hr>. Pentru a configura
o linie orizontala se utilizeaz urmtoarele atribute ale etichetei <hr> care sunt:
align permite alinierea liniei orizontala. Valorile posibile sunt left ,center i right;
width permite alegerea lungimii liniei;
size permite alegerea grosimii liniei;
noshade cnd este prezent definete o linie fr umbra;
color permite definirea culorii liniei.
Blocuri <center>
Blocul introdus de etichetele <center>...</center> aliniaz centrat toate elementele pe care le conine.
Fonturi
Un font este caracterizat de urmtoarele atribute:
culoare (stabilit prin atributul color);
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 ctre o pagina aflata n acelai director
O legtur ctre o pagina aflata n acelai director se formeaz cu ajutorul etichetei <a> (de la anchor=ancora).
Pentru a preciza pagina, indicat 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 apsarea butonului stng al
mouse-ului, este formata din textul cuprins ntre etichetele <a>...</a>.
Prezena etichetei de sfrit </a> este obligatorie.
O legtur ctre un site particular
n exemplul urmtor se utilizeaz adresa URL www.utm.ro care ncarc pagina de start din site-ul Universitii..
<html>
<head>
<title> Link ctre site-ul UTM</title>
</head>
<body>
<h3>Link ctre site-ul UTM </h3>
<a href=http://www.opera.com>Opera 9.6 Web browser</a>
</body>
</html>
1.2 Utlizarea ancorei
ntr-o pagin foarte lung pot exista puncte de reper ctre care se definesc legturi. 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 exemplu leg1).
Pentru a insera o legtur ctre leg1, definit n aceeai pagina, se utilizeaz eticheta <a> avnd atributul href de
valoare #leg1.
Pentru a introduce o legtur ctre o ancor definit n alt document (alt pagin), aflat n acelai director, atributul
href primete o valoare de forma nume_fisier.html#nume_ancora.
Alegerea culorilor pentru legaturi
n mod prestabilit, se utilizeaz trei culori pentru legaturi:
culoare pentru legaturile nevizitate (nu s-a efectuat nici un clic pe ele)
culoare pentru legaturile vizitate (s-a efectuat cel puin un clic pe ele)
culoare pentru legaturile active (cnd se execut clic i se ine apsat).
Aceste atribute pot fi stabilite cu ajutorul urmtoarelor atribute ale etichetei <body>:
link pentru legaturile nevizitate;
vlink pentru legaturile vizitate;
alink pentru legaturile active.
Valorile pe care le pot lua aceste atribute sunt culori definite prin nume sau conform standardului RGB.
Utilizarea potei electronice - se utilizeaz n construcia adresei URL cuvntul mailto: urmat de o adresa e-mail
valida.
Pentru ca exemplul urmtor s funcioneze trebuie ca pe calculator s fie instalat o aplicaie de expediere a
mesajelor electronice (Outlook Express, Microsoft Outlook etc). Adresa trebuie s fie valid i calculatorul s fie
conectat la Internet.
Atributul target
Dac dorim ca pagina solicitat s fie ncrcat ntr-o alt fereastr dect cea curent, atunci trebuie lansat n
execuie o nou instan a browserului care va conine noua pagin. Acest lucru se realizeaz folosind atributul
target al etichetei <a>, care primete ca valoare un nume. Numele ferestrei poate fi folosit ca valoare pentru
atributul target i pentru alte legturi caz n care paginile respective vor fi ncrcate n aceeai fereastr. Atributul
target accept i alte valori cum ar fi _blank caz n care pagina se va ncrca ntr-o fereastr nou, anonim (nu
poate fi folosit pentru ncrcarea altor pagini).
tabelului. Dac atributul border nu este urmata de o valoare atunci tabelul va avea o grosime prestabilita egal cu
1 pixel, o valoare egal cu 0 semnific absena chenarului. Cnd atributul border are o valoare nenul, chenarul
unui tabel are un aspect tridimensional.
Alinierea tabelului
Pentru a alinia un tabel ntr-o pagina Web, se utilizeaz atributul align al
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 prin 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 culoare. Dac n tabel sunt definite mai multe
atribute bgcolor, atunci prioritatea este urmtoarea: celul, linie, tabel.
<html>
<head><title>culoare tabel</title></head>
<body><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>albastru 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>
<tr>
<td>
<th>
HARI DE IMAGINI
(vezi site-ul http://www.utm.ro/live/index.html) figura de mai jos. Imaginea este mprit n mai multe
seciuni, iar prin activarea unei seciuni se deschide un fiier, prin activarea altei seciuni un alt fiier. Seciunile se
creeaz astfel:
Introducem n pagina imaginea care reprezint harta:
< img src= harta.gif usemap= #numele hartii>
< map name= nume harta >(acelai nume al hartii ca cel de mai sus)
n interior delimitm zonele pentru clic pe mouse astfel:
Area
shape=
circle coords= x,y,r href= nume fisier.html alt= text alternativ (explicatii: circle
=decupeaza dupa o zona circulara ; x,y= reprezint coordonatele cercului n pixeli; r=raza
cercului,n pixeli; nume fisier=indica numele fisierului deschis la clic; alt arata textul
alternativ, care apare ca o eticheta cand pozitionam mouse-ul pe zona delimitata)
rect coords= x1,y1,x2, y2 href= nume fisier.html alt= text (explicatii: rect =
decupeaza dupa o zona dreptunghiulara; x1,y1= colt stanga sus; x2,y2 = colt dreapta)
<html>
<head>
<title>Harti de Imagini </title>
</head>
<body>
<img src=poze/Imag0061.jpg width=400 height=400 usemap=#dzip>
<map name=dzip>
<area shape=circle coords=100,100,30 href=cv.html alt=CV target=_blank>
<area shape=rect coords=250,250,350,350 href=ex1.html alt=1>
<area shape=poly coords=50,350,150,350,100,250 href=ex1.html alt=2>
</map>
</body>
</html>
Valoarea atributelor cols i rows este o list de elemente, separate prin virgul, care descriu modul n care se
face mprirea. Elementele listei pot fi:
un numr ntreg de pixeli;
procente din dimensiunea ferestrei (numr ntre 1 i 99 terminat cu %);
n* care nseamn n pri din spaiul rmas;
Exemplul 1: <frameset cols=300,*,50%,*> nseamn o mprire n 4 cadre pe vertical, dintre care primul are
300 pixeli, al treilea ocup jumtate din spaiul total disponibil, iar al doilea i al patrulea ocup, n mod egal, restul
de spaiu rmas disponibil.
Exemplu 2: <frameset rows=300,1*,50%,2*> nseamn o mprire n 4 cadre, dintre care primul are 300 pixeli ,
al treilea ocup jumtate din spaiul total disponibil, iar al doilea i al patrulea ocup, n mod egal, restul de spaiu
rmas disponibil, care se mparte n trei pri egale, al doilea cadru ocupnd o parte , iar al patrulea ocupnd 2 pri.
Observatii: dac mai multe elemente 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 rndul su n alte
cadre (folosind <frameset>).
n exemplul urmtor, este creat o pagina Web cu trei cadre orizontale. Pentru al doilea cadru valoarea atributului
src este adresa URL a unei imagini.
n exemplul urmtor, este creat o pagina Web cu trei cadre mixte. Pentru a o crea se procedeaz din aproape n
aproape. Mai nti, pagina este mprit n dou cadre de tip coloan, dup care al doilea cadru este mprit n
doua cadre de tip linie.
<html>
<head><title>cadre</title></head>
<frameset cols=20%,*>
<frame src=p1.html>
<frameset rows=*,*>
<frame src=p1.html>
<frame src=p1.html>
</frameset>
</frameset>
</html>
dezactivata dac se utilizeaz atributul frameborder cu valoare no. Acest atribut poate fi ataat att etichetei
<frameset> ct i etichetei <frame> (dezactivarea fiind valabil numai pentru un singur cadru). Valorile posibile ale
atributului frameborder sunt: yes - echivalent cu 1; no - echivalent cu 0;
Bare de defilare
Atributul scrolling al etichetei <frame> este utilizat pentru a aduga unui cadru o bar de derulare care
permite navigarea n interiorul documentului afiat n interiorul cadrului. Valorile posibile sunt:
yes - barele de derulare sunt adugate ntotdeauna;
no - barele de derulare nu sunt utilizabile;
auto - barele de derulare sunt vizibile atunci cnd este necesar.
Atributul noresize al etichetei <frame> (fr nici o valoare suplimentar) dac este prezent, inhib posibilitatea
prestabilit a utilizatorului de a redimensiona cadrul cu ajutorul mouse-ului.
Poziionarea documentului ntr-un cadru
Atributele marginheight i marginwidth ale etichetei <frame> permit stabilirea distanei n pixeli dintre
coninutul unui cadru i marginile verticale, respectiv orizontale ale cadrului . Valori posibile sunt: numrul de
pixeli sau procent din limea, respectiv din nlimea cadrului;
Target
atributul maxlength specifica numrul maxim de caractere pe care le poate primi un cmp de editare.
-
Observaii:
daca atributul type lipsete ntr-un element <input> , atunci cmpul respectiv este considerat n mod
prestabilit ca fiind de tip text.
Formularele, cu un singur cmp (de tip text), nu au nevoie de un buton de expediere, datele sunt expediate
automat dup completarea i apsarea tastei ENTER.
Butoane
Butonul Reset
Daca un element de tip <input> are atributul type configurat la valoarea reset, atunci n formular se introduce
un buton pe care scrie Reset. La apsarea acestui buton, toate elementele din formular primesc valorile
prestabilite (definite odat cu formularul), chiar dac aceste valori au fost modificate de utilizator. Un buton Reset
poate primi un nume cu ajutorul atributului name i o valoare printr-un atribut value. Un asemenea buton
afieaz textul Reset, dac atributul value lipsete, respectiv valoarea acestui atribut n caz contrar .
Butoane radio
Butoanele radio permit alegerea, la un moment dat, a unei singure variante din mai multe posibile. Acestea se
introduc ca familii de butoane prin eticheta <input> cu atributul type avand valoarea radio, iar atributul name
trebuie s primeasc aceeai valoare pentru fiecare buton dintr-o familie.
La expedierea formularului se va transmite una dintre perechile sex=m sau sex=f, n funcie de alegerea fcut
de utilizator.
Casete de validare
O caseta de validare (checkbox) permite selectarea sau deselectarea unei opiuni.
Pentru inserarea unei casete de validare se utilizeaza eticheta <input> cu atributul type configurat la
valoarea checkbox .
Observaii.
fiecare caset poate avea un nume definit prin atributul name;
fiecare caset, la fel ca i butonul radio, poate avea valoarea prestabilita selectat, definit cu atributul
checked.
Casete de fiiere
Pentru pereche name i value a unui formular se poate utiliza ntregul coninut al unui fiier pe post de valoare.
Pentru aceasta se insereaz un element <input> ntr-un formular, cu atributul <type> avnd valoarea file (fiier).
Atributele pentru un element de tip caset de fiiere sunt:
atributul name ce permite ataarea unui nume;
atributul value ce primete ca valoare adresa URL a fiierului care va fi expediat o data cu formularul.
Aceast valoare poate fi atribuit direct atributului value, poate fi tastata ntr-un cmp de editare ce apare
o data cu formularul sau poate fi selectat prin intermediul unei casete de tip File Upload sau Choose File
care apare la apsarea butonului Browse... din formular .
Liste de selectie
O lista de selectie permite utilizatorului s aleag unul sau mai multe elemente dintr-o list finit. Lista de selecie
este inclus n formular cu ajutorul etichetelor corespondente <select> i </select>. O list de selecie poate avea
urmtoarele atribute:
atributul name, care ataeaz listei un nume (utilizat n perechile name=value expediat serverului);
atributul size, care precizeaz (printr-un numr ntreg pozitiv , valoarea prestabilita fiind 1) cte elemente
din list sunt vizibile la un moment dat pe ecran (celelalte devenind vizibile prin acionarea barei de
derulare ataate automat listei).
Elementele unei liste de selecie sunt incluse n lista cu ajutorul etichetei <option>. Doua atribute ale etichetei
option se dovedesc utile:
atributul value primeste 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 <option>;
atributul selected (fr alte valori) permite selectarea prestabilita a unui element al listei.
ntr-un formular pot fi afiate butoane fr un rol prestabilit. Cnd utilizatorul apas un buton, se lanseaz n
execuie o funcie de tratare a acestui eveniment. Limbajul HTML nu permite scrierea unor astfel de funcii (acest
lucru este posibil daca se utilizeaz limbaje de scriptare precum JavaScript, VBScript). Pentru a insera un buton
ntr-un formular , se utilizeaz eticheta <input> avnd atributul type configurat cu valoarea button. Alte doua
atribute ale elementului button sunt:
atributul name, care permite ataarea unui nume butonului
atributul value, care primete ca valoare textul ce va fi afisat pe buton.
1.7 Stiluri
Stilurile pun la dispoziia creatorilor de site-uri noi posibiliti de personalizare a paginilor Web. Un stil reprezint
un mod de a scrie un bloc de text (adic anumite valori pentru font, mrime, culoare, aliniere, distane fa de
margini etc).
Exista doua modaliti de a defini un stil:
sintaxa CSS (Cascading Style Sheets);
sintaxa Javascript.
Stilurile sunt introduse n doi pai care sunt:
definirea stilului;
precizarea domeniului de aplicare a stilului.
Stilurile se pot defini in fisiere externe cu extensia CSS, astfel incat se pot utiliza toate proprietatile CSS
si se asociaza cu documentele HTML cat si XML.
In HTML, legatura cu documentul CSS extern se precizeaza in interiorul elementului astfel <head>:
<link rel=stylesheet type=text/css href=exemplu.css /> </head>
Pentru XML: <?xml-stylesheet href=exemplu.css type=text/css?>
Stilurile sunt de finite n cadrul blocului <head></head> ntre etichetele <style></style>. n funcie de modul
de definire, putem avea:
Stiluri dedicate
Aceste stiluri se aplica blocurilor de text pentru care sunt definite. De exemplu:
<head><style>
h1 {text-align:center; color:red;}
</style>
</head>
Toate titlurile care apar n pagina ca fiind de mrime 1 vor fi de culoare roie i centrate. Daca dorim ca acelai stil
s fie utilizat de ctre mai multe elemente (de ex. h1, h2, i p) atunci se utilizeaz o lista acestor elemente,
separate prin virgula:
<style>
h1, h2, p {text-align:center; color:red;}
</style>
Clase de stiluri
Aceste stiluri permit definirea unui stil general i folosirea lui oriunde este necesar. Exemplu: Definim o clas de
stiluri ac (albastru i centrat) n interiorul blocului <style>...</style>, aflat la rndul lui n blocul
<head>...</head>:
<style>
.ac {text-align:center; color:blue;}
</style>
Dac dorim ca un titlu de mrimea 2 s foloseasc clasa de stiluri ac atunci scriem: <h2 class = ac>Acesta
este un header de marime 2 albastru i centrat</h2>
Stiluri identificate
Toate elementele unui document admite un atribut universal numit id. Atributul id poate identifica stilul utilizat
de un element. Pentru a utiliza un stil identificat procedai astfel:
- n blocul <style>...</style> introducei definiia stilului conform sintaxei:
<style>
#verde { color: green }
</style>
Configurarea fontului folosind stilurile
Mrimea fontului este stabilit prin atributul font-size. Valori posibile:
- 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 cele 5
familii generice: serif, sans-serif, cursive, monospace, fantasy.
Grosimea fontului - font-weight: valori posibile:
- normal, bold, bolder, lighter.
- numere ntre 100 (cel mai subtire) i 900 (cel mai gros)
Stilul fontului - font-style: normal, italic, oblique
<html>
<head><title>configurarea fontului</title>
<style>
#s1 {font-size:16pt; font-family:verdana;}
#s2 { font-size:2cm; font-family:Arial; font-weight:900}
#s3 { font-size:20px; font-family:fantasy;font-style:italic;}
</style>
</head>
<body>
<div id=s1>text introdus cu font verdana, dimensiune 16pt</div>
<div id=s2>text introdus cu font arial, dimensiune 2 cm, ingrosat</div>
<div id=s3>text introdus cu font generic fantasy, dimensiune 20 pixeli, inclinat</div> </body> </html>
Culoarea textului este stabilit prin atributul color. Culoarea fondului textului este stabilit prin
atributul background-color. Valorile posibile sunt aceleai cu ale atributului color.
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 atributul text-decoration: none, underline, line-through, overline.
<html>
<head><title>configurarea textului</title>
<style>
#s1 {color:red;background-color:yellow;text-align:center}
#s2 { color:cyan;background-color:black;text-align:right}
#s3 { color:BLACK;background-image:url(w3.gif);text-decoration:overline}
</style></head><body>
<div id=s1>text rosu pe fundal galben</div>
<div id=s2>text cyan pe fundal negru</div>
<div id=s3>text cu imagine de fundal<br> text cu imagine de fundal<br> text cu
imagine de fundal<br> text cu imagine de fundal<br> text cu imagine de
fundal<br> text cu imagine de fundal<br>
</div></body></html>
Font Properties
Font Family
Font Style
Font Variant
Font Weight
Font Size
Font
Font Family
Syntax:
Determined by browser
Applies to:
All elements
Inherited:
Yes
font-style: <value>
Initial Value:
normal
Applies to:
All elements
Inherited:
Yes
H1 { font-style: oblique }
P { font-style: normal }
Font Variant
font-variant: <value>
Syntax:
normal
Applies to:
All elements
Inherited:
Yes
font-weight: <value>
Possible Values: normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600
| 700 | 800 | 900
Initial Value:
normal
Applies to:
All elements
Inherited:
Yes
H1 { font-weight: 800 }
P { font-weight: normal }
Font Size
Syntax:
Possible Values:
<absolute-size>
xx-small | x-small | small | medium | large | x-large |
xx-large
<relative-size>
larger | smaller
<length>
<percentage> (in relation to parent element)
Initial Value:
medium
Applies to:
All elements
Inherited:
Yes
H1 { font-size: large }
P { font-size: 12pt }
LI { font-size: 90% }
STRONG { font-size: larger }
H1 { font-size: 200% }
Font
Syntax:
Possible
Values:
font: <value>
Initial Value:
Not defined
Applies to:
All elements
Inherited:
Yes
Color
Background Color
Background Image
Background Repeat
Background Attachment
Background Position
Background
Color
color: <color>
Syntax:
All elements
Inherited:
Yes
H1 { color: blue }
H2 { color: #000080 }
H3 { color: #0c0 }
Background Color
background-color: <value>
Syntax:
transparent
Applies to:
All elements
Inherited:
No
Syntax:
none
Applies to:
All elements
Inherited:
No
background-repeat: <value>
repeat
Applies to:
All elements
Inherited:
No
Syntax:
scroll
Applies to:
All elements
Inherited:
No
Syntax:
0% 0%
Applies to:
Inherited:
No
background: <value>
Possible Values:
<background-color> || <background-image> ||
<background-repeat> || <background-attachment> ||
<background-position>
Initial Value:
Not defined
Applies to:
All elements
Inherited:
No
BODY
{ background: white url(http://www.htmlhelp.com/foo.gif) }
BLOCKQUOTE { background: #7fffd4 }
P
{ background: url(../backgrounds/pawn.png) #f0f8ff fixed }
TABLE
{ background: #0c0 url(leaves.jpg) no-repeat bottom right }
Text Properties
Word Spacing
Letter Spacing
Text Decoration
Vertical Alignment
Text Transformation
Text Alignment
Text Indentation
Line Height
Word Spacing
Syntax:
word-spacing: <value>
normal
Applies to:
All elements
Inherited:
Yes
The word-spacing property defines an additional amount of space between words. The value must be in the length
format; negative values are permitted.
Examples:
P EM { word-spacing: 0.4em }
P.note { word-spacing: -0.2em }
Letter Spacing
letter-spacing: <value>
Syntax:
normal
Applies to:
All elements
Inherited:
Yes
The letter-spacing property defines an additional amount of space between characters. The value must be in the
length format; negative values are permitted. A setting of 0 will prevent justification.
Examples:
H1 { letter-spacing: 0.1em }
P.note { letter-spacing: -0.1em }
Text Decoration
Syntax:
text-decoration: <value>
none
Applies to:
All elements
Inherited:
No
The text-decoration property allows text to be decorated through one of five properties: underline, overline, linethrough, blink, or the default, none.
For example, one can suggest that links not be underlined with
A:link, A:visited, A:active { text-decoration: none }
Vertical Alignment
Syntax:
vertical-align: <value>
baseline
Applies to:
Inline elements
Inherited:
No
The vertical-align property is particularly useful for aligning images. Some examples follow:
IMG.middle { vertical-align: middle }
IMG
{ vertical-align: 50% }
.exponent { vertical-align: super }
Text Transformation
Syntax:
text-transform: <value>
none
Applies to:
All elements
Inherited:
Yes
H1 { text-transform: uppercase }
H2 { text-transform: capitalize }
Text Alignment
text-align: <value>
Syntax:
Determined by browser
Applies to:
Block-level elements
Inherited:
Yes
H1
{ text-align: center }
P.newspaper { text-align: justify }
Text Indentation
text-indent: <value>
Syntax:
Applies to:
Block-level elements
Inherited:
Yes
P { text-indent: 5em }
Line Height
Syntax:
line-height: <value>
normal
Applies to:
All elements
Inherited:
Yes
P { line-height: 200% }
Orice tip de continut(text sau imagine) este incadrat intr-o boxa de afisare, marginita de zonele de
padding, border si margin, fiecare avand laturile: top, left, bottom si right.
Borduri in css
1.8 Straturi
Un strat este vzut ca un bloc de text sau elemente HTML, care poate fi dimensionat i poziionat cu exactitate n
pagin. Straturile pot fi transparente sau opace 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 stilurilor i accept i
atribute referitoare la dimensiune i poziionare. Dimensiunile unui strat 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, stratul fiind poziionat n funcie de colul din stnga sus al ferestrei sau a blocului din care face
parte
relativ, stratul fiind poziionat n funcie de ultimul element introdus n pagina
Tipul poziionrii este stabilit prin atributul position cu valorile posibile absolute sau relative. Poziia stratului este
stabilita cu ajutorul atributelor top i left. Chenarul unui strat este stabilit prin atributul border-style cu valori
posibile: none, solid, dotted, dashed, double, inset, outset, groove, ridge. Culoarea chenarului este stabilit prin
atributul border-color. Grosimea chenarului este stabilit prin atributul border-width: numr cu unitate de
msur.
Dac straturile conin i culoare de fundal atunci ele sunt opace.Exemplu de poziionare relativ pentru un text
afiat unduitor .
ntrebri de control
Cuprins:
2. Javascript
2.1. Prezentare general
2.2. Mesajul<script type=text/javascript>
2.3. Elementele limbajului Java Script
2.4. Funcii i evenimente n Java Script
2.5. Obiecte n Java Script
denumirea de applet-uri i sunt i ele independente de platform. Iat cteva deosebiri eseniale
ntre Java i JavaScript:
aplicaiile Java sunt compilate n fiiere binare care sunt apoi interpretate de ctre VJM
(Virtual Java Machine - Main Virtual Java), n timp ce codul JavaScript este transmis
ca un text obinuit i este interpretat.
Java este orientat obiect n timp ce JavaScript este bazat pe obiecte.
codul JavaScript este inclus n cadrul documentului HTML; applet-urile Java sunt referite
din cadrul unui document HTML, dar codul se afl ntr-un fiier separat.
script-urile JavaScript sunt incluse prin intermediul marcajului <script
type=text/javascript>, iar applet-urile Java prin intermediul marcajului <OBJECT>;
exist i marcajul <APPLET> dar folosirea lui nu mai este recomandat.
n cadrul script-urilor JavaScript variabilele nu trebuie declarate, n timp ce n cadrul
aplicaiilor Java variabilele trebuie declarate nainte de a fi folosite. Mai mult, n cadrul
script-urilor JavaScript, o variabil care este considerat ca avnd un anumit tip la un
moment dat poate fi considerat ulterior ca avnd un alt tip; de exemplu, o variabil poate
fi folosit ca fiind un ir de caractere pentru ca apoi s fie considerat ca fiind un numr
real.
JavaScript folosete legarea dinamic, adic referinele sunt verificate n timpul rulrii, n
timp ce Java folosete legarea static, adic referinele trebuie s existe n momentul
compilrii.
n general, limbajul JavaScript este folosit pentru efectuarea de calcule, citirea unor date
dintr-o tabel, proiectarea de ecrane HTML fr a folosi script-uri CGI.
Instructiunile JavaScript se pot introduce i ntr-un alt fisier extern, care va avea extensia .js,
iar pentru editarea acestui fisier se poate utiliza un editor simplu de texte. Avantajul este c se
poate utiliza acelai cod n mai multe pagini HTML.
Dac codul JavaScript se afla ntr-un fisier extern, eticheta
<script type=text/javascript>
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 scriem eticheta <script
type=text/javascript>, se scriu direct instructiunile scriptului. Dac fiierul extern este
info.js, atunci fiierul HML care apeleaz fiierul extern .JS arat:
Fisierele JavaScript externe nu pot conine dect declaraii i funcii JavaScript, iar extensia trebuie
s fie .js.
Comentarii n Javascript
La versiuni mai vechi de browsere, instruciunile JavaScript sunt scrise ntre comentarii. Sintaxa generala
este:
<script type=text/javascript>
<! - - Inceput comentariu
Instructiuni JavaScript
<! - - Sfarsitul comentariului - - >
</SCRIPT>
Proiectanii introduc instruciunile JavaScript ntre comentarii HTML astfel nct browserele care 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
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 comparaie, folosii pentru scrierea unor expresii logice. La evaluarea acestora se poate
obine true sau false: <, >, <=, >=, ==, !=
Exist n JavaScript o serie de funcii predefinite cum ar fi:
document.write(variabil)
Putem intercala cod JavaScript cu cod HTML. n document.write se pot utiliza etichetele HTML
cu condiia de a fi scrise ntre ghilimele. Dac n cadrl ghilimelelor amen nevoie de alte ghilimele
atunci pentru cele din urm se utilizeazo apostrof. De exemplu, putem afia texte scrise cu fonturi
bold, respectiv italic ca n exemplu alturat.
<html> <head>
<title> document.write </title>
</head>
<body>
<script type=text/javascript>
document.write(<b>bold</b> <i>italic</i>);
</script>
</body> </html>
Instruciuni JavaScript
Instruciunile JavaScript pot fi terminate s nu cu caracterul ;. Acest caracter este obligatoriu doar
atunci cnd sunt mai multe instruciuni pe acelai rnd.
Instruciunea de atribuire a fost utilizat i n exemple anterioare i este cea cunoscut din C i Java.
Instruciunea IF este o instruciunea condiional i folosete cuvintele cheie if i else avnd urmtoarea
sintax:
if (condiie)
{
instruciuni pentru condiie adevrat
}
else
{
instruciuni pentru condiie fals
}
S se sciteasca numele i parola unui utilizator iar n funcie de acestea s se afieze un anumit
mesaj (figura 2.1).
<script type=text/javascript>
nume=prompt(Introduceti numele,);
parola=prompt(Introduceti parola,) ;
n_valid=student ;
p_valid=utm ;
if((nume==n_valid)&&(parola==p_valid))
{
alert(Date corecte!) ;
document.write(Bun venit pe pagina studentilor de la facultatea...) ;
}
else
{
alert(Date incorecte!) ;
document.write(Apasati F5 i mai incercati !!!...) ;
}
</script>
Figura 2.1
Instruciuni de ciclare
Adeseori se dorete executarea repetat a mai multor instruciuni. Acest lucru este posibil, cu ajutorul
instruciunilor de ciclare. n JavaScript exist instruciunile de ciclare: for, while i do...while. Sintaxa
instruciunii for este:
for (iniializare; condiie; incrementare)
{
corpul ciclului;
}
Oricare dintre cele patru seciuni (de iniializare, condiia, de incrementare sau corpul) poate lipsi.
n cazul instruciunii while poate lipsi corpul ciclului, prezena condiiei fiind obligatorie.
Exemplu:
<script type=text/javascript>
i=;
while(i!==student)
{
i=prompt(Introduceti parola,);
}
document.write(Password accepted);
</script>
Instruciunea SWITCH
Poate fi folosit pentru alegerea unei opiuni din mai multe opiuni.
Sintaxa instruciunii este:
switch (expresie)
{
case eticheta : instruciune; break;
case eticheta: instruciune; break;
...
default : instruciune;
}
<head>
<title> Formular butoane java casete text </title>
<script>
function afisare(){
// pot s pun varibile formale
a=form1.t1.value;
b=form1.t2.value;
if (a==123 && b==abc) form1.t3.value=Corect!;
else
if(a==123 && b!=abc) form1.t3.value=parola incorecta!;
else
if(a!=123 && b==abc) form1.t3.value=user incorrect!;
else
form1.t3.value=user 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 poate s lipseasca i atunci se reduce la if(conditie) S1;
</script>
</head>
<body><form name=form1>
<h1><center> casete de text</center></h1>
User: <input type=text name=t1 value= onclick=sterge(t1) size=40 >
<br><br><br>
parola: <input type=password name=t2 value= onclick=sterge(t2)>
<br><br>
<br>mesaj: <input type=text name=t3 value= onclick=sterge(t3) size=40>
<input type=button name=b1 value=testare onclick=afisare()>
</form></BODY>
</html>
Evenimente
Limbajul JavaScript este bazat pe evenimente, acestea fiind folosite pentru a controla
interaciunea dintre utilizator i aplicaie. Programele convenionale opereaz ntr-o manier
diferit, codul acestora fiind executat secvenial. Pentru a specifica instruciunile JavaScript care
trebuie executate la apariia unui eveniment, limbajul HTML pune la dispoziie anumite atribute
pentru diferite marcaje, atribute care au ca valori instruciuni JavaScript (de obicei apeluri de
funcii). Cele mai multe evenimente sunt legate de aciuni ale mouse-ului ca de exemplu: un clic
(poate fi tratat cu atributul onclick), mouse deasupra cu atributul (onmouseover), mouse n afar
cu atributul (onmouseout) etc. Pentru fiecare astfel de eveniment se pot defini handlere de
evenimente care sunt functii javascript sau secvente de instructiuni care se vor executa atunci
cand evenimentul respectiv are loc.
Handler de ev.
OnAbort
Blur
OnBlur
Change
OnChange
Click
OnClick
DragDrop
OnDragDrop
Error
OnErrorFocus
Focus
OnFocus
KeyDown
OnKeyDown
KeyPress
OnKeyPress
KeyUp
OnKeyUp
Load
OnLoad
MouseDown
OnMouseDown
MouseMove
MouseOut
OnMouseMove
OnMouseOut
MouseOver
OnMouseOver
MouseUp
OnMouseUp
Move
Reset
OnMove
OnReset
Resize
OnResize
Select
onSelect
Submit
Unload
onSubmit
onUnload
se aplic
Image
Window i elem. ale
obiectului Form
Text, TextArea, Select
Button, Checkbox, Link,
Radio, Submit, Reset
Window
Image, Window
n afara evenimentelor generate de utilizator pot fi tratate i evenimente ce se produc automat. Apar
evenimente ca:
load ncrcarea paginii poate fi gestionat cu atributul onload
unload nchiderea documentului - poate fi gestionat cu atributul onunload
Efect
returneaza un sir ca i "anchor"
returneaza un sir cu text mare
returneaza un sir care clipeste
returneaza un sir cu litere ingrosate
returneaza un caracter de la pozitia care
este specificata
returneaza codul ascii al unui caracter de
la o pozitie specificata
returneaza doua siruri concatenate
returneaza un sir cu caractere tip
returneaza un sir cu o culoare specificata
returneaza un sir cu litere de o anume
marime
returneaza valoare unicode a unui
caracater
returneaza pozitia primei aparitii a unui
subsir intr-un sir
returneaza un sir in italic (scris aplecat)
returneaza pozitia primei aparitii a unui
subsir in un sir
returneaza un sir ca hyperlink
similar cu indexof i lastindexof, dar
Metoda
replace()
search()
slice()
small()
split()
strike()
sub()
substr()
toLowerCase()
toUpperCase()
Efect
aceasta metod returneaza sirul specificat
sir, sau "null", in locul unor valori
numerice
inlocuieste unele caractere specificate cu
altele noi specificate.
returneaza un numar intreg daca sirul
contine caracterele specificate
returneaza un sir incepand de la pozitia
index specificata
returneaza un sir cu caractere mai mici
imparte un sir in mai multe siruri, in
functie de caracterele specificate
returneaza un sir taiat cu o linie la mijloc
returneaza un sir ca indice
returneaza un subsir specificat
converteste un sir in litere mici
converteste un sir in litere mari
Proprietatea acestui obiect string este length care returneaza numarul de caractere dintr-un sir.
Obiectul Date
Obiectul Date este folosit pentru a obine informaii referitoare la ceasul sistem de pe calculatorul
vizitatorului paginii Web. Prin intermediul acestui obiect pot fi determinate data i ora curent, pot fi
efectuate diferite operaii cu date calendaristice sau momente ale zilei sau poate fi controlat modul n care
este afiat pagina Web n funcie de informaiile furnizate de metodele acestui obiect.
Pentru a crea un obiect care s conin data i ora curent secvena JavaScript corespunztoare este
data=new Date().
Metodele obiectelor de tip sunt grupate n trei categorii: metode pentru preluare de informaii, metode
pentru setarea anumitor caracteristici i metode pentru conversie.
Principalele metode ale obiectului Date() sunt:
Date()
getDate()
getDay()
Obiectul Window
Este plasat la cel mai nalt nivel, fiind printele tuturor obiectelor dintr-o pagin.
Metode fundamentale:
open(), close()
Metodele obiectului document permit generarea paginilor html n mod dinamic. Principalele
metode sunt:
Gestionarea cadrelor
Atunci cnd introducem cadre este creat automat un obiect parent, care include un ir 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, parent.frames[0].document.write() - scrie n primul cadru.
Dac atunci cnd au fost introduse cadrele acestea au primit i un nume putem referi un cadru prin
construcia: parent.numecadru
De exemplu, parent.cadru.document.write() - scrie n cadrul cu numele cadru.
Obiectul location
ncapsuleaz adresa URL a paginii curente. Permite deplasarea la o alt adres URL sau permite
extragerea unor elemente din cadrul URL curent. Cea mai folosit proprietate este href - specific
ntreaga adres URL De exemplu, ncrcarea unei alte pagini web se poate face prin construcia:
window.location.href = URL
Exemplu de buton cu funcie de legtur:
<input type=button value=Student
onclick=window.location.href=http://www.microsoft.com>
ncrcarea unui fiier ntr-un cadru se poate face prin parent.cadru.location.href=URL
Obiectul Image
Cuprinde proprietile i metodele necesare pentru lucrul cu imagini. Se creeaz cu new Image()
poza=new Image()
Proprieti: poza.src=sursa imaginii; poza.width=limea imaginii n pixeli;
poza.height=nlimea imaginii n pixeli; poza.border=grosimea chenarului n pixeli;
poza.name=numele imaginii;
La introducerea imaginilor ntr-o pagin web se creeaz n mod automat un ir de obiecte
imagine. Fiecrui obiect de tip imagine i se pot aplica toate proprietile imaginilor. Este
identificat prin document.images[i], unde i este numrul de ordine al imaginii din cadrul
documentului.
Realizarea unui efect RollOver
Un efect RollOver nseamn schimbarea fiierului surs al imaginii de fiecare dat cnd se plaseaz
mouse-ul deasupra imaginii. Se revine la imaginea iniial atunci cnd mouse-ul este scos de pe imagine.
Exemplu: Pagin care afieaz 2 imagini. Cnd se plaseaz mouse-ul pe o imagine aceasta s
apar cu chenar iar cnd se executa clic s apar mai jos redimensioant:
<table>
<tr><td>
<img src=x.gif width=50 height=40
onmouseover=document.images[0].border=2
onmouseout=document.images[0].border=0
onclick=document.images[2].src='x.gif'>
<td><img src=y.gif width=50 height=40
onmouseover=document.images[1].border=2
onmouseout=document.images[1].border=0
onclick=document.images[2].src='y.GIF'>
</table>
<br><br><br><br>
<img src= width=200 height=100 alt=Afiseaza poza>
Intrebari de control
Explicati motodele obiectului document;
Explicati instructiunile de ciclare;
Funcii i evenimente n Java Script
Explicati evenimentele care se folosesc in JavaScript
Enumerati principalele metode ale obiectului string, window si date.
Teme propuse
S se introduc 3 numere de la tastatur i s se afieze n pagin unul dup cellalt;
S se realizeze un buton care schimb culorile fundalului unei pagini.
Script care s deschid o fereastr ce se deplaseaz n partea de sus pna la mijlocul
ecranului. Un buton va nchide fereastra.
Script ce deruleaz n pagin trei imagini, din 3 n 3 secunde
Mater
ialul
trebui
e
parcur
s n
ordine
a sa
fireas
c prezentat n continuare, inclusiv n zona referitoare la aplicatii. Se recomand testarea
functiilor PHP si instructiunilor MySql cat si consultarea Internetului pentru detalii si
informatii suplimentare
(http://www.wampserver.com/en/,
http://www.mysql.com/,
http://www.apache.org/,
http://www.php.net/).
Timpul minim pe care trebuie s-l acordati acestui modul este de 8 ore.
Cuprins:
3. PHP i MySQL
3.1. Modelul client-server.Pagini Web interactive (dinamice)
3.2. Tipuri de variabile utilizate n limbajul PHP
3.3. Crearea scripturilor PHP
3.4. Folosirea PHP-ului cu formulare HTML
3.5. Funcii n PHP
3.6. Programarea orientat pe obiecte (POO) n PHP
3.7 Utilizarea MySQL
Cuvinte cheie: PHP, MySQL, apache, server web.
3.1 Modelul client-server. Pagini web interactive (dinamice)
PHP suport ncrcarea fiierelor de pe calculatorul client, operaie cunoscut sub numele de
upload (standard propus de E. Nebel i L. Masinter de la Xerox) i ofer suport pentru cookies
Limbajul PHP are deasemenea suport pentru diverse servicii server, utiliznd protocoale
precum IMAP, SNMP, NNTP, POP3 i HTTP.
Paginile HTML sunt de tip static, adic informaiile prezentate n aceste pagini sunt identice
pentru toi vizitatorii, fiind simple pagini de prezentare. Web-ul este ns dinamic, adic pentru
unel pagini este nevoie s fie actualizate n timp real. Dac doi vizitatori, aflai n locuri
diferite, acceseaz acelai site de joburi n acelai timpasrefel nct unul dorete afiarea joburilor
din domeniul economic, iar al doilea dorete afiarea joburilor din domeniul securitii i sntii
n munc, atunci serverul web va afia pentru fiecare vizitator al site-ului pagina corespunztoare
cerinelor specificate. Acest lucru este posibil datorit tehnologiilor de tip client-server. Acest
tip de tehnologii presupun stocarea datelor pe un server web i apoi afiarea acestora la cererea
fiecrui vizitator, n forma dorit de acesta.
Un server web reprezint un calculator conectat permanent la Internet, care trimite ctre client
(care este un calculator pe care ruleaz un browser) pagini n format HTML. La un server se pot
conecta simultan mai muli clieni, care pot avea acces la aceleai informaii. Diferena este
esenial comparativ cu paginile simple HTML, care sunt afiate n browserul vizitatorului aa
cum au fost construite. Web-ul este dinamic, iar programele care fac posibil acest lucru sunt
numite scripturi CGI sau scripturi server-side, ntruct acestea folosesc o interfa standard
numit Common Gateway. Scripturile sunt scrise n limbajul C sau cu ajutorul unui limbaj
specializat, numit i limbaj de scripting (cele mai utilizate fiind PHP, ASP i Perl) i sunt stocate
pe serverul web pe care i ruleaz.
Diferena dintre limbaj de scripting pe partea de client (ex. JavaScript) i unul server-side este
esenial doarece JavaScript ruleaz n browserul clientului, pe cnd un script server-side ruleaz
pe server, avnd acces la unele informaii stocate pe server la care un script client-side nu are
acces. Un exemplu sugestiv este un contor de pagina web. De cte ori cineva acceseaz pagina,
scriptul server-side va contoriza vizitarea paginii ntr-o baz de date stocat pe server.
ntr-o sesiune client-server care conine i interogarea unei baze de date au loc urmtoarele etape:
Dac se lucreaz local, atunci vizualizarea (testarea aplicaiilor php) se realizeaza in cadrul unui
browser, cu condiia ca, n bara de adrese, s se editeze http://localhost/eventual numele
folderului ce contine sursele php .
Tipuri compuse
Array
Object
Tipuri speciale
(a) Tipul
BOO
LEA
N
Nr ntreg 0
Nr real 0.0
irul vid
irul 0
Un vector fr nici un element
Un obiect fr nici o variabil membru
O variabil de tipul NULL
O variabil nedefinit
Tipul ARRAY (vectori) pot fi considerate mulimi formate din chei. Fiecrei chei i se ataeaz o
valoare. Acest tip este optimizat, astfel nct s poat fi folosit n locul urmtoarelor structuri de
date: liste, tabele de dispersie, colecii, stive, cozi etc. Vectori pot fi :
o vectori numerici
o vectori asociativi
o vectori multidimensionali
VARIABILE GLOBALE sunt disponibile n orice zona a codului surs. Exemple:
$GLOBALS
$_SERVER
$_GET i
$_POST
$_COOKIE
$_FILES
$_ENV
$_REQUEST
$_SESSION
Article IV.
sau, echivalent:
<?
// continutul scriptului
?>
Article V.
Article VI.
Article VII. Structuri de control ntlnite n PHP sunt:
Alternative
o IF
o Else
o Elseif
o Switch
Repetitive
o While
o For
o Do while
Break
Continue
Declare
Instruciunea continue este utilizat ntr-o bucl iar execuia iteraiei curente este ntrerup i se
trece la execuia iteraiei urmtoare. Instruciunea continue accept un argument numeric opional
care va indic cte bucle imbricate vor fi ignorate.
Instruciunea foreach versiunea PHP4 (nu i PHP3) dispune de comanda foreach, ca Perl sau
alte limbaje. Instruciunea ofer un mod simplu de a parcurge un tablou.
textbox (text), password textbox (password), butoane radio (radio), casete de validare
(checkbox), butoane (button, submit, reset), lista derulant (select), editbox (textarea), caseta
de fiier (file).
List evenimente
onclick, ondblclick, onmousedown, onmouseup, onmouseover onmousemove, onmouseout,
onkeypress, onkeydown, onkeyup
Section 7.01 Prin intermediul formularului se trimite la server un fiier astfel:
<input type=file accept=tip_mime name=nume value=text>
unde:
accept este un atribut care specific tipul fiierului,
name este numele casetei,
value se folosete pentru un nume prestabilit de fiier,
MIME (Multipurpose Internet Mail Extensions).
n eticheta form trebuie adugat i atributul enctype=multipart/form-data .
Formatele cele mai frecvent folosite pt MIME sunt:
TIP MIME
TIP DATE
application/msexcel
Microsoft Excel
EXTENSII DE
FIIER
xls
application/msword
Microsoft Word
doc, dot
application/octet-stream Binara
exe
application/pdf
Adobe Acrobat
application/ppt
Microsoft PowerPoint
ppt
application/zip
zip
audio/midi
audio/x-wav
image/gif
image/jpeg
image/TIFF
text/HTML
HTML
text/plain
mid,midi
wav
gif
jpeg, jpg, jpe
tif, tiff
htm, html
Text simplu
txt
text/richtext
rtf
video/mpeg
Secventa video
video/quicktime
Secventa video
qt, mov
video/x-msvideo
Secventa video
avi
n general prelucrarea datelor transmise la server se face ntr-un fiier distinct dect cel care
conine formularul, caz n care action=nume_fiier.php.
O variabil se preia dintr-un formular prin una din modalitile :
$_POST[nume_variabil] sau cu $_GET[nume_variabil] (n funcie de atributul method al
formului, acesta poate fi post sau get),
The format string is composed of zero or more directives: ordinary characters (excluding %) that
are copied directly to the result, and conversion specifications, each of which results in fetching its
own parameter. This applies to both sprintf() and printf().
Each conversion specification consists of a percent sign (%), followed by one or more of these
elements, in order:
1. An optional sign specifier that forces a sign (- or +) to be used on a number. By default,
only the - sign is used on a number if it's negative. This specifier forces positive numbers
to have the + sign attached as well, and was added in PHP 4.3.0.
2. An optional padding specifier that says what character will be used for padding the results
to the right string size. This may be a space character or a 0 (zero character). The default is
to pad with spaces. An alternate padding character can be specified by prefixing it with a
single quote ('). See the examples below.
3. An optional alignment specifier that says if the result should be left-justified or rightjustified. The default is right-justified; a - character here will make it left-justified.
4. An optional number, a width specifier that says how many characters (minimum) this
conversion should result in.
5. An optional precision specifier in the form of a period (`.') followed by an optional
decimal digit string that says how many decimal digits should be displayed for floatingpoint numbers. When using this specifier on a string, it acts as a cutoff point, setting a
maximum character limit to the string.
6. A type specifier that says what type the argument data should be treated as. Possible types:
o % - a literal percent character. No argument is required.
o b - the argument is treated as an integer, and presented as a binary number.
o c - the argument is treated as an integer, and presented as the character with that
ASCII value.
o d - the argument is treated as an integer, and presented as a (signed) decimal
number.
o e - the argument is treated as scientific notation (e.g. 1.2e+2). The precision
specifier stands for the number of digits after the decimal point since PHP 5.2.1. In
earlier versions, it was taken as number of significant digits (one less).
o E - like %e but uses uppercase letter (e.g. 1.2E+2).
o u - the argument is treated as an integer, and presented as an unsigned decimal
number.
o f - the argument is treated as a float, and presented as a floating-point number
(locale aware).
o F - the argument is treated as a float, and presented as a floating-point number
(non-locale aware). Available since PHP 4.3.10 and PHP 5.0.3.
o g - shorter of %e and %f.
o G - shorter of %E and %f.
o o - the argument is treated as an integer, and presented as an octal number.
o s - the argument is treated as and presented as a string.
o x - the argument is treated as an integer and presented as a hexadecimal number
(with lowercase letters).
o X - the argument is treated as an integer and presented as a hexadecimal number
(with uppercase letters).
Exemple:
<?php
$num = 5.7;
echo $num;
<?php
$n = 8;
printf("Valoarea lui n este: %d", $n);
?> Va afisa "Valoarea lui n este: 8".
Unele funcii PHP au argumente opionale, care pot fi specificate sau omise, n conformitate cu
inteniile programatorului.
Cnd se produce o eroare n timpul execuiei unei funcii, PHP genereaz mesaje de eroare.
Uneori, asemenea mesaje de eroare sunt nedorite. n acest caz, puteti suprima generarea
mesajelor de eroare prin prefixarea numelui funcie invocate cu ajutorul caracterului @. De
exemplu, pentru a suprima mesajele de eroare care pot aparea n timpul execuiei funcie f( ),
invocati aceasta funcie dupa cum urmeaz: Y = @f(x);
Funcii utilizator
Pentru a defini o funcie rebuie s se respecte suntaxa:
function nume_funcie(list argumente)
{
// corpul funcie;
}
functia isset() preia ca argument de obicei o variabila si arata daca aceasta a fost sau nu gasita. De
exemplu: isset($nr) returneaza TRUE daca variabila "$nr" are setata o valoare (diferita de NULL), in caz
contrar returneaza FALSE.
Aceasta functie este foarte utila in determinarea caror comenzi sa fie executate in functie daca o anumita
variabila a fost setata sau nu. Previne aparitia unor erori care apar in cazuri de variabile nule si ajuta si la
securitate.
Funcia calcul preia doua argumente: un argument obligatoriu, denumit $cant, i un argument
prestabilit, numit $rata. Dac apelati funcia i furnizati un singur argument, valoarea
argumentului respectiv se considera ca fiind valoarea argumentului $cant, iar valoarea 0.011 se
foloseste ca valoare a argumentului $rata. Astfel, la prima invocare a funcie, $rata are valoarea
0.16, specificat drept al doilea argument al funcie. Cu toate acestea, la a doua invocare a
funcie, $rata are valoarea 0.011 deoarece este specificata valoarea unui singur argument.
Funcii pentru lucru cu fiiere
rol
primete ca parametru un ir reprezentnd
un nume de cale i returneaz numele
fiierului din calea respectiv
schimb grupul fiierului filename n group
i nu este diponibil pe Windows
sintax
string basename( string
path)
chown
copy
funcie
basename
chgrp
dirname
fclose
feof
ffush
fgetc
fgets
file_exists
funcie
rol
sintax
filesize
fopen
fread
fwrite
is_writeable
boolean is_writeable (
string filename)
pclose
fputs
is_file
readfile
rmdir
unlink
rol
sintax
array
array_count_val
ues
array array_count_values(
array input)
array_sum
array_unique
arsort
array_intersect
array_keys
array_merge
array_push
array_revers
asort
count
each
sort
sizeof
rsort
de
yes_global;
Sesiuni n PHP
O sesiune reprezint o metod de a stoca informaii (sub form de variabile) pentru a fi folosite
pe mai multe pagini. Spre deosebire de cookie-uri, informaia nu este stocat n calculatorul
utilizatorului. Este, de asemenea, diferit de celelalte variabile, n sensul c nu este transmis
individual ctre fiecare pagin n parte ci este obinut din sesiunea deschis la accesarea fiecrei
pagini.
Crearea i accesarea sesiunilor. Exemple.
Fiierul sesiune.php
<?php
// aici este pornita sesiunea
session_start();
//aici sunt stabilite variabilele sesiunii
$_SESSION['cursuri'] = 'cursuri';
$_SESSION['facultate'] = 'facultate';
print 'sfarsit';
?>
Iniializarea sesiunii se face folosind funcia session_start(), dup care se creaz perechi de chei valori pe care le stocm n sesiune. Majoritatea sesiunilor seteaz un cookie n calculatorul
utilizatorului, iar cnd o sesiune este deschis n alt pagin, se scaneaz calculatorul dup acea
cheie. Dac cele dou chei se potrivesc, atunci sesiunea este accesat, dac nu, o nou sesiune
este iniializat.
Modificarea i distrugerea sesiunilor
Implicit, o sesiune este activ att timp ct este browserul deschis. Acest lucru poate fi modificat
editnd fiierul php.ini i setnd opiunea session.cookie_lifetime = 0 (timpul este in secunde) sau
utilizand functia session_set_cookie_params().
Exemplu
<?php
// pornire sesiunea
session_start();
$_SESSION['cursuri']='cursuri';
// eliminarea unei variabile din tablou
unset($_SESSION['facultate']);
// eliminarea tuturor valorilor din tablou fara a distruge sesiunea in
sine
session_unset();
// aici distrugem toata sesiunea
session_destroy();
?>
n PHP 4.x nu sunt implementate toate facilitile POO. Pentru programarea pe obiecte n PHP,
este recomandata utilizarea PHP5.
O clasa este o colectie de variabile i funcii care opereaz asupra variabilelor respective.
Implementarea unei clase conine att variabile, ct i funcii, ea reprezentnd un ablon
(template) cu ajutorul cruia pot fi create instane specifice. Sintaxa folosit pentru declararea
unei clase n PHP este:
class nume_clasa {
// date membre
var nume_variabil_1
...
var nume_variabil_m
// metode
function nume_funcie_1 (parametri) {
... // definitia funcie
}...
function nume_funcie_n (parametri) {
... // definirea funcie
}
}
Pentru numele unei clase poate fi utilizat orice identificator permis n PHP cu o singura exceptie:
sdtclass; acest identificator este folosit de PHP n scopuri interne. Pentru a initializa variabilele cu
valori care nu sunt constante trebuie folosit un constructor.
Obiecte
Un obiect reprezinta o variabil de tipul clasei. Fiecare obiect are o serie de caracteristici, sau
proprieti ct i anumite funcii predefinite numite metode. Aceste proprieti i metode ale unui
obiect corespund variabilelor i funciilor din definiia clasei.
Operaia de initializare a unui obiect se numete instaniere. Clasele pot fi folosite pentru
a genera instane multiple. Instanierea (trecerea de la clasa la obiect) reprezint, atribuirea unor
proprieti specifice clasei, astfel nct aceasta s indice un obiect anume, care se difereniaz de
toate celelalte obiecte din clasa printr-o serie de atribute.
Proprieti
n corpul unei clase, se pot declara variabile speciale, numite proprieti. n PHP 4.x
acestea se declar cu cuvantul cheie var n fata.
/**
* PHP versiunea 4
*/
class Dictionar {
var $traduceri = array();
var $tip = Ro;
}
Aceasta sintaxa este n continuare acceptata (n PHP 5), dar doar pentru a asigura
compatibilitate cu versiuni anterioare de PHP.
In PHP 5, codul arata astfel:
/**
* PHP versiunea 5
*/
class Dictionar {
public $traduceri = array();
public $tip = Ro;}
Pentru a crea un obiect de tipul operatori vom utiliza o instructiune $oper = new
operatori; Metodele clasei se pot apela
echo "suma este ".$operatori -> Suma ( )."<br>";
echo "produsul este ".$operatori -> Produs ( );
Un constructor este o metoda (funcie) a unei clase care este apelata automat n momentul n care
este creata o noua instanta a clasei (cu ajutorul operatorului new). n PHP este considerata ca
fiind un constructor orice funcie care are acelasi nume cu clasa n interiorul careia este definita.
Constructorii pot fi folosii pentru initializarea datelor membre cu valori care nu sunt constante.
Ei pot avea argumente, iar acestea pot fi optionale. Pentru a putea utiliza clasa fara a specific
nici un parametru n momentul crearii unui obiect, se recomanda stabilirea unor valori implicite
pentru toate argumentele constructorului. n cazul n care nu este definit un constructor pentru o
anumita clasa, se utilizeaz constructorul clasei de baz, dac aceasta exist.
Section 7.06 Destructori
n cadrul claselor definite n limbajul PHP 5 pot fi declarati destructori de clase. Destructorii sunt
utilizati n momentul distrugerii (eliberrii memoriei alocate) unui obiect. Un obiect este distrus
(eliminat din memorie) n momentul n care nu mai exist referinte ctre el. Necesitatea
destructorilor a aprut n momentul n care s-a pus problema transmiterii obiectelor prin referint
i nu prin valoare cum se efectua transmiterea obiectelor n versiunile anterioare ale
interpretorului.
Un destructor este dat de o metod al crui nume este __destruct() i care nu are parametri.
La fel ca i n cazul constructorilor, n momentul apelului unui destructor pentru o clas, nu este
apelat automat destructorul printelui, acesta trebuie apelat cu instructiunea:
parent::__destruct().
O baza de date (n cazul nostru MySQL) este un program ce poate stoca o cantitate foarte mare de
informaii i o poate organiza ntr-un format accesibil n mod direct sau de ctre un alt program
(in cazul nostru PHP).
ntr-o baz de date, informaia este organizat sub form tabelar, n care coloanele se numesc
cmpuri iar liniile se numesc nregistrri. Capul de tabel determin structura bazei de date. Un
sistem de gestionare a bazelor de date (SGBD) este un program care permite utilizatorilor
interaciunea cu baza de date. Un SGBD asigur:
crearea bazei de date
introducerea informaiilor n baza de date
actualizarea informaiilor
extragerea datelor
controlul accesului la date
Obiectivul esenial, al unui SGBD este furnizarea unui mediu eficient, adaptat utilizatorilor care
doresc s consulte sau s actualizeze informaiile coninute n baza de date.O baza de date poate
conine mai multe tabele, ce pot fi legate intre ele.
Un cmp se caracterizeaz prin:
numele cmpului (reprezint un nume simbolic prin care cmpul se poate identifica),
tipul cmpului (pentru identificarea tipului de date care pot fi stocate n cmpul respectiv),
lungimea cmpului (numrul maxim de caractere care pot fi stocate n cmpul respectiv).
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 cmpuri numerice,
dat i ir.
Caracteristicile MySQL-ului sunt:
este o platform deosebit de 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 aplicaii
separate. Cele mai bune dou instrumente sunt:
Monitorul MySQL un instrument cu linie de comand pentru interactionarea cu
serverul MySQL;
phpMyAdmin, o interfa MySQL bazat pe PHP.
Cmpuri numerice
Unul dintre cele mai utilizate tipuri de cmpuri n MySQL este Int (integer), care poate stoca
valori cuprinse ntre 2.143.483.648 i 2.143.483.643. Acest tip de cmp poate fi folosit cu
opiunea auto_increment, pentru a defini cheia primar 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 cmpuri folosite pentru stocarea datei calendaristice i a orei care
sunt:
Date
Datetime
Timestamp
Time
Year
Cmpul de tip date stocheaz valori n format AAAA-LL-ZZ i permite introducerea valorilor
cuprinse ntre 1000-01-01 i 9999-12-31.
Cmpul de tip datetime 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
Mediumtext
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 maxim a cmpului, cmpul va fi
completat n partea dreapt cu spaii).
Cmpul de tip varchar are lungimea maxim de 255 caractere, dar este de lungime variabil
(cmpurile nu vor mai 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 dintr-o mulime de valori specificat.
Principalele comenzi MySQL
Cele mai uzuale operaii cu bazele de date sunt:
Co
Semnificatie
manda
CR
EATE
tabel
DR
OP
INS
ERT
DE
LETE
UP
DATE
SE
selecteaz un tabel
AL
SH
US
LECT
TER
OW
E
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 coninute de o baz de date presupune deschiderea bazei de date i apoi
folosirea comenzii
SHOW 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.
7. Pentru a modifica structura unei tabele se folosete comanda ALTER TABLE.
De exemplu, pentru a modifica lungimea cmpului pret de la int(3) la int(4) se folosete comanda
ALTER TABLE 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;
Pentru 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, vom 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 terse.
9. Comanda INSERT introduce nregistrri ntr-o tabel existent.
Forma general a comenzii este:
INSERT INTO nume_tabel [(cmp1,camp2,,cmp n)] VALUES (valoare1,valoare2,,
valoare n);
10. Comanda SELECT este utilizat pentru a extrage nregistrrile din una sau mai multe tabele.
Sintaxa general este:
SELECT [DISTINCT] cmp1, cmp2,, cmp n
FROM nume_tabel
WHERE condiie
GROUP BY nume_cmp
ORDER BY nume_cmp [ASC | DESC]
LIMIT [numrul_primei_nregistrri_dorite, numrul_de_nregistrri_returnat]
PHP permite lucrul cu un numr mare de funcii MySQL. n PHP exista funcii pentru toate
operatiile executate asupra bazelor de date MySQL. Cele mai importante funcii sunt:
mysql_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
Dac MySQL este instalat pe staia de lucru atunci conexiunea la baza de date se
realizeaz:
<?php
$link = mysql_connect("localhost", "root", "")
or die("Nu se poate conecta");
?>
Funcia die nu face altceva decat s afiseze mesajul i s nu mai execute nici un cod dup.
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 ce 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 alege baza
de date");
?>
Funcia mysql_select_db este cea care i transmite serverului MySQL ce baz de date vrem sa
folosim.
mysql_query() interogheaz o baz de date aflat pe server.
Sintaxa este: $resultat=mysql_query(Interogare SQL)
Exemplu: $resultat=mysql_query("select * from utizatori")
mysql_fetch_array() returneaz un array (matrice) corespunztor interogrii efectuate.
mysql_num_rows() returneaz numrul nregistrrilor (rndurilor) rezultate dintr-o interogare.
mysql_affected_rows() returneaz numrul de nregistrri(rnduri) afectate de o interogare
INSERT, DELETE SAU UPDATE. Aceast funcie nu opereaz i cu comanda SELECT.
mysql_free_result() elibereaz zona de memorie folosit de o interogare. Aceast funcie este
util n cazul n care interogarea returneaz un numr mare de rezultate, dup care scriptul
continu s execute operaii.
mysql_close() nchide o conexiune MySQL.
Cnd o conexiune este nchis (fie folosind aceast funcie, fie la terminarea scriptului), PHP
elibereaz memoria folosit de interogare.
mysql_create_db() creaz o baz de date MySQL.
Section 7.07 Lista functii php pentru lucru cu baze de date MySql
Tema propusa
S se creeze n baza de date agenda, tabela prieteni, care va avea structuta:
CREATE TABLE prieteni (
id int(3) NOT NULL auto_increment,
nume varchar(15) default NULL,
prenume varchar(15) default NULL,
virsta tinyint(3) default NULL,
telefon varchar(10) default NULL,
adresa text,
poze varchar(20) default NULL,
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 id i eventual s se afieze coninutul tabelei. Interfaa
va arta ca n figura de mai jos.
echo "<br>";
echo "<br>";
$tab=array
("primul"=>"luni",
"al doilea"=>"marti",
"al treilea"=>"miercuri");
echo $tab["primul"];
echo "<br>";
echo "<br>";
echo "<br>";
print_r($tab);
echo "<br>";
echo "<br>";
echo "<br>";
$sir=implode($tab,", ");
echo $sir;
?>
Aplicatie: introducem date intr-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: <input type="text" name="nume"><br>
Prenume: <input type="text" name="prenume"><br>
<input type="submit" value="Trimite">
</form>
</body>
</html>
/* fisierul insert.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);
?>
Pentru a afia fiecare rnd din tabel se folosete o bucla while i comanda mysql_fetch_row, ca n
exemplu:
<?php
include "conexiune.php";
$sql=mysql_query("SELECT * FROM carti");
echo "<table border=1>";
echo "<tr><td>ID</td><td>titlu</td><td>Autor</td></tr>";
while ($row=mysql_fetch_row($sql)) {
echo "<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>";
}
echo "</table>";
mysql_close($conexiune);
?>
Exemplu: cautarea n baza de date dupa o anumita inregistrare folosind conditia WHERE.
/* urmeaz fisierul cautare.html */
<html>
<head><title>Cautare</title>
</head>
<body>
<b>Cautare inregistrari</b>
<form method="POST" action="where.php">
Numele cautat: <input type="text" name="nume1"><br>
<input type="submit" value="Trimite">
</form>
</body>
</html>
/* urmeaz fisierul where.php */
<?php
include "conexiune.php";
$nume1=$_POST['nume1'];
$sql=mysql_query("SELECT * FROM proba WHERE nume='$nume1'");
echo "<table border=1>";
echo "<tr><td>ID</td><td>Nume</td><td>Prenume</td></tr>";
while ($row=mysql_fetch_row($sql)) {
echo "<tr><td>$row[0]</td><td>$row[1]</td><td>$row[2]</td></tr>";
}
echo "</table>";
mysql_close($conexiune);
?>
Cuvinte cheie: XML, DTD-ul, DOCTYPE, Date, documente, baze de date, RSS, Blob-uri
Article VIII.
care are peste un milion de caractere, deci suportul pentru chinez, arab i multe
alte limbi mai exotice ale lumii este un lucru uor. n afar de diferenele menionate
n aceast list, XML este foarte asemntor cu HTML din punctul de vedere al
marcrii etichetelor, 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 majoritatea
documentelor sunt greu de neles n efortul de a fi explicit ntr-un mod n care
programatorii s l poat translata cu uurin n aplicaii care s funcioneze.
Un document XML este o colecie de entiti care pot fi sau nu analizate. Datele
care nu sunt nelese de un procesor XML, date binare sau date care au sens numai
pentru alte aplicaii, reprezint date neanalizate. Datele nelese de XML, fie ca i
caractere fie ca marcaje, sunt date analizate. Un document XML trebuie s fie construit
corect.
(a)
(b)
(c) Definirea corpului documentului
Un document XML este alctuit din text, care de obicei este format din mai multe marcaje
i date caracter. Prologul conine numai marcaje, dar nu aceasta este partea interesant,
deoarece este nevoie de date care s nsoeasc marcajele care, altfel, nu ar fi dect nite
cutii goale. Corpul documentului conine aproape tot ceea ce conteaz din perspectiva unei
aplicaii mprtiate generos n cadrul marcajelor.
Un DTD poate declara multe tipuri de date care s poat fi utilizate ntr-un document, dar
tipul de date prestabilit este ntotdeauna CDATA, pentru date obinuite de tip caracter.
Foaia sau manualul de codare indic ce tip de dat poate fi introdus n fiecare atribut sau
cmp cu coninut element. Presupunnd c tipul de date este CDATA, n cmp se poate
pune aproape orice se dorete att timp ct nu conine un marcaj n afara unei secvene
escape. Marcajul este format din ansamblu de date non-caracter dintr-un fiier XML.
Diversele forme pe care le poate lua un marcaj sunt prezenate n tabelul urmtor:
<numeElement [atribute]>....
...</numeElement>
<numeElement [atribute]/>
&numeEntitate; sau%parametru_nume_entitate
&#numarzecimal;
<!comentariu - ->
<![CDATA[ informatii cdata]]>
<!DICTYPE nume idextermen? [informatii
DTP]>
<?Idprocesor date?>
<?xml version encoding standalone?>
Marcajul ncepe ntotdeauna fie cu caracterul <, caz n care se ncheie ntotdeauna cu
caracterul >, fie cu caracterul &, caz n care se ncheie ntotdeauna cu caracterul ;.
(d) Formarea structurilor logice n XML
Imbricarea elementelor este singurul mecanism utilizat pentru a arta structura logic
dintr-un document XML. Etichetele de pornire i ncheiere din fluxul de text spun
procesorului XML c a fost ntlnit un nod. Dac procesorul XML ntlnete o alt
etichet de pornire nainte de eticheta de ncheiere corespunztoare, atunci 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 aceasta este o frunz
i c poate aciona iterativ la acel nivel al arborelui pn cnd ntlnete o alt etichet de
pornire sau de ncheiere. Prelucrarea acioneaz treptat, bazndu-se pe aceast regul
simpl. Dac procesorul valideaz documentul, atunci fiecrui nod i se poate asocia o
regul care s determine ce tip de coninut poate aprea n el. O etichet vid este, prin
definiie, o frunz, deoarece nu poate avea nici un coninut.
n XML sunt utilizate dou tipuri de etichete, etichete cu coninut i etichete vide.
Seamn mult cu etichetele HTML standard i nu ar trebui s ridice alte probleme n afara
celei de construire corect, care cere ca ele s se imbrice ntr-adevr una n cealalt. Nu
pot exista etichete care s alterneze ntre ele ca n acest exemplu greit construit:
nume-
Prima opiune funcioneaz numai dac exist un catalog. Nu se poate pune baza pe un
catalog 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
XML actuale l-au motenit implicit de la predecesoarele lor SGML. Studierea catalogului
nu este specificat n recomandarea W3C i nu se poate conta niciodat pe ea. Dac este
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.
Section 8.03 4.4 XML-ul ca baz de date
Un document XML este o baz de date n sensul cel mai strict al cuvntului i anume
este o colecie de date. Se poate considera c aceste documente nu sunt diferite de orice
alt tip de fiiere n fond, toate fiierele conin anumite tipuri de date.
Avnd formatul unei baze de date documentele XML prezint anumite avantaje. De
exemplu, este auto-descris (tag-urile descriu structura i numele tipurilor de date, dar nu i
semantica), este portabil (Unicode), i poate descrie date n structuri de arbori sau grafuri.
De asemenea are i dezavantaje. De exemplu, este prolixs(neclar) i accesul la date este
greoi datorit analizrii i conversiei textului.
Astfel, se pot folosi documente XML ca o baz de date ntr-un mediu cu cerine
modeste i date puine, dar aceast soluie nu este viabil ntr-un mediu pentru producie n
mas, unde exist muli utilizatori, cerine stricte de integritate a datelor i nevoia de o
performan bun.
Cel mai important factor n alegerea unei baze de date este ce va stoca aceasta: date sau
documente?. XML-ul poate fi folosit doar pentru a transporta date ntre baza de date i o
aplicaie sau poate fi folosit integral ca n cazul documentelor XHTML i DocBook.
Scopul utilizrii XML este important deoarece toate documentele centrate pe date au
anumite caracteristici comune, la fel se ntmpla i n cazul informaiilor centrate pe
documente, i aceste caracteristici influeneaz felul cum XML-ul este stocat n baza de
date. Documentele centrate pe date sunt documente care folosesc XML-ul pentru
transportul datelor. Aceste documente sunt folosite de ctre aplicaii i nu are nici o
importan faptul c informaiile folosite au fost reinute pentru o perioad de timp n
documente XML. Exemple de documente centrate pe date sunt ordine de plat,
programarea zborurilor, date tiinifice.
Documente centrate pe date au o structur regulat, datele sunt atomice (cea mai
mic unitate independenta de date este un element sau un atribut). Ordinea elementelor
care apar n document nu este important, dect n momentul validrii documentului.
Informaiile care exist n documentele centrate pe date pot proveni din baza de date (caz
n care se dorete extragerea lor n fiiere XML), dar i din afara bazei de date (caz n care
se 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 exemplu de
informaii care se doresc a fi introduse ntr-o baz de date pot fi considerate datele
tiinifice obinute de un sistem de msurtori i convertite n XML.
De obicei, datele sunt stocate ntr-o baz de date tradiional cum sunt cele
relaionale sau orientate-obiect. Documentele sunt stocate ntr-o baz de date nativ
XML (o baz de date destinat stocrii XML) sau un sistem de gestionare a
coninuturilor (content 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 datele semistructurate, pot fi
stocate n baze de date native XML i documentele pot fi stocate n baze de date
tradiionale, atunci cnd nu sunt necesare foarte multe caracteristici 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 se adaug facilitai native XML i bazele
de date native XML suport stocarea fragmentelor 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 documentului XML (DTD, Scheme XML, RELAX NG, etc.) pe schema
bazei de date. Software-ul pentru transferul de date este construit peste aceast mapare.
Software-ul poate folosi un limbaj de interogare XML (cum ar fi XPath, XQuery) sau
poate transfera direct 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 transferarea
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, documentul
obinut este adus la structura folosit de ctre aplicaie.
urmtor.
<bazadedate>
<tabela>
<linie>
<coloana1>...</coloana1>
<coloana2>...</coloana2>
...
</linie>
<linie>
...
</linie>
...
</tabela>
<tabela>
...
</tabela>
...
</bazadedate>
Maparea, bazat pe tabele, este folosit de multe produse care efectueaz transferul de date
ntre un document XML i o baz de date relaional. Aceasta modeleaz un document
XML ca o singur tabel sau ca un set de tabele. Structura documentului XML este artat
n exemplul
n funcie de software datele din coloane pot fi stocate ca elemente descendente sau ca
atribute. n plus, produsele care folosesc mapri bazate pe tabele de multe ori includ
metadate fie la nceputul documentului fie ca atribute asociate fiecrui element din tabel
sau coloan. Maparea, bazat pe tabele, este utilizat pentru serializarea datelor
relaionale, ca n cazul transferrii datelor ntre dou baze de date relaionale. Dezavantajul
acestei mapri este c nu poate fi folosit pentru un document XML care nu respect
formatul din exemplu. Instanierea obiectelor din model depinde de produsul folosit. Unele
produse dau posibilitatea generrii claselor n model i apoi, folosirea 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 produsele suport maparea tipurilor complexe de elemente pe clase i a
tipurilor simple 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 nivele n acelai document XML.
majoritatea produselor ofer posibilitatea specificrii dac proprietile sunt mapate
pe atribute sau pe elemente descendente n documentul XML. Unele produse permit
combinarea atributelor cu elementele descendente; altele cer folosirea numai a
elementelor descendente sau a atributelor.
majoritatea produselor permit folosirea numelor diferite n documentul XML i baza
de date, dar sunt anumite produse care necesit folosirea acelorai nume att n
documentul XML ct i n baza de date.
majoritatea produselor permit specificarea ordinii n care elementele descendente
apar n printele lor, dar care face imposibil construirea mai multor modele pentru
coninut. Din fericire, modelele pentru coninut suportate sunt suficiente pentru
majoritatea documentelor centrate pe date (ordinea este important numai dac se
face validarea documentului).
multe produse transfer date direct conform cu modelul pe care sunt construite.
La fiecare tabel pentru care cheia primar este exportat, se adaug un element
descendent la model i se proceseaz tabela recursiv.
<Client>
<Nume>ABC </Nume>
<Adresa>
<Strada>Calea Vacaresti.</Strada>
<Sector>1</Sector>
<Tara>Romania</Tara>
<CodPostal>0040</CodPostal>
</Adresa>
</Client>
Procedura pentru generarea unei scheme relaionale dintr-o schem XML ar crea
dou tabele: una pentru clieni i una pentru adrese. Totui, n majoritatea cazurilor, ar fi
mai bine s se rein adresa n tabela de clieni, i nu ntr-o tabel separat.
Elementul <Adresa> 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 documentul mai uor de neles. n al doilea rnd, ele sunt de obicei
folosite ca o form de redactare a datelor. De exemplu, elementul <Adresa> ar putea fi
trimis la o rutin care transform toate adresele n obiecte Adresa, indiferent unde apar
acestea.
Daca elementele 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 relaionale. Din moment ce este puin probabil c modificarea schemei XML ar
trebui s fie permanent, acest lucru duce la o neconcordan ntre documentul existent i
documentele presupuse de ctre soft-ul de transfer de date, din moment ce elementele
wrapper nu sunt incluse n mapare. Acest lucru poate fi rezolvat prin transformarea
documentelor 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 aceste dezavantaje, procedurile de mai sus ofer n continuare un punct de
pornire folositor pentru generarea schemelor XML din scheme relaionale i invers, n
special n sisteme 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 funcionalitilor
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 cale de stocare este n sistemul de fiiere. Se pot folosi instrumente cum ar
fi grep pentru interogarea lor, i sed pentru modificarea lor. Cutrile complete de
text n documentele XML sunt inexacte, pentru c ele nu pot distinge marcajul de text i
nu pot nelege folosirea entitilor. Totui, ntr-un sistem mic, aceste inexactiti ar putea
fi acceptabile. 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.
(a)
(b) 4.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 tranzaciilor, securitate, acces multiuser. n plus, multe baze de date au
instrumente pentru cutri de text i pot face cutri complete de text, cutri
aproximative, cutri sinonime i cutri fuzzy. Unele dintre aceste instrumente sunt
construite pentru a recunoate XML, ceea ce va elimina problemele care apar la cutrile
documentelor XML ca simplu text.
Atunci cnd se stocheaz documente XML ca BLOB-uri, se pot implementa uor
indexri simple 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. Tabela document conine o cheie primar i o coloan BLOB n care este
reinut documentul. Tabela index conine o coloan n care se gsete valoarea ce va fi
indexat i o cheie strin care duce 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 documentului. 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 documentul corespunztor.
SELECT Brosura
FROM Brosuri
WHERE BrosuraID IN (SELECT BrosuraID FROM Autori WHERE Autor= 'ION')
Unele 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 maparea
relaional-obiectual. Daca aceste date sunt live, adic dac actualizrile
documentului din baza de date nativ XML sunt reflectate n baza de date aflat la
distan depinde de baza de date nativ XML. n viitor, majoritatea bazelor de date
native XML vor suporta date live aflate la distan.
(c) 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. Baza de
date, este n general, ascuns de utilizator n spatele unui front end care ofer
caracteristici, precum:
Ce este RSS?
Feed-urile RSS sunt de obicei folosite pentru a oferi coninut sau poriuni de coninut
(articole, mesaje, tiri, anunuri, etc) ntr-un format standard, care poate fi preluat de
aplicaii specializate (gen browsere, editoare de tiri, roboi de cutare, etc) i afiate apoi
destinatarului. Dect s verificm n fiecare or ce a mai aprut nou pe paginile preferate,
folosii o aplicaie care va afia noutile direct cnd apar. Un fiier RSS este scris n metalimbajul de marcare XML (eXtensible Markup Language), extensia fiierului este .rss sau
.xml (dar poate fi i .html sau .php, dar atunci nu este nestandard) iar tipul MIME al
fiierului trebuie s fie application/rss+xml. Pentru a introduce un fiier RSS n paginile
unui site trebuie specificat n partea de HEAD a documentului web urmtoarea linie,
unde pentru href trebuie specificat calea ctre fiierul RSS. Astfel spunem browserului sau
aplicaiei (client) de unde s citesc informaiile.Se poate face referire la un feed RSS i
printr-un link direct (de obicei se folosete o poz standard pentru RSS) iar n acest caz
vizitatorul este invitat s dea click pe acea imagine pentru a prelua feed-urile oferite de
acea pagin web. n interiorul unui feed-RSS se gsesc itemuri (obiecte). Orice fiier RSS
trebuie s conin cel puin un item. Item-urile sunt n general paginile web care dorim s
le dm ctre ali vizitatori. De exemplu, dorii s informm cititorii de apariia unui nou
articol pe site. Informaia despre acea pagin va forma un item. Pentru a introduce un item
n fiierul RSS va trebui s completm elementele: Titlul- Descrierea- LinkTitlul. Fiierele
XML utilizeaz taguri pentru a specifica titlul, descrierea i linkul.
Deci, un feed-RSS este format dintr-o serie de iteme, iar acestea sunt legate mpreun
pentru a crea un "Canal". Canalul apare la nceputul fiierului i la fel ca itemurile,
canalele utilizeaz titlul, descrierea i linkul pentru a descrie coninutul. De asemenea
trebuie s indicai ce tip de document este, introducnd pentru aceasta tagurile pentru
document de tip XML i RSS. Sfritul fiierului va arta ca n exemplul urmtor:
<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>Titlul canalului </title>
<description>Explicatia</description>
<link>http://www.legatura_catre_pagina_articolului</link>
<item>
<title>Primul titlu</title>
<description>Descriere</description>
<link>http://www.legatura_catre_pagina_articolului</link>
</item><item>
<title>Titlul 2 </title>
<description>Descrierea</description>
<link>http://www.legatura_catre_pagina_articolului</link>
</item></channel>
</rss>
Tema de casa.
-
STUDIU INDIVIDUAL.
Dezvoltarea si apelarea servleturilor
Un servlet este un cod de program Java care poate fi accesat printr-o interfa standard ntr-un
serviciu de reea, asemenea programelor CGI aflate pe un site Web. Servleturile permit unui serviciu de
reea, cum ar fi un server Web sau un server Ftp, s fie extins dinamic pentru a furniza noi faciliti.
Unul din scopurile uzuale n care sunt folosite servleturile este de a crea o punte ntre un browser
Web i o baz de date ncorporat; browserul Web se conecteaz la un server Web, care execut un
servlet care se conecteaz la baza de date i execut cererea browserului. Serverul Web nu trebuie s aib
suport intern pentru accesul la baza de date; n schimb el poate fi dinamic extins cu servleturi care vor
executa aceste funcii. De fapt, servleturile sunt un mecanism potrivit pentru a implementa aproape orice
serviciu de acces n reea.
Servleturile au mecanism curat pentru implemetarea unor funcii variate. Servleturile pot fi folosite n
locul tradiionalelor aplicaii CGI, dar binenteles cu mbuntirile aduse de limbajul de programare
Java. Servleturile ntrec tradiionalul CGI, prin colaborarea ntre aplicaii i prin mbuntirea
perfomanelor. Servleturile pot de asemenea s fie folosite pentru a genera dinamic pagini HTML.
API-ul servlet-urilor
Toate servleturile trebuie s implementeze interfaa Servlet. Aceast interfa descrie mecanismul
exact prin care serverul reea va interaciona cu servleturile, incluznd iniializrile, finalizarea i
rspunsul procesului.
Detalii despre rspunsul fiecrui client sunt date de servlet prin intermediul interfeei
ServletRequest (figura 1). Aceast interfa descrie proprietile generale ale cererii care a fost fcut
ctre servlet. Servletul rezolv cererea i apoi rspunde clientului prin intermediul interfeei
ServletResponse. Aceast interfa are un mecanism pentru ca servletul s seteze tipurile de date pentru
rspuns i s scrie n fiierul de ieire acest rspuns.
Class
beanName
Type
Descriere
Numele componentei asupra creia se opereaz.
Numele proprietii (datei membre) pentru care se dorete
actualizarea valorii.
Valoarea datei membre va fi dat ca parametru paginii JSP cu
numele specificat de acest atribut.
Indic valoarea care va fi atribuit datei membre specificate.
Dei toate servleturile trebuie numaidect s implementeze aceast interfa, multe vor profita de
facilitile date de mai multe implementri specifice a acestei clase cum ar fi GenericServlet ori
HttpServlet, i astfel vor respecta API-ul acestor clase specifice.
Metode
Urmtoarele metode definesc interfaa de baz a unui servlet:
void init(ServletConfig config) throws ServletException . 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 terminat atunci cnd prima cerere este preluat. Cererile care sunt primite nainte ca metoda init() s
fie terminat vor fi blocate pn cnd se va termina cu aceast metod.
Parametrii ServletConfig conin informaii de iniializare pentru servlet. Chiar dac nu sunt folosii,
acest parametru ar trebui inut pentru a fi returnat de metoda getServletConfig(). Multe implementri
standard a interfeei Servlet, cum ar fi GenericServlet, au grij de acest lucru automat.
void service (ServletRequest request, ServletResponse) throws ServletException,
IOException. Metoda service() este apelat de ctre serviciul 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 parametrului de tip ServletRequest, request, i ar trebui s trimit rspunsul su napoi prin
intermediul parametrului response de tip ServletResponse.
void destroy(). La un moment dat dup ce un servlet a terminat de servit cererea, gazda poate
decide s descarce servletul. Pentru acest lucru se apeleaz metoda destroy().
Cnd un servlet este distrus, el trebuie s elibereze toate resursele pe care le deine i s salveze
orice informaie care trebuie s fie inut permanent. Multe servleturi menin conexiunile deschise 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 getServletConfig(). Aceast metod trebuie s ntoarc un obiect ServletConfig care
ar fi trebuit salvat de metoda init().
String getServletInfo(). Aceast metod ar trebui s returneze 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 servleturi trebuie s aib grij de sigurana firelor
de execuie. Dac se implementeaz interfaa 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 metode.
Intefaa ServletConfig
Aceast interfa este folosit de un serviciu de reea pentru a transmite informaii de configurare
unui servlet atunci cnd este iniializat. ServletConfig este transmis ntr-un servlet n metoda init() i
poate fi accesat n timpul unei cereri cu metoda getServletConfig().
Interfaa ServletRequest
Interfaa ServletRequest descrie informaiile cerute care sunt transmise ctre metoda service().
O cerere este alctuit formal din trei pri: Cererea URL, care se identific cu obiectul cerut;
parametrii cererii, care au detalii despre cerere; i corpul cererii, care este alctuit din datele specifice
aplicaiei cererii.
Interfaa ServletResponse
Interfaa ServletResponse descrie cum un rspuns poate fi ntors clientului. Toate rspunsurile sunt
de tip MIME; un tip MIME este asociat cu un volum de date. Acest tip indic cum vor trebui interpretate
datele de ctre client.
Interfaa ServletContext
Interfaa definete un set de metode pe care un servlet le poate folosi pentru a comunica cu
containerul su. Prin aceast interfa, servletul poate nregistra evenimente importante i poate accesa
informaii specifice reelei de care aparine serverului.
Un context al unui servlet poate fi obinut prin apelarea metodei getServletContext() n configuraia
iniial a servletului.
void log(String message). Aceast metod nregistreaz un eveniment servlet ntr-un fiier de
nregistrari a servletului.
void log(Exception ex, String message). Aceasta este o metod folositoare pentru a nregistra
urma unei erori i mesajele de eroare n fiierul de nregistrri al servletului.
void log(String message, Throwable throwable). Aceasta este varianta din JSDK.
Enumeration getServletName(). Aceast metod ntoarce o enumeraie a numelor servleturilor
gzduite de server. n general nu trebuie folosit aceast metod.
Servlet getServlet(String name) throws ServletException. Aceast metod ntoarce servletul cu
respectivul nume, ori null dac nu este gsit. n general nu trebuie folosit aceast metod.
String getRealPath(String Path). Aceast metod transform o cale virtual folosind reguli
locale, i ntoarce calea fiierului dependent de platform.
String getMimeType(String file). Aceast metod ntoarce tipul MIME al fiierului specificat, ori
null dac nu este cunoscut.
String getServletInfo(). Aceast metod ntoarce informaii despre serverul care gzduiete
servletul, incluznd numele su, i numarul versiunii.
Object getAttribute(String name). Aceast metod ntoarce un nume, un atribut dependent de
server. Aceast metod poate fi folosit pentru ca s se obin servicii specifice serverului.
Clasa HttpServlet
Atunci cnd se scrie un servlet care va fi invocat printr-o cerere Http, se va extinde aproape
ntotdeauna clasa HttpServlet. Aceast clas implementeaz multe detalii folositoare de preluare a
cererilor Http, i are multe clase utilitare pentru primirea de cereri HTTP i pentru trimiterea rspunsurilor
HTTP formatate corespunztor.
Clasa HttpServlet este o subclas a clasei GenericServlet, i c are toate facilitile clasei respective.
Definirea metodelor HTTP
Cererea clientului HTTP poate fi de dou feluri : cerere simpl sau complet.
n general, programul trebuie s utilizeze cereri complete, n afara cazului n care se lucreaz cu
HTTP, versiunea 0.9. Singura metod care utilizeaz cererea simpl este GET, utilizat pentru a regsi o
resurs. Sintaxa este : GET URI <CR/LF>
n schimb, o cerere complet ncepe cu o linie de cerere, <CR/LF>, apoi informaia codificat sub
forma unui antet (optional), <CR/LF> i corpul entitii (optional). Linia de cerere are sintaxa :
Metoda Cerere-URI versiune-HTTP <CR/LF>
Diferena ntre o cerere simpl i una complet este prezent cmpului versiune HTTP i
posibilitatea de a specifica mai multe cereri HTTP (nu numai GET, ci i HEAD, POST, ...).
Metoda GET cere serverului Web s regseasc informaia identificat de URI. Serverul obine
resursa cerut de client utiliznd adresa resursei. Metoda GET devine GET condiional dac mesajul
cerere trimis de client include un cmp antet If-Modified-Since. O metod GET condiional cere ca
serverul s transfere resursa specificat numai dac a fost modificat de la data specificat n cmpul IfModified-Since. n cazul n care clientul a transferat deja obiectul i a ascuns entitatea GET condiional
reduce gradul de utilizare al reelei pentru c nu mai este nevoie de un transfer inutil.
Metoda HEAD este similar lui GET, cu excepia faptului c serverul nu returneaz un corp de
entitate n rspuns. Aplicaiile utilizeaz HEAD pentru a obine informaii (n special de antet) despre
resursa identificat de URI, fr a transfera corpul entitii. Informaia de antet (metainformatie) trebuie
s fie aceeai cu informaia trimis de server ca rspuns la o cerere cu metoda GET. Aplicaiile utilizeaz
metoda HEAD pentru a testa validitatea, accesibilitatea i modificrile legturilor hipertext.
Metoda POST cere serverului Web s utilizeze obiectul din cerere ca resurs identificat de URI n
linia de cerere. Deci clientul spune serverului Web aceasta este noua surs pe care o utilizai cu URI-ul
pe care vi l-am furnizat. n majoritatea cazurilor, POST creaz sau nlocuiete o resurs asociat cu URIul trimis cu metoda POST. Totui, un POST completat cu succes nu cere ca entitatea s fie resursa pe
serverul de origine (serverul care recepioneaz cererea complet) sau s fie accesibil pentru o viitoare
referin. Deci, e posibil ca aciunea realizat de metoda HTTP POST s nu furnizeze o resurs
identificabil prin URI. n acest caz, serverul va returna un cod de stare 200 (OK) sau 204 (fara continut),
depinznd de includerea (sau nu) n rspuns a unui obiect care s descrie rezultatul.
Dac un client creaz o resurs pe un server de origine, clientul trebuie s creeze un cod de stare
201 care conine un obiect (text, HTML, ...) care descrie starea cererii.
Toate cererile HTTP POST necesit un cmp Content Length valid. Un server HTTP trebuie s
corespund cu un cod de stare 400 (cerere eronata) dac nu poate determina lungimea coninutului
mesajului cerere.
Alte metode HTTP : CHECKIN, CHECKOUT, DELETE, LINK, PUT, SEARCH,
SHOWMETHOD, SPACEJUMP, TEXTSEARCH i UNLINK. Acestea sunt mai puin utilizate i nu
toate serverele permit aceste metode.
Pentru furnizorii de servicii Web care ofer servicii bazate pe aplicaii Web dinamice, aplicaia este
cheia afacerii i tehnologia folosit n serverul de aplicaie poate avea un impact major asupra rezultatelor
obinute n afacere.
Containerul Web este parte a unui server care gestioneaz servlets, Java Server Pages (JSP) pecum
i alte componente Web. Aceast tehnologie a containerului Web joac un rol vital n determinarea
performanelor si capacitii de adaptare a componentelor aplicaiei Web. Exist o legtur direct ntre
aceast tehnologie folosit de ctre dezvoltatori i performana i agilitatea aplicaiilor. Compania Sun
susine c serverul GlassFish este de departe mult mai extensibil, mai modular, mai uor de folosit i mai
adaptabil dect serverul de aplicaii Apache Tomcat oferind n acelai timp performane foarte bune. Cu
suport pentru clustering, mesaje, servicii enterprise, precum i alte caracteristici cheie care lipsesc n
Tomcat, i cu suportul companiei Sun i sprijinul unei mari i nfloritoare comuniti, GlassFish este o
alternativ superioar pentru cei care dezvolt aplicaii Web.
GlassFish este un server open source, dezvoltat de ctre Comunitatea GlassFish, care a fost lansat
de ctre compania Sun n anul 2005. n anul 2008 versiunea a doua a serverului (GlassFish v2) a atins
aproape 9 milioane de descrcri i 300.000 de nregistrri. Versiunea actual, GlassFish v3 Prelude,
ofer o arhitectur modular n mod implicit, care permite dezvoltarea aplicaiilor Web in mod rapid i cu
suport pentru limbaje dinamice. Este o platform excelent pentru implementarea aplicaiilor Web
susinut de Java sau de limbaje dinamice, cum ar fi JRuby.
GlassFish Enterprise Server v2 mpreun cu Java Enterprise Edition (EE) 5 adaug un plus de
calitate opiunilor disponibile pentru comunitatea open source ridicndu-se totodat la standardele impuse
de ctre compania Sun.
Tomcat a fost dezvoltat la Apache, de ctre un grup de dezvoltatori de la Sun i Jserv, iar codul
iniial a venit de la Sun. A devenit implementare de referin pentru primele versiuni de servlets i pentru
specificaii JSP. Tomcat a jucat un rol vital n nceputul dezvoltrii aplicaiilor de server oferite de Java.
A fost disponibil sub licen open source nc de la nceput i a contribuit la sporirea popularitii sale n
cadrul organizaiilor de tip Enterprise.
n general, aplicaiile care ruleaz pe Tomcat, vor rula neschimbate i pe GlassFish. Cu toate
acestea exist diferene importante care afecteaz n mod direct performanele, scalabilitatea i
productivitatea aplicaiilor.
La toate nivelurile, GlassFish este pur i simplu o opiune mult mai bun dect Tomcat att pentru
dezvoltatori ct i pentru companii:
GlassFish este o colectie de containere Java EE, nu doar un Container Web.
GlassFish este mult mai extensibil i mai modular dect Tomcat i dezvoltatorii pot profita mult
mai uor de capabilitile acestuia, cum ar fi: mesaje, clustering, failover, gestionare de sesiuni, EJB,
JMS, JSR, etc.