Documente Academic
Documente Profesional
Documente Cultură
MODULUL NR. 4
WEB-DESIGN
Internet
Browser
Un browser este un program de calculator utilizat pentru vizualizarea paginilor web. Cele mai
cunoscute browsere web sunt la ora actual Internet Explorer (ajuns la versiunea 7), FireFox,
Safari, Netscape i Opera. De precizat este c i un program de gestiune a fiierelor locale
(gen windows explorer) poate aciona ca un browser.
Html
Server
Un calculator conectat continuu la internet i care ruleaz programe speciale pentru a permite
diferite tipuri de conexiuni din afar. Dup tipul programelor rulate (servicii oferite), vorbim
de server de mail, server de fiiere, server de baze de date etc.
Protocoale internet
Pentru a asigura comunicarea a dou sau mai multe calulatoare ntr-o reea, acestea trebuie s
foloseasc aceleai tipuri de echipamente de conectare i aceleai seturi de instruciuni.
Modalitatea n care calculatorul mparte informaiile ce urmeaz a fi transmise n reea i
paii care sunt parcuri pentru a se asigura securitatea i compatibilitatea legturii formeaz
un protocol.
TCP
(Transfer Control Protocol) este un protocol de control al transferului. Acest protocol asigur
o conexiune sigur i bidirecional ntre 2 computere pe Internet. Acest protocol mpreun cu
protocolul IP formeaz suita TCP/IP utilizat la conectarea computerului personal la internet.
HTTP
Acest protocol permite schimbul direct de fiiere ntre dou computere conectate la Internet
sau ntr-o reea.
Servicii internet
Este cel mai utilizat serviciu Internet, dezvoltat la nceputul anilor 90. Utilizeaz protocul http
pentru a transmite text, imagini, sunete aflate pe un server WWW oriunde n lume prin
intermediul protocolului HTTP.
Acest serviciu permite schimbul de mesaje electronice ntre 2 utilizatori pe Internet. Este cel
mai folosit serviciu de pe internet, oferit de firme ca Yahoo, Google sau Microsoft i
accesabil prin interfaa web sau (n anumite cazuri) prin programe ce comunic direct cu
serverul de e-mail (outlook, thunderbird, pegasus) numite clieni de mail.
RSS Feeds
RSS (Really Simple Syndication) desemneaz o modalitate prin care poi obine n timp real
i n mod gratuit informaii de pe diferite situri web. RSS-ul presupune obinerea automat a
titlurilor de articole, a sumarului acestora i a linkurilor ctre textul integral al acestora aflat
pe site-ul furnizor de servicii RSS.
Pentru a utiliza serviciile RSS este nevoie de un soft special pentru citirea tirilor de pe site-
urile ce ofer servicii RSS. O mare varietate de astfel de softuri este disponibil, marea
majoritate a lor fiind gratuite.
RSS-ul este o modalitate eficient de a primi alerte atunci cnd pe siturile favorite apar
nouti dintr-un anumit domeniu de interes pentru c aplicaia RSS ofer automat informaii
atunci cnd ceva nou din acest domeniu este postat.
Podcasting
Podcasting este o metod de distribuie a fiierelor n format multimedia (de obicei fiiere
audio dar i video), prin intermediul formaturilor de sindicalizare de coninut RSS i ATOM.
Fiierele pot fi descrcate i redate pe echipamente mobile sau calculatoare ce accept
formatul n care acestea au fost create. Un autor de podcast este de obicei denumit podcaster.
Siturile de podcasting pot oferi fiierele spre descrcare i ascultare off-line sau pentru redare
direct on-line. Metoda de baz este totui aceea de descrcare prin intermediul unui cititor
de coninut RSS sau Atom.
Adrese internet
nainte de a prezenta conceptul de adres internet, trebuie precizat c o pagina web este un
fiier n format HTML, iar mai multe pagini web care se refer la acelai subiect i sunt
stocate n aceeai locaie formeaz un sit internet (denumirea corect a uzualului site).
Vorbim deci de situl web al Universitii 1 Decembrie, care conine printre altele pagina cu
informaii referitoare la Facultatea de tiine, pagina cu informaii despre evenimentele
curente, pagina cu date de contact .a.m.d.
Ficare sit are o pagin principal (home sau acas), fiierul corespunztor fiind index.html.
Aceast pagin este cea care se ncarc la apelarea prin browser a sitului i de unde putem
naviga spre restul paginilor.
Un sit internet este stocat pe un server i are o adres unic, ntocmai ca adresa potal. Un
server stocheaz de obicei mai multe situri. Putem considera urmtoarea analogie: blocul n
care locuii este serverul, apartamentul este situl i fiecare camer reprezint cte o pagin.
Adresa unui sit este format dintr-un ir de patru grupe de numere cu valori ntre 0 i 255, desprite prin
punct, care se numesc IP (ex: 192.168.0.1). Pentru a fi mai uor de reinut i utilizat, adresele internet au nume
de forma http://www.google.com sau http://www.uab.ro. Aceste nume sunt de fapt conectate la adresele
reale (IP). Exist servere specializate, numite DNS (domain name server) care au liste de asociere ntre adresele
reale i numele paginilor, ca n tabelul de exemple de mai jos:
www.uab.ro 192.231.35.33
www.google.com 64.233.167.99
www.yahoo.com 66.94.234.13
Scriind deci n browser www.uab.ro, acest ntreab serverul DNS la care are acces care
este adresa real i apoi deschide fiierul index.html aflat la aceast adres.
Forma numelor de adrese are 4 seciuni distincte. Pentru exemplificare, vom consiera dou
adrese http://www.uab.ro i ftp://roedu.net unde putem identifica cele patru seciuni
astfel:
In primul caz este vorba de simpl navigare pe cnd n cazul al doilea, pregtim un transfer
de fiiere ntre calculatorul local i server. n utilizarea curent, protocolul http poate lipsi.
Dac adresa este trecut www.uab.ro, browserul presupune c este prin protocolul http.
Este prezent doar n primul caz, fiind un serviciu ce funioneaz doar pe protocolul http.
Poate aprea i sub alt form (de ex www3) sau n unele cazuri, n funcie de construcia sit-
ului poate lipsi. n anumite cazuri, un sit poate ncrca un coninut prin serviciul www i un
alt coninut n lipsa acestuia.
.ro , . edu
Reprezint domeniul n care este activ sit-ul. Domeniile sunt utilizate pentru clasificarea sit-
urilor pe criterii geografice sau funcionale. n funcie de criteriul geografic, fiecare ar are
domeniul propriu: .ro = Romania, .us= Statele Unite, .de=Germania (Deutschland). Uniunea
European are din 2006 domeniul .eu.
.info situri
informaionale
Fiecare combinaie nume & domeniu (uab.ro, roedu.net, google.com) trebuie s fie unic i
este reglementat de o autoritate competent (pentru .ro este RNC Reeaua Naional de
Calculatoare). Aceste nume de domenii pot fi cumprate, vndute i se supun unor legi
speciale. Interesant n acest sens este legea anti-speculaii. n anii 2000 au aprut speculatori
de domenii internet, persoane care cumprau anumite domenii doar pentru a le revinde la
preuri mult mai mari. De exemplu, cine ar fi cumprat domeniul www.orange.ro sau
www.vodafone.ro nainte ca aceste firme s intre pe piaa din Romnia, era proprietarul lor
pe via i putea s negocieze cu firmele n cauz vnzarea acestora. Legea nou prevede ns
c dac la un anumit domeniu nu funcioneaz o pagin web cu coninut legat cu numele
domeniului (de exemplu prorietarul s fie o firm Orange care vinde portocale, sau suc de
portocale), proprietarul poate pierde n instan dreptul asupra domeniului.
Cutarea pe internet ncepe de la cuvinte cheie orice noiune pe care un utilizator dorete s
o gseasc, dar cu ct se crete claritatea cutrii cu att rezultatele vor fi mai bune. Spre
exemplu dac dorim s gsim date despre universitile din Timioara i cutm cuvntul
universitatea, Google va returna Universitatea Bucureti, Universitatea Babes Bolyai i
Universitatea Craiova ntre primele rezultate, iar Yahoo va returna: FC Universitatea (situl
echipei de fotbal U Cluj) apoi Universitatea Politehnica Bucureti i Universitatea Valahia din
Targoviste. Daca vom cuta universitatea timisoara, vom primi de la Google: Universitatea
de Vest din Timisoara, Universitatea Politehnica din Timisoara, Universitatea "Tibiscus" din
Timisoara i de la Yahoo: "Politehnica" University of Timisoara, Universitatea de Vest din
Timisoara, Timisoara University of Medicine and Pharmacy.
n cazul expresiilor (ca mai sus universitatea timisoara), sunt cutate n primul rnd siturile
care conin expresia complet, apoi siturile care conin ambele cuvinte (de exemplu un sit
care are informaia Universitatea noastr concureaz de la egal la egal cu universiti din
centrele universitare mari, cum ar fi Timioara, Cluj, Bucureti), iar n final sunt cutate pe
rnd cuvintele ce formeaz expresia.
Filtrarea rezultatelor
Dac se dorete ghidarea sau restricionarea cutrii, se pot folosi cteva tehnici:
BAZELE HTML
Ce este HTML?
Conceptul de HTML este un acronim, care nseamn HyperText Markup Language. Dei
conine n nume cuvntul language (limbaj), nu vorbim despre un limbaj de programare ci de
un limbaj descriptiv care prin marcaje speciale definete cum va fi afiat informaia
(structura i elementele de formatare). Un fiier HTML este de fapt un fisier text n care
structura i elementele grafice sunt determinate de aceste marcaje, denumite taguri. Tagurile
sunt interpretate de browser pentru a afia n mod corect pagina.
Pentru c sunt fiiere text, paginile HTML pot fi scrise n orice editor de text (i nu necesit
compilare). Atenie ns: Wordul nu este un editor de text. n Word, sau ntr-un program
echivalent, pe lng textul introdus, vom avea diferite informaii despre formatare (tipul
paginii, margini, culoarea scrisului) ce pot deranja formatul hmtl. Programul Notepad este
mult mai recomandat pentru editarea fiierelor HTML iar programele specializate gen
TopStyle, Macromedia Dreamweaver sau Ms Front Page nu fac dect s ne sprijine n
scrierea textului: numeroteaz liniile pentru a gsi mai repede eventuale erori, evideniaz
anumite erori de scriere, coloreaz cuvintele cheie pentru a fi mai uor de gsit .a.m.d. n
unele cazuri, aceste programe ofer un mod de lucru vizual, scriind singure codul pentru
elementele adugate i aranjate de utilizator cu doar un clik de maus. Totui programele
prezint limitrile lor, de unde necesitatea cunoaterii elementelor de codificare HTML.
Fiierele realizate n limbajul HTML pot avea fie extensia .htm, fie extensia .html. Tendina
este s se folosesasca extensia html, prima variant fiind rmas de pe vremea cnd sistemele
de operare aveau probleme n a lucra cu extensii din patru litere.
Elementul HTML
Conceptul de element HTML este la fel de important ca cel de tag HTML pentru c este
unitatea structural de baz a unui fiier HTML i pentru c de fapt aici are loc formatarea.
La baz, elementul este alctuit din taguri, atribute i valori, dup cum putei observa n
figura de mai jos:
FIGURA 2: STRUCTURA UNUI ELEMENT HTML
Un element este o structur caracterizat prin atomicitate adic este o structur indivizibil,
unitar. Exist dou tipuri de elemente, elementele nlocuibile cum este elementul img (n
locul lui n pagin va fi inserat o imgine) i elemente care nu sunt nlocuite ci care conin n
ele informaia din viitoarea pagin web (div conine n imaginea de mai sus textul coninut
(Text). Elementele sunt cuprinse ntre un tag de nceput i un tag de sfrit. Elementele
nlocuibile (cum este img) nu au tag de sfrit ci sunt nchise doar cu semnul /.
Elementele au atribute, iar atributele lor au valori. In exemplul de mai sus, elementul div are
un atribut class cu valoarea first, iar elementul img are atributele src cu valoarea
poza.jpg i alt cu valoarea text alternativ. Daca un atribut este scris, trebuie sa fie urmat
de o valoare chiar dac este valoarea vid. Ex: alt=.
Probabil cea mai simpl pagin HTML este afiarea unui mesaj Hello World dup cum se
observ n figura8 (codul este n dreapta):
<html>
<head>
<title>
Titlul paginii
</title>
</head>
<body>
Hello World.
</body>
</html>
Observm din cod elementele: html, head, title i body. Aceasta este structura de baz a
oricrei pagini web. HTML definete nceputul i sfritul fiierului. Elementul HEAD
conine informaii descriptive referitoare la pagina web: titlul paginii, cuvinte cheie, legturi
spre fiiere de formatare (CSS) sau definirea unor scripturi la care vom reveni mai trziu.
Elementul BODY cuprinde coninutul paginii, toat informaia ce urmeaz a fi afiat.
Dup cum vedei n exemplul de mai sus, textul poate fi inserat ntr-un fisier HTML direct (n
elementul BODY). n acest caz ns, nu se pot face formatri asupra textului, iar textul nu
poate fi structurat sau aliniat ntr-un anumit mod. Pentru a introduce text structurat care s
poat fi formatat, se folosete elementul paragraf notat cu P (cuprins ntre tagurile <p> i
</p>. Este important de reinut c un paragraf este o unitatea structural a textului, deci
paragrafele pot fi formatate independent unul de altul. n plus, textul poate fii scris pe mai
multe rnduri i folosind alte taguri, de exemplu tagul <br> care separ textul dintr-un
paragraf pe mai multe linii.
Textul poate fi scris i sub form de liste numerotate sau nenumerotate (cum este optiunea
bullets and numbering din word). Listele sunt formate din dou elemente: elementul LISTA
( <ol> </ol> - orderd list -pentru liste ordonate i <ul> </ul> - unordered list pentru
listele tip bullet) i elementul OBIECT LISTA (<li></li> - list item - la ambele tipuri de
liste).
O alt opiune este utilizarea elementului PREFORMAT (<pre> </pre>) care afieaz un
text preformatat, pstrnd n mare parte formatarea anterioar. De multe ori pot aprea
probleme de structur i formatare la folosirea acestui element, deci este recomandabil a fi
folosit cu moderaie.
Pentru a formata textul, avem cateva opiuni standard, cum ar fi bold <b></b> (sau
<strong></strong>), italic <i></i> (sau <em></em>). Tipul de scriere (fontul) precum
i culoarea sau dimensiunea pot fi setate la nivelul HTML dar sunt din ce n ce mai puin
folosite, odat cu dezvoltarea CSS, un limbaj separat folosit special pentru partea de
formatare a paginilor HTML. De fapt, toat formatarea i structura paginii este definit n
partea de CSS, despre care vom vorbi n ultima seciune a acestui capitol.
Imaginile pot fi inserate folosind elementul / tagul img. Spre deosebire de alte elemente, img
este dependent de unul din atributele sale i anume atributul src (source), atribut a crei
valoare determin ce imagine urmeaz a fi inserat n pagin. La modul general putem
considera formula <img src=url>, unde url reprezint locaia de unde este preluat fiierul,
fie o locaie online, fie o locaie de pe calculatorul local.
Important de precizat este c aceste locaii pot fi absolute sau relative. O locaie absolut
precizeaz calea complet unde este gsit fiierul de ex: C:\documente\poze\poza1.jpg.
Dac pagina web este mutat pe un alt server, sau dac fiierul respectiv este mutat, legtura
nu ma mai funciona. De aceea n practic, toate fisierele legate de un sit web se pun n
acelai folder (folder rdcin), iar dac fiierul html i imaginea sunt n acelai folder,
legtura este o legtur relativ i este suficient numele imaginii poza1.jpg. Practic se
consider c se pleac de la folderul curent. Dac se dorete plasarea mai multor imagini n
pagina web i se creaz n folderul curent un folder special pentru imagini, calea va fi evident
imagini\poza1.jpg. De asemenea, dei adresele obinuite funcioneaz de cele mai multe
ori, se recomand folosirea adreseleor de tip internet (cu semnul / n loc de \ , adic
imagini/poza1.jpg n loc de imagini\poza1.jpg).
Elementul IMG mai are o serie de atribute importante, cum ar fi width i height (pentru
setarea dimensiunilor) sau alt utilizat pentru a afia un text n locul imaginii n cazul n care
din browser este oprit afiarea imaginilor.
Hyperlinks
Unul din conceptele de baz n HTML este hyperlinkul legtura spre un document, obiect
sau zon. Un hyperlik poate fi setat pe un text (indiferent de lungime), pe o imagine sau pe
celula unui tabel folosind elementul <a> n modul urmtor:
<a href=produse.html>Produse</a>
<a href=poza.jpg><img src=poza_mica.jpg></a>
<a href=http://www.uab.ro>Univ. Alba Iulia</a>
De asemenea, pot exista legturi spre zone interne ale paginii (ancore), n cazuri n care
coninutul unei pagini depete dimensiunile ecranului i se dorete navigarea rapid prin
aceasta. Ancora punctul spre care se face legtura, se definete cu elementul <a> i
proprietatea name (<a name=ancora>Text</a>) iar legtura spre acest punct se face spre
valoarea atributului name dat mai sus, cu semnul # n fa (considernd cazul de mai sus
<a href=#ancora>text<a>).
O legtur poate deschide targetul in aceeasi fereastra sau intr-o fereastra noua folosind
atributul target cu valori posibile: _self, _blank, _parent, _top. (<a
href=http://www.yahoo.com target=_blank>Fereastra noua de yahoo</a>).
Folosirea tabelelor
Tabelele rmn utile pentru prezentarea anumitor tipuri de date, ce sunt tabulare n natura lor
orarul unei grupe de la facultate, un calendar de evenimente, un bilan contabil sunt toate
date care sunt mai uor structurate i prezentate ntr-o pagin web prin tabele.
Elementele utilizate n cazul lucrului cu tabele sunt: <table> - defineste inceputul / sfarsitul
unui tabel ; <tr> - defineste o linie din tabel; <td> defineste o celula din tabel n rndul
curent. Pe lng aceste elemente obligatorii, putem utiliza o serie de elemente opionale
precum <th> - antetul tabelului, <tbody> - corpul tabelului i <tfoot> - subsolul tabelului.
Alte atribute interesante sunt cellspacing (distana ntre celule), padding (distana interioar
ntre marginea celulei si text) i border (conturul celulei).
n general pentru paginile web se practic structura pe dou coloane, n care avem, ca n
imaginea de mai jos, un antet, o coloan principal de coninut, o coloan secundar de
informaii (sau meniu vertical) i un subsol cu informaii suplimentare. (Un exemplu de
pagin web construit n acest mod gsii n anexa1 a acestui capitol).
Elementul DIV are dou atribute extrem de importante: ID i CLASS. Atributul ID poate lua
orice valoare alfanumeric (litere i cifre) i reprezint de fapt numele containerului respectiv
(ex. <div id=antet>). De fiecare dat cnd vom face referire la numele respectiv (de obicei
n fiierul CSS), ne vom referi la seciunea resprectiv de pagin i tot coninutul ei. Fiecare
ID trebuie s fie unic determinat (nu pot exista dou id-uri cu aceeai valoare). Atributul class
poate lua de asemenea valori alfanumerice i este util pentru mprirea n categorii (clase) a
informaiei. Putem avea oricte elemente ntr-o anumit clas, iar prin referirea la clasa
respectiv sunt referite toate aceste elemente, chiar dac se afl n seciuni (div-uri) diferite.
De precizat este c aceste atribute pot fi setate oricror elemente dar sunt foarte frecvente la
elementul DIV.
Noiuni de XTML
XHTML (Extensible HyperText Markup Language) este o versiune mai strict i mai
curat de HTML. Limbajul este n mare acelai i funcionarea sa este identic cteva din
punctele de difereniere fiind prezentate pe scurt n continuare:
Dac n HTML putem avea greeli de imbricare a elementelor, n XHTML elementele trebuie
s fie imbricate corect:
Toate elementele trebuie nchise n XHTML, iar elementele formate dintr-un singur tag
trebuie finalizate cu semnul /.
HTML: (dei sintaxa eronat, funcioneaz)
<p>This is a paragraph
<p>This is another paragraph
A break: <br>
A horizontal rule: <hr>
An image: <img src="happy.gif" alt="Happy face">
XTML
<p>This is a paragraph</p>
<p>This is another paragraph</p>
A break: <br />
A horizontal rule: <hr />
An image: <img src="happy.gif" alt="Happy face" />
O definiie a tipului documentului (DTD) prcizeaz clar sintaxa permis pentru marcajele
XHTML, specific regulile ce se aplic pentru marcarea documentelor, inclusiv un set de
declaratii la nivel de element sau entitate.
Strict
Transitional
Frameset
XHTML 1.0 Strict: se foloseste pentru documente curate, n special n legtur cu CSS.
XHTML 1.0 Transitional: se foloseste pentru documente formatate din HTML mai ales
pentru a oferi suport browserleor ce nu neleg CSS -ul.
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd">
XHTML 1.0 Frameset: se foloseste pentru documentele n care se utilizeaz frame-uri.
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-
frameset.dtd">
Ce este CSS?
CSS sau Cascading Style Sheets reprezint Imbrcmintea unei pagini web. De obicei, sit-
urile web au unul dou fiiere CSS pe care le utilizeaz pentru a formata cu acelai set de
reguli toate paginile din sit (n unele cazuri, regulile CSS pot fi scrise i direct n HTML). Un
fisier CSS este de fapt un fiier text care conine reguli de descriere a unei pagini web
(stabilete toate elementele de formatare).
Toate paginile din sit sunt formatate la fel (sunt legate la acelai fisier CSS).
Modificrile de formatare pot fi fcute n tot sit-ul modificnd un rnd dintr-un
fiier.
Structura este mai clar, permite mai multe opiuni de design.
Import
<style type="text/css" media="all">
@import url("stil.css");
</style>
Link
<link href="stil.css" rel="stylesheet type="text/css" />
<html>
<head>
<style type="text/css" media="all">
h1 {font-size: x-large; }
p {padding-left: 1em;}
</style>
</head>
<body>
</body>
</html>
Seteaz fontul (tipul de scriere). n acest caz, textul va fi afiat n fontul Garamond. n cazul
n care computerul care vizualizeaz pagina nu are acest font instalat, textul va fi afiat n
fontul Times New Roman (remarcai c Times New Roman este scris n exemplul de mai sus
n ghilimele, pentru c numele su este format din mai multe cuvinte). Dac nici Times New
Roman nu este gsit, se va folosi orice font serif gsit. (Fonturile se mpart n serif ca Times
New Roman i sans-serif ca fontul folosit n paragrafele acestei cri.)
Font-size
Poate lua o valuare n pixeli, sau poate lua valorile small, medium, large, x-lare etc.
Stabilete dimensiunea textului.
Font weight
Poate lua valorile light, normal, bold sau o valoare care determin ct de accentuat s fie
textul.Determin dac textul este scris normal sau accentuat.
Font-style
Text-align
Cu valorile left, center, right, justify, realizeaz alinierea corespunztoare a textului n pagin.
Background
Margin
Marginea unui element (distana pn la elementul urmtor) poate lua valori n pixeli sau
em (1em este dimensiunea fontului din elementul printe. Redimensionarea textului duce la
redimensionarea tuturor mrimilor specificate n em). Valorile sunt specificate n ordinea
acelor de ceasornic: sus dreapta jos stnga, fr a fi separate de virgul sau un alt semn de
punctuaie (margin: 10px 20px 20px 15px). Pentru a specifica o singur margine, putem
folosi combinaiile margin-top, margin-right, margin-bottom sau margin-left.
Border
Chenarul (bordura) existent n jurul unui element. Are trei valori, reprezentnd tipul (linie
continu sau ntrerupt), culoarea i grosimea. Ex: border: solid gray 1px;
Padding
Width / height
Determin limea / nlimea unui element. Pot lua valori n pixeli, em sau procente.
Float
Proprietate utilizat pentru aranjarea n pagin a elementelor, n special pentru imagini. Poate
lua valorile left, right si none. Ca efect elementul respectiv va fi aranjat n stanga / dreapta
paginii, restul coninutului fiind aranjat n jurul obiectului.
FIGURA 7: MARGIN, PADDING I BORDER
Aplicarea regulilor CSS se poate face la mai multe niveluri: la nivel de element, la nivel de
ID, la nivel de clas i combinaii ntre acestea.
Modalitatea de baz este de a aplica o regul CSS la nivel de element. Dac dorim ca toate
paragrafele din sit-ul nostru web s fie scrie cu fontul Verdana, dimensiune 12px, culoare
albastru, vom construi regula: p { font-family: Verdana; font-size: 12px; color: blue;}.
Oricrui element i pot fi asociate asemenea reguli, iar elementul <a> are pe lng definirea
normal posibilitatea definirii a nc dou stri: a:hover (cum arat un link cnd cursorul
mausului trece pe deasupra sa) i a:visited (formatul unui link dup ce a fost vizitat).
Aplicarea la nivel de id se face prin valoarea id-ului precedat de semnul diez (#): #antet
{background: green; color: white; }. Efectul va fi resimit asupra tuturor elementelor cuprinse
n containerul cu ID-ul resprectiv. Dac una din declaraii contrazice o declaraie la nivel de
element, va fi ignorat. n exemplele de mai sus, regula aplicat la nivel de paragraf
determin culoarea textului albastru, iar regula aplicat la nivel de ID determin culoarea
alb. n acest caz paragrafele din antent vor avea culoarea albastr, iar restul elementelor de
text (h1, h2, h3 etc) vor avea culoarea alb (considernd c nu sunt alte reguli la nivel de
element care s influeneze acest fapt). Dac dorim s setm express culoarea textului din
paragrafele coninute n containerul cu ID-ul antent, putem face acest lucru, combinnd cei
doi selectori astfel: #antet p {color: black;}. Aceast formulare nseamn selecteaz toate
paragrafele care au ca strmo un element cu ID-ul antet i face referire la conceptul de
motenire.
Conceptul de motenire pleac de la structura unui document HTML. Dac ne uitm ntr-o
structur de baz, ca cea de mai jos, observm c elementul HTML conine elemetele HEAD
i BODY care la rndul lor conin alte elemente. HTML este numit printele lui HEAD sau
BODY, care sunt copiii lui HTML. Mergnd mai departe, TITLE este copilul lui HEAD i
urma pentru HTML. Toate elementele care au mai mult de o legtur n interior se numesc
urmai, iar n sens invers strmoi.
<html>
<head>
<title>
Ciprian Cucu: Home Page
</title>
</head>
<body>
<div id="antet">
<p> Acesta este un text. </p>
</div>
</body>
</html>
A treia posibilitate de aplicare a regulilor CSS este la nivel de clas, prin numele clasei
precedat de punct: .detalii {font-size: 9px; color: gray; font-style: italic}. Toate elementele
care au un atribut class cu valoarea detalii vor fi formatate conform regulii de mai sus.
Stabilirea regulilor la nivel de clas are prioritate n faa celorlalte dou metode deci chiar
dac avem o regul ce stabilete culoarea textului din paragrafe negru, textele din paragrafele
care au class=detalii vor fi scrie cu culoarea gri. ntr-o clas pot fi oricte elemente de orice
tip. Dac dorim s ne referim doar la anumite elemente, putem specifica acest lucru prin
plasarea elementului naintea clasei (de ex. p.detalii va selecta doar paragrafele din clasa
detalii).
O mare parte din formatarea paginilor web se refer la culorile utilizate pentru text i
fundaluri. Culorile corecte asigur un text uor de citit, o pagin plcut privitorului i n care
informaia util este subtil evideniat i uor de gsit. Potrivirea culorilor este un domeniu n
sine dar multe aplicaii ofer mici ajutoare n selecia paletelor de culori, plecnd de la o
culoare dorit i artnd combinaiile posibile.
Culorile sunt formate prin combinarea a trei tipuri de lumina: rosie, verde si albastra (spectrul
RGB). n HML i CSS sunt de obicei referite n folosind notaii n hexazecimal a combinaiei
de rou, verde i albastru: fiecare primete o valoare ntre 00 si FF. Culoarea #FF0000 este
deci rou, #00FF00 este verde i #0000FF este albastru. Exist i culori standard care au
nume i pot fi folosite cu numele lor: aqua, black, blue, fuchsia, gray, green, lime, maroon,
navy, olive, purple, red, silver, teal, white, yellow.
De asemenea important de precizat este c Java i JavaScript sunt dou chestiuni complet
diferite, att n concept ct i implementare. Java, dezvoltat de Sun Microsystems este un
limbaj de programare mult mai puternic i mai complex, n categoria C i C++.
Javascript ofer designerilor WEB o unealt de programare. Dei de obicei cei care
creaz pagini web nu sunt programatori, Javascript este un limbaj de creare de
scripturi cu o sintax foarte simpl. Aproape oricine poate pune mici secvene
(denumite n general snippets n paginile lor HTML).
Javascript poate plasa text dinamic ntr-o pagin. O declaraie Javascript de genul
document.write("<h1>" + name + "</h1>") poate s afieze un text variabil (n funcie
de coninutul variabilei name).
Javascript poate reaciona la evenimente un cod Javascript poate fi pus s se
execute atunci cnd ceva se ntmpl, cum ar fi apsarea unui anumit element din
pagin sau traversarea cu mausul deasupra unei anumite zone.
Javascript poate citi sau chiar modifica coninutul unui element HTML.
Javascript poate fi utilizat pentru a valida datele cerute de un formular dintr-o pagin
web
Javascript poate detecta ce browser folosete vizitatorul paginii i alege spre ncrcare
o pagin optimizat pentru browserul respectiv.
Javascript poate stoca date despre computerul vizitatorului unei pagini (cookies).
Generaliti JavaScript
Majoritatea obiectelor sunt nsoite de o colecie de lucruri pe care le pot efectua. Spre
exemplu un document este deschis prin metoda document.open(). .open() reprezint o metod
asociat obiectului document.
Marcarea sau specificarea exact a momentului execuiei unei funcii este foarte important
pentru programator. Prin specificarea unui anumit moment al execuiei se face apel la
desfurarea unui eveniment. De exemplu, la activarea maus-ului execut o anumit funcie:
onClick="run_my_function()". Cteva exemple de evenimente ale maus-ului sunt:
OnMouseOver, OnMouseOut, OnFocus, OnBlur, OnLoad, and OnUnload.
Integrare JavaScript & HTML
Pentru c elementul script poate fi utilizat n HTML pentru integrarea mai multor tipuri de
scripturi, este bine s precizm o valoare atributului language (de obicei valoarea
javascript) i valoarea atributului type ("text/javascript").
n unele cazuri se dorete utilizarea aceluiai script n mai multe fiiere distincte, caz n care
vom scrie codul JavaScript ntr-un fiier separat (cu extensia .js) i vom crea o legtur ntre
fiierele HTML i fiierul javascript cu elementul SCRIPT i atributul SRC:
<script language=JavaScript src=numefisier.js> </script>
Utilizare JavaScript
Variabile n Javascript
O variabil, este un container pentru informaiile pe care dorii s le stocai. Valoarea unei
variabile se modific pe parcursul executrii programului. Accesul la informaia cuprins ntr-
o variabil se face prin numele acesteia.
Numele variabilelor sunt orice construcie alfanumeric (litere i cifre) cu condiia s nceap
cu o liter sau caracterul de subliniere (_). Nu sunt permise alte semne speciale ( ?, [, *) i
nu pot avea spaii. Cuvintele cheie (var, if, for, array) nu sunt acceptate. De asemenea,
variabilele sunt n Javascript case sensitive (se face diferena ntre literele mari i literele
mici) deci o variabil titlu nu este identic cu o variabil TITLU sau Titlu.
Pentru a atribui o valoare unei variabile, se foloseste semnul egal: titlu=Bazele Javascript.
Semnul egal are aici funcia operatorului de atribuire. Dup aceast instruciunea, variabila
titlu va avea valoarea Bazele Javascript.
Variabilele pot fi locale sau globale. Variabilele locale sunt cele delcarate n interiorul unei
funcii i sunt valabile doar n interorul funciei respective. Variabilele declarate n afara unei
funcii sunt globale i sunt recunoscute n toat pagina din momentul declarrii pn cnd
pagina este nchis.
Pe lng datele simple ca valori numerice sau texte, JavaScript suport un tip de date mai
complex, denumit vectori (arrays). Un vector este o colecie de valori individuale grupate i
const ntr-o serie de containere numerotate n care pot fi puse valori. Putem face analogia cu
un dulap cu mai multe sertare. Dulapul este variabila de tip vector, iar fiecare sertar poate
conine cte o valoare.
Valorile din vectori pot fi utilizate sub forma numevector[0], numevector[1], numevector[2]
.a.m.d. Fiecare din aceste valori poate fi manipulat individual i folosit ca o variabil
normal.
Mai jos este reprezentat grafic un vector elevi cu 5 elemente (sub fiecare element este
trecut poziia elementului n cadrul vectorului)
0 1 2 3 4
Avem deci: elevi[0] = Maria, elevi[1]=Alex, elevi[2]=Ionut, elevi[3]=Vali,
elevi[4]=Adriana
Pentru a crea un vector nou se folosete instruciunea var i opiunea new a obiectului array:
Iniial valorile din vector sunt necompletate (vid), pentru a le completa, trebuie s le atribuim
valori ca i variabilelor obinuite: elevi[0]=Maria, elevi[1]=Alex etc.
O alt variant este crearea vectorilor direct cu valorile completate, sub forma:
Una din metodele importante asociate unui obiect de tip vector este metoda sort, apelabil
sub forma elevi.sort(); - cu efectul de ordonare alfabetic a valorilor din vector.
Condiii i bucle
Ca i n alte limbaje de programare, n JavaScript putem determina fluxul unui program prin
strcturi alternative (condiii) i repetitive (bucle). Acestea se bazeaz pe operatorii de tip
boolean (logici): ==,&& (i), ||(sau), !(not operatorul negaie).
Exemple:
((x == 5) && (y == 6)) va avea valoarea TRUE (adevrat) dac x=5 i y=6
((x!=4) || (y>=5)) va avea valoarea TRUE dac x diferit de 4 sau y mai mare sau egal
cu 5
if (conditie) {
instructiune1;
instructiune2;
...
}
else {
instruciune n;
instruciune n1; }
Pentru repetarea unor secvene de cod n funcie de anumite condiii, vom utiliza structurile
repetitive clasice While i For.
While este un ciclu repetitiv cu condiie iniial care se repet atta timp ct condiia este
satisfcut. Acest ciclu are un numr necunoscut de iteraii (repetri) nu tim pn cnd
condiia iniial va fi satisfcut (depinde de instruciuni) i poate s nu se realizeze niciodat
(dac la intrarea n ciclu, condiia deja nu este respectat). Forma general este:
While (condiie) {
Instruciune1;
Instruciune2;
...
}
Ciclul for este un ciclu cu condiie final i numr cunoscut de iteraii i are forma general:
Ciclul for este caracterizat de o variabil contor care determin numrul de iteraii. Variabila
contor primete o valoare iniial i crete cu o anumit valoare (increment) pn cnd
condiia nu mai este satisfcut.
Exemplu:
Baza construirii blocurilor JavaScript sunt funciile- mini programe care prelucreaz valori
ale unor parametrii, ale unor evenimente, returnnd o valoare.
Declararea funciei
<SCRIPT>
<!__
function function_name(value_name) {
...function code...
return (new_value)
}
// end hiding __>
</SCRIPT>
sau:
<SCRIPT>
<!__
function get_square(old_num) {
new_num = (old_num * old_num)
return (new_num)
}
// end hiding __>
</SCRIPT>
<HTML>
<HEAD>
<TITLE>Simple Math</TITLE>
<SCRIPT>
<!__
function simple_math(num) {
document.write("The call passed ",num," to the function.<BR>");
new_num = num * 2; // multiple the value by 2
document.write(num, " * 2 equals ",new_num,"<BR>");
return new_num; // return new_num to the function call
}
// end hiding __>
</SCRIPT>
</HEAD>
<BODY>
<H3>Let's watch some simple math:</H3>
<SCRIPT>
<!__
x = 5;
document.write("The starting number is ",x,"<BR>");
new_x = simple_math(x);
document.write("The function returned the number
",new_x,"<BR>");
// end hiding __>
</SCRIPT>
</BODY>
</HTML>
Gestionarea Evenimentelor
Codurile JavaScript pot fi puse s se execute la apariia unor evenimente n pagina HTML.
Aceste evenimente sunt produse de obicei de vizitatorul paginii, care deschide anumite
ferestre, apas butoane, completeaz formulare sau pur i simplu trece cu mausul ntr-o
anumit zon.
Evenimente posibile
blur cu onBlur
click cu onClick
change cu onChange
focus cu onFocus
load cu onLoad
mouseover cu onMouseOver
select cu onSelect
submit cu onSubmit
unload cu onUnload
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-
8859-1">
<title>Afisare mesaj</title>
<script language="javascript"
type="text/javascript">
function mesaj () {
alert("Ati apasat Linkul din
pagina!");
return; }
</script>
</head>
<body>
<p><a href="test1.html"
onClick="mesaj()">Acesta este un
link</a></p>
</body>
</html>
Aplicaiile client server pot fi implementate cu ajutorul unor limbaje de programare specifice
cum ar fi ASP, JSP sau PHP.
Ce este PHP?
Creat n anul 1994 de ctre Rasmus Lerdorf i folosit iniial pentru a putea obine informaii
despre cei care i vizitau pagina web, limbajul PHP este una dintre cele mai interesante
tehnologii web existente n prezent. Deoarece mbin caracteristici dintre cele mai complexe
cu simplitatea n utilizare, pentru ca este oferit gratuit si pentru ca este portabil pe orice
sistem de operare, PHP a devenit rapid un instrument de frunte pentru dezvoltarea aplicaiilor
n Web.
PHP permite dezvoltarea aplicatiilor cu un coninut Web dinamic, adic un coninut Web
care se modific automat de la o zi la alta sau chiar de la un minut la altul si poate oferi acces
la fiiere, baze de date i alte resurse direct de pe server.
PHP are suport pentru majoritatea serverelor Web (Apache, Microsoft Internet Information
Server, Microsoft Personal Web Server, Netscape Server, iPlanet Server, oReilly Website Pro
Server, Caudium, Xitami, OmniHTTPd i multe altele)
Are deasemenea suport pentru comunicarea cu alte servicii, folosind protocoale ca LDAP,
IMAP, SNMP, NNTP, POP3, HTTP, etc.
Aplicaiile client-server nu pot fi rulate i testate dect pe un calculator care ofer suportul
necesat server web cu suport PHP (i eventual un server de baze de date, dac este necesar).
Pentru a rula i testa aplicaiile, exista dou variante: folosirea unui server web existent pe
internet (servicii de gzduire gratuite sau pltite) sau instalarea unui server local.
In cele ce urmeaz, toate exemplele se vor referi la un server Apache cu suport PHP instalat
pe un sitem Windows XP i la un server MySQL, toate din pachetul PHP Triad, disponibil
gratuit: http://sourceforge.net/projects/phptriad/.
Instalarea PHP triad este simpl pe Windows, exist un singur fiier executabil care instaleaz
i configureaz serverul web, PHP-ul i serverul de baze de date MySQL. Toate fiiere vor fi
instalate n folderul Apace de pe discul C: . In acest folder, vom gsi ulterior folderul htdocs
n care trebuie puse toate aplicaiile pe care dorim s le testm. Pentru a rula aplicaii php,
trebuie doar s pornim serverul apache (Start > Phptriad > Apache console > Start Apache) i
eventual serverul de MySQL, dac este nevoie (Start > Phptriad > MySQL >MySQL D-NT).
n acest moment, n orice browser, la adresa http://localhost se va putea accesa serverul
instalat pe computerul local. Mai exact, adresa http://localhost acceseaz folderul
c:\apache\htdocs n care va cuta un fiier index.html sau index.php pe care s l afieze n
browser. Dac un asemenea fiier nu exist, va fi afiat structura de directoare i fiierele -
se ofer posibilitatea navigrii prin folder (n funcie de anumite setri din fiierele de
configurare, afiarea structurii de foldere i fiiere poate fi oprit din motive de securitate).
Dac se dorete apelarea unui anumit fiier (de exemplu test.php), numele su complet
trebuie trecut n adres: http://localhost/test.php. Folderele create n folderul htdocs, se
comport identic cu subdomeniile de pe internet. Dac n folderul htdocs se creaz un folder
test, prin adresa http://localhost/test - se apeleaz fiierul index.html sau index.php din
c:\apache\htdocs\test iar dac nu exist asemenea fiiere, se afieaz coninutul directorului.
Orice fiier php sau html din folderul test poate fi apelat direct prin
http://localhost/numefisier.extensie.
Pentru a utiliza PHP n HTML, se folosete elementul PHP, al crui format general este:
<?php
Instructiune php;
Instructiune php;
...
?>
Codul de mai jos afieaz n browser mesajul Hello.
Instruciunea echo afieaz textul n browser. De fapt textul este scris n codul fiierului
html ceea ce nseamn c sunt permise utilizarea tagurilor html n instruciune. Putem folosi
orice marcaje html, pentru a determina cum apare afiat informaia: echo <p>
hello</p><p>world</p> va creea dou paragrafe de text dou elemente P n codul
HTML.
Exemplul de mai jos arat mai multe elemente scrise n codul HTML prin instruciunea echo
din PHP.
n PHP, ca n alte limbaje de programare, putem include comentarii care s-i permit unui
cititor s determine cu uurin utilitatea scriptului, ct i alte informaii referitoare la script.
De exemplu, se poate include un comentariu care precizeaz numele fiierului care conine
scriptul, astfel nct acesta s apar n versiunile tiprite ale scriptului.
<?php
// script - exemplu.php
// Acest script afieaz i un mesaj vizibil
pentru utilizator.
echo (Acesta este un script teribil.);
?>
Numele unei variabile PHP poate conine litere, cifre i caracterul de subliniere (_) dar
trebuie s nceap cu o liter sau caracterul de subliniere. O variabil nu poate conine spaii.
Exemple: $var, $nume, $date_client, $valoare, $x35.
Ca i JavaScript, PHP suport vectori (arrays) - colecii de valori individuale grupate ntr-o
singur variabil.
Numerici
Associativi
Multidimensionali
Vectorii numerici sunt similari celor din Javascript valorile individuale din vector sunt
accesibile printr-un index (ID) numeric. Crearea unui vectornumeric poate fi fcut astfel:
$studenti = array("Alexandra","Vlad","Cristina"); n acest caz, $studenti[0] va avea valoarea
Alexandra, $studenti[1] va avea valoarea Vlad i $studenti[2] va avea valoarea
Cristina.
$studenti[0] = "Alexandra";
$studenti[0] = Vlad;
$studenti[2] = Cristina;
Vectorii asociativi
Vectorii asociatvi folosesc n locul id-urilor numerice, id-uri valorice ca n exemplul urmtor:
Exemplu:
);
Numere i iruri
Decizia privind modul de stocare a datelor este important. n mod caracteristic, datele se
stocheaz sub form de numere atunci cnd se dorete executarea unor operaii matematice
asupra datelor. Pe de alt parte , irurile sunt stocate folosind o modalitate care faciliteaz
nelegerea lor de ctre operatorul uman.
Numere
PHP folosete dou categorii de numere: ntregi i duble. Numerele ntregi reprezint
numerele fr parte fracionar folosite la numrare, plus zero i numerele negative. Cu alte
cuvinte, n PHP termenul de ntreg are aceai semnificaie ca i n matematic.
De exemplu, numrul 1000 poate fi reprezentat n PHP sub form de ntreg. Numerele duble,
spre deosebire de numerele ntregi, reprezint valori numerice care pot include fracii
zecimale, ca de exemplu 2,5. Numerele duble sunt sinonime cu numerele reale din
matematic. Uneori, numerele duble mai sunt denumite i numere cu virgul mobil (n limba
englez se folosete punctul zecimal n loc de virgul).
Un numr PHP dublu se scrie cu ajutorul unei serii de cifre, plasnd un punct zecimal la
locaia adecvat. Ca n cazul ntregilor PHP,dac valoarea este negativ, scriei un semn
minus imediat la stnga numrului. De asemenea, din nou similar cu numerele PHP ntregi,
trebuie s evitai a scrie spaii sau virgule ca parte a unui ntreg PHP. Iat cteva exemple de
numere duble corecte i incorecte:
-2.5 Corect
0.0 Corect
5.125 Corect
2 Incorect; i lipsete punctul zecimal
Cnd scriem numere duble foarte mari sau foarte mici, putem folosi o form special, care
arat astfel: 2.3e4. Numrul plasat dup litera e determin nmulirea cu 10 la puterea dat de
numrul respectiv a numrului plasat anterior literei respective. De exemplu, numrul dublu
dat anterior are valoarea s,3x104, iar valoarea dubl -1.e-10 are valoarea -1,1x10-10.
iruri (string)
irurile sunt utile pentru stocarea datelor care nu pot fi calculate, precum nume i adrese.
Pentru a specifica un ir n PHP, caracterele care alctuiesc irul sunt incluse ntre ghilimele
duble; de exemplu, irul reprezentnd numele fizicianului care a formulat teoria relativitii
este Albert Einstein.
PHP faciliteaz includerea n iruri a unor caractere speciale, precum caracterele de salt la
linie nou, prin furnizarea de secvene escape care reprezint caractere speciale. Iat
secvenele escape folosite n PHP:
Ca exemplu, iat un ir care include un retur de car, urmat de un salt la linie nou: Salut,
lume! \r\n. Reinei c fiecare secven escape ncepe cu un backslash (\). Pentru a include
un backslash ntr-un ir, trebuie s folosii secvena escape adecvat, care este alctuit din
dou caractere backslash.
Operatori
Utilizarea asteriscului (*) ca simbol al nmulirii poate prea neobinuit; totui, este un
simbol frecvent folosit n limbajele de programare, deoarece previne confuzia care poate
aprea dac n locul acesteia ar fi fost folosit litera x.
Iat cteva exemple simple care demonstreaz utilizarea operatorilor pentru a efectua calcule
i pentru a atribui valori variabilelor:
$profit = $vanzari - $cheltuieli;
$arie = $inaltime * $latime;
$circumferinta = $3.14159 * $diametru;
$rata_impozit = $impozit / $venit_impozabil;
n afar de aceti operatori aritmetici familiari, PHP include numeroi operatori mai puin
cunoscui:
% Modulo ++ Incrementare
<<-- Descrementare . Concatenare
Similar operatorului de mprire, operatorul modulo execut o mprire; cu toate acestea,
operatorul modulo returneaz restul, nu ctul mpririi. De exemplu, prin mprirea lui 10
la 3 se obine ctul3 i restul 1. Deci, instruciunea de atribuire atribuie variabilei $x valoarea
1.
n operare, operaiile de adugare, respectiv de scdere a unei uniti dintr-o valoare sunt
frecvent ntlnite. Pentru comoditate, PHP include operatori care execut aceste operaii.
Operatorul de incrementare adaug o unitate la valoarea unai variabile, iar operatorul de
decrementare scade o unitate din valoarea unai variabile. Operatorii sunt utilizai astfel:
++$x;
--$y;
Primele dou instruciuni de atribuire aloc valori ir unor variabile scalare. Ultima
instruciune de atribuire folosete operatorul de unire pentru a uni numele de botez cu numele
de familie i pentru a insera un spaiu ntre acestea. Valoarea atribuit variabilei $nume este
Titan Berkovici.
n afar de operatori, PHP include funcii care execut operaii utile. Iat unele exemple de
funcii:
n afar de acestea, PHP include multe alte funcii. Majoritatea funciilor necesit una sau mai
multe valori de intrare, cunoscute sub numele de argumente. De exemplu, funcia sqrt
necesit un argument care specific valoarea a crei rdcini ptrate trebuie calculat.
Condiii i bucle
Dup cum precizam n capitolul trei, fluxul unui program poate fi determinat prin structuri
alternative (condiii) i repetitive (bucle) bazate pe operatorii de tip boolean (logici):
==,<,>,<=,>=,&& (i), ||(sau), !(not operatorul negaie).
Exemple:
((x == 5) && (y == 6)) va avea valoarea TRUE (adevrat) dac x=5 i y=6
((x!=4) || (y>=5)) va avea valoarea TRUE dac x diferit de 4 sau y mai mare sau egal
cu 5
Pentru a se folosi o structur alternativ, utilizm instruciunea IF care n PHP are sintaxa:
if (conditie)
instructiune daca conditie returneaz true;
else
instructiune daca conditie returneaz false;
while (condiie)
instuciune;
do
{
instruciune;
}
while (condition);
Exemplul urmtor afieaz de 5 ori mesajul Hello World, folosind o variabil contor
i:
foreach repet un bloc de instruciuni pentru fiecare din elementele unui vector
Interaciunea cu vizitatorii
Formulare HTML
Cele mai multe aplicaii PHP se bazeaz pe preluarea datelor de la vizitatorii unui sit i
returnarea unor rezultate dup procesarea datelor iniiale. Interaciunea ntre vizitatori i
aplicaia rulat pe sit este realizat cu ajutorul formularelor HTML.
Figura 19 arat utilizarea unui formular HTML pentru a transmite valori dinspre utilizator
nspre o aplicaie PHP. Codul este n continuarea imaginii.
Una din funcionalitile interesante ale PHP este dat de directiva include care permite
integrarea unei seciuni de cod n mai multe fiiere ori-de-cte ori se dorete, fr a scrie
efectiv codul de mai multe ori. Codul respectiv este scris ntr-un fiier separat i integrat unde
este necesar prin aceast directiv include.
De exemplu, dac se dorete afiarea unui anumit mesaj pe fiecare pagin a unui sit (o adres,
date de contact, data de azi), scrierea efectiv a informaiei nu este eficient: se pierde timp la
inserare, pot aprea erori (de scriere), iar dac este necesar modificarea informaiei, trebuie
editat fiecare fiier n parte.
n codul care urmeaz este prezentat soluia de a folosi include pentru a afia un mesaj de
Bine ai venit. La rularea fiierului includ.php n browser, se obine rezultatul din figura 20:
Fiierul header.php:
<h2>Bine ai venit</h2>
<?php
echo "Astazi este". date("F d");
?>
Fiierul includ.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD
HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.d
td">
<html>
<head>
<title>
Bine ai venit
</title>
</head>
<body>
<?php
include('header.php');
?>
</body>
</html>
Funciile definite de utilizator sunt o alt modalitate de cretere a eficienei n scrierea unui
cod PHP, permind apelarea unei secvene de cod din orice zon a programului. Funciile
pot modifica valorile unor variabile i sunt n sine mini-programe care au variabile proprii.
Pentru a utiliza o variabil n cadrul unei funcii, ea trebuie declarat de tip global, cu
directiva global $varname.
O funcie poate fi scris oriunde n cod i poate fi apelat de oriunde, sau poate fi scris ntr-
un fiier separat i inclus ca n exemplele de mai sus.
n cadrul modelului, nume_functie este numele funciei, iar nume_argument este numele
argumentului funciei. n PHP, numele funciilor nu prezint sensibilitate la diferena ntre
majuscule i minuscule; ca atare, f() i F() reprezint referiri la aceeai funcie. Cuvntul
cheie function, numele funciei i lista cu argumente alctuiesc antetul funciei. Termenul de
corp al funciei se refer la instruciunile incluse ntre parantezele acolade care urmeaz dup
antetul funciei. Instruciunile din corpul funciei sunt executate atunci cnd funcia este
apelat.
Dac se dorete definirea unei funcii care nu are argumente, se poate omite nume_argument
dac se vrea definirea unei funcii cu mai multe argumente, se pot include argumente
suplimentare dup nume_argument, fiecare argument fiind separat de vecinul su prin
intermediul unei virgule.
Parantezele i numele argumentelor incluse ntre aceasta poart numele de list cu argumente.
Ca exemplu, iat o funcie care calculeaz aria unui dreptunghi:
nainte de a prezenta creare i utilizarea bazelor de date MySql, trebuie discutate cteva
concepte legate de proiectarea unei baze de date de cte tabele este nevoie, ce vor conine,
cum vor fi legate ntre ele .a.m.d.
Anomalii i redundane
De ce o schema a bazei de date poate fi "rea"? Anomaliile, care apar n lucrul cu baza de date.
se produc datorit dependenelor nedorite" care se manifest ntre atributele din cadrul
schemelor relaiilor din baza de date. Aceste dependene determin creterea redundantei
datelor si reducerea flexibilitii structurii bazei de date. Fcnd extrem de dificil lucrul cu ea.
n al doilea rnd. ca o consecina a primei cauze, actualizarea unei baze redundante poate
duce la situaia cnd ea va conine fapte logic contradictorii. O parte de date pot rmne
nemodificate. Deci o baz de date "rea" duce la apariia unor inconsistene la modificarea
datelor.
In al treilea rnd. o baza de date "rea" poate limita posibilitatea de inserare a datelor. Intr-o
relaie nu pot fi introduse date despre o entitate pn nu se cunosc alte date conform
restriciilor de integritate ale entitii.
In al patrulea rnd. pot aparea pierderi de date la tergere. In mod normal, prin operaia de
tergere trebuie s se poat elimina din baza de date numai datele pe care dorim s le stergem.
Atunci cnd. concomitent cu aceste date sunt terse si altele, care nu mai pot fi reconstruite
din baza de date, spunem ca la operaia de tergere se produc pierderi de date.
REDUNDN,
n proiectarea bazelor de date relationale, tehnica normalizrii este folosit pentru a elimina
asa-numitele anomalii de actualizare. Aceast tehnic se sprijin pe o solid fundamentare
teoretic, n care notiunea de dependent functional joac un rol cheie.
Dac vom considera o tabel care consemneaz comenzile clientilor unei companii, aceasta
ar putea avea urmtoarele atribute:
Loc_C - Localitatea
Tabela poate descrie corect comenzile, dar exist o serie de inconveniente, majoritatea
datorate redundantei. De pild schimbarea adresei unui client impune actualizarea adresei n
toate comenzile pe care acesta le-a lansat (anomalia de modificare). Pe de alt parte nu se pot
memora informatii despre un client ct vreme nu se deruleaz comenzi ale acestuia
(anomalia de inserare). n fine, dac stergem singura linie din tabel cuprinznd o comand a
unui client, pierdem toate informatiile relative la acesta.
Normalizarea se realizeaz prin descompunerea tabelelor n mai multe tabele, astfel nct
tabela initial s poat fi recompus fr pierderi de date prin operatii de conectare (join). n
principiu, se ajunge n majoritatea cazurilor la o tabel numit primar, care cuprinde datele
esentiale (n exemplul anterior se poate considera o tabel avnd doar coloanele Cod_C,
Cod_P si Cant) si mai multe tabele numite de obicei nomenclatoare, cuprinznd detalii
caracteristice pentru anumite entitti (de exemplu o tabel cu toti clientii si informatiile
despre acestia: Cod_C, Nume_C, Loc_C, Info_C, etc).
Pentru o aplicatie care trebuie sa gestioneze cartile dintr-o biblioteca sau librarie, avem
nevoie de o baza de date care sa contina date despre cartile cuprinse. De exemplu, titlu,
autori, ISBN, domeniu, nr. de pagini, editura.
Un tabel realizat fizic (cu pixul sau in excel) in care introducem cartile pe care le avem, ar arata la o prima
vedere in modul urmator.
In primul rand, acest tabel nu este destul de eficient in a gestiona spatiul de stocare. Daca ne
imaginam pentru o secunda ca Luke si Laura au fost scriitori harnici si ne-au livrat 500 de
carti pentru baza noastra de date, numele lor va aparea de 500 de ori fiecare. Deci 25
caractere (fiecare nume) * 500 = 12.500 biti ocupati degeaba. (date redundante)
In al doilea rand, aceasta structura nu protejeaza intgritatea datelor. Daca ei ne-au livrat cele
500 de carti pe parcursul a catia ani si datele nu au fost introduse cu copy+paste ci scrise
efectiv de o persoana, exista o probabilitate ridicata sa existe greseli de scriere pe undeva
(Thompson in loc de Thomson). Datele noastre contin acum greseli si oricine va cauta carti
dupa numele autorului va avea cateva rezultate lipsa. Acelasi lucru se intampla cu numele
editurii. Daca Sams publica sute de titluri si numele este gresit introdus pe ici pe colo, lista
cartilor la o cautare dupa editura nu este completa.
In al treilea rand, acest tabel este rigid. O data ca ne-am limitat la un maxim de 2 autori la o
carte, desi exista carti scrise de colective de autori mai mari de zece. Acest tip de limitare este
foarte frecvent intalnit in tabelele cu informatii personale referitoare la diversi indivizi, unde
designul tipic de tabel include coloane pentru Telef.1, Telef.2 si Telef.3. In ambele cazuri
limitam posibilitatile de crestere pentru datele noastre. Alta limitare este generata de faptul
ca, folosind un singur tabel, marimea acestuia va creste mai repede si vom putea avea
dificultati din partea sistemului de operare, referitoare la marimea fisierului de date.
Prima forma implica eliminarea datelor redundante din randurile orizontale. Trebuie sa ne
asiguram ca, pe un anumit rand nu exista nici o duplicare si ca fiecare coloana contine
minimul de informatie posibila. (atomicitate)
In tabelul nostru de mai sus, avem doua violari ale formei normale 1: In primul rand avem
mai mult decat un camp pentru autor si in al doilea rand, campul domeniu contine mai mult
decat o singura informatie (un singur fapt), ceea ce duce la dificultati in cautarea cartilor dupa
un anumit domeniu. In plus, cu doua campuri de auor, avem doua campuri in care trebuie sa
cautam, pentru a identifica scrierile unui anumit autor.
Putem fenta aceste probleme, prin modificarea tabelului astfel incat sa aiba un sungur camp pentru autor, doua
inregistrari pentru fiecare carte cu doi autori, dupa cum arata mai jos:
067232584
MySQL Tutorial Laura Thomson MySQL 300 Sams
5
067232584
MySQL Tutorial Luke Welling MySQL 300 Sams
5
Desi aceasta abordare nu are coloane redundante (date repetative pe aceasi linie data), si
campul domeniu are doar o informatie, avem problema ca acum avem doua inregistrari
(randuri) pentru fiecare carte. Mai mult, pentru a ne asigura ca o cautare dupa autor si subiect
functioneaza (ex. Carti despre PHP de Luke Welling), am avea nevoie de patru randuri ca sa
avem fiecare combinatie de autor si domeniu. In plus, nu ne conformam cu foma normala doi,
care urmeaza mai jos.
O solutie mai buna este sa separam datele redundante in tabele separate, cu tabelele in
legatura, unele cu altele. In cazul acesta trebuie sa cream un tabel autor si un tabel domeniu
pentru a stoca informatia, si renuntam la aceste campuri din tabelul carti.
Autori
Autor_I
Nume Prenume Biografie
D
Domenii:
Domeniu_I
domeniu
D
1 PHP
2 MySQL
Carti:
Definirea relatiilor
Datele noastre sunt acum frumos impartite. Dar inca nu avem relatii intre tabele, deci nu
putem lucra cu ele. Exista trei tipuri principale de relatii intre doua tabele:
Unu la unu (1 : 1)
Relatia dintre tabelul carti si tabelul autor este de tipul n:n. O carte poate fi scrisa de unul sau
mai multi autori. De asemenea un autor poate avea una sau mai multe carti. Pentru a realiza o
legatura de asemenea tip, avem nevoie de o a treia tabela care sa serveasca drept legatura
intre cele doua:
carti_autori:
ISBN Autor_ID
0672317842 1
0672317842 2
0672325845 1
0672325845 2
In mod similar, tabelul domeniu este legat in relatie n:n de tabelul carti, pentru ca o carte se
poate referi la mai multe domenii si un domeniu poate fi abordat de mai multe carti.
carti_domeniu:
ISBN Domeniu_ID
0672317842 1
0672317842 2
0672325845 2
Relatiile 1:n vor fi descrise mai jos. In momentul de fata, avem stabilite relatii intre tebelele
carti, autori si domenii. O carte poate avea acum un numar nelimitat de autori si se poate
referi la un numar nelimitat de domenii. De asemenea putem cu usurinta cauta carti dupa un
anumit autor sau care se refer la un anumit domeniu.
In tabelele create mai sus pentru stablirea relatiilor n:n, valorile stocate sunt cheile primare
din tabelele carti, autori si domenii. Campurile dintr-un tabel care se refera la chei primare
din alt tabel sunt denumite chei externe si se utilizeaza pentru definirea relatiilor. In
majoritatea sistemelor de gestiune a bazelor de date cheia externa poate fi folosita si pentru a
forta anumite restrictii. De exemplu, nu veti avea voie sa introduceti o inregistrare in
carti_domenii decat daca respectiva carte si respectivul domeniu deja exista in tabelele carti
respectiv domenii. De asemenea nu pot fi sterse inregistrarile din tabelele originale, cat timp
exista inregistrari in tabelele copii.
Forma normala 2
Daca forma normala 1 se refera la redundanta datelor pe randuri, forma normala 2 se refera la
redundanta pe coloane. Dupa cum am mai spus, formele sunt progresive, deci nu putem
respecta forma normala 2 daca nu am trecut prin forma normala 1.
Acest tabel este corect, dupa forma normala1; nu se repeta date pe un anumit rand si fiecare
coloana are minimul posibil de informatie. Totusi, in coloana editura, avem acelasi nume de
mai multe ori, ceea ce contravine formei normale 2. Dupa cum am mentionat aceasta lasa loc
pentu erori de inregistrare a datelor si nu este eficient in utilizarea spatiului de stocare.
Pentru a normaliza acest tabel trebuie sa impartim din nou datele, dupa cum urmeaza:
Edituri:
1 Sams
In cazul acesta, se realizeaza o relatie 1:n intre tabelul carti si tabelul edituri. O anumita carte
poate fi realizata de o singura editura (relativ la scopul problemei noastre) si o editura va
scoate mai multe carti. In cazul unei relatii 1:n, trebuie sa plasam o cheie externa in zona de
multi, care sa se refere spre cheia primara:
carti:
A doua cerinta pentru Forma Normala 2 este ca nu poti avea date in tabele cu o cheie
compusa care sa nu se relationeze la toate partile cheii compuse. O cheie compusa este o
cheie primara formata din mai multe coloane, ca in tabelul carti_autori.
Sa presupunem ca am vrea sa adaugam o monitorizare a review-urilot primite pentru fiecare
carte si am incepe cu tabela urmatoare:
review:
Reviewer_I Reviewer_Na
ISBN Review_Text
D me
067232584 1 What a great book! I learned a Mike Hillyer
5 lot!
In acest tabel, combinatia Reviewer_ID & ISBN formeaza cheia primara (compusa),
asigurandu-ne ca nici o persoana nu va scrie mai mult de o referinta referitoare la o anumita
carte. In acest caz, numele persoanei care scrie recomandarea este legat doar de reviewer_id
si nu de ISBN, ceea ce reprezinta o violare a formei normale 2.
Aceasta situatie se rezolva prin folosirea a doua tabele separate pentru datele care se
relationeaza doar la o parte din cheia primara. Daca portiunea cheii primare la care se refera
campul este cheie primara in alt tabel, datele(corespunzatoare) trebuie mutate in tabelul
respectiv. (ca si in aceasta situatie unde reviewer_id va fi un tabel separat).
Persoane_care_recomanda (reviewers):
Revie Reviewer
Reviewer_Na Reviewer Reviewer Reviewer Reviewer_
wer_I _Provinc
me _House _Street _City PostalCode
D e
Main
1 Mike Hillyer 123 Calgary Alberta T1S-2N2
Street
Review (recomandari):
067232584
1 What a great book! I learned a lot!
5
Aceasta forma este utilizata mai rar. Scopul ei este sa elimine datele care nu depind in
intregime de o cheie primara, dar sunt dependente de alte valori din tabela. In tabela
Persoane_care_recomanda, campurile Reviewer_Street si Reviewer_City depind de fapt
(direct) de codul postal campul Reviewer_PostalCode si nu de Reviewer_ID.
Pentru a aduce acest tabel in corespondenta cu forma normala 3, va trebui creat un tabel bazat
pe codul postal:
PostalCode Table:
Bineinteles ca acest nou tabel, nu corespunde formei normale nr.2 din moment ce Street si
City sunt redundante pe verticala, si deci trebuie despartite din nou in tabele separate si zona
(care decide codul postal) va fi in propriul tabel pe care tabelul oras il va referi ca si cheie
externa.
Ultimul exemplu de normalizare sugereaza si ideea ca normalizarea continua, si continua si
continua. De fapt, mai exista inca doua forme normale (4 si 5), dar scopul lor este mai mult
teoretic. Normalizarea aditionala duce la sintaxe mai complexe si poate cauza scaderi de
performante. In unele cazuri performanta poate fi restabilita prin de-normalizare, dar asta deja
este o alta poveste.
Concluzie
Este in general o idee buna sa se urmreasc organizarea datelor mcar conform cu Forma
Normala2 pentru a evita datele redundante, munca inutil (introducerea datelor redundante),
pentru a preveni datele eronate si de a utiliza la maximum capacitatile de stocare existente.
Este bine ca aceeai valoare s nu fie stocat n mai multe locuri, altfel vor trebui realizate
update-uri multiple cnd anumite date trebuie modificate i pot aprea date eronate n tabele.
Forma normala 3 a redus i mai mult redundana, dar cu costul complicrii i reducerii
performanei. In exemplul de mai sus nu prea ne ateptm ca numele strzilor i oraelor s se
schimbe prea des de aceea depinde de la caz la caz unde se pune balana ntre normalizare
i necesar/simplitate.
Ce este XML?
XML (EXtensible Markup Language) este un limbaj descriptiv utilizat pentru structurarea i
organizarea, stocarea i transmiterea datelor. Este suportat de toate sistemele de operare i nu
necesit licen. XML nu este un limbaj de programare i este similar cu HTML-ul dei exist
o serie de diferene majore:
HTML folosete taguri predefinite (<p> pentru paragraf, <h1> pentru titluri,<a>
pentru linkuri) iar XML permite crearea tagurilor proprii cu diferite semnificaii.
Exemplul de mai jos prezint date structurate n format XML, cu taguri definite
expres. Cdul ns nu realizeaz (nc) nimic. Este nevoie de o aplicaie care s
proceseze aceste date:
<?xml version="1.0" encoding="ISO-8859-1"?>
<mesaj>
<pentru>Risteiu</pentru>
<dela>Cucu</dela>
<subiect>Tehnologii Web</subiect>
<continut>Cand este examenenul de TW?</continut>
</mesaj>
XML folosete o sintaxa simpl i clar. Considernd exemplul de mai sus, putem face cteva
observaii:
Un document XML conine dou zone: prolog i root element. Zona prolog apare
la nceputul documentului i este utilizat pentru a descrie documentul fiind
similar zonei head din HTML.n cazul nostru, n prolog avem informaii despre
versiunea de XML utilizat i despre setul de caractere folosit. Restul formeaz
documentul propriu-zis (root element).
Elementele pot avea atribute (ca n HTML) dar este obligatorie trecerea valorilor
atributelor n ghilimele sau apostrofi. (<mesaj data=12/11/2002>...</mesaj>)
Recomandrile XML presupun c interpretarea fiierelor XML este fcut ntr-un anumit
mod, de un procesor XML (parser) . Cele mai cunoscute procesoare sunt Microsoft XML
Parser (MSXML), Apache Xerces2 si Oracle XML. Unele procesoare sunt de asemenea
disponibile n pachete care instaleaz automat i procesoare XSLT folosite pentru a afia
date XML n browser.
Procesarea DOM
Afiarea unui document n forma arborescent, subliniaz legtura existent ntre elemente.
n figura de mai jos, elementul <catalog> este printele elementelor <cd> i strmo pentru
<title>, <artist>, <country> .a.m.d. Elementele <cd> sunt frai, cu printe <catalog> i copii
<title>, <artist>, <country>. Vizualizarea de mai jos este obinut cnd nici un fel de stiluri
pentru formatarea documenteleor XML (sub forma XSLT) nu sunt gsite.
Procesarea SAX prezint un document XML sub forma unui ir de evenimente. Pentru
fiecare evniment trebuie scrise aciuni corespunztoare, care s fie apelate la activarea
evenimentului. Asemenea tip de procesare funcioneaz foarte bine cu JAVA.
Unelte XML
Vizualizarea fiierelor XML brute este facil n Internet Explorer, Mozilla, Firefox, Opera i
Netscape6+. Pentru a face documentele XML s arate ca pagini web este nevoie de folosirea
unor informaii adiionale (XSLT).
Majoritatea browserelor importante au la ora actual suport pentru XML i XSLT.
Internet Explorer suport XML, CSS, XSLT i XPath ncepnd cu versiunea 6. Versiunea 5
are support pentru XML dar componenta XLS nu este compatibil cu recomandrile oficiale
ale W3C.
Mozilla Firefox, ncepnd cu versiunea 1.0.2, are suport pentru XML and XSLT (i CSS).
Mozilla include expat pentru procesarea XML i include suport pentru XML + CSS. Este de
asemenea disponibil i cu implementare XSLT. Netscape folosete motorul Mozilla ncepnd
cu versiunea 8, deci are acelai tip de suport pentru XML / XSLT.
Opera are suport XML and XSLT (i CSS) ncepnd cu versiunea 9. Versiunea suport doar
XML + CSS.
n cazul deschiderii unui fiier XML eronat, eroarea va fi semnalat n browser (n cazul de
mai jos s-a greit nchiderea unui element):
Documentele XML nu au elemente de formatare n ele astfel c majoritatea browserelor
afieaz documentul aa cum este. Pentru a formata datele dintr-un document XML, se poate
folosi CSS, XSL, Javascript sau XML Data Islands.
Utilizarea XLS
Limbajul XSL care este la rndul sau un limbaj XML. Ideea general din spatele XSL
pornete de la conceptele despre CSS introduse n versiunile recente ale limbajului HTML.
Folosind etichetele XSL create n acest scop, este posibil crearea automat a documentelor
HTML standard ale cror coninuturi vin direct din fiierele de date XML. s vedem prin
exemplu, cum fiierul produse.xml va fi publicat:
<?xml version="1.0"?>
<NewShipping>
<Heading>Aplicatii XML HTML</Heading>
<PressRelease>
<Summary>Cele mai structurate informatii
web</Summary>
<Location>
Universitatea "1 Decembrie 1918" din Alba
Iulia
</Location>
<Date Day="26" Month="December" Year="2003" />
<PressNote>Chestiunea zilei</PressNote>
</PressRelease>
<SoftwareLine>
<LineName>SVG pentru modelarea sistemelor</LineName>
<Product>
<Name>P1</Name>
<Description>D1</Description>
<Feature>F1</Feature>
</Product>
<Product>
<Name>P2</Name>
<Description>D2</Description>
<Feature>F2</Feature>
</Product>
</SoftwareLine>
</NewShipping>
BIBLIOGRAFIE
1. Mircea Rteiu, Herbert ten Thij, Gheorghe Marc Bazele comunicrii pe Internet:
planning, designing, programming Editura Aeternitas, 2002.
2. Mircea Rteiu Provocarea viitorului internetului: Scalabilitatea informaiei
Editura Aeternitas, 2003.
3. Mircea Rteiu, At. Styliadys, - Technology, Education and their Interaction - ATEI of
Thessaloniki Publisher 2006, ISBN 961-90887-2-9
4. Mircea Rteiu, At. Styliadys, Herbert Ten Thij, Ghe. Marc - Web- Based Object
Oriented Modeling - Athens 2005, ISBN 960-90889-2-9
5. Ian Graham - The XHTML 1.0 Web Developement Sourcebook - September, 2000
ISBN: 0 471 37486 5, Published by John Wiley and Sons
6. Ian Graham - The HTML 4.0 Sourcebook - 6 April 1998 ISBN 0 471 25724 9,
Published by John Wiley and Sons
7. Peter Moulding - PHP Black Book - Paraglyph Publishing; Book and CD ROM
edition (July 1, 2002), ISBN: 1932111093
8. Hugh E. Williams, David Lane - Web Database Applications with PHP & MySQL -
O'Reilly & Associates; 1st edition (March 2002), ISBN: 0596000413
9. Luke Welling, Laura Thomson - PHP and MySQL Web Development - Sams; Book
and CD edition (March 30, 2001), ISBN: 0672317842
10. Ian Graham and Liam Quin - The XML Specification Guide - February 1999 ISBN: 0
471 32753 0 Published by John Wiley and Sons
11. Dave Shea, Molly E. Holzshlag The Zen of CSS Design: Visual Enlightment for the
Web Peachpit Press, February 2005.
12. Elizabeth Naramore, Jason Gerner, Yann le Scouarnec, Jeremy Stolz, Michael K.
Glass Beginning PHP5, Apache and MySql Web Development Wiley Publishing
Inc., 2005.
13. Arman Danesh Javascript in 10 Simple Steps or Less Wiley Publishing Inc., 2004,
ISBN: 0-7645-4241-9.
14. Sas Jacobs Beginning XML with DOM and Ajax, From Novice to Professional
Apress, 2006.
15. http://w3schools.com/
16. http://www.php.net/manual/en/ref.strings.php
17. http://www.php.net/
18. www.hotscripts.com/PHP/Scripts_and_Programs
19. php.resourceindex.com
20. http://javascript.com/
21. http://www.javascriptkit.com/
22. http://www.optimizare-site.com/