Sunteți pe pagina 1din 293

1

MODULUL I Microsoft Access



1. Elemente de baz ale programului Access
Access 2010 creeaz fiiere n formatul de fiier .accdb, care nu poate fi accesat cu versiuni de
Access anterioare, Acces 2007.
Aceast seciune rezum tipurile de fiier care sunt utilizate de formatul de fiier Access 2010.
.accdb Aceasta este extensia de nume de fiier standard pentru bazele de date n format
Access 2010. O baza de date Access 2010 poate fi proiectata ca baza de date client standard sau ca o
baz de date Web.
Baza de date Client O baz de date client este un fiier de baza de date Access tradiional
care se stocheaz pe hard diskul local, ntr-o partajare de fiiere sau ntr-obiblioteca de documente.
Tabelele sale nu au fost proiectate s fie compatibile cu caracteristica Publicare n Access Services; prin
urmare, au este necesar programul Access pentru a se executa. Toate bazele de date care s-au creat cu
versiunile anterioare de Access se deschid ca baze de date client n Access 2010.
Baza de date Web O baza de date Web este una care a fost creata utiliznd comanda Baza
de date Web necompletat n vizualizarea Microsoft Office Backstage sau una care a trecut cu succes
testele aplicate de Verificatorul de compatibilitate (localizat sub Publicare n Access Services de pe fila
Salvare i publicare n vizualizarea Backstage). Tabelele dntr-obaza de date Web sunt structurate s
fie compatibile cu caracteristica de publicare i nu se pot deschide n vizualizarea Proiect (dei avei n
continuare posibilitatea s le modificai structura n vizualizarea Foaie de date). O baza de date Web
conine i cel puin un obiect (de exemplu, un formular sau un raport) care se v reda pe server.
Componentele bazei de date care se redau pe server pot fi utilizate intr-un browser Internet standard de
ctre oricine se conecteaz la acel server, fr a fi necesar ca Access 2010 s fie instalat pe computerul
sau. Orice componente ale bazei de date care nu se redau pe server se pot utiliza n continuare pe un
computer care are instalat Access 2010 prin selectarea Deschidere n Access n meniul Aciuni din
SharePoint.
.accdw Un fiier .accdw este un fiier creat automat pe care l utilizai pentru a deschide o
baza de date Web n programul Access. Poate fi considerata ca fiind o comanda rapida la aplicaia Web
care deschide ntotdeauna aplicaia n Access, n loc s o deschid n browser. Access i Access Services
creeaz automat fiierul .accdw, cnd utilizai comanda Deschidere n Access din SharePoint din meniul
Aciuni site de pe site-ul aplicaiei Web . Avei posibilitatea fie s deschidei fiierul .accdw direct de pe
server, fie s salvai fiierul .accdw pe computer, apoi s facei dublu clic ca sa-l executai. n oricare
dintre situaii, cnd deschidei fiierul .accdw, baza de date se copiaz pe computer ca fiier .accdb.
.accde Aceasta este extensia de nume de fiier pentru bazele de date desktop Access 2010
care sunt compilate ntr-oversiune blocata sau doar pentru execuie a fiierului .accdb original. Daca
fiierul .accdb conine cod VBA (Visual Basic for Applications), se v aduga numai codul compilat la
fiierul .accde. Drept urmare, codul VBA nu poate fi vizualizat sau modificat de ctre utilizatori. De
asemenea, utilizatorii care lucreaz cu fiierele .accde nu pot efectua modificri de proiectare n formulare
sau rapoarte. Creai fiierele .accde din fiiere .accdb procednd astfel:
1. n Access 2010, deschidei baza de date pe care dorii s o salvai ca fiier .accde.
2. Pe fila Fiier/File, facei clic pe Salvare i publicare/Save&Publish, apoi sub Salvare baza
de date ca/Save Database As, facei clic pe Efectuare ACCDE.
3. n caseta de dialog Salvare ca/Save As, navigai la folderul n care dorii salvarea fiierului,
tastai un nume pentru fiier n caseta Nume fiier/File Name, apoi facei clic pe
Salvare/Save.
.accdt Aceasta este extensia de nume de fiier pentru abloanele de baza de date Access.
Avei posibilitatea s descrcai abloane de baza de date de la Office.com sau s salvai o
baza de date ca ablon fcnd clic pe ablon (*.accdt) n spaiul Partajare din vizualizarea
Microsoft Office Backstage.
.accdr Extensia de nume de fiier .accdr v permite s deschidei o baza de date n mod
de execuie. Prin simpla modificare a extensiei numelui de fiier al bazei de date din .accdb
n .accdr, avei posibilitatea s creai o versiune blocata a bazei de date Access 2010.
Extensia de nume de fiier poate fi modificata napoi la .accdb pentru a restabili
funcionalitatea completa a bazei de date.
.mdw Fiierele cu informaii despre grupul de lucru stocheaz informaii pentru bazele de
date securizate. Nu s-au efectuat modificri n formatul de fiier .mdw pentru Access 2010.
Manager grup de lucru Access 2010 creeaz fiiere .mdw care sunt identice cu cele create n
versiunile de la Access 2000 pana la Access 2007. Fiierele .mdw care sunt create n acele
versiuni anterioare pot fi utilizate de bazele de date din Access 2010.

Nota Avei posibilitatea s utilizai Access 2010 pentru a deschide o baza de date ntr-o versiune
anterioar care a fost securizat utiliznd securitate la nivel de utilizator. ns, securitatea la nivel de
utilizator nu exista n bazele de date Access 2010. Nu exista nici o comanda n Panglica pentru a porni
Manager grup de lucru, dar avei n continuare posibilitatea s pornii Manager grup de lucru n Access
2010 utiliznd comanda DoCmd.RunCommand acCmdWorkgroupAdministrator n codul VBA sau
crend o macrocomand Access care conine aciunea RunCommand cu argumentul Command fiind
WorkgroupAdministrator.
.laccdb Cnd deschidei o baza de date Access 2007 sau Access 2010 (.accdb), blocarea
fiierelor este controlat de un fiier de blocare cu extensia de nume de fiier .laccdb. Cnd deschidei un
fiier Access cu o versiune anterioara (.mdb), fiierul de blocare are extensia .ldb. Tipul de fiier de
blocare care se creeaz depinde de tipul de fiier al bazei de date care se deschide, nu de versiunea de
Access pe care o utilizai. Fiierele de blocare se terg automat cnd toi utilizatorii nchid baza de date.
Pentru a efectua conversia unei baze de date Access 2000 sau Access 2002 - 2003 (.mdb) la noul format
de fiier (.accdb), trebuie s deschidei mai nti baza de date n Access 2010 i s o salvai n formatul
de fiier .accdb.
1. Pe fila Fiier/File, facei clic pe Deschidere/Open.
2. n caseta de dialog Deschidere/Open, selectai i deschidei baza de date a crei conversie
dorii s o efectuai.
Pe fila Fiier, facei clic pe Salvare i publicare, apoi, sub Tipuri de fiier baza de date facei clic pe
Baza de date Access (*.accdb).
n cazul n care sunt deschise obiecte ale bazei de date cnd utilizai comanda Salvare baza de date ca,
Access v solicita nchiderea lor nainte de a crea copia. Facei clic pe Da/Yes pentru ca Access s
nchid obiectele sau pe Nu/No pentru a revoca ntreg procesul. Daca este necesar, Access v v
solicita salvarea modificrilor.
4. n caseta de dialog Salvare ca/Save As, tastai un nume de fiier n caseta Nume fiier/File
Name, apoi facei clic pe Salvare/Save.
Access creeaz copia bazei de date, apoi o deschide. Access nchide automat baza de date originala.
Pentru a efectua n mod explicit conversia unei baze de date Access la formatul nou de fiier .accdb, n
primul rnd trebuie s deschidei baza de date, apoi s o salvai n formatul de fiier .accdb.
Important Urmtoarea procedura este pentru fiiere create n Access 97, Access 2000, Access
2002 sau Access 2003.
Mai nti, deschidei baza de date:
1. Facei clic pe fila Fiier/File.
2. n stnga, facei clic pe Deschidere/Open.
3. n caseta de dialog Deschidere/Open, selectai i deschidei baza de date a crei conversie
dorii s o efectuai.
Acum efectuai conversia bazei de date:
1. Facei clic pe fila Fiier.
2. n stnga, facei clic pe Partajare.
3. Sub Salvare baza de date n totalitate, facei clic pe Salvare baza de date ca.
4. La dreapta, sub Tipuri de fiier baza de date, facei clic pe Baza de date Access.
5. n caseta de dialog Salvare ca, n caseta Nume fiier introducei un nume de fiier sau utilizai
numele de fiier furnizat.
6. Facei clic pe Salvare.
Se creeaz o copie a bazei de date n formatul de fiier .accdb.

1.1. Utilizarea Access pentru prima oar
Muli utilizatori ncep s utilizeze Access cnd programul pe care l utilizeaz pentru a urmri ceva
devine din ce n ce mai puin potrivit pentru activitatea respectiva. De exemplu, s presupunem ca suntei
un organizator de evenimente i dorii s urmrii toate detaliile care trebuie gestionate pentru ca
evenimentele s aib succes. Daca utilizai un procesor de text sau un program de calcul tabelar pentru a
efectua aceasta activitate, este posibil s ntmpinai cu uurina probleme cu datele dublate sau
neuniforme. Avei posibilitatea s utilizai un software de programare a calendarului, dar urmrirea
informaiilor financiare intr-un calendar nu este o alegere potrivita.

1.2. Baze de date relaionale
Uneori avei nevoie de o baza de date relaional pentru a urmri astfel de informaii: un depozit
de date care a fost mprit n colecii mai mici de date (numite tabele) pentru a elimina redundanta i
apoi au fost asociate pe baza unor informaii comune (numite cmpuri). De exemplu, o baza de date

relaional pentru planificarea unui eveniment poate conine un tabel cu informaii particularizate, un
tabel cu informaii despre furnizori i un tabel cu informaii despre evenimente. Tabelul cu informaii
despre evenimente poate avea un cmp care sa-l asocieze la tabelul despre clieni i un cmp care sa-l
asocieze la tabelul despre furnizori. n acest fel, de exemplu, daca s-a modificat numrul de telefon al
furnizorului, informaiile se pot modifica n tabelul despre furnizori, n loc s se modifice n fiecare
eveniment care implica furnizorul.

1.2.1. Pentru ce este proiectat Access
Access este un instrument care se poate utiliza pentru a dezvolta uor i rapid aplicaii de baze de
date relaionale care v ajuta s gestionai informaii. Avei posibilitatea s creai o baza de date care s
v ajute s urmrii aproape orice tip de informaii, cum ar fi inventare, persoane de contact de afaceri
sau procese care in de afaceri. De fapt, Access vine echipat cu abloane pe care avei posibilitatea s le
utilizai imediat pentru a urmri o varietate de informaii, facilitnd lucrul chiar i pentru un nceptor.

1.2.2. Cnd deschidei Access
Cnd pornii Access 2010, vedei vizualizarea Backstage din Microsoft Office, unde este posibil s
obinei informaii despre baza de date curenta, s creai o baza de date noua, s deschidei o baza de
date existenta i s vizualizai coninutul disponibil n Office.com.
De asemenea, vizualizarea
Backstage conine i multe alte comenzi
pe care avei posibilitatea s le utilizai
pentru a ajusta, a ntreine sau a
partaja bazele de date. Comenzile din
vizualizarea Backstage se aplica n
general bazelor de date ntregi, iar nu
obiectelor din interiorul unei baze de
date.
Nota Este posibil s accesai
vizualizarea Backstage n orice moment,
daca facei clic pe fila Fiier.
Microsoft Access 2010 este un
instrument pentru proiectarea
aplicaiilor de baze de date i implementarea acestora, instrument care poate fi utilizat pentru a urmri
informaiile importante.
O baz de date Access const din urmtoarele obiecte:
Tabele conin toate nregistrrile
Interogri localizeaz nregistrri specifice
Formulare afieaz nregistrrile din tabele, una cte una
Rapoarte tipresc loturi de nregistrri
Pagini de acces la date pun la dispoziie date prin intermediul paginilor Web
Macrocomenzi aciuni automate uzuale
Module stocheaz declaraii i proceduri Visual Basic, care ne permit s scriem programe
pentru bazele de date, astfel nct acestea s poat interaciona cu alt software.
O baza de date (BD) reprezint o colecie de date integrata, anume structurata i dotata cu o
descriere a structurii i a relaiilor dintre date.
n funcie de modul de organizare a informaiilor, se cunosc cteva modele de baze de date:
Modelul ierarhic. Cu ajutorul modelului conceptual ierarhic, schema bazei de date poate fi
reprezentata sub forma unui arbore n care nodurile exprima colecii de date, iar ramurile reflecta relaiile
de asociere intre nregistrrile coleciilor de date superioare i inferioare.
Accesul la nregistrrile coleciilor de date inferioare se face prin traversarea arborelui, adic se parcurg
toate coleciile aflate n subordonare ierarhica dintre colecia rdcina i colecia cercetata. Unui
element superior ii pot corespunde unul sau mai multe elemente inferioare, iar unui element inferior ii
corespunde un singur element superior.
Modelul reea. Modelul reea se aseamn cu cel ierarhic, diferena constnd n aceea ca unui
element inferior ii pot corespunde unul sau mai multe elemente superioare.
Modelul relaional. Modelul relaional este n prezent cel mai rspndit model de baze de date.
Acest model are o singura structura de date: relaia sau tabelul. O baza de date relational este un
ansamblu de relaii (tabele) grupate n jurul unui subiect bine definit. Deci, o relaie poate fi redata printr-
un tabel, n care fiecare rnd reprezint o nregistrare diferita, iar fiecare coloana un atribut. Coloanele

tabelului sunt identificate prin nume diferite i reprezint cmpurile (atributele, caracteristicile) modelului
conceptual. n fiecare coloana datele trebuie s fie de acelai tip. Cutarea n acest model de BD se face
secvenial toate articolele i comparnd criteriile de cutare. Articolele ce satisfac condiiei cutrii se
selecteaz i pot fi afiate.
Sistemul de gestiune a bazelor de date (SGBD) este acel sistem de programe care faciliteaz
i supervizeaz introducerea de informaii n baza de date, actualizarea i extragerea din baza, controlul i
autorizarea accesului la date.
O baza de date este un ansamblu de colecii de date cunoscute sub denumirea de tabela (pentru
bazele de date relaionale) i obiect (pentru bazele de date orientate obiect).
Informaia se poate defini ca fiind format din:
entitate (obiectul informaiei)
atribut (proprietile entitii)
valoare (msura proprietii).
Toate aceste date sunt organizate n tabele.
O baza de date este formata din mai multe tabele cu diferite legturi intre ele. Pentru a
defini o tabela sunt necesare urmtoarele elemente:
Domeniul de valori - reprezint un ansamblu de valori caracterizate printr-un nume, ce poate fi
definit implicit sau explicit.
Atributul - reprezint o coloana dntr-otabela caracterizata printr-un nume. Acesta de obicei
semnifica valorile luate dintr-un domeniu corespunztor. Mai multe atribute pot lua valori din
acelai domeniu.
Pentru a defini o baza de date este nevoie de o tabela care reprezint un produs cartezian dintre
mai multe domenii, caracterizata printr-un nume.
Tipurile de legturi dintre doua tabele pot fi urmtoarele:
1:1 - legtura de tip unu la unu cnd unei nregistrri dntr-otabela ii corespunde o singura
nregistrare n cealalt tabela
1:n - legtura de tip unu la muli cnd unei nregistrri dntr-otabela ii corespund mai multe
nregistrri n cealalt tabela
n:n - legtura de tip muli la muli cnd mai multor nregistrri dntr-otabela le corespund mai multe
nregistrri n cealalt tabela.
Orice tabela trebuie s aib definita o cheie. Cheia unei tabele reprezint un ansamblu minim de atribute
care identifica o nregistrare dntr-otabela.
1.2.3. Prezentarea mediului de lucru Microsoft Acces
Deschiderea sesiunii de lucru Microsoft Acces
se realizeaz, de regula, prin succesiunea de opiuni
Start -->All Programs --> Microsoft Office -->
Microsoft Access 2010.
Dac exist o pictogram pe ecran sub care
scrie Microsoft Access 2010 se poate porni aplicaia
printr-un dublu clic pe acesta iconia.
1.2.3.1. Prezentare general
Cele trei componente principale ale interfeei
utilizator Access 2010 sunt:
Panglica este banda de file care strbate
fereastra programului i care conine grupuri
de comenzi.
Vizualizarea Backstage este colecia de
comenzi pe care le vedei pe fila Fiier de pe
panglica.
Panoul de navigare este panoul din
partea stnga a ferestrei programului Access,
care v permite s lucrai cu obiecte de baze
de date. Panoul de navigare a nlocuit Panoul
de baza de date din Access 2007.
Aceste trei elemente ofer mediul n care se
creeaz i se utilizeaz bazele de date.
Panglica
Panglica este principalul nlocuitor pentru meniurile i barele de instrumente din versiunile
anterioare Access 2007. Aceasta se compune n principal din file care au grupuri de butoane.

Panglica are file principale care grupeaz comenzi frecvent utilizate asociate, file contextuale care
apar doar atunci cnd le utilizai, precum i Bara de instrumente Acces rapid, o bara de instrumente mica
ce pe care avei posibilitatea s o particularizai cu comenzile dvs. preferate.
Pe filele panglicii, unele dintre butoane v ofer o galerie de opiuni, n timp ce altele lanseaz o
comanda.
Vizualizarea Backstage
Vizualizarea Backstage este o caracteristica noua n Access 2010. Acesta conine comenzi i
informaii care se aplica la o ntreaga baza de date, cum ar fi Compactare i
reparare/Compact&Repair Database, precum i comenzile existente n meniul Fiier/File din
versiunile anterioare, cum ar fi Imprimare/Print.
Panoul de navigare
Panoul de navigare v ajuta s v organizai obiectele din baza de date i este principalul mijloc
de a deschide sau de a modifica proiectul unui obiect din baza de date. Panoul de navigare a nlocuit
Fereastra baza de date prezenta n versiunile Access anterioare Access 2007.
Panoul de navigare este organizat pe categorii i grupuri. Avei posibilitatea s alegei dntr-
ovarietate de opiuni de organizare si, de asemenea, s v creai propria schema de organizare
particularizata n Panoul de navigare. n mod implicit, o baza de date noua utilizeaz categoria Tip obiect,
care are grupuri ce corespund diverselor tipuri de obiecte baza de date. Categoria Tip obiect organizeaz
obiectele baza de date intr-un mod similar cu afiarea din Fereastra baza de date din versiunile anterioare.
Panoul de navigare se poate minimiza i ascunde, dar nu se poate estompa prin deschiderea
obiectelor baza de date n fata lui.
Vizualizarea Backstage
Vizualizarea Backstage ocupa fila Fiier/File din panglica i conine multe comenzi care se aflau
nainte n meniul Fiier. De asemenea, vizualizarea Backstage conine alte comenzi care se aplica la un
ntreg fiier baza de date. Cnd deschidei Access, dar nu deschidei o baza de date (de exemplu,
deschidei Access din meniul Start din Windows), vei vedea vizualizarea Backstage.
n Vizualizarea Backstage, avei posibilitatea s creai o baza de date noua sau s deschidei o
baza de date existenta i s efectuai multe activiti de ntreinere a fiierelor i bazelor de date.
2.3.2. Creai o baza de date noua, necompletata
1. Pornii Access din meniul Pornire/Home sau dintr-o comand rapid.
Apare vizualizarea Backstage.
2. Alegei una dintre urmtoarele variante:
Creai o noua baza de date Web
1. Sub abloane disponibile/Available Templates, facei clic pe Baza de date
Web/Blank web database.
2. La dreapta, sub Baza de date Web, tastai un nume pentru fiierul baza de
date n caseta Nume fiier/File Name sau utilizai-l pe cel furnizat pentru dvs.

3. Facei clic pe Creare/Create.


Se creeaz baza de date noua i se deschide un tabel nou n vizualizarea Foaie de date.
Crearea unei baze de date desktop noi
1. Sub abloane disponibile/Available Templates, facei clic pe Baza de date/Blank
database.
2. La dreapta, sub Baza de date, tastai un nume pentru fiierul baza de date n caseta Nume
fiier/File name sau utilizai-l pe cel furnizat pentru dvs.
3. Facei clic pe Creare/Create.
Se creeaz baza de date noua i se deschide un tabel nou n vizualizarea Foaie de date.
Avei posibilitatea s descrcai abloane Access suplimentare de la office.com direct din Vizualizarea
Backstage.
1.2.3.3. Crearea unei baze de date noi dintr-un ablon Office.com
1. Pornii Access din meniul Pornire sau dntr-ocomanda rapida.
Apare vizualizarea Backstage.
2. Sub panoul abloane Office.com/Office.com Templates, facei clic pe o categorie, apoi,
cnd apar abloanele n acea categorie, facei clic pe un ablon.
Nota De asemenea, avei posibilitatea s cutai un ablon utiliznd caseta de cutare furnizata.
3. n caseta Nume fiier, tastai un nume de fiier sau utilizai-l pe cel furnizat.
4. Facei clic pe Descrcare.
Access descrca automat ablonul, creeaz o baza de date noua pe baza ablonului, o stocheaz n
folderul dvs. de documente (de exemplu, folderul Documentele mele), apoi deschide baza de date.
Cnd deschidei (sau creai i deschidei) o baza de date, Access adaug numele de fiier i locaia bazei
de date la o lista interna de documente utilizate recent. Lista se afieaz n fila Recent a vizualizrii
Backstage, pentru fi posibila deschiderea bazelor de date utilizate recent.
1.2.3.4. Deschiderea unei baze de date utilizate recent
1. Pornii Access.
2. n Vizualizarea Backstage, facei clic pe Recent, apoi facei clic pe baza de date pe care dorii s
o deschidei.
Access deschide baza de date.
1.2.3.5. Deschiderea unei baze de date din vizualizarea Backstage
1. Pornii Access.
2. Facei clic pe fila Fiier/File, apoi pe Deschidere/Open. Cnd apare caseta de dialog
Deschidere, rsfoii i selectai un fiier, apoi facei clic pe Deschidere.
Se deschide baza de date.
1.2.3.6. Panglica
Panglica este principalul nlocuitor pentru meniuri i bare de instrumente i furnizeaz principala
interfaa de comanda din Access 2010. Unul din avantajele principale ale Panglicii este ca unifica ntr-
olocaie unica acele activiti sau puncte de intrare care necesitau afiarea de meniuri, bare de
instrumente, panouri de activiti etc. n acest mod, trebuie s cutai intr-un singur loc pentru comenzi,
nu n mai multe locuri.
Cnd deschidei o baza de date, Panglica apare n partea de sus a ferestrei principale Access, unde
afieaz comenzile n fila de comenzi activa.

Panglica conine o serie de file care conin comenzi. n Access 2010, principalele file din Panglica
sunt Fiier/File, Pornire/Home, Creare/Create, Date externe/External Data i Instrumente
baza de date/Database Tools. Fiecare fila conine grupuri de comenzi asociate, iar aceste grupuri scot
la suprafaa unele dintre elementele suplimentare noi, cum ar fi galeria, care este un nou tip de control
care prezint opiunile n mod vizual.
Comenzile care sunt disponibile n panglica reflecta, de asemenea, obiectul activ n prezent. De
exemplu, daca avei un tabel deschis n vizualizarea Foaie de date i facei clic pe Formular/Form n fila
Creare/Create din grupul Formulare, Access creeaz formularul pe baza tabelului activ. Mai exact,
numele tabelului activ este introdus n proprietatea RecordSource a noului formular. n plus, unele file
din panglica apar doar n anumite contexte. De exemplu, fila Proiectare/Design apare numai atunci
cnd avei un obiect deschis n vizualizarea Proiect.

Avei posibilitatea s utilizai comenzile rapide de la tastatura pentru a utiliza Panglica. Toate
comenzile rapide de la tastatura din versiunile anterioare de Access funcioneaz n continuare. Sistemul
de acces la tastatura nlocuiete acceleratoarele de meniu din versiunile anterioare de Access. Acest
sistem utilizeaz indicatori mici cu o singura litera sau o combinaie de litere care apar n Panglica atunci
cnd apsai tasta ALT. Aceti indicatori arata ce comanda rapida activeaz controlul de dedesubt.
Cnd ai selectat fila de comanda, avei posibilitatea s navigai la comenzile disponibile din acea
fila.
1.2.3.6.1. Selectarea unei file de comenzi
1. Pornii Access.
2. Facei clic pe fila dorita.
- sau -
1. Pornii Access.
2. Apsai i eliberai tasta ALT.
Apar sfaturile de tastatura.
3. Apsai tasta sau tastele afiate n sfaturile de tastatura care sunt pe sau cel mai aproape de
comanda dorita.
Avei posibilitatea s executai o comanda n mai multe moduri. Cel mai rapid i mai direct mod este de a
utiliza comanda rapida de la tastatura asociata cu comanda respectiva. Daca tii comanda rapida de la
tastatura utilizata din versiunile anterioare de Access, ea ar trebui s funcioneze i n Access 2010.
1.2.3.6.2. Executarea unei comenzi
1. Pornii Access.
2. Facei clic pe fila comenzii dorite. Urmtorul tabel afieaz mostre de file i comenzi disponibile n
fiecare dintre ele. Filele i comenzile disponibile se modifica n funcie de activitatea pe care o
efectuai.
Fila de comenzi Operaiuni obinuite posibile
Pagina de pornire
Se selecteaz alta vizualizare
Copiai i lipii din clipboard.
Setai caracteristicile curente de font.
Setai alinierea fontului curenta.
Aplicai formatare de tip text mbogit pentru un cmp de tip Memo.
Lucrai cu nregistrri (Remprosptare, Nou, Salvare, tergere, Totaluri, Corectare
ortografica, Mai multe).
Sortai i filtrai nregistrrile.
Gsii nregistrri.
Creare
Creai un tabel nou, necompletat.
Creai un tabel nou utiliznd un ablon de tabel.
Creai o lista pe un site SharePoint i un tabel n baza de date curenta care face
legtura o lista nou creata.
Creai un tabel nou, necompletat n vizualizarea Proiect.
Creai un formular nou, bazat pe tabelul activ sau interogarea activa.
Creai un tabel PivotTable sau o diagrama PivotChart.
Creai un raport nou pe baza tabelului activ sau a interogrii active.
Creai o interogare noua, o macrocomand noua, un modul nou sau un modul de clasa
nou.
Date externe
Importai date sau creai o legtura la date externe.
Exportai date.
Colectai i actualizai date prin intermediul potei electronice.
Creai importuri salvate i exporturi salvate.
Executai Manager de tabele legate.
Instrumente baza de
date
Mutai parial sau integral o baza de date pe un site SharePoint nou sau existent.
Lansai editorul Visual Basic sau executai o macrocomanda.
Creai i vizualizai relaiile intre tabele.
Afiai/ascundei dependentele obiectului.
Executai Documentar baza de date sau analizai performanta.

Mutai date pe un server Microsoft SQL sau ntr-obaza de date Access (numai tabele).
Gestionai programele de completare Access.
Creai sau editai un modul VBA (Visual Basic for Applications).
3. Facei clic pe controlul care reprezint comanda. Alternativ, daca tii comanda rapida de la
tastatura pentru comanda dntr-oversiune anterioara de Access, introducei comanda rapida de la
tastatura utiliznd tastatura.
- sau -
Apsai i eliberai tasta ALT.
Apar tastele de acces.
Apsai tasta sau tastele afiate n sfatul de tastatura asociat cu comanda pe care o dorii.
1.2.3.6.3. File contextuale de comenzi
n plus fata de filele standard de comenzi, Access 2010 are, de asemenea, file contextuale de
comenzi. n funcie de context (adic de obiectul cu care lucrai i operaiunea pe care o efectuai), este
posibil s apar una sau mai multe file contextuale de comenzi lng filele standard de comenzi.

1.2.3.6.4. Activarea unei file contextuale de comenzi
Facei clic pe fila contextuala de comenzi.
- sau -
1. Apsai i eliberai tasta ALT.
Apar tastele de acces.
2. Apsai tasta sau tastele afiate n tasta de acces care apare pe sau cel mai aproape de fila
contextuala de comenzi.
Filele contextuale de comenzi conin comenzi i caracteristici care sunt necesare pentru lucrul intr-un
anumit context. De exemplu, cnd deschidei un tabel n vizualizarea Proiect, filele contextuale conin
comenzi care se aplica numai cnd lucrai cu un tabel n acea vizualizare. De asemenea, cnd deschidei
un tabel n vizualizarea Proiectare, apare o fila contextuala de comenzi denumita Proiectare/Design
lng fila Instrumente complexe. Cnd facei clic pe fila Proiectare, Panglica afieaz comenzile
disponibile numai atunci cnd obiectul este disponibil n vizualizarea Proiectare.
1.2.3.6.5. Galerii
Panglica mai utilizeaz i un tip de control denumit galerie. Controlul galerie este proiectat s atrag
atenia asupra rezultatelor pe care dorii s le obinei. Mai degrab dect s afieze numai comenzi,
controlul galerie afieaz rezultatul utilizrii acelor comenzi. Ideea este de a furniza un mod vizual de a
naviga i vedea ce poate face Access 2010, cu accentul pus pe rezultate, nu pe comenzile n sine.
Galeriile sunt de diferite forme i dimensiuni. Exista o structura de tip grila, o reprezentare verticala
de tip meniu i chiar un aspect de tip panglica, ce plaseaz coninutul galeriei n interiorul panglicii.
1.2.3.6.6. Ascundere Panglicii
Uneori, este nevoie s se aloce mai mult spaiu zonei de lucru. Din acest motiv, Panglica poate fi
restrans, astfel nct s rmn numai bara cu filele de comanda. Pentru a ascunde Panglica, facei
dublu clic pe fila activa de comenzi. Pentru a o afia din nou, facei dublu clic din nou pe fila activa de
comenzi.
1.2.3.6.7 Ascunderea i restaurarea Panglicii
1. Facei dublu clic pe fila activa de comenzi (fila activa este cea evideniat).
2. Facei dublu clic din nou pe fila activa de comenzi pentru a restaura Panglica.
1.2.3.6.8. Bara de instrumente Acces rapid
Bara de instrumente Acces rapid este o bara de instrumente adiacenta Panglicii, care permite accesul
la comenzi cu o singura apsare pe butonul mouse-ului. Setul implicit de comenzi cuprind Salvare,
Anulare i Refacere i avei posibilitatea s particularizai bara de instrumente Acces rapid pentru a
include comenzile pe care dvs. le utilizai cel mai des. De asemenea, avei posibilitatea s modificai
plasarea barei de instrumente i s o modificai din dimensiunea mica implicita n
dimensiune mare. Bara de instrumente mica apare lng filele de comenzi din Panglica.

Cnd comutai la dimensiune mare, bara de instrumente apare sub Panglica i se extinde la lime
completa.
1.2.3.7. Panoul de navigare
Cnd deschidei o baza de date sau creai una noua, numele obiectelor
din baza dvs. de date apar n Panoul de navigare. Obiectele bazei de date
includ tabelele, formularele, rapoartele, paginile, macrocomenzile i
modulele. Panoul de navigare nlocuiete fereastra Baza de date utilizata de
versiunile anterioare de Access. Daca ai utilizat fereastra Baza de date
pentru a efectua o activitate n versiunea anterioara, acum o vei efectua n
Panoul de navigare. De exemplu, daca dorii s adugai un rnd la un tabel
n vizualizarea Foaie de date, deschidei acel tabel din Panoul de navigare.
Nota Panoul de navigare nu este disponibil intr-un browser Web.
Pentru a utiliza Panoul de navigare cu o baza de date Web, trebuie s
deschidei mai nti baza de date utiliznd Access.
Pentru a deschide un obiect de baza de date sau a aplica o comanda la
un obiect de baza de date, facei clic cu butonul din dreapta i selectai un
element de meniu din meniul contextual. Comenzile din meniul contextual
variaz n funcie de tipul obiectului.
1.2.3.8. Deschiderea obiectului de baza de date, cum ar fi un
tabel, formular sau raport
n Panoul de navigare, facei dublu clic pe obiect.
- sau -
n Panoul de navigare, selectai obiectul, apoi apsai ENTER.
- sau -
1. n Panoul de navigare, facei clic cu butonul din dreapta pe un obiect, apoi facei clic pe
Deschidere.
Reinei ca avei posibilitatea s setai opiuni pentru obiectele deschise cu o singura apsare pe butonul
mouse-ului n caseta de dialog Opiuni de navigare.
Panoul de navigare divide obiectele bazei de date n categorii, iar aceste categorii conin grupuri.
Anumite categorii sunt predefinite pentru dvs. i avei posibilitatea s creai propriile grupuri
particularizate.
n mod implicit, Panoul de navigare apare cnd deschidei o baza de date n Access, inclusiv
bazele de date din versiunile anterioare de Access. Avei posibilitatea s mpiedicai apariia implicita a
Panoului de navigare daca setai o opiune de program. Urmtorul set de pai explica modul n care se
efectueaz fiecare aciune.
Pentru a afia sau a ascunde Panoul de navigare
Facei clic pe buton n coltul din dreapta sus al Panoului de navigare ( ) sau apsai F11.
mpiedicarea apariiei implicite a Panoului de navigare
1. Facei clic pe fila Fiier, apoi pe Opiuni.
Se afieaz caseta de dialog Opiuni Access.
2. n panoul din stnga, facei clic pe Baza de date curenta.
3. Sub Navigare, debifai caseta de selectare Afiare Panou navigare, apoi facei clic pe OK.
Bara de stare
Ca i n cazul versiunilor anterioare de Access, n Access 2010 avei posibilitatea s afiai o bara de
stare n partea de jos a ferestrei. Acest element standard din IU este n continuare locul n care se
afieaz mesajele de stare, sfaturile cu privire la proprieti, indicatorii de program etc. n Access 2010,
bara de stare are de asemenea doua funcii pe care le vei vedea n bara de stare din alte programe
Office 2010: comutarea Vizualizare/Fereastra i Panoramare.
Avei posibilitatea s comutai rapid n fereastra activa intre una din vizualizrile disponibile utiliznd
controalele disponibile n bara de stare. Daca vizualizai un obiect care accepta panoramare variabila,
avei posibilitatea s reglai nivelul de panoramare pentru a mari sau a micora utiliznd glisorul din bara
de stare.
Bara de stare poate fi activata sau dezactivata n caseta de dialog Opiuni Access.
Afiarea sau ascunderea barei de stare
1. Facei clic pe fila Fiier, apoi pe Opiuni.
Se afieaz caseta de dialog Opiuni Access.
2. n panoul din stnga, facei clic pe Baza de date curenta.

10

3. Sub Opiuni aplicaie, bifai sau debifai caseta de selectare Afiare bara de stare. Debifarea
casetei de selectare dezactiveaz afiarea barei de stare.
4. Facei clic pe OK.
Minibara de instrumente
n versiunile de Access anterioare Access
2007, formatarea textului necesita deseori
utilizarea unui meniu sau afiarea barei de
instrumente Formatare. Utiliznd Access
2010, avei posibilitatea s formatai textul
mai uor, utiliznd minibara de instrumente.
Cnd selectai text pentru formatare, minibara de instrumente se afieaz automat deasupra textului
selectat. Daca mutai indicatorul mouse-ului n minibara de instrumente, aceasta apare i poate fi aplicata
pentru a se aplica text aldin, cursiv, pentru a se modifica dimensiunea fontului, culoarea textului, etc.
Cnd mutai indicatorul din minibara de instrumente, aceasta se estompeaz. Daca nu dorii s utilizai
minibara de instrumente pentru a aplica formatare textului pentru o selecie, mutai indicatorul civa
pixeli ntr-oparte i minibara de instrumente v disprea.
Formatarea textului utiliznd minibara de instrumente
1. Selectai textul pe care dorii sa-l formatai.
Minibara de instrumente apare transparenta deasupra textului.
2. Aplicai formatri utiliznd minibara de instrumente.
Obinerea Ajutorului/Help
Cnd avei o ntrebare, avei posibilitatea s obinei ajutor daca apsai F1 sau facei
clic pe pictograma care afieaz un semn de ntrebare, aflata n partea din dreapta a
Panglicii.
Ajutorul mai poate fi gsit i n Vizualizarea Backstage:
Facei clic pe fila Fiier/File, apoi facei clic pe Ajutor/Help.
O lista de resurse de Ajutor apare n Vizualizarea Backstage.
Adugarea unui tabel
Avei posibilitatea s adugai un tabel nou la o baza de date existenta daca
utilizai instrumentele din grupul Tabele din fila Creare.
Nota ntr-obaza de date Web, este disponibila numai comanda Tabel
n grupul Tabele.
Indiferent de vizualizarea cu care ncepei, avei ntotdeauna posibilitatea s
comutai la cealalt vizualizare utiliznd butoanele de vizualizare din bara de
stare din fereastra Access.
Crearea unui tabel necompletat n vizualizarea Foaie de date n vizualizarea Foaie de
date, avei posibilitatea s introducei date imediat i s lsai Access s genereze structura tabelului.
Numele de cmpului se atribuie automat (Camp1, Camp2, etc.), iar Access seteaz tipul de date pentru
cmp pe baza tipului de date pe care l introducei.
1. n fila Creare/Create, n grupul Tabele, facei clic pe Tabel.
2. Access creeaz tabelul, apoi plaseaz cursorul n prima celula goala din coloana Facei
clic pentru adugare.
3. Pentru a adaug date, ncepei s tastai n prima celula necompletata sau lipii date
dntr-o alt surs, dup cum este descris mai jos n acest articol.
Pentru a redenumi o coloana (un cmp), facei dublu clic pe titlul coloanei, apoi
tastai numele nou.
Sfat Dai un nume semnificativ fiecrui cmp, astfel nct s v dai seama ce conine, fr a
trebui s v uitai la date.
Pentru a muta o coloana, selectai-o fcnd clic pe titlul ei, apoi glisai-o acolo unde dorii. De
asemenea, avei posibilitatea s selectai mai multe coloane alturate i s le glisai pe toate ntr-olocaie
noua.
Pentru a adaug mai multe cmpuri la tabel, fie ncepei s tastai n coloana Facei clic pentru
adugare din vizualizarea Foaie de date, fie adugai cmpuri noi, utiliznd comenzile din grupul
Adugare i tergere, de pe fila Cmpuri.
Crearea unui tabel, ncepnd din vizualizarea Proiectare/Design n vizualizarea
Proiectare, creai mai nti structura tabelului nou. Apoi, comutai la vizualizarea Foaie de date pentru a
introduce date sau introducei datele utiliznd alta metoda, cum ar cu un formular.
Nota Vizualizarea Proiectare nu este disponibila pentru tabele, ntr-obaza de date Web.

11

1. Pe fila Creare/Create, din grupul Tabele, facei clic pe Proiectare tabel/Table Design.

2. Pentru fiecare cmp din tabel, tastai un nume n coloana Nume cmp, apoi selectai un tip de
date din lista Tip de date.
3. Avei posibilitatea s introducei informaii suplimentare pentru fiecare cmp din coloana
Descriere. Descrierea pe care o introducei este afiat n bara de stare, cnd punctul de inserare se afla
n acel cmp i este utilizata ca text n bara de stare pentru toate controalele pe care le creai, glisnd
cmpul din panoul Lista de cmpuri intr-un formular sau un raport i pentru toate controalele care sunt
create pentru cmpul respectiv, de Expertul Formular sau Expertul Raport.
4. Dup ce ai adugat toate cmpurile, salvai tabelul:
Pe fila Fiier, facei clic pe Salvare.
Specificaii pentru baze de date
Urmtoarea lista de tabele se aplica la bazele de date Microsoft Access 2010 i Access 2007:
General
Atribut Maxim
Dimensiunea fiierului baza de date Access (.accdb)
2 gigaoctei, minus spaiul necesar pentru
obiectele de sistem
Nota NOTA: Dei dimensiunea maxima pentru
un singur fiier de baza de date este 2 GO, avei
posibilitatea s rezolvai aceasta limitare,
utiliznd o baza de date scindata. Un fiier de
baze de date front-end poate indica spre mii de
fiiere de baze de date back-end, care pot avea
fiecare pana la 2 GO.
Numrul de obiecte dntr-obaza de date 32768
Numrul de module (incluznd formulare i rapoarte
care au proprietatea HasModule setata la True )
1000
Numrul de caractere din numele unui obiect 64
Numrul de caractere dntr-oparola 20
Numrul de caractere dintr-un nume de utilizator sau
nume de grup
20
Numrul de utilizatori simultani 255

Tabel
Atribut Maxim
Numrul de caractere dintr-un nume de tabel 64
Numrul de caractere dintr-un nume de cmp 64
Numr de cmpuri dintr-un tabel 255
Numrul de tabele deschise
2048; numrul efectiv poate fi mai
mic din cauza tabelelor deschise
intern de Access
Dimensiune tabel
2 gigaoctei, minus spaiul necesar
pentru obiectele de sistem
Numrul de caractere dintr-un cmp text 255
Numrul de caractere dintr-un cmp Memo
65535 cnd se introduc date prin
intermediul interfeei utilizator;
2 gigaoctei de stocare de
caractere cnd se introduc date
programatic
Dimensiunea unui cmp OLE Object 1 gigaoctet
Numrul de indexri dintr-un tabel 32
Numrul de cmpuri dintr-un index 10
Numrul de caractere dintr-un mesaj de validare 255
6 2048

12

Numrul de caractere dntr-odescriere de tabel sau cmp 255


Numrul de caractere dntr-onregistrare (excluznd cmpurile de
tip Memo i OLE Object) cnd proprietatea UnicodeCompression
a cmpurilor este setata la Yes
4000
Numrul de caractere din setarea proprietii unui cmp 255

Interogare
Atribut Maxim
Numrul de relaii impuse
32 per tabel, minus numrul de indexri care se
afla n tabel pentru cmpurile sau combinaiile de
cmpuri ca nu sunt implicate n relaii*
Numrul de tabele dntr-ointerogare 16*
Numrul de asocieri dntr-ointerogare 16*
Numrul de cmpuri dintr-un set de nregistrri 255
Dimensiunea setului de nregistrri 1 gigaoctet
Limita de sortare 255 de caractere n unul sau mai multe cmpuri
Numrul de niveluri a interogrilor imbricate 50*
Numrul de caractere dntr-ocelula n grila de
proiectare a interogrii
1024
Numrul de caractere pentru un parametru ntr-
ointerogare cu parametri
255
Numrul de operatori AND ntr-oclauza WHERE sau
HAVING
99*
Numrul de caractere ntr-oinstruciune SQL Aproximativ 64.000*
*Este posibil ca valorile maxime s fie mai mici n cazul n care interogarea include cmpuri multivalorice
de cutare
Formulare i rapoarte
Atribut Maxim
Numrul de caractere dntr-oeticheta 2048
Numrul de caractere dntr-ocaseta text 65535
Limea formularului sau raportului 55,8 cm
nlimea unei seciuni 55,8 cm
nlimea tuturor seciunilor plus seciunea antet (vizualizarea Proiectare) 508 cm
Numrul de niveluri de formulare sau rapoarte imbricate 7
Numrul de cmpuri sau expresii dup care se poate grupa sau sorta intr-un
raport
10
Numrul de anteturi sau subsoluri dintr-un raport
1 antet/subsol per
raport;
1 antet/subsol per
pagina;
10 anteturi/subsoluri per
grup
Numrul de pagini imprimate intr-un raport 65536
Numrul de controale i seciuni care se pot adaug intr-un formular sau
raport de-a lungul timpului
754
Numrul de caractere dntr-oinstruciune SQL care sunt proprietatea
Recordsource sau Rowsource unui formular, raport sau control (att
pentru .accdb, cat i .adp)
32750

Macrocomenzi
Atribut Maxim
Numrul de aciuni dntr-omacrocomanda 999
Numrul de caractere dntr-ocondiie 255
Numrul de caractere dintr-un comentariu 255

13

Numrul de caractere dintr-un argument de aciune 255



Specificaii de proiect
Urmtoarea lista de tabele se aplica la proiectele Access 2010 i Access 2007:
General
Atribut Maxim
Numr de obiecte intr-un proiect Access (.adp) 32768
Numrul de module (incluznd formulare i rapoarte care au
proprietatea HasModule setata la True )
1000
Numrul de caractere din numele unui obiect 64
Numrul de coloane dintr-un tabel
250 (Microsoft SQL Server 6.5)
1024 (Microsoft SQL Server 7.0,
2000 i 2005)


Baza de date Microsoft SQL Server
Specificaiile de capacitate maxima a Microsoft SQL Server sunt descrise n documentaia SQL Server.

Formulare i rapoarte
Atribut Maxim
Numrul de caractere dntr-oeticheta 2048
Numrul de caractere dntr-ocaseta text 65535
Limea formularului sau raportului 55,8 cm
nlimea unei seciuni 55,8 cm
nlimea tuturor seciunilor plus seciunea antet
(vizualizarea Proiectare)
508 cm
Numrul de niveluri de formulare sau rapoarte imbricate 7
Numrul de cmpuri sau expresii dup care se poate grupa
sau sorta intr-un raport
10
Numrul de anteturi sau subsoluri dintr-un raport
1 antet/subsol per raport;
1 antet/subsol per pagina;
10 anteturi/subsoluri per grup
Numrul de pagini imprimate intr-un raport 65536
Numrul de controale i seciuni care se pot adaug intr-un
formular sau raport de-a lungul timpului
754
Numrul de caractere dntr-oinstruciune SQL care sunt
proprietatea Recordsource sau Rowsource unui formular,
raport sau control (att pentru .accdb, cat i .adp)
32750

Macrocomenzi
Atribut Maxim
Numrul de aciuni dntr-omacrocomanda 999
Numrul de caractere dntr-ocondiie 255
Numrul de caractere dintr-un comentariu 255
Numrul de caractere dintr-un argument de aciune 255

2. Fundamentele bazelor de date relaionale
n sens larg, o baza de date este o colecie de date organizata (structurata). O baza de date are,
n principal, urmtoarele roluri: stocare (memorare) i organizarea datelor (structurare).
Ca i utilitate, bazele de date ne permit (1) memorarea unor cantiti mari de date, (2) regsirea
datelor pe baza unor criterii ce cutare (ce sunt legate n mod direct de structurarea datelor), dar i (3)
prelucrarea unor volume mari de date (filtrare, ordonare, agregare).
Bazele de date relaionale sunt un tip de baze de date n care datele, vzute ca i atribute ale
entitilor reale, sunt socate n tabele i sunt legate intre ele prin relaii.
Acest mod de structurare a datelor, bazat pe legturi intre date, permite elimi narea redundantei,

14

astfel nct stocarea si, mai ales, modificarea unei informaii se face intr-un singur loc, iar, din punct de
vedere funcional, aceasta structura permite regsirea, filtrarea, ordonarea i agregarea datelor, n mod
natural.
Un model relaional de baze de date cuprinde trei componente principale:
structura datelor prin definirea unor domenii i a relaiilor n (atribute, tupluri, chei primare);
integrarea datelor prin impunerea unor restricii;
prelucrarea datelor prin operaii din algebra relaional sau calcul relaional.
Modelul relaional se bazeaz pe noiunea matematica de relaie (din teoria mulimilor) definita ca
o submulime a produsului cartezian a unei liste finite de mulimi numite domenii. Elementele unei relaii
se numesc tupluri (sau n-cupluri), iar numrul de domenii din produsul cartezian se numete arietatea
relaiei .
De obicei relaiile sunt reprezentate sub forma unor tabele n care fiecare rnd reprezint un
tuplu i fiecare coloana reprezint valorile tuplurilor dintr-un domeniu dat al produsului cartezian.
n reprezentarea sub forma de tabel a unei relaii, coloanelor i domeniilor corespunztoare lor, li
se asociaz nume intitulate atribute. Mulimea numelor atributelor unei relaii se numete schema
relaional.
Deci prin relaie se nelege o mulime de funcii definite pe o mulime de atribute cu valori n
reuniunea unor domenii, cu restricia ca valoarea corespunztoare fiecrui atribut s se afle n domeniul
asociat acelui atribut.
Se numete cheie candidat al unei relaii R coloana sau mulimea de coloane din R pentru care
valorile corespunztoare din oricare doua tupluri nu coincid, deci identifica tuplurile prin relaia respectiva
i nu conin strict o submulime de coloane cu aceasta proprietate. Pentru fiecare relaie se alege un
candidat de cheie care se numete cheie primara a relaiei. Tuplurile unei relaii nu pot s conin
valoarea nula n coloane ce aparin cheii primare. Eventualii candidai de chei diferii de cheia primara se
numesc chei alternante. Se numete cheie strin o coloana sau o mulime de coloane a unei relaii R
1

ale crei valori, daca nu sunt nule, coincid cu valori ale unei chei primare dntr-orelaie R, nu neaprat
distincta de R
1
.
Mulimea tuturor schemelor relaionale corespunztoare unei aplicaii se numete schema bazei
de date relaionale, iar coninutul curent al relaiilor, la un moment dat, se numete baza de date
relaional.
n modelul relaional, entitile sunt reprezentate sub forma de relaii n care schema relaional
conine toate atributele entitii i fiecare tuplu al relaiei corespunde unui element al entitii.
2.1.Proiectarea unei baze de date
Concret, paii care trebuie fcui la proiectarea unei baze de date relaionale sunt urmtorii:
Analiza aplicaiei: analiza circuitului informaional, studierea intrrilor i ieirilor,
stabilirea claselor de utilizatori;
Analiza semanticii atributelor din entiti: identificarea atributelor i a sensului
lor funcional, gruparea atributelor n relaii pe entiti, stabilirea cheilor primare i externe;
Normalizarea relaiilor obinute la punctul anterior: micorarea redundantei prin
gruparea atributelor n relaii conform definiiilor pentru formele normale, stabilirea de
constrngeri pentru eliminarea anomaliilor de actualizare;
Scoaterea din relaiile principale a atributelor care au peste 70% valori
nule.
Observaie: Daca se opteaz pe o metoda de tip rapid prototyping aceti pai vor fi repetai n
mod iterativ pe parcursul procesului de dezvoltare.
n general, pentru proiectarea unei baze de date relaionale se creeaz mai nti schema
conceptuala a acesteia (folosind de obicei modelul entitate-legtura), care este transformata apoi intr-un
design logic, folosind metodologia descrisa anterior. O alta metoda poate fi folosita, n locul acestei
tehnici de modelare conceptuala, pentru proiectarea unei baze de date relaionale.
Aceasta este numita tehnica normalizrii, ce consta n adunarea informaiilor intr-un tabel
relaional i din din descompunerea acestui tabel relaional n mai multe tabele care satisfac anumite
reguli i care stocheaz aceleai date ca i tabelul iniial.
n prezent, normalizarea se folosete pentru a rafina design-ul logic al bazei de date rezultat n
urma transformrii schemei conceptuale, eliminnd unele probleme care pot aprea n urma procesului
de proiectare iniial. Evident, daca schema conceptuala este corecta i daca transformarea acesteia n
tabele relaionale este corecta, procesul de normalizare nu mai este necesar.
Exista mai multe metode de proiectare a BD relaionale, dar nici-una nu s-a impus cu desvrire
pana n prezent. Fiecare dintre ele ns se bazeaz pe consideraii practice referitoare la sistemele

15

modelate, consideraii care stau la baza activitilor de procesare a datelor i anume: protocoale de
funcionare a sistemului, modul cum sunt folosite datele, modul de gestionare a acestora etc.
Proiectarea BD cuprinde 3 etape principale:
Realizarea schemei conceptuale a BD
Realizarea proiectului logic al BD (schemei logice a BD)
Realizarea proiectului fizic al BD (schemei fizice a BD)
n prima faza, o echipa nominalizata colecteaz (achiziioneaz) datele corespunztoare din sistem,
apoi urmeaz faza de organizare a acestora utilizndu-se modelul entitate-legtura. Principalele concepte
folosite n acest model sunt: entitatea, relaia (legtura) i atributul.
Entitatea este un obiect de interes din sistem pentru care trebuie s existe date nregistrate.
Observaii:
- Fiecare entitate are o denumire unica n cadrul unui sistem.
- Entitile sunt reprezentate prin substantive, dar nu orice substantiv folosit n descrierea
sistemului este entitate, ci numai acelea care au o semnificaie deosebita.
- Fiecare entitate trebuie s fie bine definita i precizata pentru a se evita confuziile.
Relaia (legtura) este o asociere (raport) nedirecionat intre 2 entiti. n exemplul de mai sus
relaiile sunt:
- "lucreaz_in" - intre entitile FACULTATE i PROFESOR,
- "studiaz_in" intre FACULTATE i STUDENT,
- "preda" intre PROFESOR i CURS,
- "urmeaz" intre STUDENT i CURS.
Observaii:
- Relaiile sunt reprezentate prin verbe, dar nu orice verb utilizat n descrierea sistemului este
relaie.
- Intre 2 entiti pot exista mai multe relaii. Ex.: "lucreaz_in" i "conduce" - intre entitile
FACULTATE i PROFESOR.
- Pot exista n cadrul unei scheme conceptuale mai multe relaii cu acelai nume, dar cele care
leag aceleai entiti trebuie s aib nume diferite.
Cardinalitatea unei relaii indica numrul de instane din fiecare entitate care poate participa
la relaie. Exista 3 tipuri de cardinalitate:
- "multi-la-unu" (many-to-one, n:1).
Relaia dintre entitile A i B este de tipul "multi-la-unu" daca fiecrei instane din A i se poate
asocia cel mult o singura instana din B i fiecrei instane din B i se pot asocia mai multe instane din A.
- "unu-la-unu" (one-to-one, 1:1).
Relaia dintre entitile A i B este de tipul "unu-la-unu" daca fiecrei instane din A i se poate
asocia cel mult o singura instana din B i fiecrei instane din B i se poate asocia cel mult o singura
instana din A.
- "multi-la-multi" (many-to-many, n:n).
Relaia dintre entitile A i B este de tipul "multi-la-unu" daca fiecrei instane din A i se pot
asocia mai multe instane din B i fiecrei instane din B i se pot asocia mai multe instane din A.
Valorile prezentate pana acum (n:1, 1:1, n:n) reprezint cardinalitatea maxima a unei relaii. Pe de
alta parte, o relaie este caracterizata i de o cardinalitate minima ce indica obligativitatea participrii
entitilor la relaie. Cardinalitatea minima a unei relaii poate avea valorile: 0:0, 0:1, 1:1. Daca avem
cardinalitatea minima a unei relaii egala cu 1 nseamn ca exista o participare totala a entitii la relaie
(participare obligatorie). Daca avem cardinalitatea minima egala cu 0 nseamn ca exista o participare
pariala a entitii la relaie. n cadrul reprezentrii grafice cardinalitatea maxima a unei relaii se v
afia fr paranteze, n timp ce cardinalitatea minima, se v scrie intre paranteze. Uneori cardinalitatea
minima nu este reprezentata n diagrama, dar cea maxima este obligatorie.
Atributul este o caracteristic a unei entiti sau a unei relaii. Fiecare entitate are un anumit
numr de atribute despre care sunt nregistrate date. Ex.: nume, prenume, data. Fiecare atribut poate
lua valori care furnizeaz informaii despre entitatea respectiva. Ex.: Ionescu, Aurel, 13.10.84. i relaiile
pot avea atribute. Ex.: lucreaz_in --> data_angajarii.
Observaii:
Numele unui atribut este unic n cadrul unei entiti sau al unei relaii.
Atributele sunt ntotdeauna substantive, dar nu orice substantiv este atribut.
Pentru fiecare atribut este necesara o descriere, mpreun cu domeniul de valori (ntreg, sir de
caractere, data calendaristica etc.).
Trebuie evitate atributele indirecte. Ex.: numele_facultatii este un atribut indirect pentru tabelul
STUDENT i un atribut direct pentru tabelul FACULTATE.

16

Cheia unei entiti este un atribut sau set de atribute care identifica n mod unic o instana a
acelei entiti (face distincie intre oricare 2 rnduri diferite ale tabelului asociat entitii). Cheile sunt de
2 feluri: naturale (au semnificaie reala pentru entitate, ex.: (nume, prenume, data_nasterii)) i
artificiale (nu au semnificaie reala pentru entitate, ex.: cod_student, cod_facultate).
Avantajele cheilor artificiale primare:
- stabilitatea Cheile primare artificiale se schimba rar. Schimbarea unei chei primare
presupune schimbarea cheilor strine care fac referire la ea.
- simplitatea Au un numr de atribute i de caractere mai mic.
- Nu prezint ambiguiti n reprezentare (ex.: liniue, spatii etc.).
- Elimina apariia valorilor Null.
- Unui atribut simplu ii corespunde o singura valoare atomica. Ex.: nume_facultate.
- Un atribut compus este format din mai multe atribute simple numite componentele sale.
Ex.: adresa (ora, strada, numr).
- Un atribut repetitiv (multivaloare) poate avea mai multe valori, numrul lor variind de la
o instana la alta. Ex.: nr_telefon (051-435455, 095-770324).
- Un atribut calculat (dedus) are valoarea cunoscuta indirect, pe baza calculului cu
ajutorul valorilor altor atribute. Ex.: salariul_net = 0,75*salariul_brut.
Observaie: Atributele deduse reprezint o redundanta a datelor.
Pentru realizarea schemei logice a unei baze de date se pornete de la scheme conceptuala
(modelul entitate legtura) urmrindu-se conversia entitilor i a legturilor n tabele relaionale.
Regula general: entitile se transform n tabele.
Subcazuri:
a) Entitile independente devin tabele independente, adic tabele a cror cheie primara nu conine
chei strine.
Ex.: Entitatea STUDENT devine tabelul STUDENT cu cheia primara cod_student.
b) Entitile dependente devin tabele dependente (tabele detaliu) adic tabele a cror cheie primara
conine cheia strin ce face referina la cheia primara a entitii de care depinde entitatea n
cauza.
Ex.: Entitatea MODUL devine tabelul MODUL a crui cheie primara este formata din cod_curs (care
este o cheie strin pentru entitatea CURS) i nr_modul.
c) Subentitile devin subtabele, adic tabele a cror cheie primara este cheia strin pentru tabelul
superentitate.
Ex.: Subentitatea PROFESOR v avea cheia primara cod_personal, aceeai cu cea a superentitii
PERSONAL.
- Avantajele supertabelelor: simplificarea programelor de manipulare a datelor.
- Dezavantajele supertabelelor: probleme de integritate, apar valori de Null.
- Avantajele subtabelelor: mai stabile, mai flexibile, ocupa spaiu mai mic, conin mai puine valori
de Null.
- Dezavantajele subtabelelor: se ngreuneaz manipularea datelor.
2.2. Transformarea atributelor
Regula general: Atributele se convertesc n coloane ale tabelelor provenite din entiti sau chiar
n tabele.
Cazuri:
a) Atributele simple ale unei entiti devin coloane n tabelul provenit din acea entitate.
b) Toate componentele unui atribut compus devin coloane.
Ex.: adresa --> tara, ora, str,. nr., bl., sc., et., ap.
c) Atributele repetitive (multivaloare) ale unei entiti devin tabele dependente ce conin fiecare o
cheie strin (care face referina la cheia primara a entitii) i atributul multivaloare. Cheia primara a
unui astfel de nou
d) Atributele simple ale unei relaii 1:1 sau M:1 devin coloane ale tabelului care conine cheia strin.
Ex.: atributul data_inscrierii al relaiei studiaz_la devine coloana n tabelul STUDENT.

3. Tabele
3.1. Adugarea unui tabel
Avei posibilitatea s adugai tabele noi la o baza de date existenta
utiliznd comenzile din grupul Tabele din fila Creare.
3.2. Crearea unui tabel, pornind din vizualizarea Foaie de
date

17

n modul de vizualizarea Foaie de date, avei posibilitatea s introducei date imediat i s permitei
Acces s genereze o structura de tabel n spatele informaiilor introduse. Numele de cmpuri se atribuie
numeric (Camp1, camp2, etc.), iar Access seteaz automat tipul de date pentru fiecare cmp, n funcie
de datele introduse.
1. n fila Creare/Create, n grupul Tabele, facei clic pe Tabel.
Access creeaz tabelul i selecteaz prima celula goala din coloana Facei clic pentru adugare.
2. Pe fila Cmpuri, n grupul Adugare i tergere, facei clic pe tipul de cmp pe care dorii s l
adugai. Daca nu vedei tipul de cmp dorit, facei clic pe Mai multe cmpuri .
Access afieaz o lista de tipuri de fiiere utilizate n mod obinuit. Facei clic pe tipul de cmp dorit,
iar Access adaug cmpul nou la foaia de date, n punctul de inserare.
Este posibil s mutai cmpul, glisndu-l. Cnd glisai un cmp ntr-ofoaie de date, apare o bara de
inserare verticala n locul unde v fi plasat cmpul.
3. Pentru a adaug date, ncepei s tastai n prima celula goala sau lipii date dntr-oalta sursa.
4. Pentru a redenumi o coloana (cmp), facei dublu clic pe titlul coloanei, apoi tastai numele nou.
Ar trebui s atribuii nume semnificative pentru fiecare cmp, astfel nct s tii ce conin cmpuri le
cnd le vedei n panoul Lista de cmpuri.
5. Pentru a muta o coloana, facei clic pe titlul ei pentru a o selecta, apoi glisai-o n locaia dorita.
Avei posibilitatea s selectai mai multe coloane alturate i s le glisai mpreun intr-un alt loc.
Pentru a selecta mai multe coloane alturate, facei clic pe antetul primei coloane, apoi inei apsat
tasta SHIFT i facei clic pe antetul ultimei coloane.
3.2.1. Crearea unui tabel, ncepnd din vizualizarea Proiectare n vizualizarea Proiectare,
creai mai nti structura tabelului. Apoi, comutai la vizualizarea Foaie de date pentru a introduce datele
sau introducei-le utiliznd alta metoda, cum ar fi lipirea sau importul.
1. n fila Creare/Create, n grupul Tabele, facei clic pe Proiectare tabel/Tabel Design.
2. Pentru fiecare cmp din tabel, tastai un nume n coloana Nume cmp/Field Name, apoi
selectai un tip de date din lista Tip de date/Data Type.
3. Avei posibilitatea s tastai o descriere pentru fiecare cmp n coloana Descriere/Description.
Descrierea este atunci afiat n bara de stare, atunci cnd cursorul se afla n acel cmp n
vizualizarea Proiectare/Design. Descrierea este utilizata de asemenea ca text n bara de stare
pentru orice controale intr-un formular sau raport pe care l creai prin glisarea cmpului din
panoul Lista de cmpuri, i pentru orice controale create pentru acel cmp cnd utilizai
expertul Formular sau expertul Raport.
4. Dup ce adugai toate cmpurile, salvai tabelul:
Pe fila Fiier/File, facei clic pe Salvare/Save.
5. Se poate ncepe introducerea de date n tabel oricnd, daca se comuta la vizualizarea Foaie de
date i se face clic pe prima celula necompletata.
3.2.2. Setarea proprietilor pentru cmpuri n vizualizarea Proiectare/Design
Indiferent de modul n care este creat un tabel, se recomand s se verifice i s se seteze
proprietile cmpurilor. Chiar daca unele proprieti sunt disponibile n vizualizarea Foaie de date, unele
proprieti se poate seta numai n vizualizarea Proiectare. Pentru a comuta la vizualizarea Proiectare,
facei clic cu butonul din dreapta pe tabel n Panoul de navigare, apoi facei clic pe Vizualizare proiect.
Pentru a vedea proprietile unui cmp, facei clic pe cmp n grila de proiectare. Proprietile sunt afiate
sub grila de proiectare, n Proprieti cmp.
Pentru a vedea o descriere a fiecrei proprieti de cmp, facei clic pe proprietate i citii descrierea
din caseta de lng lista de proprieti, sub Proprieti cmp. Vei obine informaii detaliate daca
apsai butonul Ajutor.
Cnd proiectai baza dvs. de date, trebuie s selectai setarea de tip de date potrivita pentru
fiecare cmp, daca tipul de date este altul dect text. Urmtorul tabel are informaii despre tipurile de
date Access i ce efect are fiecare setare de tip de date asupra introducerii de date.

Tipul de date Efect asupra intrrilor de date
Cmp Text
Cmpurile de tip Text accepta caractere text sau numerice, inclusiv liste de elemente
delimitate. Un cmp text accepta un numr mai mic de caractere dect un cmp Memo
- de la 0 la 255 de caractere. Uneori, se pot utiliza funcii de conversie pentru a efectua
calcule pentru datele dintr-un cmp Text.
Cmp Memo
Avei posibilitatea s introducei cantiti mari de text i date numerice n acest tip de
cmp. De asemenea, daca proiectantul bazei de date seteaz cmpul pentru a accepta

18

formatarea de text mbogit, avei posibilitatea s aplicai tipurile de formatare care se


gsesc n mod normal n programe de procesare de text, cum ar fi Word. De exemplu,
se pot aplica stiluri de font i mrimi de font diferite la anumite caractere din text i s
aplicai stilul aldin sau italic etc. De asemenea, avei posibilitatea s adugai etichete
Hypertext Markup Language (HTML).
n plus, cmpurile Memo au o proprietate noua denumita Numai adugare. Cnd se
activeaz aceasta proprietate, Access urmrete versiunile anterioare ale datelor, n
cmp. Avei posibilitatea s revizuii istoricul cmpului, daca facei clic cu butonul din
dreapta i selectai Afiare istoric coloana din meniul contextual. Caracteristica are
ca scop utilizarea n aplicaii cum ar fi baze de date de urmrire a problemelor, unde
este posibil s fie necesara meninerea unei nregistrri permanente. Cnd plasai
cursorul intr-un cmp Memo care are proprietatea Numai adugare activata, n mod
implicit textul din acel cmp v disprea. Nu se poate aplica nici o formatare sau
modificare la textul respectiv.
Numr
Se pot introduce numai numere n acest tip de cmp i se pot efectua calculri cu
valorile dintr-un cmp Numr.
Data/Ora
Avei posibilitatea s introducei numai date i ore n acest tip de cmp. n funcie de
modul n care proiectantul bazei de date seteaz cmpul, este posibil s ntmpinai
urmtoarele condiii:
Daca proiectantul unei baze de date a setat o masca de intrare pentru cmp (o
serie de literali i substitueni care apar la selectarea cmpului), trebuie s
introducei datele n spatiile i n formatul furnizate de masca. De exemplu,
daca vedei o masca ZZ_LLL_AAAA, trebuie s tastai 11 oct 2009 n spatiile
furnizate. Nu se poate introduce numele ntreg al unei luni sau o valoare
pentru an care s conin numai doua cifre.
Daca proiectantul nu a creat o masca de intrare pentru a controla modul de
introducere al date sau orei, avei posibilitatea s introducei valoarea utiliznd
orice format de data i de ora care este valid. De exemplu, se poate tasta 11
Oct. 2009, 10/11/09, Octombrie 11, 2009 etc.
Este posibil ca proiectantul bazei de date s aplice cmpului un format de
afiare. n acest caz, daca nu se ntlnete nici o masca de intrare, avei
posibilitatea s introducei o valoare n aproape orice format, dar Access
afieaz datele n concordanta cu formatul de afiare. De exemplu, se poate
introduce 10/11/2009, dar formatul de afiare poate fi setat s afieze
valoarea ca 11-Oct-2009.
Simbol
monetar
Avei posibilitatea s introducei numai valori monetare n acest tip de cmp. De
asemenea, nu este necesar s introducei manual un simbol monetar. n mod implicit,
Access aplica simbolul monetar ( , , $ etc.) specificat n setrile regionale Windows.
Numerotare
automata
Nu se pot introduce sau modifica datele din acest cmp n orice moment. Access
mrete valorile dintr-un cmp Numerotare automata ori de cate ori adugai o
nregistrare noua intr-un tabel.
Da/Nu
Cnd facei clic pe un cmp care este setat la acest tip de date, Access afieaz fie o
caseta de selectare, fie o lista verticala, n funcie de modul de formatare al cmpului.
Daca formatai cmpul pentru a afia o lista, avei posibilitatea s selectai din lista fie
Da fie Nu, fie Adevarat fie Fals, fie Activat fie Dezactivat, din nou n funcie de
formatul aplicat cmpului. Nu se pot introduce valori n lista sau modifica valorile din
lista direct dintr-un formular sau dintr-un tabel.
Obiect OLE
Se utilizeaz acest tip cmp la afiarea unui formular de date dintr-un cmp creat intr-
un alt program. De exemplu, avei posibilitatea s afiai un fiier text, o diagrama
Excel sau un pachet de diapozitive intr-un cmp obiect OLE.
Nota Atarile furnizeaz un mod mai rapid, mai uor i mai flexibil de a vizualiza
datele din alte programe. Pentru mai multe informaii, consultai intrarea Atari, mai
jos n acest tabel.
Hyperlink
Avei posibilitatea s introducei date n acest tip de cmp i Access adaug http:// la
textul dvs. Daca introducei o adresa Web valida, linkul v funciona. n caz contrar,
linkul v avea ca rezultat un mesaj de eroare. De asemenea, editarea hyperlinkurilor
existente poate fi dificila, deoarece daca facei clic cu mouse-ul pe cmpul hyperlink se
pornete browser-ul i v conduce n site-ul specificat n link. Pentru a edita un cmp

19

hyperlink, selectai cmpul adiacent, utilizai tasta TAB sau tastele sgei pentru a muta
focalizarea n cmpul hyperlink, apoi apsai F2 pentru a activa editarea sau facei clic
cu butonul din dreapta pe cmp, indicai spre Hyperlink, apoi facei clic pe Editare
hyperlink.
Ataare
Avei posibilitatea s ataai date din alte programe la acest tip de cmp, dar nu avei
posibilitatea s tastai sau s introducei n alt mod text sau date numerice.
Expert cutare
Expertul Cutare nu este un tip de date. n schimb, utilizai expertul pentru a crea
doua tipuri de liste verticale: liste de valori i cmpuri de cutare. O lista de valori
utilizeaz o lista delimitata de elemente pe care le introducei manual cnd utilizai
expertul Cutare. Acele valori pot fi independente de orice date sau obiecte din baza
de date.

Urmtorul tabel conine o descriere a unor proprieti de cmp care se regleaz n mod obinuit.
Proprietate Descriere
Dimensiune
cmp
Pentru cmpurile Text, aceasta proprietate seteaz numrul maxim de caractere care
pot stocate n cmp. Numrul maxim este 255. Pentru cmpurile Numr, aceasta
proprietate seteaz tipul de numr care v fi stocat (ntreg lung, Dublu, i aa mai
departe). Pentru o stocare eficienta a datelor, se recomanda s alocai spaiul minim
necesar pentru datele respective. Aceasta valoare poate fi mrit mai trziu, n caz ca
este nevoie.
Format
Aceasta proprietate seteaz modul n care se afieaz datele. Nu afecteaz datele n
sine dup cum sunt stocate n cmp. Avei posibilitatea s selectai un format
predefinit sau s introducei un format particularizat.

Masca intrare
Utilizai aceasta proprietate pentru a specifica un model pentru toate datele care vor fi
introduse n acest cmp. Astfel, datele se vor introduce corect i vor conine numrul
corect de caractere. Pentru ajutor despre generarea unei mti de intrare, facei clic pe
n partea dreapta a casetei de proprieti.
Valoare
implicita
Utilizai aceasta proprietate pentru a specifica valoarea implicita care v aprea n
fiecare cmp de fiecare data cnd se adaug o nregistrare noua. De exemplu, daca
avei un cmp Data/ora n care dorii s nregistrai ntotdeauna data la care s-a
adugat nregistrarea, avei posibilitatea s introducei "Data()" (fr ghilimele) ca
valoare implicita.
Necesar
Aceasta proprietate stabilete daca se solicita o valoare pentru acest cmp. Daca setai
aceasta proprietate la Da, Access nu v permite adugarea unei nregistrri dect
daca se introduce o valoare pentru acest cmp.

3.3. Introducerea datelor intr-un tabel
Chiar daca un formular este cel mai bun obiect de utilizat pentru introducerea datelor, mai ales
daca avei mai muli utilizatori pentru baza de date Access, avei posibilitatea s introducei i s editai
datele direct intr-un tabel.
Tipul de date care poate fi introdus de un utilizator n tabel poate fi influenat de urmtoarele aspecte:
Un cmp dintr-un tabel este setat, n mod implicit, s accepte un anumit tip de date de cmp
(tipul de date al cmpului: Caracteristica a unui cmp care determina tipul de date ce l poate stoca. De
exemplu, un cmp cu tipul de date Text poate stoca date constnd fie n text, fie n caractere numerice,
dar un cmp Numr poate stoca numai date numerice.), cum ar fi text sau numeric. Trebuie s
introducei tipul de date la care este setat cmpul, altfel Access afieaz un mesaj de eroare.
Poate fi necesar s introducei datele intr-un anumit format daca un cmp are aplicata o masca
de intrare (masca de intrare: Format care consta n caractere de afiare literala (cum ar fi paranteze,
puncte i linii de desprire n silabe) i caractere de masca care precizeaz locul unde se introduc datele,
felul datelor i cate caractere sunt permise.).
Cu excepia atarilor i listelor cu valori multiple, avei posibilitatea s introducei un singur tip
de date n majoritatea cmpurilor. n cazul n care nu tii daca un cmp accepta atari, verificai
proprietile cmpului. Cnd un cmp este o lista cu mai multe valori, Access afieaz o caseta de
selectare lng fiecare element al listei.
3.3.1. Vizualizarea setrii de proprieti a cmpului

20

1. n Panoul de navigare, facei clic cu butonul din dreapta pe tabel, apoi facei clic pe Vizualizare
proiect din meniul de comenzi rapide.
2. Pe fila Proiectare/Design, n grupul Afiare/ascundere, facei clic pe Foaie de proprieti
pentru a vizualiza proprietile cmpului.

Proprietate
Locaia n grila
de proiectare a
tabelului
Valori posibile
Comportamentul la momentul introducerii
datelor
Dimensiunea
cmpului
Fila General 0-255
Limita de caractere se aplica numai cmpurilor
care sunt setate la tipul de date Text. Daca se
ncearc introducerea de mai multe caractere
dect numrul specificat, cmpul trunchiaz
sfritul datelor pe care le introducei.
Masca intrare Fila General
Seturi de
caractere
predefinite sau
particularizate de
litere sau de
substitueni
O masca de intrare obliga utilizatorii s introduc
datele intr-un format predefinit. Mtile se
afieaz cnd selectai un cmp dintr-un tabel
sau un control dintr-un formular. De exemplu, s
presupunem ca facei clic pe un cmp Data i
vedei un set de caractere: ZZ-LLL-AAAA.
Aceasta este o masca de intrare. v obliga s
introducei valoarea lunii ca abreviere formata
din trei litere, cum ar fi OCT, i valoarea anului
ca patru litere - de exemplu, 15-OCT-2009.
Nota Reinei ca mtile de intrare controleaz
numai modul de introducere al datelor, dar nu
controleaz i modul n care Access stocheaz
sau afieaz datele respective.
Necesar Fila General Da/Nu
Cnd este activata, aceasta proprietate v obliga
s introducei o valoare intr-un cmp, iar Access
nu v permite salvarea datelor pana cnd nu
este terminat un cmp obligatoriu. Cnd este
dezactivata, cmpul v accepta valori nule,
aadar cmpul poate rmne necompletat.
Nota O valoare nula nu este acelai lucru cu o
valoare zero. Zero (0) este o cifra, iar "nul"
nseamn o valoare care este necunoscuta,
nedefinita sau care lipsete.
Se permite
lungime zero
Fila General Da/Nu
Cnd este activata, avei posibilitatea s
introducei iruri de caractere cu lungimea zero:
iruri care nu conin niciun caracter. Pentru a
crea iruri de caractere cu lungimea zero,
introducei o pereche de ghilimele n tabel ("").
Indexat Fila General
Da (Cu dubluri),
Da (Fr dubluri),
Nu
De asemenea, vei posibilitatea s creai un
index pornind de la mai mult de un cmp. din
mai mult de un cmp. Daca procedai astfel,
avei posibilitatea s dublai valorile dintr-un
cmp, dar nu din ambele cmpuri.
1. Pentru a introduce date intr-un tabel, facei dublu clic n Panoul de navigare pe tabelul pe care
dorii s-l utilizai.
n mod implicit, Access deschide tabelul n vizualizarea Foaie de date.
2. Facei clic pe cmpul pe care dorii sa-l utilizai, apoi introducei datele.
3. Pentru a v muta la urmtorul cmp de pe acelai rnd, apsai tasta TAB, utilizai tastele
sgeata dreapta sau sgeata stnga, sau facei clic pe celula din rndul urmtor.
Nota Cnd apsai tasta TAB, Access utilizeaz n mod implicit setrile regionale Windows
pentru a determina daca v muta cursorul la stnga sau la dreapta. n cazul n care computerul
utilizeaz o limba n care se citete de la stnga la dreapta, cursorul se muta la dreapta, cnd apsai
tasta TAB. n cazul n care computerul utilizeaz o limba n care se citete de la dreapta la stnga,
cursorul se muta la stnga.

21

Sfat Pentru a trece la urmtorul cmp dntr-ocoloana, utilizai tastele sgeata n sus sau n jos,
sau facei clic pe celula dorita.
Am creat tabela Angajati cmpurile id, nume, data nasterii, salariu, vechime cu tipurile de date
corespunztoare fiecrui cmp n parte.
Cheia unei tabele reprezint un ansamblu minim de atribute care identifica n mod unic o
nregistrare dntr-otabela. Atunci cnd creai o tabela, trebuie s stabilii cheia primara.
Cheia primara a unei tabele se stabilete cu ajutorul comenzii Primary Key care se gsete n
Table Tools i apoi Design. v trebui s apelai aceasta funcie, dup ce ai selectat cmpul sau
cmpurile care dorii s fie cheia primara a tabelei.


Voi crea a doua tabel n fila Creare/Create, n grupul Table i o voi salva cu numele Profesii.
Apoi alegem View i Design View i vom introduce numele cmpurilor dorite i tipul datelor.


Am introdus cteva date n tabelele Angajati i Profesii.

22





3.4. Crearea unei legturi ntre doua tabele
Pentru a stabili relaii intre tabele mai nti trebuie s cream tabelele i apoi apsm butonul
Relationships din Table Tools apoi Table.

23



Dup ce am adugat tabelele apsm butonul Edit RelationShips pe care l gsim n
Relationships Tools la Design.

24

Dup ce am ales Edit Relationships apsm butonul Create New pentru a crea o noua legtura
intre doua tabele. Apoi se alege tabela din stnga i tabela din dreapta i cmpurile din cele doua tabele
intre care se stabilete relaia sau legtura.


25


Dac vrem s revenim pentru a reedita o relaie ntre dou tabele apsm butonul Edit
RelationShips.

Alegem Join Type i apoi OK.

26


4. Interogri
4.1. Interogri QBE
Interogrile permit filtrarea i ordonarea datelor din tabele precum i reunirea datelor din mai
multe tabele, respectiv calcularea unor noi informaii.
Pentru crearea unei interogri, sistemul Access pune la dispoziie doua limbaje cu proprieti
diferite. Primul, numit QBE - Query by Example - este un limbaj vizual al crui principal avantaj este
simplitatea. Al doilea limbaj, SQL - Structured Query Language - este un limbaj declarativ care, dei
conine relativ puine cuvinte cheie, permite exprimarea unor interogri mult mai elaborate dect QBE.
Interogrile pot fi clasificate n funcie de aciunea realizata in:
Interogri de selecie
Interogri de actualizare
Interogri de tergere
Interogri de creare sau inserie
n acest capitol vor fi prezentate doar interogrile de selecie. Din punct de vedere al operaiilor
implicate de interogri, putem distinge intre: proiecie, sortarea, filtrarea (selecia), reuniunea (JOIN),
gruparea i sumarizarea.
Operaia de proiecie
Operaia de proiecie presupune excluderea din rezultat a coloanelor care nu sunt relevante n
contextul interogrii. Aceasta excludere se realizeaz prin ne-includerea lor n macheta de proiecie.
Operaia de sortare
Operaia de sortare presupune ordonarea rezultatului funcie de unul sau mai multe criterii. n
cazul n care sunt mai multe criterii, primul criteriu v fi cel dominant, restul fiind considerate n mod
ierarhic, n ordinea n care apar.
Operaia de selecie
Operaia de filtrare (selecie) presupune excluderea din rezultat a nregistrrilor care nu
ndeplinesc diverse criterii exprimate prin condiii (expresii) logice.
Operaia de JOIN
Operaia de reuniune (JOIN) consta n reunirea datelor aflate n diferite tabele intre care exista
stabilite relaii.
Operaia de grupare i sumarizare
Operaia de grupare i sumarizare presupune mprirea nregistrrilor n grupuri i extragerea
informaiilor la nivelul fiecrui grup n parte. Pentru a avea acces la linia Total se v marca opiunea
Totals din meniul View.
Opiunile de sumarizare sunt: Group by, Sum, Avg, Min, Max, Count, StDev, Var, First, Last,
Expression, Where.
Interogrile reprezint modaliti de selecie i afiare a informaie din unul sau mai multe surse
(tabele sau alte interogri), formulate cu ajutorul unor condiii logice.
4.2. Tipuri de interogri
n funcie de modul de definire i rezultatele aciunii, interogrile pot fi clasificate astfel:

27

1. interogri simple sau de selecie (folosind condiii logice);


2. interogri pentru actualizare - delete query, update query i append query;
3. interogri ncruciate sau bidimensionale.
Rezultatul interogrii este un nou set de date, numit set dinamic (engl: Dynaset). Setul dinamic
(rezultatul interogrii) conine doar cmpurile specificate ale nregistrrilor din tabelele specificate care
satisfac condiiile specificate. Denumirea '"Set dinamic" este legata de faptul ca orice modificri ale
datelor din tabelele specificate n interogare implica modificri corespunztoare ale rezultatului interogrii
(la o noua executare a ei) i invers, orice modificri n setul dinamic implica modificri n tabelele
respective (cu condiia respectrii integritii datelor). Seturile de date dinamice nu se memoreaz; ele se
formeaz din nou de fiecare data cnd executam o interogare. Daca n tabelele bazei de date intervin
modificri, rezultatele executrii a doua interogri identice pot fi diferite.
4.3. Crearea unei interogri (query)
Alegem Create apoi Query Wizard pentru a crea o interogare n mod automat de asistent.

Putem s alegem ce fel de interogare dorim. Pentru acest exemplu am ales Simple Query
Wizard i apsm OK.




























Apoi apare urmtoarea
fereastr i putem s ne crem
interogarea pe baza tabelei dorite
i putem selecta i cmpurile care
vrem s apar n interogare i
apsm Next.




28









Sau mai putem crea o interogare folosind Create i apoi Query Design i ne vom selecta tabela
pe care o vom utiliza pentru interogare i cmpurile pe care dorim s apar n interogare.



29



Pentru aceast
interogare am selectat doar
cmpurile nume, salariu i
vechime i am pus condiia
>=100 pentru salariu adic vor fi
afiate doar salariile care
respect aceast condiie.














Vom salva interogarea cu numele dorit dup care o vom rula apsnd Run .

30


Vrem s revenim n modul Design pentru a mai adaug o condiie vom alege i vom alege
Design View pentru pune condiia ca vechimea s fie mai mare de 2 ani.





Salvm i rulm interogarea.

31

4.4. Exemple de expresii care folosesc funcii agregat (funcii statistice ce se aplic
pe un domeniu definit)
Funciile agregat sunt:
Davg: calculeaz media unui set de valori asociate unui set de articole (domeniu)
Sintaxa: Davg(expr, domain[,criteria])
unde expr poate fi un identificator de cmp ce conine valori numerice, domain poate fi un nume de
tabel sau query i criteria poate fi o expresie sir folosit pentru a restrnge domeniul de aplicare a
funciei.
Dcount: determin numrul de articole ce se afl intr-un set specificat de articole.
Sintaxa: Dcount (expr, domain[,criteria])
Dlookup: aduce valoarea unui cmp anume dintr-un set specificat de articole
Dfirst, Dlast: aduce un articol aleatoriu dintr-un cmp al unui tabel sau query, cnd se dorete
orice valoare din acel cmp.
Dmin, Dmax: determin valorile minim i maxim dintr-un set de articole.
DstDev, DstDevP: estimeaz deviaia standard pe mulimea de valori a unui set de articole.
Exemplu: DStDevP("[Freight]", "Orders", "[ShipCountry] = 'UK'"), calculeaz deviaia standard pentru
populaia comenzilor trimise ctre UK.
Dsum: calculeaz suma mulimii valorilor dintr-un set specificat de articole.
Dvar, DvarP: estimeaz varianta aplicat pe mulimea valorilor dintr-un set specificat de
articole.
4.5. Funcia IIF
Returneaz una sau doua pri, n funcie de evaluarea unei expresii.
Se poate utiliza IIf oriunde se pot utiliza expresii. Se utilizeaz IIf pentru a determina daca o
expresie este adevrat sau falsa. Daca expresia este adevrat, IIf returneaz o valoare; daca este
falsa, IIf returneaz o alta. Se specifica valorile pe care le returneaz funcia IIf.
Sintaxa
IIf(expr, parteadevarata, partefalsa)
Sintaxa funciei IIf are urmtoarele argumente:
Argument Descriere
expr Obligatoriu. Expresia care se evalueaz.
parteadevarata Obligatoriu. Valoarea sau expresia returnata daca expr este True.
partefalsa Obligatoriu. Valoarea sau expresia returnata daca expr este False.
Observaii:
IIf evalueaz ntotdeauna att parteadevarata cat i partefalsa, chiar daca returneaz doar
una din ele. Datorita acestui lucru, trebuie s avei grija la efecte secundare nedorite. De exemplu, daca
evaluarea argumentului partefalsa rezulta ntr-omparire la zero, chiar daca expr este Adevrat.
4.5.1. Utilizarea IIf pe un formular sau raport s presupunem ca exista un tabel Clienti
care conine un cmp numit RegiuneTara. Intr-un formular, trebuie decis daca Italiana este prima limba a
contractului. Se poate adaug un control i utiliza IIf n proprietatea Sursa control, dup cum urmeaz:
=IIf([RegiuneTara]="Italia", "Italiana", "O alta limba")
Cnd se deschide formularul n Vizualizare formular, controlul afieaz "Italiana" cnd valoarea
pentru RegiuneTara este Italia, i "O alta limba" cnd RegiuneTara are oricare alta valoare.
4.5.2. Utilizai IIf n expresii complexe Se poate utiliza orice expresie ca orice parte a
instruciunii IIf. De asemenea, se pot imbrica expresii IIf, ceea ce permite evaluarea unor serii de
expresii dependente.
De exemplu, s presupunem ca lucrai ntr-olibrrie. Baza de date a librriei are un tabel numit
mprumutate, care conine un cmp numit Data scadenta, care conine data pana la care trebuie
napoiat o anumit carte. Se poate crea un formular care indica starea unui element mprumutat intr-un
control utiliznd funcia IIf n proprietatea Sursa control a acelui cmp, dup cum urmeaz:
=IIf([Data Scadenta]<Date(),"INTARZIERE",IIf([Data Scadenta]=Date(),"Trebuie napoiat","Nu trebuie
napoiat nc"))
Cnd se deschide formularul n Vizualizare formular, controlul afieaz "ntrziere" daca Data
Scadenta este mai mica dect data curenta, "Trebuie napoiat" daca este egala cu data de azi sau "Nu
trebuie napoiat nc" altfel.
4.5.3. Utilizai IIf n cod VBA

32

Exemplele care urmeaz demonstreaz utilizarea acestei funcii intr-un modul Visual Basic for Applications
(VBA). Pentru mai multe informaii despre lucrul cu VBA, selectai Referina dezvoltator n lista
verticala de lng Cutare i introducei unul sau mai muli termeni n caseta de cutare.
5. Access SQL
Limbajul SQL - Structured Query Language - este un limbaj declarativ care, dei conine relativ
puine cuvinte cheie, permite exprimarea unor interogri foarte complexe pe o baza de date.
n cazul limbajelor declarative, programatorul v descrie algoritmul de rezolvat n loc s
implementeze algoritmul de rezolvare. n acest caz sistemul v cuta algoritmul de rezolvare,
problemele fiind legate de respectarea sintaxei limbajului la descrierea problemei.
Limbajul SQL permite att crearea entitilor specifice unei baze de date (ex. tabele, indeci,
utilizatori etc.) cat i editarea i regsirea nregistrrilor din aceasta, n acest capitol vor fi prezentate
doar interogrile de selecie.
Din punct de vedere al operaiilor implicate de interogri, putem distinge intre: proiecie, sortarea,
filtrarea (selecia), reuniunea (JOIN), gruparea i sumarizarea.
5.1. Instruciunea SELECT
Operaia de proiecie presupune excluderea din rezultat a coloanelor care nu sunt relevante n
contextul interogrii. Aceasta excludere se realizeaz prin ne-includerea lor n lista de proiecie.
Sintaxa instruciunii SQL care realizeaz proiecia unei tabele este:
SELECT lista_proiecie
FROM tabela;
Lista de proiecie v cuprinde specificarea cmpurilor din tabela, desprite prin virgula. Ordinea
de apariie a acestora v determina ordinea cmpurilor n rezultat. Prin proiecie se reduce n general
numrul de coloane dar nu este afectat numrul de nregistrri.
Proiecia 1:1 se poate realiza nlocuind lista de proiecie cu caracterul *, caz n care toate
coloanele vor fi proiectate n ordinea n care ele apar n tabela.
Daca se dorete, prin proiecie pot fi redenumite i cmpurile din tabela. Sintaxa listei de
proiecie v fi n acest caz:
nume_camp1 AS nume_nou1, nume_camp2 AS nume_nou2,...
Exemplu:
SELECT cods AS CodStudent, nume AS NumeStudent
FROM Studenti;
Sintaxa extinsa:
SELECT [predicat] { * | tabel.* | [tabel.]camp1 [AS alias1] [, [tabel.]camp2 [AS alias2] [, ...]]}
FROM expresie pentru tabele [IN baza de date externa]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
[WITH OWNERACCESS OPTION]

Instruciunea SELECT are aceste pri:
Parte Descriere
predicat
Unul dintre urmtoarele predicate: ALL, DISTINCT, DISTINCTROW sau TOP. Predicatul
se utilizeaz pentru a restriciona numrul de nregistrri care se returneaz. n cazul n
care nu se specifica niciunul, predicatul implicit este ALL.
* Specifica faptul ca se selecteaz toate cmpurile din tabelul sau tabelele specificate.
tabel Numele tabelului care conine cmpurile din care se selecteaz nregistrri.
camp1,
camp2
Numele cmpurilor care conin datele care dorii s fie regsite. Daca includei mai multe
cmpuri, se vor regsi n ordinea listata.
alias1, alias2
Numele care se vor utiliza ca anteturi de coloana n locul numelor originale ale coloanelor
din tabel.
expresie
pentru tabele
Numele tabelului sau tabelelor care conin datele care dorii s fie regsite.
baza de date
externa
Numele bazei de date externe care conine tabelele din expresia pentru tabele, n cazul
n care nu se afla n baza de date curenta.

33

Pentru a efectua aceasta operaiune, motorul pentru baze de date Microsoft Access cuta tabelul
sau tabelele specificate, extrage coloanele alese, selecteaz rndurile care ndeplinesc criteriile i sorteaz
sau grupeaz rndurile rezultate n ordinea specificata.
Instruciunea SELECT nu modifica datele din baza de date.
SELECT este, de regula, primul cuvnt dntr-oinstruciune SQL. Cele mai multe instruciuni SQL
sunt instruciuni SELECT sau SELECT...INTO.
Sintaxa minima a unei instruciuni SELECT este:
SELECT cmpuri FROM tabel
Se poate utiliza un asterisc (*) pentru a selecta toate cmpurile dintr-un tabel. Urmtorul
exemplu selecteaz toate cmpurile din tabelul Angajati:
SELECT * FROM Angajati;
Daca un nume de cmp este inclus n mai multe tabele din clauza FROM, trebuie precedat de
numele tabelului i de operatorul . (punct).
n exemplul urmtor, cmpul Departament este n tabelul Angajati i n tabelul Supervizori.
SELECT Angajati.Departament, Supervizori.NumeSupervizor FROM Angajati INNER JOIN Supervizori
WHERE Angajati.Departament = Supervizori.Departament;
Cnd se creeaz un obiect de tipul Set de nregistrri, Motorul pentru baze de date Microsoft
Access utilizeaz numele de cmp din tabel ca nume pentru obiectul Cmp din obiectul set de
nregistrri. Daca dorii un alt nume de cmp sau daca expresia utilizata pentru a genera cmpul nu
produce un nume, utilizai cuvntul rezervat AS.
Urmtorul exemplu utilizeaz titlul Natere pentru a denumi obiectul de tip Cmp returnat n
obiectul de tip set de nregistrri:
SELECT DataNasterii AS Natere FROM Angajati;
De fiecare data cnd utilizai funcii agregate sau interogri care returneaz nume ambigue sau
dublate pentru obiecte de tipul Cmp, avei posibilitatea s utilizai clauza AS pentru a furniza nume
alternative pentru obiectul de tip Cmp. Urmtorul exemplu utilizeaz titlul ContorPrincipal pentru a
denumi obiectul de tip Cmp returnat n obiectul de tip set de nregistrri rezultat:
SELECT COUNT(IDAngajat) AS ContorPrincipal FROM Angajati;
Clauza FROM
Specifica tabelele sau nregistrrile care conin cmpurile listate n instruciunea SELECT.
Sintaxa
SELECT lista de cmpuri
FROM expresie pentru tabele [IN baza de date externa]
O instruciune SELECT, care conine o clauza FROM, are aceste pri:
Parte Descriere
lista de
cmpuri
Numele cmpului sau cmpurilor care se vor regsi, mpreun cu toate opiunile
pentru aliasuri pentru nume de cmpuri, funcii agregate SQL, predicate de
selectare (ALL, DISTINCT, DISTINCTROW sau TOP ) sau alte opiuni legate de
instruciunea SELECT.
expresie
pentru
tabele
O expresie care identifica unul sau mai multe tabele din care se regsesc datele.
Expresia poate fi un singur nume de tabel, un nume de interogare salvat sau un
compus rezultat prntr-ooperaie de tipul INNER JOIN, LEFT JOIN sau RIGHT JOIN.
baza de
date externa
Calea completa a unei baze de date externe care conine toate tabelele din expresia
pentru tabele.
FROM este necesar i urmeaz orice instruciune SELECT.
Ordinea numelor de tabel din expresia pentru tabele nu este importanta.
Pentru performanta mbuntit i uurina n utilizare, se recomanda utilizarea unui tabel legat,
n schimbul unei clauze IN pentru regsirea datelor dntr-obaza de date externa.
Urmtorul exemplu v arata cum se pot regsi date din tabelul Angajati:
SELECT Nume, Prenume FROM Angajati;
Clauza WHERE
Specifica nregistrrile din tabelele lista n clauza FROM care sunt afectate de o instruciune SELECT,
UPDATE sau DELETE.
Sintaxa
SELECT lista de cmpuri
FROM expresie pentru tabele
WHERE criterii

34

O instruciune SELECT, care conine o clauza WHERE, are aceste pri:


Parte Descriere
lista de
cmpuri
Numele cmpului sau cmpurilor care se vor regsi, mpreun cu aliasuri pentru
nume de cmp, funcii agregat SQL, instruciuni de selectare (ALL, DISTINCT,
DISTINCTROW sau TOP) sau alte opiuni pentru instruciunea SELECT.
expresie
pentru
tabele
Numele tabelului sau tabelelor din care se regsesc date.
criterii O expresie care trebuie satisfcut de nregistrri pentru ca acestea s fie incluse n
rezultatele interogrii.
Motorul pentru baze de date Microsoft Access selecteaz nregistrrile care ndeplinesc condiiile
listate n clauza WHERE. Daca nu se specifica o clauza WHERE, interogarea returneaz toate rndurile din
tabel. Daca se specifica mai multe tabele n interogare i nu se include o clauza WHERE sau o clauza
JOIN, interogarea genereaz un produs cartezian al tabelelor.
Clauza WHERE este opional dar, daca se include, urmeaz dup FROM. De exemplu, se pot
selecta toi angajaii din departamentul de vnzri (WHERE Departament = 'Vnzri') sau toi clienii cu
vrsta cuprinsa intre 18 i 30 de ani (WHERE Vrsta Between 18 i 30).
Daca nu se utilizeaz o clauza JOIN pentru a efectua operaiuni de unire SQL cu tabele multiple,
obiectul de tip set de nregistrri rezultat nu v fi actualizabil.
WHERE este similara cu HAVING. WHERE determina nregistrrile care se selecteaz. n mod
similar, dup ce nregistrrile se grupeaz cu GROUP BY, HAVING determina nregistrrile care se afieaz.
Utilizai clauza WHERE pentru a elimina nregistrrile care nu dorii s fie grupate de o clauza
GROUP BY.
Se pot utiliza diferite expresii pentru a determina nregistrrile returnate de instruciunea SQL. De
exemplu, urmtoarea instruciune SQL selecteaz toi angajaii ale cror salarii depesc $21,000:
SELECT Nume, Salariu FROM Angajati WHERE Salariu > 21000;
O clauza WHERE poate conine pana la 40 de expresii legate de operatori logici, cum ar fi i i
Sau.
Cnd introducei un nume de cmp care conine un spaiu sau semne de punctuaie, ncadrai
numele intre paranteze ptrate ([ ]). De exemplu, un tabel cu informaii despre clieni poate include
informaii despre anumii clieni:
SELECT [Restaurantul favorit al clientului]
Cnd specificai argumentul criteriilor, literalii pentru data trebuie s fie n format U.S.
De exemplu, 10 mai, 1996, se scrie 10/5/96 n Marea Britanie i 5/10/96 n Statele Unite.
Asigurai-v ca ncadrai literalii pentru data cu semnul diez (#), dup cum se vede n exemplul urmtor.
Pentru a gsi nregistrri din data 10 mai, 1996 ntr-obaza de date din Marea Britanie, trebuie
utilizata urmtoarea instruciune SQL:
SELECT * FROM Comenzi WHERE DataExpediere = #5/10/96#;
De asemenea, se poate utiliza funcia DateValue, care tine cont de setrile internaionale
stabilite de Microsoft Windows. De exemplu, utilizai acest cod pentru Statele Unite:
SELECT * FROM Comenzi WHERE DataExpediere = DateValue('5/10/96');
si acest cod pentru Marea Britanie:
SELECT * FROM Comenzi WHERE DataExpediere = DateValue('10/5/96');
Clauza ORDER BY
Sorteaz nregistrrile rezultate ntr-ointerogare, dintr-un cmp specificat sau din mai multe cmpuri, n
ordine cresctoare sau descresctoare.
Sintaxa
SELECT lista de cmpuri
FROM tabel
WHERE criterii de selectare[ORDER BY camp1 [ASC | DESC ][, camp2 [ASC | DESC ]][, ...]]]
O instruciune SELECT, care conine o clauza ORDER BY, are aceste pri:
Parte Descriere
lista de
cmpuri
Numele cmpului sau cmpurilor care se vor regsi, mpreun cu toate opiunile
pentru aliasuri pentru nume de cmpuri, funcii agregate SQL, predicate de
selectare (ALL, DISTINCT, DISTINCTROW sau TOP ) sau alte opiuni legate de
instruciunea SELECT.

35

tabel Numele tabelului din care se regsesc nregistrri.


criterii de
selectare
Criteriile de selectare. Daca instruciunea include o clauza WHERE, Motorul pentru
baze de date Microsoft Access ordoneaz valorile dup aplicarea condiiilor WHERE
la nregistrri.
camp1,
camp2
Numele cmpurilor n care se sorteaz nregistrri.
Clauza ORDER BY este opional. Cu toate acestea, pentru ca datele s se afieze ntr-oordine
sortata, trebuie utilizata clauza ORDER BY.
Ordinea de sortare implicita este cea cresctoare (de la A la Z, de la 0 la 9). n ambele exemple
care urmeaz numele angajailor se sorteaz n aceeai ordine:
SELECT Nume, Prenume FROM Angajati ORDER BY Nume;
SELECT Nume, Prenume FROM Angajati ORDER BY Nume ASC;
Pentru a sorta n ordine descresctoare (de la Z la A, de la 9 la 0), adugai cuvntul rezervat
DESC la sfritul fiecrui cmp care dorii s se sorteze n ordine descresctoare. Urmtorul exemplu
selecteaz salariile i se sorteaz n ordine descresctoare:
SELECT Nume, Salariu FROM Angajati ORDER BY Salariu DESC, Nume;
Daca specificai un cmp care conine date Memo sau obiecte OLE n clauza ORDER BY, se
produce o eroare. Motorul pentru baze de date Microsoft Access nu efectueaz sortri n cmpuri de
aceste tipuri.
Clauza ORDER BY este, de obicei, ultimul element dntr-oinstruciune SQL.
Se pot include cmpuri adiionale n clauza ORDER BY. nregistrrile se sorteaz mai nti dup
primul cmp listat dup ORDER BY. nregistrrile care au valori egale n acel cmp se sorteaz apoi dup
valorile din al doilea cmp listat.
Predicatele ALL, DISTINCT, DISTINCTROW, TOP
Specifica nregistrrile selectate cu interogrile SQL.
Sintaxa
SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]] FROM tabel
O instruciune SELECT ce conine aceste predicate are urmtoarele pri:
Parte Descriere
ALL
Presupusa, n cazul n care nu includei unul dintre predicate. Motorul bazei de
date Microsoft Access selecteaz toate nregistrrile care ndeplinesc condiiile din
instruciunea SQL. Urmtoarele doua exemple sunt echivalente i returneaz toate
nregistrrile din tabelul Angajati:
SELECT ALL * FROM Angajati ORDER BY IDAngajat;
SELECT * FROM Angajati ORDER BY IDAngajat;
DISTINCT
Omite nregistrri ce conin date dublura n cmpurile selectate. Pentru a fi incluse
n rezultatele interogrii, valorile pentru fiecare cmp listat n instruciunea SELECT
trebuie s fie unice. De exemplu, mai muli Angajati listai intr-un tabel Angajati
pot avea acelai nume de familie. Daca doua nregistrri conin Smith n cmpul
NumeDeFamilie, urmtoarea instruciune SQL returneaz numai o nregistrare ce
conine Smith:
SELECT DISTINCT LastName
FROM Employees;
Daca omitei DISTINCT, aceasta interogare returneaz ambele nregistrri Smith.
n cazul n care clauza SELECT conine mai mult de un cmp, combinaia valorilor
din toate cmpurile trebuie s fie unica pentru ca o nregistrare data s fie inclusa
n rezultate.
Ieirea unei interogri care utilizeaz DISTINCT nu este actualizabila i nu reflecta
modificrile ulterioare aduse de ali utilizatori.
DISTINCTROW
Omite date bazate pe nregistrri dublate ntregi, nu doar cmpuri dublate. De
exemplu, se poate crea o interogare care asociaz tabelele Cumparatori i Comenzi
n cmpul IDCumparator. Tabelul Cumparatori nu conine dubluri n cmpurile
IDCumparator, dar tabelul Comenzi le conine deoarece fiecare cumprtor poate
avea mai multe comenzi. Urmtoarea instruciune SQL arata cum se poate utiliza
DISTINCTROW pentru a produce o lista a firmelor care au cel puin o comanda dar
fr alte detalii despre aceste comenzi:
SELECT DISTINCTROW NumeFirma FROM Cumparatori INNER JOIN Comenzi ON

36

Cumparatori.IDClient = Comenzi.IDClient ORDER BY NumeFirma;


Daca omitei DISTINCTROW, aceasta interogare produce mai multe rnduri pentru
fiecare firma care are mai mult de o comanda.
DISTINCTROW are efect doar cnd selectai cmpurile din anumite tabele utilizate
n interogare, dar nu din toate. DISTINCTROW este ignorat daca interogarea
include doar un tabel sau daca utilizai ca ieiri cmpuri din toate tabelele.
TOP n [PERCENT]
Returneaz un anumit numr de nregistrri care se vor poziiona n partea de sus
sau de jos a unui interval specificat de o clauza ORDER BY. Presupunei ca dorii
numele primilor 25 Studenti din promoia 1994:
SELECT TOP 25
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage DESC;
Daca nu includei clauza ORDER BY, interogarea v returna un set aleator de 25
de nregistrri din tabelul Studenti care satisfac clauza WHERE.
Predicatul TOP nu alege intre valori egale. n exemplul urmtor, daca a douzeci i
cincea i a douzeci i asea cele mai mari medii ale notelor sunt aceleai,
interogarea v returna 26 de nregistrri.
De asemenea, se poate utiliza cuvntul rezervat PERCENT pentru a returna un
anumit procent de nregistrri care se poziioneaz n partea de sus i de jos a unui
interval specificat de o clauza ORDER BY. Presupunei ca, n loc de primii 25 de
Studenti, dorii ultimii 10 la suta din promoie:
SELECT TOP 10 PERCENT
FirstName, LastName
FROM Students
WHERE GraduationYear = 2003
ORDER BY GradePointAverage ASC;
Predicatul ASC specifica o returnare a valorilor din partea de jos. Urmtoarea
valoare dup TOP trebuie s fie un ntreg nesemnat.
TOP nu influeneaz daca interogarea este actualizabila sau nu.
tabel Numele tabelului din care se regsesc nregistrri.

Clauza GROUP BY
Combina nregistrri cu valori identice din lista specificata de cmpuri ntr-osingura nregistrare. Se
creeaz o valoare rezumat pentru fiecare nregistrare daca se include o funcie agregat SQL, cum ar fi
Sum sau Count, n instruciunea SELECT.
Sintaxa
SELECT lista de cmpuri
FROM tabel
WHERE criterii
[GROUP BY lisa cmpurilor de grupat]
O instruciune de tipul SELECT, care conine o clauza GROUP BY, are aceste pri:
Parte Descriere
lista de cmpuri
Numele cmpului sau cmpurilor care se vor regsi, mpreun cu aliasuri pentru
nume de cmp, funcii agregat SQL, instruciuni de selectare (ALL, DISTINCT,
DISTINCTROW sau TOP) sau alte opiuni pentru instruciunea SELECT.
tabel Numele tabelului din care se regsesc nregistrri.
criterii
Criterii de selectare. Daca instruciunea include o clauza WHERE, motorul de baze de
date Microsoft Access grupeaz valorile dup aplicarea condiiilor WHERE n
nregistrri.
lista cmpurilor
de grupat
Numele celor maximum 10 cmpuri utilizate pentru a grupa nregistrri. Ordinea
numelor de cmpuri din lista cmpurilor de grupat determina nivelurile de grupare,
de la cel mai ridicat pana la cel mai sczut nivel de grupare.
GROUP BY este opional.
Valorile de rezumare se omit daca nu exista nici o funcie agregat n instruciunea SELECT.
Valorile Null din cmpurile GROUP BY sunt grupate i nu se omit. Cu toate acestea, valorile Null
nu se evalueaz n nici o funcie agregat SQL.

37

Clauza WHERE se utilizeaz pentru a exclude rndurile care nu dorii s fie grupate, iar clauza
HAVING se utilizeaz pentru a filtra nregistrrile dup ce au fost grupate.
Daca nu conine date de tip Memo sau obiecte OLE, un cmp din lista de cmpuri GROUP BY
poate face referire la orice alt cmp din orice tabel din cadrul clauzei FROM, chiar daca acel cmp nu este
inclus n instruciunea SELECT, ct vreme instruciunea SELECT include cel puin o funcie agregat SQL.
Motorul pentru baze de date Microsoft Access nu poate grupa cmpuri Memo sau de Obiecte OLE.
Toate cmpurile din cmpul SELECT trebuie s fie incluse n clauza GROUP BY sau s fie incluse
ca argumente pentru o funcie agregat SQL.
5.2. Interogri de tip Union
Interogrile de tip Union (reuniune) pot fi create n Access numai folosind SQL. Union nu este o
instruciune sau o clauza SQL, ci un operator folosit pentru a altura rezultatele a doua sau mai multe
interogri compatibile.
Doua interogri sunt compatibile daca returneaz acelai numr de coloane .
De regula, coloanele returnate de interogrile ce vor fi reunite folosind operatorul UNION trebuie
s aib aceeai denumire i acelai tip de date. Altfel, Access v folosi urmtoarele reguli pentru a le
reuni:
Daca numele coloanelor returnate sunt diferite, n tabela de rezultate vor aprea numele
coloanelor returnate de prima interogare;
Daca tipurile de date sunt diferite, Access le v converti la un tip de date compatibil cu
amndou. Astfel, pentru o coloana de tip integer i una de tip long integer, tipul folosit de
Access v fi long integer; pentru o coloana de tip text i una numerica, Access v alege tipul
text, iar pentru o coloana de tip date/time i una de tip yes/no, Access v alege tot tipul text.
Nota: Nu putei folosi coloane de tipul Memo sau OLE Object ntr-ointerogare Union.
Sintaxa este urmtoarea:
instruciune_select1
UNION [ALL]
instruciune_select2
[ UNION [ALL]
instruciune_select3]
[]
Datele din tabela de rezultate a unei astfel de interogri nu pot fi modificate. Avei grija la
ordinea n care specificai coloanele n clauza SELECT a fiecrei interogri, deoarece Access nu tine cont
de numele coloanelor, ci de ordinea lor.
S presupunem ca n baza noastr de date exista o tabela cu profesorii pensionai (numita
ProfPensionari), ce conine aceleai coloane ca i tabela Profesor. Putem s cream o interogare care s
returneze datele din tabelele Profesor i ProfPensionari:
SELECT Nume, Catedra, IDTitlu
FROM Profesor
UNION
SELECT Nume, Catedra, IdTitlu
FROM ProfPensionari;
Opiunea TABLE
Atunci cnd dorii s includei n tabela de rezultate toate coloanele tabelelor pe care le reunii,
putei folosi o sintaxa prescurtata, nlocuind instruciunea:
SELECT * FROM tabela
Cu
TABLE tabela
Astfel, urmtoarele doua interogri sunt echivalente:
SELECT * FROM Profesor
UNION
SELECT * FROM ProfPensionari;
Si
TABLE Profesor
UNION
TABLE ProfPensionari;
Opiunea ALL
n mod implicit, Access v elimina nregistrrile duplicat din tabela de rezultate a unei interogri
Union. Daca nu dorii ca acest lucru s se ntmple, folosii opiunea ALL dup operatorul UNION. Astfel

38

se v mari i viteza de execuie a interogrii, chiar daca n final tabela de rezultate nu v conine
duplicate.
Sortarea rezultatelor
Operaia de sortare presupune ordonarea rezultatului funcie de unul sau mai multe criterii.
n cazul n care sunt mai multe criterii, primul criteriu v fi cel dominant, restul fiind considerate
n mod ierarhic, n ordinea n care apar n lista.
Sintaxa instruciunii SQL care realizeaz ordonarea rezultatului este:
SELECT lista_proiecie
FROM tabela
ORDER BY lista_ordonare;
Lista de ordonare v cuprinde specificarea unor cmpuri din tabela sau expresii n care acestea
intervin, desprite prin virgula.
Implicit sortarea se face n sens cresctor (ascendent). Pentru a sorta n mod descresctor
(descendent) se v utiliza marcajul DESC dup poziia dorita.
Exemplu:
SELECT *
FROM Studenti
ORDER BY Nume, Medie DESC, DataN
Va ordona studenii cresctor dup nume, la nume egale descresctor dup medie, iar i la medii
egale cresctor dup data naterii.
5.3. Subinterogri
Prin folosirea unei subinterogri nelegem includerea unei instruciuni SELECT n cadrul altei
instruciuni SQL. De regula, subinterogrile sunt incluse n clauza WHERE a unei instruciuni SQL, ele pot
aprea i n clauza SELECT.
Nota: De multe ori, putei ajunge la acelai rezultat folosind fie o subinterogare, fie o asociere.
Alegerea v aparine.
V reamintim faptul ca n grila QBE putei introduce o subinterogare fie n cmpul Criteria, fie n
cmpul Field.
Iat ce putei realiza cu ajutorul subinterogrilor:
1. s verificai daca anumite valori se afla printre datele coninute ntr-otabela sau returnate
de o interogare. Sintaxa este, n mare, urmtoarea:
expresie [NOT] IN (subinterogare)
S presupunem c dorii s vedei profesorii (mpreun cu titlurile i catedrele lor) care au
salariul mai mare de 1.000.000 de lei. Pentru aceasta, putei folosi ori pe prima dintre interogrile de
mai jos (care conine o subinterogare), ori pe cea de a doua (bazata pe un join).
SELECT Nume, IdTitlu, Catedra
FROM Profesor
WHERE IdTitlu IN (SELECT IdTitlu FROM Titlu
WHERE Slariu >=1000000;
Acest tip de subinterogare nu poate returna dect o singura coloana; altfel, vei obine o eroare.
Pentru a verifica daca anumite valori nu se afla ntr-olista, folosii operatorul NOT.
2. S comparai o valoare cu datele returnate de o interogare. Sintaxa este urmtoarea:
Comparaie [ ] (subinterogare)
i n acest caz, subinterogarea nu trebuie s returneze dect o singur coloan.
S presupunem ca dorim s aflam numele, titlul i catedra profesorilor care au salariul mai mare
dect cel al profesorului cu numele Cristea George. Pentru aceasta, putem folosi urmtoarea
interogare:
SELECT Nume, Titlu, Catedra
FROM Profesor INNER JOIN Titlu
ON Profesor.IdTitlu = Titlu.IdTitlu
WHERE Salariu > (SELECT Salariu
FROM Profesor INNER JOIN Titlu
ON Profesor.IdTitlu = Titlu.IdTitlu
WHERE Nume = Cristea George);
Observai faptul ca subinterogarea folosita anterior v returna o singura valoare: salariul
profesorului Cristea George. n cazul n care am dori s facem comparaii cu mai multe valori returnate
de o subinterogare, putem utiliza urmtoarele predicate:
- ANY sau SOME: comparaia e adevrat daca exista cel puin o valoare returnata de
subinterogare pentru care ea s fie adevrat;

39

- ALL: comparaia e adevrat daca ea este adevrat pentru orice valoare returnata de
subinterogare.
Nota: Daca nu folosii nici unul dintre predicatele ANY, SOME sau ALL, trebuie s v asigurai
de faptul ca subinterogarea returneaz o singura valoare.
Daca am fi dorit s aflam numele, titlul i catedra profesorilor care au salariul mai mare dect cel
puin un alt profesor (deci care nu are salariul cel mai mic), am fi putut scrie interogarea:
SELECT Nume, Titlu, Catedra
FROM Profesor INNER JOIN Titlu
ON Profesor.IdTitlu = Titlu.IdTitlu
WHERE Salariu > ANY (SELECT Salariu FROM Titlu);
Pe de alta parte, daca ne interesau numele, titlul i catedra profesorilor care au salariul mai mare
dect orice alt profesor, am fi folosit interogarea:
SELECT Nume, Titlu, Catedra
FROM Profesor INNER JOIN Titlu
ON Profesor.IdTitlu = Titlu.IdTitlu
WHERE Salariu >= ANY (SELECT Salariu FROM Titlu);
Nota: Predicatele ANY, SOME i ALL iau n considerare i valorile null (spre deosebire de funciile
agregat Min() i Max()).
3. Stabilii criterii n funcie de existenta nregistrrilor returnate de o subinterogare. Pentru
aceasta, vei folosi predicatul EXIST n cadrul sintaxei:
[NOT] EXISTS (subinterogare)
Subinterogrile prezentate pana acum n aceasta seciune au fost independente de interogarea
exterioara (cea care le folosea). Putem crea ns i subinterogri corelate cu interogarea exterioara
prin intermediul unei coloane de legtura.
Fiecare dintre cele trei tipuri de subinterogri despre care am vorbit pana acum poate fi corelata.
Totui, de cele mai multe ori, subinterogrile care folosesc predicatul EXISTS sunt corelate.
S presupunem ca dorim s aflam care sunt cursurile la care nu s-au nscris nici un student.
Pentru aceasta, vom folosi o subinterogare ce conine predicatul NOT EXISTS:
SELECT IdCurs, Denumire
FROM Curs
WHERE NOT EXISTS (SELECT * FROM Curs_Student
WHERE IdCurs=Curs.IdCurs);
Subinterogarea de mai sus este corelata deoarece ea utilizeaz n clauza WHERE date din
interogarea exterioara.
Nota: Nu exista restricii asupra numrului de coloane returnate de subinterogrile de acest tip,
deoarece nu intereseaz numai existenta nregistrrilor.
Subinterogri n clauza SELECT
Dup cum am artat pana acum, cel mai adesea vei introduce subinterogri n clauza WHERE a
unei interogri. Putei folosi ns i n clauza SELECT o subinterogare care s returneze o singura
valoare.
S presupunem ca vrem s scriem o interogare care s ne spun, pentru fiecare curs opional,
daca exista sau nu Studenti nscrii la el.
SELECT IdCurs, Denumire,
IIF(EXISTS (SELECT * FROM Curs_Student
WHERE IdCurs=Curs.IdCurs), Da, Nu) AS [Studenti nscrii?]
FROM Curs;
Subinterogri pentru gsirea duplicatelor dntr-otabela
S presupunem ca avem o tabela, numita DuplCurs, ce conine aceleai coloane ca i tabela Curs,
dar i nregistrri duplicat, astfel nct nu putem alege coloana IdCurs drept cheia primara a tabelei.
Putem identifica nregistrrile duplicat cu ajutorul urmtoarei subinterogri corelate:
SELECT *
FROM DuplCurs
WHERE IdCurs IN (SELECT IdCurs FROM DuplCurs
GROUP BY IdCurs
HAVING Count(*)>1)
ORDER BY IdCurs;
Tabela cu rezultatele acestei interogri v conine toate coloanele din tabela Curs, dar numai
acele nregistrri ce apar de mai multe ori.

40

5.4. Interogri cu parametri


Ca i fereastra QBE, Access SQL v permite s scriei interogri coninnd parametri ale cror
valori urmeaz a fi specificate n timpul rulrii. Pentru aceasta, vei folosi declaraia PARAMETERS, a
crei sintaxa este:
PARAMETERS parametrul1 tip_date1 [, parametrul2 tip_date2 [,] ];
instruciune_SQL;
De exemplu am creat n fereastra QBE interogarea MediaParam care regsea mediile studenilor
al cror nume de familie ncepe cu o litera specificata de utilizator. Iat instruciunea SQL
corespunztoare:
PARAMETERS [Introducei prima litera a numelui] Text;
SELECT Student.NumeSt, Student.PrenumeSt, Avg(Curs_Student.Nota)
AS Media
FROM Student INNER JOIN Curs_Student
ON Student.NrMatricol = Curs_Student.NrMatricol
GROUP BY Student.NumeSt, Student.PrenumeSt
HAVING (((Student.NumeSt) Like [Introducei prima litera a numelui] & *));
Instruciuni pentru actualizarea datelor
Instruciunea UPDATE
Creeaz o interogare de actualizare care modifica valorile din cmpurile unui tabel specificat, n
funcie de criterii specificate.
Sintaxa
UPDATE tabel
SET valoarea noua
WHERE criterii;
Instruciunea UPDATE are aceste pri:
Parte Descriere
tabel Numele tabelului care conine datele care dorii s se modifice.
valoare
noua
O expresie care determina valoarea care se insereaz intr-un anumit cmp din
nregistrrile actualizate.
criterii O expresie care determina nregistrrile care se actualizeaz. Se actualizeaz doar
nregistrrile care satisfac expresia.
UPDATE este utila mai ales daca dorii s modificai multe nregistrri sau daca nregistrrile pe
care dorii s le modificai sunt n tabele multiple.
Se pot modifica mai multe cmpuri n acelai timp. Urmtorul exemplu mrete valorile din
CantitateComanda cu 10 procente i valorile din Transport cu 3 procente pentru expeditorii din Marea
Britanie:
UPDATE Comenzi SET CantitateComanda = CantitateComanda * 1.1, Transport = Transport * 1.03
WHERE RegiuneTaraLivrare= 'UK';
UPDATE nu genereaz un set de rezultate. De asemenea, dup actualizarea nregistrrilor
utiliznd o interogare de actualizare, nu se poate anula operaiunea. Pentru a afla care nregistrri s-au
actualizat, examinai mai nti rezultatul unei interogri de selectare care utilizeaz aceleai criterii, apoi
executai interogarea de actualizare.
Instruciunea DELETE
Creeaz o interogare de tergere care elimina nregistrri din unul sau din mai multe tabele listate n
clauza FROM care satisface clauza WHERE.
Sintaxa
DELETE [tabel.*]
FROM tabel
WHERE criteriu
Instruciunea DELETE are aceste pri:
Parte Descriere
tabel Numele opional al tabelului din care se terg nregistrri.
tabel Numele tabelului din care se terg nregistrri.
criterii O expresie care determina nregistrrile care se terg.
DELETE este utila pentru a terge multe nregistrri.

41

Pentru a fixa un tabel ntreg din baza de date, se poate utiliza metoda Executare cu o instruciune
DROP. Cu toate acestea, daca tergei tabelul se pierde structura. Dimpotriv, cnd se utilizeaz DELETE,
se terg doar datele; structura tabelului i toate proprietile tabelului, cum ar fi atributele de cmp i
indexurile, rmn intacte.
DELETE se poate utiliza pentru a elimina nregistrri din tabele care se afla ntr-orelaie de tipul
"unul pentru mai multe" cu alte tabele. Operaiunile de tip tergere n cascada duc la tergerea
nregistrrilor din tabele, care se afla pe latura multipla a relaiei, daca se terge nregistrarea
corespunztoare n interogare, din latura cu o componenta a relaiei.
tergerea unei interogri terge nregistrri ntregi, nu doar datele din anumite cmpuri. Pentru a
terge valorile dintr-un anumit cmp, creai o interogare de actualizare care modifica valorile la Null.
Dup eliminarea nregistrrilor utiliznd o interogare de tergere, nu se poate anula operaiunea.
Pentru a afla ce nregistrri s-au ters, examinai nti rezultatele unei interogri de selectare care
utilizeaz aceleai criterii, apoi executai interogarea de tergere.
Instruciunea SELECT ...INTO
Creeaz o interogare de creare tabel.
Sintaxa
SELECT camp1[, camp2[, ...]] INTO tabel nou [IN baza de date externa]
FROM sursa
Instruciunea SELECT...INTO are aceste pri:
Parte Descriere
camp1, camp2 Numele cmpurilor care se vor copia n tabelul nou.
tabel nou Numele tabelului care se v crea. Daca tabelul nou este acelai ca i numele
unui tabel existent, se v produce o eroare.
baza de date
externa
Calea ctre o baza de date externa. Pentru o descriere a caii, vedei clauza IN.
sursa Numele tabelului existent, din care se selecteaz nregistrri. Se poate defini prin
unul sau mai multe tabele sau o interogare.
Interogrile pentru crearea de tabele se pot utiliza pentru a arhiva nregistrri, pentru a face copii
de rezerva ale tabelelor sau pentru a face copii pentru export ctre alta baza de date sau pentru utilizare
ca baza pentru rapoarte care afieaz date pentru o anumita perioada de timp. De exemplu, se poate
produce un raport Vnzri lunare dup Regiune executnd aceeai interogare pentru crearea de tabele n
fiecare luna.
Se poate defini o cheie primara pentru tabelul nou. Cnd creai tabelul, cmpurile din tabelul
nou motenesc tipul de date i dimensiunea fiecrui cmp din tabelele subiacente interogrii, dar nu se
transfera nici o alta proprietate de cmp sau tabel.
Pentru a adaug date la un tabel existent, utilizai instruciunea INSERT INTO pentru a crea o
interogare de adugare.
Instruciunea INSERT INTO
Adaug o nregistrare sau nregistrri multiple la un tabel. Aceasta este denumita interogare de
adugare.
Sintaxa
Interogare pentru adugarea de nregistrri multiple:
INSERT INTO tinta [(camp1[, camp2[, ...]])] [IN baza de date externa]
SELECT [sursa.]camp1[, camp2[, ...]
FROM expresie pentru tabele
Interogare pentru adugarea unei singure nregistrri:
INSERT INTO tinta [(camp1[, camp2[, ...]])]
VALUES (valoare1[, valoare2[, ...])
Instruciunea INSERT INTO are aceste pri:
Parte Descriere
tinta Numele tabelului sau interogrii n care se adaug nregistrrile.
camp1,
camp2
Numele cmpurilor n care se adaug date, daca urmeaz un argument de tipul
tinta, sau numele cmpurilor din care se obin datele, daca urmeaz un argument
de tipul sursa.

42

baza de date
externa
Calea ctre o baza de date externa. Pentru o descriere a caii, vedei clauza IN.
sursa Numele tabelului sau interogrii din care se copiaz nregistrrile.
expresie
pentru
tabele
Numele tabelului sau tabelelor din care se insereaz nregistrrile. Acest argument
poate fi numele unui singur tabel sau un compus rezultat n urma unei operaiuni
de tipul INNER JOIN , LEFT JOIN sau RIGHT sau a unei interogri salvate.
valoare1,
valoare2
Valorile care se vor insera n cmpurile specificate ale nregistrrii noi. Fiecare
valoare se insereaz n cmpul care corespunde cu poziia valorii n lista: valoarea1
se insereaz n campul1 din nregistrarea noua, valoarea2 n campul2, i aa mai
departe. Valorile trebuie separate prin virgula, iar cmpurile de text trebuie
ncadrate de apostrofuri (' ').
Instruciunea INSERT INTO se poate utiliza pentru a adaug o singura nregistrare la un tabel
utiliznd sintaxa interogrii pentru adugarea unei singure nregistrri, descrisa mai sus. n acest caz,
codul specifica numele i valoarea fiecrui cmp din nregistrare. Trebuie specificat fiecare cmp al
nregistrrii cruia i se asociaz o valoare i valoarea acelui cmp. Daca nu se specifica fiecare cmp,
valoarea implicita, sau Null, se insereaz n coloanele care lipsesc. nregistrrile se adaug la sfritul
tabelului.
De asemenea, INSERT INTO se poate utiliza pentru a adaug un set de nregistrri din alt tabel sau
interogare, utiliznd clauza SELECT ... FROM, descrisa mai sus n sintaxa interogrilor pentru adugarea
de nregistrri multiple. n acest caz, clauza SELECT se utilizeaz pentru specificarea cmpurilor care se
adaug la tabelul tinta specificat.
INSERT INTO este opional, dar, atunci cnd se include, preceda instruciunea SELECT.
Daca tabelul destinaie conine o cheie primara, asigurai-v ca adugai valori unice, non-Null la
cmpul sau cmpurile de tip cheie primara; n caz contrar, Motorul pentru baze de date Microsoft Access
nu v adaug nregistrrile.
Daca adugai nregistrri la un tabel cu un cmp AutoNumerotare i dorii s renumerotai
nregistrrile adugate, nu includei cmpul AutoNumerotare n interogare. Includei cmpul
AutoNumerotare n interogare daca dorii s reinei valorile iniiale din cmp.
Clauza IN se utilizeaz pentru a adaug nregistrri la un tabel din alta baza de date.
Pentru a crea un tabel nou, utilizai instruciunea SELECT... INTO n schimb, pentru a crea o interogare
de creare tabel.
Pentru a afla nregistrrile care se vor adaug, nainte de a executa interogarea de adugare,
executai i vizualizai mai nti rezultatele unei interogri de selectare care utilizeaz aceleai criterii de
selectare.
O interogare de adugare copiaz nregistrri din unul sau mai multe tabele n alt tabel. Tabelele
care conine nregistrrile care se adaug nu vor fi afectate de interogarea de adugare.
n loc de a adaug nregistrri existente din alt tabel, se poate specifica valoarea fiecrui cmp dntr-
osingura nregistrare nou, utiliznd clauza VALUES. Daca se omite lista cmpurilor, clauza VALUES trebuie
s includ o valoarea pentru fiecare cmp de tabel din tabel; altfel, operaiunea INSERT nu v reui.
Utilizai o instruciune INSERT INTO suplimentara, mpreun cu o clauza VALUES, pentru fiecare
nregistrare suplimentara pe care dorii s o creai.
5.5. Instruciuni pentru definirea datelor
Instruciunea CREATE TABLE
Motorul pentru baze de date Microsoft Access nu accepta utilizarea CREATE TABLE sau a oricror
instruciuni LDD, cu baze de date cu motor baza de date non-Microsoft Access. Utilizai n schimb
metodele Creare DAO.
Sintaxa
CREATE [TEMPORARY] TABLE tabel (tip camp1 [(dimensiune)] [NOT NULL] [WITH COMPRESSION |
WITH COMP] [index1] [, camp2 tip [(dimensiune)] [NOT NULL] [index2] [, ...]] [, CONSTRAINT
indexmulticamp [, ...]])
Instruciunea CREATE TABLE are aceste pri:
Parte Descriere
tabel Numele tabelului care se v crea.
camp1, camp2 Numele cmpului sau cmpurilor care se vor crea n tabelul nou. Trebuie creat
cel puin un cmp.

43

tip Tipul de date al cmpului n tabelul nou.


dimensiune Dimensiunea cmpului n caractere (doar cmpuri Text i Binare).
index1, index2 O clauza CONSTRAINT ce definete un index cmp unic.
indexmulticamp O clauza CONSTRAINT ce definete un index multi-camp.
Utilizai instruciunea CREATE TABLE pentru a defini un tabel nou, cmpurile acestuia i restriciile
de cmp. Daca se specifica NOT NULL pentru un cmp, atunci nregistrrile noi trebuie s conin date
valide n acel cmp.
O clauza CONSTRAINT stabilete diverse restricii pe un cmp i se poate utiliza pentru a stabili
cheia primara. De asemenea, se poate utiliza instruciunea CREATE INDEX pentru a crea o cheie primara
sau indexuri suplimentare pe tabele existente.
Se poate utiliza NOT NULL pe un singur cmp sau n cadrul unei clauze numite CONSTRAINT care
se aplica sau unui singur cmp sau unui cmp multiplu numit CONSTRAINT. Cu toate acestea, restricia
NOT NULL se poate aplica unui cmp o singura data. ncercarea de a aplica aceasta restricie de mai
multe ori are drept rezultat o eroare n timpul execuiei.
Cnd se creeaz un tabel TEMPORARY, acesta este vizibil doar n cadrul sesiunii n care s-a creat.
Acesta se terge automat la terminarea sesiunii. Tabelele temporare pot fi accesate de mai muli
utilizatori.
Atributul WITH COMPRESSION se poate utiliza doar cu tipurile de date CHARACTER i MEMO (cunoscute
i ca TEXT) i sinonimele acestora.
Atributul WITH COMPRESSION a fost adugat pentru coloanele CHARACTER datorita modificrii
Formatului de reprezentare a caracterelor Unicod. Caracterele Unicod necesita n mod uniform doi octei
pentru fiecare caracter. Pentru baze de date Microsoft Access existente, care conin mai ales date de tip
caracter, acest lucru poate nsemn ca baza de date aproape si-ar dubla dimensiunea la conversia n
format Microsoft Access. Cu toate acestea, reprezentarea Unicode a multor seturi de caractere, cele
denumite anterior ca Seturi de caractere pe un singur octet (SBCS), poate fi uor comprimata intr-un
singur octet. Daca definii o coloana CHARACTER cu acest atribut, datele se vor comprima automat la
stocare i se vor decomprima vnd vor fi regsite din coloana.
De asemenea, se pot defini coloane MEMO pentru a stoca date intr-un format comprimat. Cu
toate acestea, exista o limitare. Se vor comprima doar instanele coloanelor MEMO care, atunci cnd sunt
comprimate, se ncadreaz n 4096 de octei sau mai puin.
Instruciunea CREATE INDEX
Creeaz un index nou pe un tabel existent.
Sintaxa
CREATE [ UNIQUE ] INDEX index
ON tabel (cmp [ASC|DESC][, cmp [ASC|DESC], ...])
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]
Instruciunea CREATE INDEX are aceste pri:
Parte Descriere
index Numele indexului ce se v crea.
tabel Numele tabelului existent care v conine indexul.
cmp Numele cmpului sau cmpurilor care se vor indexa. Pentru a crea un index cmp unic,
listai numele cmpului n paranteze n continuarea numelui tabelului. Pentru a crea un
index multi-camp, listai numele fiecrui cmp care v fi inclus n index. Pentru a crea
indexuri descendente, utilizai cuvntul rezervat DESC; n caz contrar, indexurile sunt
presupuse a fi ascendente.
Pentru a interzice valori dublate n cmpul sau cmpurile indexate din diferite nregistrri, utilizai
cuvntul rezervat UNIQUE.
n clauza WITH opional se pot impune reguli de validare a datelor.
Sa interzicei intrrile Null n cmpul sau cmpurile indexate ale nregistrrilor noi
utiliznd opiunea DISALLOW NULL.
Sa interzicei includerea n index a nregistrrilor cu valori Null din cmpul sau
cmpurile indexate utiliznd opiunea IGNORE NULL.
Sa desemnai cmpul sau cmpurile indexate drept cheie primara utiliznd cuvntul
rezervat PRIMARY. Aceasta presupune unicitatea cheii, astfel nct se poate omite cuvntul rezervat
UNIQUE.

44

Se poate utiliza CREATE INDEX pentru a crea un pseudo index pe un tabel legat ntr-osursa de
date ODBC, cum ar fi Microsoft SQL Server, care nu are deja un index. Nu avei nevoie de permisiune sau
acces la serverul la distanta pentru a crea un pseudo index, iar baza de date la distanta nu are cunotina
i nu este afectata de pseudo index. Se utilizeaz aceeai sintaxa att pentru tabelele legate cat i pentru
cele native. Crearea unui pseudo-index pe un tabel care n mod obinuit ar fi doar n citire poate fi
deosebit de utila.
De asemenea, se poate utiliza instruciunea ALTER TABLE pentru a adaug un index cmp unic
sau multi-camp unui tabel i se poate utiliza instruciunea ALTER TABLE sau instruciunea DROP pentru a
elimina un index creat cu ALTER TABLE sau CREATE INDEX.
Nu utilizai cuvntul rezervat PRIMARY la crearea unui index nou pe un tabel care are deja o
cheie primara; daca facei aceasta, v aprea o eroare.
Instruciunea ALTER TABLE
Modifica proiectarea unui tabel dup ce acesta a fost creat prin instruciunea CREATE TABLE.
Motorul de baze de date Microsoft Access nu accepta utilizarea ALTER TABLE sau a oricrei
instruciuni de limbaj pentru definiie de date cu baze de date non-Microsoft Access. Utilizai n schimb
metodele Creare DAO.
Sintaxa
ALTER TABLE tabel {ADD {COLUMN tip de cmp[(dimensiune)] [NOT NULL] [CONSTRAINT index] |
ALTER COLUMN tip de cmp[(dimensiune)] |
CONSTRAINT indexmulticamp} |
DROP {COLUMN cmp I CONSTRAINT numeindex} }
Instruciunea ALTER TABLE are trei pri:

Parte Descriere
tabel Numele tabelului care se v modifica.
cmp Numele cmpului care se v adaug sau se v terge din tabel. Sau numele
cmpului care se v modifica n tabel.
tip Tipul de date din cmp.
dimensiune Dimensiunea cmpului n caractere (doar cmpuri Text i Binare).
index Indexul pentru cmp.
indexmulticamp Definiia unui index cu mai multe cmpuri care se v adaug n tabel.
numeindex Numele indexului cu mai multe cmpuri care se v elimina.
Utiliznd instruciunea ALTER TABLE se poate modifica un tabel existent n mai multe modaliti.
Avei posibilitatea sa:
Utiliza ADD COLUMN pentru a adaug un cmp nou tabelului. Specificai numele cmpului, tipul
de date i (pentru cmpurile Text i Binare) o dimensiune opional. De exemplu, urmtoarea
instruciune adaug un cmp Text de 25 de caractere numit Note la tabelul Angajati:
ALTER TABLE Employees ADD COLUMN Notes TEXT(25)
De asemenea, se poate defini un index pe acel cmp.
Daca specificai NOT NULL pentru un cmp atunci vor fi necesare nregistrri noi pentru a avea
date valide n acel cmp.
Utilizai ALTER COLUMN pentru a modifica tipul de date al unui cmp existent. Specificai
numele cmpului, noul tip de date i o dimensiune opional pentru cmpurile Text i Binare. De
exemplu, urmtoarea instruciune modifica tipul de date al unui cmp din tabelul Angajati numit
CodPostal (definit iniial ca ntreg) intr-un cmp Text de 10 caractere:
ALTER TABLE Angajati ALTER COLUMN CodPostal TEXT(10)
Utilizai ADD CONSTRAINT pentru a adaug un index cu mai multe cmpuri.
Utilizai DROP COLUMN pentru a terge un cmp. Specificai doar numele cmpului.
Utilizai DROP CONSTRAINT pentru a terge un index cu mai multe cmpuri. Specificai doar
numele indexului urmnd cuvntul rezervat CONSTRAINT.
Nu se poate adaug sau terge mai mult de un cmp sau index dntr-odata.
Se poate utiliza instruciunea CREATE INDEX pentru a adaug un index cu un singur cmp sau
cu mai multe cmpuri intr-un tabel i se poate utiliza instruciunea ALTER TABLE sau DROP pentru a
terge un index creat cu ALTER TABLE sau CREATE INDEX. Se poate utiliza NOT NULL pe un singur
cmp sau n cadrul unei clauze numite CONSTRAINT care se aplica sau unui singur cmp sau unui cmp

45

multiplu numit CONSTRAINT. Cu toate acestea, se poate aplica restricia NOT NULL unui cmp doar o
data. ncercarea de a aplica aceasta restricie de mai multe ori are drept rezultat o eroare n timpul
execuiei.
Instruciunea DROP
terge un tabel, o procedura sau o vizualizare existenta, dntr-obaza de date, sau terge un index
existent, dintr-un tabel.
Motorul pentru baze de date Microsoft Access nu accepta utilizarea DROP sau a oricror
instruciuni LDD, cu baze de date cu motor baza de date non-Microsoft Access. Utilizai metoda de
tergere DAO n schimb.
Sintaxa
DROP {TABLE tabel | INDEX index ON tabel | PROCEDURE procedura | VIEW vizualizare}
Instruciunea DROP are aceste pri:
Parte Descriere
tabel Numele tabelului care se terge sau a tabelului din care se terge un index.
procedura Numele procedurii care se terge.
vizualizare Numele vizualizrii care se terge.
index Numele indexului care se terge din tabel.
Trebuie nchis tabelul nainte de a l terge sau a elimina un index din el.
De asemenea, se poate utiliza ALTER TABLE pentru a terge un index dintr-un tabel.
Se poate utiliza i CREATE TABLE pentru a crea un tabel i CREATE INDEX sau ALTER TABLE
pentru a crea un index. Pentru a modifica un tabel, utilizai ALTER TABLE.


































46

Modulul II Spaiul World Wide Web



1. O istorie a Internetului
Internetul s-a nscut la mijlocul anilor 60 n forma ARPAnet (Advanced Research Projects Agency
Net) - o reea ntre mai multe computere din unele instituii americane, ce lucrau pentru ARPA, un
departament de cercetare din cadrul Pentagonului. ARPA a fost pus n funciune ca reacie la succesul
sovietic al lansrii satelitului Sputnik n spaiu n 1957. Unul din obiectivele ARPAnet era crearea unei
reele, care s nu fie distrus datorit atacurilor asupra sistemului. Rzboiul Rece fiind la apogeu,
scenariul unui dezastru era considerat fie lansarea unei bombe fie un atac nuclear.
De aici a rezultat un proiect de reea, unde reeaua nsi era permanent n pericol de atac. n
consecin:- doar un minimum de informaii era cerut de la computerele client n reea - oricnd
transmisia de date ntlnea un obstacol, sau una dintre adrese era de negsit, se gsea o alt cale ctre
adresa cutat.
Toate acestea au fost codificate ntr-un protocol care reglementa transmisia de date pe Internet.
n forma sa final, acesta era TCP/IP (Transmission Control Protocol / Internet protocol), care este i
acum baza Internetului. TCP/IP face posibil ca modele diferite de calculatoare, de exemplu cele
compatibile IBM, cele compatibile Mac, folosind sisteme de operare diferite: UNIX, Windows, MacOS etc.
s se "neleag" unele cu altele. n acest fel, Internetul era i este cu adevrat o platform
independent.
Internet-ul "civil" a nceput ca o reea de patru computere ntre Universitile din Utah, Santa
Barbara, Los Angeles i Institutul de Cercetare din Stanford. n curnd, cercettori din alte instituii de
stat au devenit interesai. Deoarece folosirea computerelor era costisitoare, ei au vzut imediat avantajele
folosirii n comun a unei reele.
La sfritul anilor 60 i nceputul anilor 70, cnd Internetul numra n jur de 50 de computere,
s-au dezvoltat primele servicii, folosite nc i azi pentru transferul informaiei:- File Transfer Protocol
pentru trimiterea i regsirea fiierelor - Telnet pentru accesarea i folosirea bazelor de date, a
bibliotecilor i a cataloagelor din toat lumea - E-Mail pentru trimiterea mesajelor personale.
Internetul era n mod categoric n ascenden. Cu noi grupuri de utilizatori care se alturau, n
urmtoarea decad, Internetul a crescut la o reea de 200 de computere. Partea militar era organizat
ntr-o reea separat, Milnet.
n acelai timp au aprut alte reele, mai ales n sectorul academic. Important printre acestea
era (i este) USENET sau Users' Network, care a nceput n 1979, cnd cteva computere UNIX au fost
conectate mpreun. O motenire a USENET este "Netiquette", sau regulile de comportament pe Internet.
La 10 ani dup ce USENET i ncepuse dezvoltarea, Internetul a crescut la 80.000 de computere. A
nceput s fie un factor de luat n considerare n politic i, curnd, expresia "Information SuperHighway"
(autostrada informaiei) a devenit uzual. n aceast metafor, Internetul era vzut ca o important
infrastructur pentru transportul unor bunuri vitale - informaiile.
n anii 80 i nceputul anilor 90, cnd Internetul era folosit doar de un numr mic de cercettori,
arta mult diferit fa de prezent. Principalele aplicaii erau atunci pota electronic i grupurile de discuii
(Newsgroups) plus diverse rutine de cutare i mecanisme de transfer al fiierelor. Aceasta era o lume
UNIX, n care toate comunicaiile existau doar ca text sau numere, i liniile de comand trebuiau
memorate i tiprite.
Cnd pota electronic, dar mai ales programele de cutare i de transfer al fiierelor au trebuit
s fac fa unor cerine mai complexe, s-au dezvoltat noi navigatoare. Software-ul pentru fiecare trebuia
s fie obinut i configurat separat. Folosirea fiecruia trebuia s fie nvat.
Pe scurt: datorit metalimbajului foarte dificil, folosirea Internetului n acea perioad era
restrns la un mic grup de oameni din universiti i institute de cercetare.
Marea schimbare a nceput n 1989, cnd Tim Berners Lee de la CERN (Centrul European pentru Fizica
Nucleara) din Geneva a pus bazele n 1989 dezvoltrii primului prototip al World Wide Web (WWW sau
3W). Ca de obicei n istoria Internetului, scopul iniial al WWW-ului era destul de limitat. Era destinat s
fie o platform intern de comunicaii pentru cercettorii din ntreaga lume care lucrau pentru CERN.
Sarcina principal era s asigure un sistem care s fac legtura ntre varietatea de platforme ale
diverselor calculatoare.
Soluia de baz era ideea de a face legtura ntre documente via "hipertext". Hipertext nseamn,
a marca irurile de text sau alte obiecte i de a le lega cu alte obiecte, care ar putea fi din punct de
vedere fizic la mare distan de obiectul original. Cnd legtura este selectat, cineva poate "sri" la
documentul legat. n acest fel este posibil de a lega un numr nelimitat de documente ntre ele ntr-o
structur web ne-ierarhic. Pentru a putea deosebi aceste documente i pentru a le regsi, fiecare are o
adres unic. Aceasta este Unique Resource Locator (URL). URL-urile constau ntr-un protocol de

47

transmitere (n cazul WWW-ului acesta este Hypertext Transfer Protocol - http), urmat de www (n cele
mai multe cazuri) i de domeniu (de exemplu numele serverului i numele paginii). URL-ul este un caz
particular al unei specificaii mai ample numite URI (Uniform Resource Identifier), specificaie a aceluiai
W3C.
Prima versiune a programelor pentru a naviga pe www, aa numitele "browsere" urmau nc
tradiia original a Internetului - erau numai text. De aceea, sistemul a rmas, n principiu, neprietenos cu
utilizatorii. n septembrie 1992 nu existau mai mult de 20 de servere web n ntreaga lume.
Schimbarea radical s-a produs cnd NCSA (National Center for Supercomputing Applications) din SUA a
scos "Mosaic" - Browser n 1993, care era bazat pe o interfa grafic (Windows). Enorma cretere a
web-ului a nceput virtual, dintr-o dat: n iunie 1993, 130 servere Web erau nregistrate, n 1994 erau
deja 11.576 servere.
Dar web-ul nu a fcut doar s se dezvolte ci i posibilitile de a prezenta datele au crescut
dramatic. Curnd au aprut poze i animaii pe situri web, urmate de sunete . Doar un mic pas mai era
necesar pentru a aduce cataloage, directoare i formulare de comand pe situri web. Astfel, civa ani
mai trziu s-a nscut E-Commerce.

1.1. 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 Ministerului Educaiei, care conine printre altele pagina cu informaii
referitoare la examene, pagina cu informaii despre evenimentele curente, pagina cu date de contact
.a.m.d.
Fiecare 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.
Exist extrem de multe criterii pe care se pot mpri site-urile. n funcie de domeniul lor, de
funcionalitate, de dimensiuni, etc. Iat o astfel de mprire:
1. Site de prezentare
Site-urile de prezentare reprezint majoritatea pe internet. Acestea fac prezentarea unei firme,
companii, produs sau idei. Sunt site-uri cu dimensiune redus n care de obicei firma i prezint
avantajele i serviciile permind navigatorului intrarea n contact cu ei printr-un formular de contact sau
informaii cu privire la sediul unde poate fi gsit firma, eventual telefon sau email.
2. Site cu vnzri online (e-commerce)

Aceste site-uri fac o diferen remarcabil fa de cele de prezentare, proprietarul unui asemenea site
putnd efectua vnzri online.
Principalele elemente componente ale unei activiti de comer electronic desfurat prin Internet sunt
urmtoarele:
a) comerciantul, acceptatorul su i situl (website) comerciantului pe Internet;
b) cumprtorul pltitor cu card, calculatorul su personal, portofelul su electronic i emitentul
cardului;
c) telecomunicaiile sigure ntre cumprtor i sit, i ntre sit i acceptatorul comerciantului;
d) aplicaia de eComer a acceptatorului, distribuit, cu un modul client n situl comerciantului i un
modul server n SMC-ul acceptatorului, i poarta de acces la Internet (gateway);
e) serverul din Internet care asigur gzduirea siturilor de comerciant i legturile cu SMC-urile
acceptatorilor (sau ale procesatorilor independeni adoptai de acetia);
f) riscurile, fraudele i disputele;
g) protocoalele de autentificare care asigur securitatea sporit a tranzaciei;
h) costul tranzaciilor i microplile;
i) pieele electronice, licitaiile.
3. Site cu interaciune.
n aceast categorie vom include site-urile care ofer clienilor informaii din baze de date, forum
sau orice alt soluie care aduce un plus interaciunii dintre navigator i compania proprietar a site-ului.
Un site interaciune ofera navigatorului soluii reale la probleme sale, oferindu-i acestuia senzaia de
siguran n privina problemelor sale.
Un site 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.

48

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. 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:

Nume Adres real
www.google.com 64.233.167.99
www.yahoo.com 66.94.234.13

Scriind deci n browser www.google.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.google.ro i ftp://roedu.net unde putem identifica cele patru seciuni astfel:
http:// respectiv ftp:// - protocolul utilizat
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.google.ro , browserul presupune c este prin protocolul http.
www serviciul internet
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.
google respectiv roedu
Sunt numele propriu-zise ale site-urilor, date de creatorii lor.
.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.
n funcie de criteriul funcional, exist mai multe domenii:
.com / .biz Situri
comerciale, ale unor firme,
ntreprinderi.
.org situri ale unor organizaii
non-profit
.edu situri educaionale .gov situri guvernamentale
.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.

2. Modelul Web
World Wide Web este cel mai utilizat serviciu Internet fiind dezvoltat la nceputul anilor 90. El
utilizeaz protocul http pentru a transmite text, imagini, sunete aflate pe un server WWW oriunde n lume
prin intermediul protocolului HTTP.
Aplicaia WWW este o aplicaie de tip client-server, n care:
Utilizatorul formuleaz o cerere prin intermediul unui browser (aplicaie tip client).
Cererea este expediat de ctre aplicaia client (browser) pe Internet.
Cererea ajunge pe severul destinaie (serverul Web) care preia cererea prin intermediul unei
aplicaii speciale.
Serverul interpreteaz cererea i formuleaz rspunsul (caut paginile web solicitate,
imaginile, sunetele etc.)
Rspunsul este expediat prin intermediul Internetului ctre computerul client.

49

Aplicaia client recepioneaz rspunsul i l interpreteaz (n fereastra browser-ului).


Exemple de servere Web: Apache, Netscape Enterprise Server, Sun Web Server, Microsoft
Internet Information Server, Stronghold, Jigsaw;
World Wide Web ( sau mai pe scurt spus WWW sau Web-ul ) reflect prin numele su trsturile
sale eseniale:
destinat cutrii informaiei n ntregul Internet ( world wide = n lumea ntreag);
folosete hypertextul pentru organizarea informaiei ceea ce face ca aceasta s apar ca o pnz
de pianjen ( web ) i care permite navigarea cu uurin de la o pagin la alta.
Hypertextul reprezint o metod de organizarea a informaiei n care anumite cuvinte, marcate,
sunt legate de alte documente care conin informaii adiionale despre ele. Hypermedia permite realizarea
de legturi similare la grafice, imagini, animaie, etc.. Selecionarea unui astfel de cuvnt ( sau imagine)
va avea ca efect afiarea documentului legat de cuvntul respectiv.
Web-ul reprezint un sistem uria de informaii legate ntre ele ca ntr-o pnz de paianjen i care
se afl pe calculatoare aflate n ntreaga lume (situri web). Informaia poate fi accesat privind paginile
web care conin legturi hypertext ctre alte pagini web. Aceste pagini web pot fi accesate folosind un
software special numit Browser .

2.1. Protocoale internet
Pentru a asigura comunicarea a dou sau mai multe calculatoare 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
HTTP (HiperText Transfer Protocol, Protocolul de transfer a HiperTextului) este
protocolul de comunicaie ntre un browser i un server de Web. Acest protocol este utilizat de ctre
serviciul Internet WWW. Este protocolul utilizat pentru navigarea propriu-zis pe internet.
HTTP (Hyper-Text Transport Protocol) este un protocol bazat pe stiva de protocoale
TCP/IP, destinat sistemelor hipermedia conlucrnd n medii distribuite. HTTP a nceput s fie proiectat i
utilizat din anul 1990, dezvoltndu-se mpreun cu spaiul WWW.
Prima versiune, referit ca HTTP/0.9, a reprezentat un simplu protocol de transfer de date prin
Internet. Urmtoarea versiune, HTTP/1.0, definit de RFC 1945, a mbuntit transferul de mesaje,
permindu-se mesaje n format MIME (Multipurpose Internet Mail Extensions), coninnd meta-informaii
despre datele transmise i despre semantica dialogului cererilor i rspunsurilor dintre clienii i serverele
Web.
A urmat HTTP/1.1 care oferea mai multe funcionaliti suplimentare, precum mecanisme de
cutare, adnotare i actualizare, avnd suport pentru URI (Uniform Resource Identifier), specificnd
adresele ca locaie (prin URL) sau prin nume (via URN). HTTP de asemeni este utilizat ca protocol generic
pentru comunicarea ntre agenii utilizator i porile (gateways) ctre alte sisteme Internet, incluznd
suport pentru protocoale ca SMTP (Simple Mail Transfer Protocol), NNTP (Network News Transfer
Protocol), FTP (File Transfer Protocol), Gopher. n acest mod, HTTP permite accesul hipermedia la
resurse disponibile din diverse aplicaii.
Protocolul HTTP este un protocol sigur, de tip cerere/rspuns, comunicaiile decurgnd peste
conexiunile TCP/IP, portul standard de acces fiind portul 80.
FTP (File Transfer Protocol)
Pentru vizualizarea coninutului unor directoare de pe calculatorul aflat la distan i eventual
copierea fiierelor pe calculatorul utilizatorului, trebuie folosit serviciul Internet de transfer de fiiere care
se numete FTP, al crui nume vine de la protocolul utilizat de acest serviciu (FTP File Transport
Protocol). Indiferent de zona geografic unde se afl calculatorul la distan i indiferent de sistemul de
operare care este instalat pe fiecare calculator, se transfer o copie a fiierului surs pe calculatorul
destinaie, singura condiie care se impune este ca cele dou calculatoare aflate n conexiune s
recunoasc protocolul FTP. Acest protocol divizeaz fiierul n pachete pe care apoi le transfer prin
nodurile reelei, dinspre surs nspre destinaie, iar apoi reface fiierul la destinaie. Pentru ca transferul
s fie mai rapid i mai eficient, este bine s se transfere fiiere compactate. Operaia de copiere pe
calculatorul utilizatorului se numete downloading.
Serviciul FTP poate copia dou tipuri de fiiere i lucreaz n dou moduri:

50

mod ASCII: pentru copierea fiierelor text, caz n care fiierele sunt modificate pentru a asigura
compatibilitatea dintre surs i destinaie; este modul recomandat pentru fiiere cu programe
surs, fiiere document, fiiere text i pot electronic;
mod binar: pentru copierea fiierelor executabile de tip binar, fiiere de imagini codificate binar,
baze de date sau fiiere compactate, caz n care fiierele nu vor fi modificate.
n Internet exist servere speciale, publice sau private, destinate copierii de fiiere numite situri FTP. Cele
publice sunt la dispoziia oricrui utilizator fr a-i cere vreo parol, ele sunt n general destinate copierii
programelor gratuite free software din colecii publice de programe. Aceste zone din Internet se numesc
situri anonime ale sistemului FTP, pentru c utilizatorul conectat este un anonim, care pentru nume de
utilizator va introduce anonymus iar n locul parolei va introduce adresa sa de pot electronic (pentru
orice eventualitate).
POP / IMAP / SMTP
Protocoale folosite de serviciul de e-mail pentru interogarea direct a serverului de mail utilizat.
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.
Pentru exemplificare n MyComputer, nparteasuperioar a ferestrei, n dreptul cuvntului
address, la tastarea une iadrese internet (de ex. www.google.ro), se va observa deschiderea paginii
web corespunztoare.
Browserele web funcioneaz pe baza anumitor protocoale, care l leag pe utilizator de paginile
web stocate (definite) pe servere web specializate. Cele mai des folosite protocoale web sunt HTTP,
HTTPS i FTP.
Funcionarea browser-ului
Un browser este alctuit dintr-un set de programe care permite afiarea i manevrarea
informaiilor bazate pe text, imagini i sunet precum i rularea unor programe pe care siturile web i
documentele le pot include (applet-uri, scripturi). Fiecare browser are o caset de text unde utilizatorul
poate introduce adresa documentului sau a sitului dorit, adres care este unic pe lume (univoc),
numit (Uniform Resource Locator sau URL). n cazul n care utilizatorul nu cunoate adresa exact , el
poate introduce drept "cheie de cutare" o poriune mic de text specific pe care documentul ar trebui
s l conin. Browserul transmite acest text unor aplicaii speciale din web numite motoare de cutare.
Acestea caut n multitudinea de documente sau situri respectivul text, oferind apoi ca rezultat o list de
adrese care conin textul cutat. Utilizatorului nu i mai rmne dect sa aleag - eventual prin mai
multe ncercri - locaia dorit. n realitate aceast list de adrese poate fi uneori extrem de lung, de
ordinul sutelor de mii de linii sau chiar i mai lung, caz n care este nevoie de o strategie de cutare
mai exact.
n general, documentele i paginile web pe care le afieaz browserele sunt, la dorina autorilor
lor, interconectate prin technologia Hipertext, care permite saltul simplu de la un document sau sit la
altul, printr-o simpl apsare pe maus.

51

2.2. Hypermedia
Hypermedia este folosit ca o extensie logic a termenului hipertext n care grafica, audio, video,
text simplu i hyperlink-uri se mpletesc pentru a crea un mediu non-liniar, de informare. Acesta
contrasteaz cu termenul mai larg multimedia, care pot fi utilizat pentru a descrie non -prezentari
interactive liniare, precum i hypermedia. Este, de asemenea, legat de un domeniu al literaturii
electronice.
Proprietatea industrial
Exist dou categorii de obiecte ale acesteia: creaii intelectuale industriale i semne distinctive
ale activitii industriale.
Convenia de la Paris din 1883 privind protecia proprietii industriale (cea mai veche n materie
i nc n vigoare) menioneaz ca fiind obiecte al proprietii industriale: inveniile, modelele de utilitate,
desenele i modelele industriale, mrcile de fabric, de comer i de serviciu, numele comercial, indicaiile
de provenien, denumirile de origine. De asemenea, este enumerat i aa-numita represiune a
concurenei neloiale. Autorii (din ce n ce mai muli) sunt de acord c acesta nu constituie un obiect
distinct al proprietii industriale. El se regsete deopotriv att la creaii intelectuale industriale, ct i la
semne distinctive ale activitii industriale, constituind o aciune prin care pot fi aprate toate drepturile
de proprietate industrial purtnd asupra oricruia dintre obiectele enumerate mai sus. Cu alte cuvinte,
represiunea concurenei neloiale constituie o consecin a nclcrii dreptului de proprietate industrial.
Fa de data adoptrii Conveniei de la Paris din 1883, materia proprietii industriale s-a
mbogit i cu alte obiecte. ntr-o enumerare nelimitativ, sunt creaii intelectuale industriale: invenia,
inovaia, know-how-ul, modelele de utilitate, desenele i modelele industriale, topografia circuitelor
integrate etc., respectiv sunt semne distinctive ale activitii industriale: mrcile (de fabric, de comer
sau de serviciu), indicaii geografice (denumiri de origine i/sau indicaii de provenien), numele
comercial (firma), emblema.
Noiunea de proprietate industrial presupune dou aspecte:
a) instituia juridic a proprietii industriale i
b) dreptul subiectiv de proprietate industrial.
S-ar putea defini instituia juridic a proprietii industriale ca fiind un ansamblu de norme juridice
ce reglementeaz raporturile sociale privitoare la creaiile intelectuale industriale i la semnele distinctive
ale unei activiti industriale. Din aceast definiie se pot reine urmtoarele elemente definitorii:
1.Proprietatea industrial este un ansamblu de norme juridice care au acelai obiect.
Specifica acestor norme este faptul ca i au izvorul att n actele normative interne, ct i n tratatele i
conveniile internaionale. Legislaiile naionale sunt din ce n ce mai mult adoptate pe baza standardelor
ce stau la baza elaborrii actelor normative internaionale.
Ct privete caracterul acestor norme juridice, este de subliniat apartenena lor la diverse ramuri
de drept: dreptul civil, drept procesual civil, dreptul muncii, dreptul administrativ, dreptul financiar,
dreptul penal, dreptul procesual penal etc. Dintre aceste norme, ns, prevaleaz normele dreptului civil.
2. Normele acestei instituii reglementeaz raporturi patrimoniale dar i raporturi
personal - nepatrimoniale. Subiectele acestor raporturi sunt persoane fizice, dar i
persoane juridice.
3. Specificul raporturilor reglementate de normele proprietii industriale este obiectul
(obiectele) la care se refer aceste raporturi: creaiile intelectuale industriale i semnele
distinctive ale activitii industriale.
Analiznd toate i fiecare din aceste obiecte, rezult c acestea prezint trsturi i caracteristici comune:
- Toate aceste obiecte sunt bunuri, n sensul juridic al termenului (sunt susceptibile de
apropriere sub forma unor drepturi patrimoniale).
- Aceste obiecte sunt transmisibile (dup caz, prin licen sau prin cesiune).
- Toate aceste obiecte sunt bunuri incorporale nu au o substan material.
Dreptul de proprietate industrial nu va purta asupra unui bun material. Titularul dreptului de
proprietate asupra suportului material al operei nu este n mod necesar i titularul dreptului de
proprietate industrial.
- Aceste obiecte se caracterizeaz prin ubicuitate. Ubicuitatea poate fi de dou
feluri:
a)Ubicuitatea sub aspectul apariiei desemneaz aptitudinea acestor obiecte de a putea fi create
de dou sau mai multe persoane ce au lucrat n mod independent, unele de altele, n acelai timp (sau n
perioade de timp diferite), n acelai loc (sau n locuri diferite).
Legiuitorul este cel care emite norme prin care s se identifice titularul dreptului de proprietate
industrial (ex: sunt recunoscui amndoi ca titulari ai dreptului cotitulari, sau doar unul dintre acetia
va fi recunoscut ca fiind titular al dreptului). n aceast din urm ipotez se nate ntrebarea care dintre

52

cei doi va fi recunoscut ca fiind titularul dreptului. Exist legislaii ce stabilesc ca principiu c titular al
dreptului de proprietate industrial este acela care a ndeplinit primul anumite formaliti cerute de lege
n faa unor autoriti stabilite de lege.
b)Ubicuitatea sub aspectul folosinei desemneaz aptitudinea obiectelor proprietii industriale de
a putea fi folosite, chiar n integralitatea lor, de dou sau mai multe persoane, independent una de alta,
n acelai timp si in acelai loc sau n locuri diferite. Legiuitorul a emis norme juridice cu privire la
instrumentele de transmitere a acestor obiecte ce fac posibil folosirea concomitent a lor de ctre
persoane diferite, chiar n acelai timp. De exemplu, prin contractul de licen nu se transmite nsui
dreptul de proprietate industrial, cu toate prerogativele sale, ci doar posibilitatea de a folosi creaia sau
semnul distinctiv i de ctre beneficiarul licenei.
4.Termenul industrie (industrial) are un neles convenional (special), acesta cuprinznd nu
doar industria propriu-zis (ca ramura a economiei nationale), ci si alte domenii cum ar fi comertul,
agricultura, etc. In materia proprietatii industriale notiunea de industrie este conceputa ca tot ceea ce
presupune si este datorat muncii omului, activitatii sale asupra naturii.
Dreptul subiectiv de proprietate industrial reprezint posibilitatea recunoscut de lege titularului
acestui drept, persoan fizic sau juridic, de a folosi n mod exclusiv o creaie intelectual industrial sau
un semn distinctiv al unei asemenea activiti industriale.
Pot fi reinute, ca elemente ale acestei definiii, urmtoarele:
a. Posibilitatea, facultatea juridic, recunoscut titularului dreptului.
De regula, titularul dreptului subiectiv de proprietate industrial are i obligaia de a-i exercita
aceste prerogative i n msura n care nu se folosete de dreptul su poate fi supus unor sanciuni. De
exemplu, daca titularul brevetului de invenie nu-i exercit dreptul su, va putea fi supus unei sanciuni
ce const n posibilitatea, acordat printr-o procedur judectoreasc, n beneficiul unor teri ca acetia
s poat folosi i ei acest brevet de invenie n anumite condiii i aceasta chiar mpotriva voinei
titularului brevetului. Interesul statului este ca oamenii (societatea) s beneficieze de obiectul brevetului
de invenie. n ceea ce privete mrcile, titularul dreptului asupra mrcii are i dreptul la folosina mrcii
respective. Potrivit Legii nr. 84/1998, dac titularul nu folosete marca n mod efectiv pe teritoriul
Romniei timp de 5 ani, atunci orice ter interesat are dreptul de a cere n justiie decderea titularului
din drepturile asupra acelei mrci.
b. Recunoaterea legal a acestei posibiliti.
Aceasta se poate acorda doar n urma parcurgerii unei proceduri speciale (complicate i
ndelungate): brevetarea inveniei, nregistrarea mrcii etc. Statul, prin organele sale specializate, emite
un titlu de protecie juridic: brevet, certificat de nregistrare.
c. Titularul dreptului.
Acesta poate fi o persoan fizic sau o persoan juridic ori mai multe persoane fizice i/sau
juridice.
d. Specificul acestui drept.
Acesta este dat de prerogativa folosinei (exploatrii) asupra unui bun, care este exclusiv.
Analiznd coninutul dreptului, titularii dreptului subiectiv de proprietate industrial au prerogative
extrem de asemntoare cu cele recunoscute titularilor dreptului de proprietate (n sensul clasic al
termenului):
-Ius possidendi, posibilitatea de a deine i cunoate soluia (creaia, semnul distinctiv) si de a
hotari asupra modalitatii de a o pune sau nu in lucrare.
-Ius utendi, dreptul de a folosi acel obiect pentru sine, intr-o industrie oarecare.
-Ius fruendi, posibilitatea culegerii fructelor ca urmare a folosirii creaiei sau a semnului distinctiv
de ctre terele persoane beneficiare ale unei licene pentru care se pltete o remuneraie redevena.
-Ius abutendi, posibilitatea de a exercita dispozitia juridica, prin cesiunea totala sau partiala a
dreptului subiectiv de proprietate industriala. In aceasta materie nu exista dispoziia material, intrucat
nu se poate distruge un bun incorporal.
e. Definitia dreptului subiectiv de porprietate industriala include si termenul de industrie,
industrial. Acesta are acelasi inteles larg pe care l-am folosit atunci cand am analizat institutia juridica a
proprietatii industriale.
Caracterele juridice ale dreptului subiectiv de proprietate industrial:
a. Drept absolut opozabil erga omnes. Exist obligaia general i negativ a tuturor celorlalte
subiecte de drept de a nu face nimic de natur a stnjeni pe titularul acestui drept. Cele mai specifice
mijloace de aparare a titularului dreptului de proprietate industriala impotriva atingerii aduse dreptului de
oricare dintre cei care, alcatuind subiectul pasiv general, nu isi respecta obligatia de a nu face sunt
actiunea in contrafacere si actiunea in concurenta neloiala.

53

b. Drept patrimonial permite titularului sa se foloseasca pentru sine de un bun incorporal, sa ii


culeaga fructele civile si sa il instraineze contra unui pret.
c. Drept transmisibil permite titularului sa transmita dreptul de folosinta exclusiva in intregul
sau sau numai unele dintre prerogativele dreptului sau. Mijloacele specifice prin care se realizeaza
transmiterea, in tot sau in parte, a dreptului subiectiv de proprietate industriala sunt contractul de
cesiune si contractul de licenta.
d. Drept, in principiu, temporar, in sensul ca, in principiu, nu este recunoscut nelimitat n timp ci
doar, de exemplu, pe o perioad de 10 ani (mrci) sau 20 de ani (invenii). In unele cazuri exista
posibilitatea rennoirii. Titularul dreptului deine doar temporar monopolul asupra obiectului dreptului,
acest lucru fiind absolut necesar. n materie de semne distinctive dreptul este doar n principiu temporar,
deoarece, de exemplu, n materie de mrci termenul de 10 ani poate fi prelungit de nenumrate ori (fr
limit) cu alte termene ulterioare de 10 ani (cu o anumit procedur i plata unor taxe).
e. Dreptul, n principiu, este teritorial, fiind recunoscut doar de ctre acel stat ce a acordat titlul
de protecie prin care se recunote acest drept. ns statele au ncheiat anumite acorduri prin care se
faciliteaz obinerea titlurilor de protectie pe teritoriul altor state, fara a se parcurge procedura de
inregistrare prevazuta de legislatia fiecarui stat in care dreptul este recunoscut. Natura juridic a dreptului
subiectiv de proprietate industrial: Dreptul de proprietate industrial este un drept real ce poart asupra
unui bun incorporal fiind destinat utilizrii n industrie. Importana identificarii naturii juridice a dreptului
subiectiv de proprietate industriala este dat de necesitatea stabilirii regimului juridic aplicabil. n ipoteza
n care reglementrile existente n materie sunt insuficiente pentru soluionarea unei probleme, devin
aplicabile principiile din materia drepturilor reale si, in special, cele din materia dreptului de proprietate
(in sensul clasic al cuvantului), care constituie dreptul comun si pentru materia dreptului subiectiv de
proprietate industriala.
Elementele componente ale comerului electronic
Vom face aici o scurt descriere a principalelor elemente conceptuale componente ale comerului
electronic, iar n capitolele urmtoare vom detalia elementele mai importante legate de riscuri, fraude i
securitate. Nu toate elementele componente se afl n toate sistemele de eComer.
Principalele elemente componente ale unei activiti de comer electronic desfurat prin Internet
sunt urmtoarele:
a) comerciantul, acceptatorul su i situl (website) comerciantului pe Internet;
b) cumprtorul pltitor cu card, calculatorul su personal, portofelul su electronic i emitentul
cardului;
c) telecomunicaiile sigure ntre cumprtor i sit, i ntre sit i acceptatorul comerciantului;
d) aplicaia de eComer a acceptatorului, distribuit, cu un modul client n situl comerciantului i
un modul server n SMC-ul acceptatorului, i poarta de acces la Internet (gateway);
e) serverul din Internet care asigur gzduirea siturilor de comerciant i legturile cu SMC-urile
acceptatorilor (sau ale procesatorilor independeni adoptai de acetia);
f) riscurile, fraudele i disputele;
g) protocoalele de autentificare care asigur securitatea sporit a tranzaciei;
h) costul tranzaciilor i microplile;
i) pieele electronice, licitaiile.

2.3. HTML
HTML (HiperText Markup Language, Limbajul de Marcare a HiperTextului) este limbajul
n care sunt scrise paginile web. HiperTextul este un text mbogit, un text care conine marcaje speciale
denumite taguri care permit ncapsularea altor tipuri de informaie: imagini, sunete, filme etc. Aceste
marcaje sunt interpretate de browser care afieaz coninutul corespunztor.

Un istoric al Limbajului HTML
Primele specificaii de baza ale Web-ului au fost HTML, HTTP si URL.
HTML a fost dezvoltat iniial de Tim Berners-Lee la CERN n 1989. HTML a fost vzut ca o
posibilitate pentru fizicienii care utilizeaz computere diferite i schimb ntre ei informaie utiliznd
Internetul. Erau prin urmare necesare cteva trsturi: Independena de platform, posibiliti hypertext
i structurarea documentelor. Independena de platform nseamn c un document poate fi afiat n
mod asemntor de computere diferite (deci cu font, grafic i culori diferite), lucru vital pentru o
audien att de variat.
Hipertext nseamn c orice cuvnt, fraz, imagine sau alt element al documentului vzut de un
utilizator (client) poate face referin la un alt document, ceea ce uureaz mult navigarea ntre multiple
documente sau chiar n interiorul aceluiai document. Structurarea riguroas a documentelor permite

54

convertirea acestora dintr-un format n altul, precum i interogarea unor baze de date formate din aceste
documente.
SGML i HTML
Tim Berners-Lee a utilizat ca model SGML (Standard Generalized Markup Language), un standard
internaional n plin dezvoltare. SGML avea avantajul unei structurri avansate i al independenei de
platforma dar proiecterea lui a avut n vedere mai mult structura semantic a documentului dect modul
de formatare. Flexibil, SGML putea fi descris ca o specificare pentru descrierea altor formate. Utilizatorii
puteau creea noi formate (DTD-Document Type Definitions) care puteau fi nelese de orice produs soft
SGML pur i simplu prin citirea mai nti a definiiilor noilor formate.
HTML este pur i simplu un DTD, deci o aplicaie a SGML. n primii ani de evoluie HTML a
crescut lent, n principal pentru c i lipseau posibilitile de a descrie publicaii electronice profesionale;
limbajul permitea oarece control asupra fontelor dar nu permitea inserarea graficii. n 1933, NCSA a
mbogit limbajul pentru a permite inserarea graficii i au construit primul navigator grafic, Mosaic. Au
urmat apoi contribuii ad hoc ale diverselor firme care au adus adugiri limbajului HTML (adugiri i nu
mbogiri pentru c unele taguri nu erau n conformitate cu principiile generale ale SGML ) astfel nct,
prin 1994 limbajul prea scpat de sub control. Urmarea a fost c la prima conferin WWW din Geneva (
Elveia ) s-a construit un grup ( HTML Working Group ) a crui prima misiune a fost formalizarea HTML
ntr-un DTD al SGML, lucru care s-a concretizat n HTML Level 2 ( sau HTML 2.0; Nivelul 1, deci HTML
1.0, a fost proiectat de Tim Berners-Lee ). Importana aciunii acestui grup const n faptul c, odat
standardizat, limbajul poate fi apoi extins ntr-un mod mai controlat la alte nivele.
World Wide Web Consortium
Standardul oficial HTML este World Wide Web Consortium (W3C), care este afiliat la Internet
Engineering Task Force (IETF). W3C a enunat cteva versiuni ale specificaiei HTML, printre care i
HTML 2.0, HTML 3.0, HTML 3.2, HTML 4.0 i, cel mai recent, HTML 4.01. n acelai timp, autorii de
browsere, cum ar fi Netscape i Microsoft, au dezvoltat adesea propriile extensii HTML n afara
procesului standard i le-au ncorporat n browserele lor. n unele cazuri, cum ar fi tagul Netscape, aceste
extensii au devenit standarde adoptate de autorii de browsere.
HTML 2.0, elaborat n iunie 1994, este standardul pe care ar trebui s-l suporte toate browserele
curente inclusiv cele mod text. HTML 2.0 reflect concepia original a HTML- un limbaj de marcare
independent de obiectele existente pentru aezarea lor n pagin, n loc de a specifica exact cum ar trebui
s arate acestea.
Specificaia HTML3.0, enunat n 1995, a ncercat s dezvolte HTML2.0 prin adugarea unor
faciliti precum tabelele i un mai mare control asupra textului din jurul imaginilor. Dei unele din
noutatile HTML 3.0 erau deja folosite de autorii de browsere, multe nu erau nc folosite. n unele cazuri,
taguri asemntoare implementate de autorii de browsere au devenit mai rspndite dect tagurile
oficiale. Specificaia HTML 3.0 acum a expirat, deci nu mai este un standard oficial.
n mai 1996, W3C a scos pe pia specificaia HTML 3.2, care era proiectat s reflecte i s
standardizeze practicile acceptate la scar larg. Deci, HTML 3.2 include tagurile HTML 3.0 ce erau
adoptate de autorii de browsere ca Netscape i Microsoft plus extensii HTML rspndite. n bilanul
asupra HTML, W3C recomand ca providerii de informaii s utilizeze specificaia HTML 3.2.
Versiunile curente ale majoritii browserelor ar trebui s suporte toate, sau aproape toate aceste
taguri.
n prezent, HTML 4.0 este mai puin utilizat fiind deja publicate specificaiile HTML 4.01.
Documente HTML sunt documente n format ASCII i prin urmare pot fi create cu orice editor de
texte. Au fost ns dezvoltate editoare specializate care permit editarea ntr-un fel de WYSIWYG dei nu
se poate vorbi de WYSIWYG atta vreme ct navigatoarele afieaz acelai document oarecum diferit, n
funcie de platforma pe care ruleaz. Evident conversiile nu pot pstra dect parial formatrile anterioare
deoarece limbajul HTML este nc incomplet.

2.4. XML
Caracteristici
XML este acronimul de la EXtensible Markup Language (meta-limbaj de adnotare/marcare);
XML este un limbaj de marcare destul de asemntor cu HTML;
XML a fost proiectat pentru a descrie datele;
Etichetele XML nu sunt predefinite n XML;
XML este auto-descriptiv;
XML folosete DTD (Definirea Tipului de Document) pentru descrierea formal a datelor.
XML i HTML au fost proiectate n scopuri diferite:
XML a fost conceput pentru a descrie datele i pentru a se focaliza pe ceea ce reprezint datele;

55

HTML a fost conceput pentru a afia datele i pentru a se focaliza asupra modului n care arat
datele;
HTML este despre afiarea datelor, XML este despre descrierea informaiei.
XML este extensibil. Etichetele folosite pentru marcarea documenteleor i structurii
documentelor HTML sunt predefinite. Autorul documentelor HTML poate folosi doar etichete ce au fost
definite n HTML standard. XML permite autorului s i defineasc propriile etichete i propria structur
a documentului.
n ceea ce privete evoluia viitoare a limbajului a fost surprinztor s vedem ct de repede a
evoluat standardul XML, i ct de repede a fost adoptat acesta de ctre un mare numr de comerciani
de software. XML va fi la fel de important pentru viitorul Web-ului precum a fost HTML-ul pentru
constituirea bazelor acestuia. XML reprezint viitorul tuturor transmisiilor i manipulrilor de date n
cadrul Web.
XML poate stoca date separat de HTML, la interiorul documentelor HTML, putnd fi folosit ca
format pentru schimburi de informaie.
Paginile HTML sunt folosite pentru a afia date. Datele sunt adesea stocate la interiorul paginilor HTML.
Cu XML, datele pot fi acum stocate ntr-un fiier separat XML. n acest fel, se va putea realiza
concentrarea asupra utilizrii HTML-ului n vederea formatrii i afirii, putnd fi siguri c modificrile
operate n datele subadiacente nu vor aduce schimbri nici unui cod HTML.
XML poate fi utilizat pentru schimburi de date. n lumea reala, sistemele de calcul si bazele de
date conin date n format incompatibil. Una dintre cele mai solicitante provocri pentru developeri din
punct de vedere al timpului necesar a fost schimbul de date ntre asemenea sisteme pe Internet.
Convertirea datelor n XML poate reduce considerabil acest grad de complexitate i poate crea date ce
pot fi citite de ctre diverse tipuri de aplicaii.

3. Principiul HyperText

Termenul de hypertext (text non-linear) este propus de Ted Nelson n anul 1965 i reprezint
forma de organizare a informaiilor interconectate ntr-o manier complex care n mod convenional nu
poate fi reprezentat pe hrtie; acesta se afl la baza celui mai important serviciu al reelei Internet, i
anume WWW (World Wide Web) care gestioneaz documente HTML (HyperText Markyp Language); n
mod normal, indiferent de metoda de stocare, formele principale de organizare a informaiilor sunt:
organizarea liniar; organizarea ierarhic (arborescent); organizarea asociativ (similar celei oferit de
memoria uman); Documentele hipertext au o parte de coninut, o parte de organizare i o parte de
prezentare.

O parte dintre avantajele hipertextului fa de textul tiprit sunt:
forma neliniara a hipertextului ofer capabiliti eficiente de parcurgere a coninutului;
mediile electronice pot stoca o cantitate impresionant de informaii;
hipertextul ofer o mai buna vizualizare a coninutului i o navigare rapid, orict de complexe ar
fi documentele, innd cont de specificaiile utilizatorilor;
n cadrul sistemelor hipertext, interogrile, filtrrile, diversele preferine i adnotrile utilizatorilor
pot fi refolosite ori de cte ori este necesar, putnd fi stocate n cadrul structurii hipertext a
documentelor folosite.
Principalele probleme cu care se confrunt informaticienii n ceea ce privete hipertextul sunt de
natur de conversie (n general automat) a textului liniar n forma hipertext i de liniarizare a
hipertextului, de proiectare (design) a documentelor hipertext, de accesare concurent a bazelor de date
hipertext n context distribuit, de construire a unor mecanisme optime pentru cutarea i interogarea
inteligent n cadrul informaiilor hipertext, de suportare a extensiilor multimedia, de prezentare a
documentelor hipertext ntr-o forma uor de parcurs de ctre utilizatori etc.
3.1. Concepte de baza
Un sistem hipertext este compus din noduri (concepte) i legturi (relaii). Un nod reprezint un
concept unic (o idee), putnd conine orice tip de informaie (text, grafic, animaie, audio, video, imagini
sau programe) i avnd asociat un tip (detaliu, propoziie, colecie, observaie etc.) - o informaie
semantic. Nodurile sunt conectate de alte noduri prin intermediul legturilor. Nodul sursa al unei legturi
se denumete referin, iar cel destinaie poart numele de referent, putnd fi numite i noduri ancor.
Modalitatea de stocare a informaiei n cadrul nodurilor variaz de la sistem la sistem, dar cele
mai folosite tehnici utilizeaz limbajele de marcare (SGML -Standard Generalized Markup Language sau,
mai nou, XML -Extensible Markup Language), standardele actuale construite pe baza acestor limbaje fiind
HyTime (Hypermedia/Timebased Structuring Language), MHEG (Multimedia and Hypermedia Information

56

Coding Expert Group), HTML (HyperText Markup Language). Avantajul major este asigurarea
independenei de platforma hardware i software, formatele proprietare conducnd la greuti de
navigare, cutare sau ntreinere. Din moment ce nodurile pot conine informaii multimedia, sistemele
hipermedia trebuie s fie suficient de flexibile pentru a suporta o multitudine de formate grafice, audio i
video.
Legturile sunt conexiuni intre noduri (sau concepte) dependente unul de altul, putnd fi
bidirecionale sau doar unidirecionale. i legturilor li se pot asocia tipuri (legtura de specificare, de
elaborare, legtura membru,
legtura de opoziie etc.),
definind natura relaiei dintre
noduri. Dupa Conklin, legaturile
pot fi referentiale (nonierarhice,
utile pentru realizarea
referinelor ncruciate, ele fiind
cele ce deosebesc cel mai bine
hipertextul de celelalte forme de
stocare a informaiei) sau
organizaionale (denumite
ierarhice sau structurale,
ilustrnd relaiile printe-copil dintre noduri, folosite la organizarea nodurilor n maniera ierarhic ntr-o
structur strict). Legturile organizaionale sunt eseniale pentru liniarizarea hipertextului i permit
autorilor s verifice coerena structurii hipertext.

3.2. Codificarea coninutului. Standardul MIME
Standardul MIME (Multiporpose Internet Mail Extensions) definete formatul coninutului
unui mesaj e-mail pe Internet, mesaj care poate avea orice format, nu numai cel de text. El consta din
dou parti: corpul mesajului i header-e. Header-ele formeaz o colecie de perechi cmp/valoare,
structurate conform RFC 822, pe cnd corpul mesajului este structurat conform MIME.
MOSS (MIME Object Security Services) se bazeaz, n cea mai mare parte, pe protocolul PEM,
definit n RFC 1421. MOSS este un standard prin care se execut servicii de semntur digital i criptare
pentru obiecte MIME. Serviciile sunt oferite prin folosirea criptografiei capt la capt (end-to-end), ntre
expeditor i destinatar, la nivel aplicaie. El este mult asemntor standardului PEM.

3.3. Primii pasi in crearea unui site:
3.3.1. Cumpararea unui domeniu
Primul lucru care trebuie facut in publicarea site-ul tau pe internet este cumpararea unui
domeniu. Un domeniu este numele pe care vrei sa-l dai site-ului, un nume care sa fie cat mai relevant
pentru continutul site-ului. Pentru dreptul de a folosi acest domeniu trebuie sa platesti o taxa anuala la
firma care ti-a inchiriat acest domeniu. O intrebare pe care si-o pun majoritatea celor care vor sa-si
achizitioneze un domeniu este ce sa-si aleaga din domeniile cu .com, .net, .org sau alte domenii legata
de tara de origine.
Daca afacerea ta se ocupa cu livrarea unor produse in tara respectiva sau este o agentie de
recrutare atunci ar fi mai indicat sa se utilizeze domeniu specific tarii. Daca afacerea ta necesita o
audienta internationala atunci cel mai ideal domeniu ar fi cel cu .com. Puterea acestui domeniu este
determinata si de algoritmii de localizare a siteurilor de catre browser care cauta initial pe cele terminate
cu .com. Daca nu mai exista domeniul dorit la .com mai exista doua posibilitati: .net imediat urmator
ca importanta dupa .com si .org ce este folosit pentru afacerile nonprofit.
Trebuie mentionat ca in urma acestui pas dispunem doar de un nume, fara un site functional
3.3.2. Alegerea unui webhost
Un webhost este o companie ce dispune de multe servere conectate la internet. Atunci cand
paginile tale sunt pe unul din aceste servere ele vor fi publice in internet si astfel vor fi accesibile de
oriunde. O problema cu webhost-urile gratuite este ca inpun adaugarea de bannere publicitare in
continutul site-ului sau deschiderea unor ferestre de popup. Astfel daca site-ul este unul de bussiness ar
fi ideala achizitionarea unui hosting pe bani, ce va oferi suport, banda de transfer mai mare, spatiu
pentru storarea site-ului mai mare
3.3.3. Construirea paginilor web
Pentru construirea unui pagini web este nevoie de cunostiinte de HTML, JavaScript, PHP.
Totodata continutul trebuie sa fie cat mai vizibil pentru engine-urile de cautare (gen Google) si cat mai

57

usor de citit si inteles. Pe internet se gasesc o multime de sfaturi pentru crearea unui site astfel ca nu
vom acoperi aceasta problema aici.
3.3.4. Testarea site-ului
Cum in ultimul timp internetul s-a dezvoltat foarte mult au aparut cativa clienti de internet
(browser) folositi in procente destul de mari de catre utilizatori. Astfel pe primul loc in utilizare se afla
Internet Explorer, apoi Firefox , Opera si Mozzila, restul de browsere fiind folosite in procente mici si nu
reprezinta un interes prea mare pentru un dezvoltator web. Ca urmare site-ul trebuie sa arate la fel pe
cel putin primele 3 dintre cele enumerate mai sus. Totodata se pot intampla erori de scriere a paginilor
web, ce nu respecta standardul HTML sau link-uri nereale, astfel este necesara utilizarea unui validator
pentru remedierea greselilor:
3.3.5. Realizarea unui profit financiar de pe urma site-ului
Sunt doua mari posibilitati pentru obtinera unui profit:
Publicarea de banere publicitare
Vanzarea unor produse
Desi fiecare site poate afisa banere publicitare, numai cele cunoscute sunt contactate de catre
firme ce vor sa-si faca publicitate prin intermediul site-ului tau si sunt dispuse sa ofere o anumita suma
pentru aceasta. Acest lucru este posibil si pentru site-urile nu prea cunoscute.
Astfel trebuie ca site-ul sa se afilieze la diverse site-uri sau printr-un intermediar de unde poti sa
selectezi o varietate de firme ce vor sa-si faca publicitate.
Exista diferite modalitati de plata din partea companiilor: plata pe numarul de incarcari (5E la
1000 incarcari), plata pe numarul de click-uri (este mai mare decat prima) pe linkurile banerelor, sau
plata pe numarul de articole cumparate de utilizatorii site-ului de la firmele care detin bannerele.
Pentru a fi afiliat la o retea sau la un anumit site trebuie sa se completeze un formular si in
functie de anumiti factori site-ul va fi acceptat sau nu. Pentru un profit bun site-ul trebuie sa posteze
banere publicitare ale firmelor cu interes pentru vizitatori, astfel probabilitatea ca acestia sa fie
interesetati este mai mare.
3.3.6. Cresterea popularitatii site-ului
Popularitatea site-ului se refera atat la numarul de utilizatori cat si pe a cata pagina a engine-
urilor de cautare se afla acesta.
Atunci cand site-ul este gata trebuie trimis la engine-urile de cautare, in special Google. Aceasta
se realizeaza din pagina Despre Google intrand pe linkul Adauga o legatura spre Google. Totusi daca nu
sunt site-uri care sa contina linkuri catre site-ul nostru atunci Google nu va binevoi sa-l indexeze. In
schimb daca sunt multe site-uri care au legaturi catre site-ul nostru, nici nu mai este nevoie de
adaugare a legaturii la Google, este indexat automat.
Astfel site-ul trebuie promovat fie prin anunturi in ziare, fie prin televiziune sau prin inregistrarea
la Google Adwords.

Diferente dintre un document web si unul tiparit
In contrast cu un document tiparit, un document web este ceva complet diferit. In acest caz,
designerul are prea putin control asupra felului in care este afisata o pagina, intrucat acest lucru
depinde in mare masura de browserul web folosit. Desi frustrant, a face o pagina web sa fie afisata la
fel in diferite browsere este un lucru extraordinar, constituind o provocare pentru majoritatea
webdesignerilor.
Cand creeaza un site, un webdesigner trebuie sa tina cont de urmatoarele:
Varietatea browserelor
Varietatea versiunilor pentru acelasi tip de browser
Varietatea sistemelor de operare folosite
Varietatea adancimii culorii pe monitoarele vizitatorilor
Varietatea rezolutiilor alese de diversi utilizator etc.
Cu un numar atat de mare de variabile de care depinde afisarea unei pagini web, nu este posibil
intotdeauna ca o pagina web sa fie afisata in mod identic pe doua calculatoare diferite. Si, asa cum am
precizat si anterior, acest lucru constituie o adevarata provocare pentru webdesigneri.
In orice caz, trebuie sa tineti cont ca un site nu este facut pentru voi sau pentru seful vostru.
Numai pentru ca exista o introducere facuta in Flash pe un site nu inseamna ca trebuie sa aveti si voi o
introducere similara.
Un site trebuie creat in functie de publicul tinta caruia i se adreseaza. Acestia pot fi clienti sau
potentiali clienti. Un bun webdesigner isi priveste rezultatul muncii prin ochii unui potential client.
De exemplu, daca concepeti un site adresat persoanelor mai in varsta, trebuie sa aveti grija sa
oferiti site-ului un aspect simplu, usor de urmarit, cu fonturi putin mai mari decat de obicei.

58

Trebuie sa analizati cu regularitate statisticile referitoare la site pentru a vedea ce browsere sunt
folosite de majoritatea vizitatorilor, ce sisteme de operare folosesc, daca folosesc platforma Javascript
de la Sun, sau daca au activate anumite controale ActiveX. Pentru a obtine astfel de informatii puteti
folosi fie scripturile proprii, fie inscrieti propriul site intr-unul dintre site-urile de analiza existente pe
Internet (de exemplu www.trafic.ro sau www.statistics.ro).
Marimea optima a unei paginii web si optimizarea ei
Optimizarea paginilor web este unul din aspectele cele mai importante ale webdesignului. O
pagina web optimizata se incarca mult mai repede pe calculatorul vizitatorului si astfel informatia ajunge
mult mai repede la tinta. Paginile care se incarca greu, si aici facem referire la paginile care se incarca in
mai mult de 10 secunde, sau care au o introducere facuta in Flash, pot duce la pierderea unei parti
dintre vizitatori, in special a celor care nu au suficienta rabdare. Nimic nu-i impiedica sa apese unul din
butoanele Back sau Close Window. Cu toate acestea, introducerile create in Flash ofera si avantaje
prin faptul ca pot fi foarte atractive din punct de vedere vizual si ofera posibilitatea folosirii unor meniu
interactive.
Pentru a stabili marimea optima a unei pagini web trebuie sa aveti in vedere cei patru factori care
influenteaza incarcarea intr-un browser:
marimea fisierului care contine codul HTML
latimea de banda a conexiunii vizitatorilor
viteza procesorului serverului care gazdueiste pagina web
complexitatea paginii web
Din moment ce nu puteti interveni asupra conexiunii vizitatorilor, trebuie sa va ocupati de ceilalti
factori. Astfel, incercati sa gazduiti pagina web un server foarte rapid, optimizati pagina web prin
curatarea codului HTML de elementele redundante, de grafica excesiva, de elementele multimedia
care nu sunt strict necesare etc. ceea ce va avea ca rezultat micsorarea dimensiunii fisierului sursa.
Daca este vorba despre un site care se adreseaza tuturor categoriilor de utilizatori, atunci
marimea fiecarei pagini web nu trebuie sa depaseasca 75 kb. Astfel, veti avea garantia ca fiecare
pagina se incarca in doar cteva secunde.
La calcularea marimii unei pagini web se iau in calcul nu numai fisierul HTML, ci si toate
elementele grafice si multimedia folosite, inclusiv imaginile de fundal, inclusiv scripturile Javascript
externe (fisiere cu extensia .js), inclusiv foile de stil (fisiere cu extensia .css), scripturi PHP etc.
Structura si aspectul unui site
Structura directoarelor trebuie sa fie logica si sa reflecte aspectul propriului site.
Un site poate incepe ca o simpla pagina web, se poate dezvolta intr-un set de cateva pagini, iar
in timp, in functie de cat de importanta doriti sa fie prezenta voastra pe Internet, poate ajunge chiar si
la sute de pagini. Coordonarea unui numar mare de pagini poate fi un lucru extrem de dificil mai ales
daca nu se lucreaza intr-un mod coerent de la inceput.
Astfel, trebuie evitat amestecul tuturor fisierelor intr-un singur director, fiind necesara gruparea
lor in functie de caracteristicile similare.
De exemplu, toate imaginile incluse intr-un site trebuie grupate intr-un director separat, cum ar fi
imagini. Acesta, la randul sau, se poate imparti in subdirectoare cu denumiri sugestive: pictograme,
butoane sau fundaluri.
In mod similar pot fi separate si fisierele de alt tip, cum ar fi cele Javascript, PHP sau ASP, care
pot fi incluse in directoare cu nume sugestive.
Denumirea data unui director sau subdirector depinde numai de voi si, chiar daca este
consumatoare de timp, cu siguranta va ajuta la intelegerea structurii site-ului de catre oricine va dori sa-
i aduca modificari.
Referitor la aspect, trebuie tinut cont de faptul ca o pagina web incepe in coltul din stanga sus si
se poate intinde oricat spre dreapta sau in jos. Acesta face sa poata fi infinit de lata si de lunga.

Este recomandabil ca o pagina sa nu necesite derulare spre dreapta, de aceea, inainte de a
publica o pagina web pe Internet, trebuie testat modul in care se comporta in functie de diferite rezolutii
ale monitorului.

59

Dintre acestea, cele mai uzuale sunt:


640 x 480 (valabila pentru sistemele foarte vechi)
800 x 600
1024 x 768
1280 x 1024
1600 x 1280
Altele (valabile pentru Mac si Web TV)

Erori n web design

1. Crearea de pagini web aglomerate.
O pagina web trebuie sa ofere un balans intre spatiul ocupat de informatii (text, imagini,
meniuri) si spatiul alb sau spatiul negativ (fundal, distantele dintre paragrafe si alte elemente ale paginii,
locurile goale). O pagina web trebuie sa arate aerisit, usor de parcurs cu vederea, simpla. Vizitatorul
trebuie sa poata citi printre randuri si sa gaseasca usor informatiile care il intereseaza. Solutia pentru a
evita aceasta greseala este sa folositi padding si margin cand creati stilul paginii, pentru a spatia
coloanele, paragrafele, imaginile de text, etc.
Se pare insa ca tendinta in web design-ul romanesc este exact inversa: paginile sunt
aglomerate, textul este inghesuit in imagini pentru a face loc publicitatii online. Sunt greu de parcurs,
obositoare si lungi.
2. Informatiile sunt greu de gasit in pagina web.
Aceasta este o greseala frecvent intalnita pe multe pagini. Vizitatorul intra pe un site cu un
scop: sa se informeze. Daca in primele secunde dupa intrarea pe site el nu va gasi informatiile promise
(prin titlu, prin URL, prin descrierea din pagina care face referinta la site-ul respectiv) va parasi site-ul.
Simplu.
Elementele importante ale unei pagini web trebuiesc scoase in evidenta. Portiunile din text care
ofera esenta informatiilor trebuiesc de asemenea scoase in evidenta.
3. Linkurile sunt greu de gasit in pagina web.
Linkurile sunt cele mai importante elemente ale unei pagini din punctul de vedere al unui
vizitator. Daca acestea nu pot fi gasite usor, vizitatorul poate renunta la navigarea pe site-ul respectiv.
Exista doua principii de care trebuie sa tinem cont atunci cand realizam o pagina web:
* linkurile trebuiesc deosebite de restul textului prin folosirea unei alte culori sau a sublinierii;
* trebuie evitat ca textul care nu este link sa arate ca un link (aceeasi culoare sau subliniere),
altfel vizitatorul se va simti pacalit.
4. Folosirea unui format de imagine incorect.
Formatele standard pentru imagini folosite pe site-urile web sunt JPEG, PNG sau GIF. Folosirea
altor formate pot duce la incarcari grele ale paginii web. Exista insa si exemple de pagini care desi
folosesc aceste formate corecte, timpii de incarcare sunt foarte mari pentru imagini. Problemele sunt
diverse, insa cele mai comune sunt imaginile nepregatite web (redimensionate si salvate pentru web) sau
folosirea de imagini de dimensiuni improprii ca fundal pentru elementele paginii (problema ce arata lipsa
de experienta a designerului in tehnicile de slicing / feliere).
5. Titlul paginii este lasat cel implicit.
In Dreamweaver titlul implicit al unei pagini este Untitled Document. Omiterea schimbarii
titlului este o greseala de neiertat chiar si pentru cel mai neexperimentat web designer. Credeti ca nu
exista designeri care sa faca aceasta greseala? Dati o cautare pe Google dupa cuvantul cheie Untitled
Document si veti ramane surprinsi sa gasiti aproape 30 de milioane de rezultate.
6. Meniu greu de folosit sau de gasit.
Exista o tendinta in web design de a ascunde meniul in elemente grafice din pagina sau in
elemente din cadrul unei imagini. Desi aceasta tendinta este interesanta din punct de vedere artistic, din
punct de vedere functional nu este potrivita.
Meniul trebuie sa fie usor accesibil vizitatorului, singura optiune care se accepta la un numar
mare de pagini fiind meniurile de tip drop-down.
7. Textul are marimea fixa.
Vizitatorul ar trebui sa poata redimensiona textul dupa cum doreste. Definirea textului ca
marime in pixeli va pastra dimensiunea acestuia fixa. Solutia ar fi ca definirea sa se faca utilizand
atributul EM.
8. Scopul site-ului nu este clar
In primele secunde dupa incarcarea paginii web vizitatorul trebuie sa isi dea seama despre ce
este vorba in pagina pe care a ajuns. Acest lucru poate fi obtinut prin folosirea unor titluri si subtitluri

60

sugestive pentru paragrafe. Exista insa destule pagini web pentru care trebuie sa pierzi timp ca vizitator
doar pentru a afla despre ce sunt acestea.
9. Folosirea unor culori stringente
Culorile stringente, sau combinatiile de culori nepotrivite pot obosi ochiul uman, sau pot
distrage atentia de la informatiile cu valoare din pagina web. Doua lucruri importante trebuie avute in
vedere la alegerea setului de culori pentru site: combinatia trebuie sa fie placuta ochiului si sa nu utilizeze
mai mult de 3 culori de baza (restul fiind doar nuante ale acestora).
10. Integrarea reclamelor in continutul paginii
Reclamele si publicitatea online trebuie mentinute separat de continutul informativ al paginii.
Vizitatorul trebuie sa isi dea seama usor care sunt banerele sau zonele cu publicitate online, si care sunt
imaginile sau linkurile care fac parte din continutul paginii. Amestecarea reclamelor cu continutul va
deruta vizitatorul si il va face sa paraseasca site-ul.
Acestea ar fi principalele greseli facute de web designeri. Exista insa si cazuri speciale, exceptii,
si acestea nu pot fi considerate greseli. Spre exemplu, site-urile de fotografie pot incarca imagini in
format TIFF sau BMP din diverse motive: exemple, teste, etc. Bineinteles ca nu putem considera ca
designerul a facut o greseala ce trebuie corectata.
Elemente de promovare a site-ului
Search engine optimization (SEO) este procesul de imbunatatire a volumului si calitatii traficului
catre un site de la motoarele de cautare prin rezultatele cautarilor.
In mod normal, cu cat un site este plasat mai sus in rezultatele de cautare, cu atat este mai
eficient si cu atat mai vizitat va fi acel site. SEO poate tinti diferite tipuri de cautare, incluzand cautari de
imagini, cautari locale sau cautari specifice unei industrii.
Ca si strategie de marketing online, SEO ia in considerare modalitatea de functionare a
motoarelor de cautare si a elementelor cautate de utilizatori. Optimizarea unui site vizeaza in principal
editarea continutului si codului sursa a paginilor pentru a creste relevanta cuvintelor cheie si a elimina
barierele in indexarea paginilor unui site de catre un motor de cautare.
Practic
Cum functioneaza?
In optimizarea unui site pentru motoarele de cautare sunt vizate un numar de elemente cheie.
Adresele paginilor
Primul element este adresa tuturor paginilor dintr-un site. Cand citesti aceasta pagina uita-te la
adresa din bara de sus a browserului tau web.
Ea ar putea fi de forma:
www.12am.ro/index.php?option=com_content&task=view&id=23&Itemid=35
Aceasta este forma este generata in mod automat din structura (CMS-ul) site-ului. Din forma
acestei adrese nu se subintelege continutul unei pagini.
In urma optimizarii noastre pentru motoarele de cautare, adresa are aceasta forma:
http://www.12am.ro/index.php/despre-search-engine-optimisation-seo
Din forma acestei adrese este foarte simplu de subinteles continutul paginii.
Acelasi procedeu se aplica si in cazul motoarelor de cautare.
Meta-Descriere si Meta-Cuvinte cheie
Fiecare pagina din site-ul tau trebuie sa contina o Meta-Descriere si mai multe Meta-Cuvinte
cheie.
Meta-Cuvintele cheie sunt informatiile cautate de Google cand verifica site-ul tau pentru a-l
introduce in lista de rezultate posibile. Meta-Descrierea este rezultatul pe care il vede un utilizator in
urma cautarii folosind cuvintele cheie.
Meta-Descriere si Meta-Cuvinte cheie
Utilizatorul a cautat folosind urmatoarele cuvinte cheie "web design 399 euro". Aceste cuvinte
cheie, intitulate Meta-Cuvinte cheie, sunt incluse in paginile site-ului www.12AM.ro - acesta este motivul
pentru care site-ul apare ca si rezultat.
Rezultatul a fost site-ul www.12am.ro. In acest caz Meta-Descrierea este "Site-ul tau web la doar
399 Euro! O altfel de abordare a web design-ului. 12AM construieste prezente web de peste 5 ani atat
national cat si...".
Imagini
Un utilizator poate cauta poze folosind google. In momentul in care utilizatorul s-a hotarat asupra
unei imagini din rezultatele prezentate de Google, acesta va da click pe ea, ajungand pe site-ul ce
contine acea poza.
Aceasta este o alta sursa de trafic pe site-ul tau. Pentru a profita si de aceasta sursa, imaginile
de pe site-ul tau trebuie optimizate ca atare.

61

Imaginile contin si ele o descriere, descriere folosita de Google pentru a afisa rezultate cand un
utilizator cauta imagini. Plaseaza cursorul mouseului deasupra imaginii de mai sus si mentine-l o
secunda nemiscat. Iti va fi afisat textul "Meta-Descriere si Meta-Cuvinte cheie" - aceasta este descrierea
pozei de mai sus.
TOATE aceste elemente sunt luate in considerare in momentul construirii site-ului tau. Acestea
sunt elementele ce vor face din site-ul tau o reusita.
SEO este metoda de a atrage trafic pe site-ul tau, fara a investi in campanii publicitare online
(AdWords). Bineinteles, efectul nu este imediat, ca in cazul unei campanii publicitare platite, insa, cu cat
site-ul tau este mai bine creat din aceste puncte de vedere, cu atat va ajunge mai repede pe prima
pagina de rezultate afisate de Google.
Inscrierea sitului in motoare de cautare si directoare web
1. Inscrierea in motoarele de cautare
Motoarele de cautare folosesc roboti pentru a indexa pagini web. Acesti roboti fie descopera un
link catre pagina ta in paginile deja indexate in baza de date, fie proceseaza lista de asteptare proprie.
Inscrierea unui site web in motoarele de cautare se refera la inscrierea in aceasta lista in mod direct.
Pentru fiecare motor de cautare in parte, situl trebuie inscris in aceasta lista.
Inscrierea este foarte simpla, nefiind necesara nici o alta informatie decat adresa web a primei
pagini (URL-ul). Inscrierea in motoarele de cautare poate fi gratuita (in cele mai multe cazuri), cat
si platita.
2. Inscrierea sitului in motorul de cautare Google
Indexarea de catre Google este cea mai importanta. Este nevoie doar de inscrierea primei pagini,
iar Google va descoperi si celelalte pagini. Pentru a verifica daca Google a indexat deja pagina ta,
tipareste in casuta de cautare propria adresa.
Reprezentantii Google au avertizat ca prefera sa descopere pagini web prin propriul robot, decat
ca acestea sa fie inscrise in mod manual pe lista de asteptare. Desigur, nu se penalizeaza in nici un fel
inscrierea prin propriul formular.
Google indexeaza gratuit paginile web, si nu se intrevede nici un plan pentru un program Pay-for-
inclusion (inscriere platita).
3. Inscrierea sitului in motorul de cautare Hotbot / Inktomi
Pentru a verifica daca esti deja indexat de catre HotBot, tipareste adresa ta in casuta lor de
cautare si vezi daca esti gasit printre rezultate. Deoarece HotBot foloseste baza de date a celor de la
Inktomi, prezenta in baza de date a celor de la HotBot se poate realiza in mod indirect prin Inktomi.
HotBot/Inktomi nu garanteaza includerea tuturor siturilor inscrise gratuit in baza lor de date.
Pentru o includere garantata se poate folosi programul Inktomi Pay-Per-Inclusion
4. Inscrierea sitului in directoare web
Directoarele web cele mai cunoscute precum DMOZ ( ODP -open directory project), Yahoo,
GoGuides, Zeal, Bluefind au criterii foarte stricte ce trebuiesc indeplinite pentru a accepta noi situri.
Asigura-te ca respecti toate aceste criterii, si cererea ta de adaugare va fi acceptata.
5. De ce sunt utile directoarele web?
Inainte de a discuta criterile pe baza carora un site web este acceptat sau nu intr-un director
web, as dori sa ma opresc asupra acestei intrebari. Pana la urma, de ce este importanta inscrierea in
directoarele web? Este cunoscut faptul ca cea mai mare parte a traficului unui site web provine de la
motoarelor de cautare si nu din directoare web.
Mai mult decat atat, de cele mai multe ori, in urma procesului de inscriere siteul tau va fi adaugat
intr-o categorie ce contine deja sute de alte situri. In primul rand, directoarele web cresc semnificativ
numarul linkurilor catre situl tau.
DMOZ este principala sursa pentru directorul Google cat si pentru alte cateva zeci, aducandu-ti
astfel zeci sau chiar sute de linkuri. Este cunoscut faptul ca numarul si calitatea linkurilor catre o pagina
web determina valoarea PageRankului.
Prezenta unui site in acest director este garantia calitatii acelui site. Fiecare site prezent in DMOZ
este verificat de catre editori specializati, ajutand semnificativ si la optimizarea pentru motoarele de
cautare.
Mentenanta site-ului web
Prin mentenanta intelegem actiunea periodica de actualizare a continutului site-ului. Indiferent
de cauzele care o determina, actualizarea continutului este necesara. Fie ca au intervenit modificari la
datele dvs. de contact, fie ca doriti sa afisati stirile de interes pentru vizitatorii dvs. imediat ce devin
disponibile, mentenanta este cea care are grija ca publicul dvs. fidel sa revina pe site in mod periodic.
Sub aspectul optimizarii unui site pentru motoarele de cautare, mentenanta este aproape
obligatorie. Un motor de cautare care vede ca o anumita pagina din site este diferita fata de cea pe care

62

a vizitat-o ultima data il face sa creada ca acea pagina se modifica mai des si o va vizita si pe viitor mai
des. Daca insa nu vede nici o modificare de la o vizita la alta, o va considera ca fiind "statica" si nu o va
vizita la fel de des, astfel ca de ex. o modificare facuta in scop SEO asupra paginii respective nu va fi
indexata la timp si optimizarea va dura mai mult.
Parametri pentru controlul traficului generat de site
Atunci cand lucram in research, cel mai important lucru era considerat interpretarea datelor. In
prezent, instrumentele de colectare a datelor sunt mult mai evoluate decat am visat vreodata si probabil
vor deveni si mai sofisticate. Problema apare atunci cand trebuiesc trase niste concluzii: multa lume
uraste cifrele (si e de inteles) , sau pur si simplu nu stie cum sa citeasca aceste date. Daca in articole
anterioare vorbeam de instrumente de trafic exterioare site-ului evolutia cautarilor pe cuvinte cheie
sau comparatii de trafic intre diferite site-uri am sa incerc sa scriu cateva cuvinte despre datele
din Google Analytics.
Google Analytics este un instrument gratuit de masurare a traficului de pe site-ul tau. Se pot
masura atat elemente cantitative (nr. vizitatori, sursele din care au venit pe site, numar conversii, etc.)
cat si cele calitative ( loialitate, timpul petrecut pe site, rata de conversie, paginile cele mai vizitate, etc).
Fiecare dintre acesti indicatori poate fi urmarit si separat pe anumite criterii de selectie: De ex. numarul
de vizitatori poate fi urmarit in functie de: ora vizitei, tara de origine, trafic platit sau nu etc.)
Ca sa fiu mai explicit, o sa iau exemplu o intrebare foarte des intalnita la care poti gasi raspunsul
prin Google Analytics:
Am vizitatori pe site, dar nu ma contacteaza suficienti clienti. De ce?
1. In primul rand te poti uita la indicatorii calitativi: daca ai un bounce-rate mare, inseamna ca
multi oameni pleaca imediat ce au intrat inseamna ca pagina pe care intra nu e relevanta pentru ei;
daca vizitatorii vad multe pagini din site, dar nu intra pe pagina de contact, inseamna ca site-ul este
folosit mai ales pentru a obtine informatii generale, ar trebui sa le dai motive pentru a te contacta (de
ex. sa pui preturi, o oferta speciala, etc.); daca vizitatorii intra pe pagina de contact, dar nu te
contacteaza, s-ar putea ca formularul de contact sa ceara prea multe date etc.
In al doilea rand ar trebui sa setezi in interfata de Analytics masurarea conversiilor (Goal): in
cazul de mai sus, cate persoane completeaza un formular de contact. Dupa o perioada de cateva zile o
sa observi ca fiecare persoana care te contacteaza este inregistrata in Analytics ca 1 conversie.
Urmatorul pas dupa setarea conversiilor este sa vezi unde este problema:
Sursa vizitatorilor: Daca ai diferite metode de promovare, poti masura eficienta fiecareia:
motoare de cautare - SEO sau legaturi sponsorizate- , emailing, bannere, bannerexchange, etc.)
. Daca rata conversiilor e mica pe una dintre ele, inseamna ca aceasta campanie nu aduce
rezultate.
Care produs/serviciu de pe site iti generaza conversii: Daca inainte sa te contacteze,
persoana respectiva a fost pe pagina Produsului X, acesta produs genereaza cele mai multe
conversii. De exemplu, daca ai un site de turism, aceasta informatie se poate dovedi foarte utila
pentru a pastra numai pachetele turistice relevante.
Cuvintele cheie care iti genereaza conversii: De ex. site-ul tau ce vinde anvelope poate fi
primul dupa cautarile pe piese auto si sa ai trafic mare datorita acestui lucru, dar sa observi ca
majoritatea conversiilor vin din alte cuvinte: anvelope, cauciucuri, pneuri, anvelope iarna,
Dunlop iarna, etc.
Parametri pentru evaluarea general a unui site web
Sunt foarte multi parametri care trebuie luai n seam n evaluarea siteurilor si nu exista solutii
standard de evaluare:
Un factor decisiv il constituie modul in care s-a facut promovare online si optimizare site-ului
in cauza, astfel ca, in functie de categoria in care se incadreaza evaluarea lui se va face diferit si avem
pentru fiecare urmatoarele aspecte de luat in calcul:
Daca detii un blog, atunci vinzi la suma de 12 X profitul lunar cand efectiv nu mai ai timp sa te
ocupi de dezvoltarea lui, nu mai ai timp sa scrii articole, sa dezvolti in continuare sau cresti traficul.
Il vinzi daca scoti in jur de 50 -100 de dolari pe luna si ai un alt proiect ce ti se pare mai
profitabil. Daca deja scoti 2-300 de dolari/luna, cred ca ar fi bine sa nu te gandesti la vanzarea lui, ci
mai degraba la dezvoltarea lui.
Sa presupunem ca ai un forum. In acest caz treburile-s mai simple, dar forumul bine dezvoltat,
cu administratori sau moderatori de calitate nu are nevoie de prezenta proprietarului 24 ore pe zi. Deci
daca ai alte treburi, nu vinzi forumul, fiindca sunt oameni care sa aiba grija de el.
Mai mult: un forum iti creeaza anumite nostalgii, nu cred ca il poti vinde chiar asa usor; fiindca la urma
urmei forumul iti creeaza o stare aparte, ai investit mai mult decat intr-un simplu site.

63

Ai un site static cu trafic constant: nu-l vinzi fiindca oricum iti aduce acel venit lunar, asta in
conditiile in care site-ul isi mentine traficul fara sa adaugi pagini noi, fara sa faci promovare, pur si
simplu fara sa te ocupi de el.
Site + forum asta presupun ca ar fi bun de cumparat, deoarece exista un potential fantastic
de crestere, atat a site-ului propriu-zis (adaugare de pagini noi), cat mai ales a forumului.
Pentru fiecare in parte trebuie facuta o evaluare specifica fiecarui caz si ar trebui sa iti alcatuiesti
un chestionar de genul celui de mai jos:
Cat de profitabil ar putea fi domeniul?
Cat de mare este piata pe care o tinteste?
Se refera la intreaga piata?
Un domeniu cum ar fi scobitori.ro este fara indoiala mai putin valoros decat masini.ro din simplul
motiv ca piata masinilor este mult mai profitabila decat piata scobitorilor. Masinirosii.ro valoreaza mai
putin decat masini.ro din moment ce se aplica unei portiuni mai mici din aceeasi industrie.
Numele de domeniu descrie continutul website-ului?
Domeniul poate fi asociat cu un produs, un serviciu, un brand?
Este usor brandabil?
Libraria.ro sau CreditRapid.ro au un potential de dezvoltare mare deoarece sunt termeni clari,
concisi si cu valoare descriptiva mare pentru continutul unui website.
Cat de memorabil este?
Vor reusi oamenii sa isi aduca aminte usor de el?
Il vor recunoaste usor?
Un nume de domeniu trebuie sa fie usor de tinut minte si usor de recunoscut. Cu cat este mai
usor de tinut minte cu atat pretul sau de vanzare va fi mai mare. Mai mult decat atat, este dificil sa
tastezi gresit un domeniu web cu un nume bun. Stiri.ro este usor de tinut minte si usor de recunoscut,
in schimb cyberwebdiscountcoupons.ro este dificil de memorat si scade considerabil valoarea.
Cat de popular este website-ul?
Evaluarea domeniului trebuie sa tina cont si de criteriul popularitatii. Cu cat site-ul este mai
popular, cu atat va fi mai bine pozitionat in motoarele de cautare si astfel ii va creste valoarea de
vanzare
Extensia numelui de domeniu
Domeniile .com sunt cele mai valoroase la nivel international. Insa daca vrei un website care are
ca tinta in special utilizatori din Romania atunci .ro este mai valoros
Cate caractere are numele de domeniu?
Valoarea unui domeniu este invers proportionala cu numarul de caractere din care este compus,
cu cat mai putine caractere cu atat mai mare valoarea domeniului. Spalatoriemasini.ro (16 caractere)
valoreaza mai putin decat masini.ro (6 caractere)
Cate cuvinte contine domeniul?
Domeniile care contin putine cuvinte sunt mai valoroase. Domeniile formate din 1, 2 cuvinte au o
valoare mare peste tot in lume inclusiv la noi, si valoarea lor va continua sa creasca odata cu epuizarea
numelor de domenii disponibile (domeniile din 1 si 2 cuvinte vor deveni o raritate). Un domeniu format
din 3 cuvinte este deja mult mai putin valoros.
Contine cratima?
De obicei domeniile care contin cratima nu se vand foarte bine. Este foarte folositor insa sa
inregistrezi un domeniu care are liniuta daca detii si domeniul fara liniuta. Car-prices.com valoreaza mai
putin decat carprices.com fie si pentru simplul fapt ca este mai dificil de tastat din cauza cratimei
Contine numere?
top10.com valoreaza mai putin decat topten.com
Contine substitutii?
Domeniul aman2.com valoreaza mai putin decat amandoi.com, la fel kafea.ro fata de cafea.ro.
Nimeni nu va cauta pe Google cuvantul cheie kafea
Contine abrevieri?
Domeniul dnulgoe.com valoreaza mai putin decat domnulgoe.com
Venitul generat de catre website
Unul dintre cele mai semnificative criterii pentru evaluarea domeniului si cu o importanta
deosebita in stabilirea pretului final. In general venitul anual adus de un website se multiplica cu 1.5
2.5 (pe piata din US cu 3 sau chiar mai mult) pentru a calcula pretul de vanzare a website-ului. In
principiu aceasta suma se adauga sumei obtinute prin analiza celorlalti factori prezentati mai sus
Cat de dezvoltat este site-ul?
E doar o pagina de prezentare sau contine cateva pagini?

64

Cu cat site-ul este mai dezvoltat, are un continut valoros, design atragator, multi utilizatori cu
atat valoarea sa de vanzare creste
Ce alte domenii asemanatoare cu al tau s-au vandut si la ce pret?
Este foarte important sa se faca o analiza de piata in ceea ce priveste pretul domeniului. Cheia
este sa poti justifica pretul cerut pentru domeniul tau bazandu-te pe pretul cu care s-au vandut alte
domenii cu caracteristici asemanatoare.
Specula nu prea functioneaza pe aceasta piata decat in rare cazuri, de obicei nu poti vinde decat
atunci cand ceri pretul corect. O greseala frecventa o fac proprietarii de domenii care primesc o ofera
pentru un domeniu si isi inchipuie ca pot vinde cu pret dublu sau chiar triplu altor jucatori de pe piata.
Acest lucru se intampla deoarece piata de nume de domenii din Romania este inca in stadiu
incipient iar transparenta pietei este scazuta, fapt ce ingreuneaza stabilirea pretului corect si incurajeaza
specula. Atunci cand piata este in acest stadiu lucrurile nu au o traiectorie clara si sunt mai degraba
haotice.


MODULUL III HTML

1. Descrierea general a limbajului 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
Expession Web 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.
Validarea documentelor HTML
Fiecare document trebuie validat n vederea eliminrii erorilor cum ar fi lipsa ghilimelelor,
elemente sau atribute scrise greit i structuri invalide. Aceste erori nu sunt ntotdeauna vizibile n
browsere deoarece fiecare le recupereaz ntr-un mod propriu. Validarea documentelor se poate face cu
un serviciu special al W3C ce poate fi accesat la adresa http://validator.w3.org. Un validator verific un
document n ceea ce privete definiia tipului documentului (DTD) i nu sigurana legturilor din
document.

2. Crearea structurii documentelor HTML

2.1. 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: 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

65

viitoarea pagin web. 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. n 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. Dac un atribut este scris, trebuie s fie urmat de o valoare chiar dac este
valoarea vid. Ex: alt=.

2.2. Structura standard a unui document html
n cazul fiierelor html niciodat nu vei vedea fereastra urt colorat a compilatorului care te
anun c ai ceva erori i chiar mai multe warning-uri.
Pornim un editor simplu - Notepad. Tastai urmatoarea secven:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<head> acesta are si el mai multe sub-elemente:
<title> aici se scrie titlul documentului, cat mai sugestiv, si se ncheie cu </title>
<base> poate fi folosit pentru a nregistra locaia documentului in forma url. (necesar daca
documentul nu este accesat in locaia lui originala). se ncheie cu </base>
<link> indica o relaie dintre document si alte obiecte de pe web. se ncheie cu </link>
<meta> aici sunt scrise informaii cum ar fi tastatura (limbaj) folosita, descrierea si cuvinte
cheie care pot fi gsite de motoarele de cutare. se ncheie cu </meta>
<script> conine oricare din javascript sau vb script. se ncheie cu </script>
<style> conine informaii privind stilul, grafica informaiilor care vor aprea pe pagina. se
ncheie cu </style>
aici se ncheie elementele adaugate in head
</head>
<body>
Buna ziua Web<b>textul e scris ingrosat</b>
<!-- etichetele html si continutul documentului care va fi afisat in pagina web sunt incluse in acest
element. aici pot fi puse si elemente cum ar fi: <script> </script>
se ncheie cu -->
</body>
</html>
Observaie: Nu lsai un spaiu dup < pentru c browserul nu mai recunoate instruciunea.
Salvm fiierul cu numele "prima.html".
Pornim browserul i deschidem fiierul prima.html

Elementul <ISINDEX>
Tag-ul <ISINDEX> definete aciuni
executate implicit n "conversaia" client-server i
funcioneaz mpreun cu atributele:
ACTION="websearch" aciunea ce va fi
executat
PROMPT="ir text" mesaj opional afiat
Ar trebui s se afieze:

Explicarea exemplului:

nainte de a ncepe observm c avem mai
multe perechi de tag-uri. Primul marcheaz
nceputul unui bloc de text iar tag-ul care ncepe cu / i are acelai nume cu tag-ul de deschidere
marcheaz terminarea blocului de text.
Primul tag dintr-un document HTML este un comentariu.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
Acest comentariu este important pentru standardizarea documentelor html. Pentru web-ul
semantic care va urma este deosebit de important respectarea standardelor. Motoarele de cutare

66

inteligente vor ti nsemntatea tag-urilor iar astfel rezultatele cutrilor vor fi mult mai precise.
Comentariul din exemplul de mai sus specific faptul c documentul html care urmeaz este scris
conform standardului HTML 4.01 Transitional iar acest standard se gsete la URN-ul
http://www.w3.org/TR/html4/loose.dtd
Versiunea HTML poate fi:

HTML 4.01 Strict
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

HTML 4.01 Transitional
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

HTML 4.01 Frameset
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">

Tag-ul <html>. Acesta are rolul de a anuna browserul c urmeaz un document HTML. La
sfritul documentului avem </html> acesta atenionnd browserul ca a ajuns la sfritul documentului
HTML.
n continuare avem doua delimitri importante ale documentului partea de head i cea de body
Blocul de text dintre <head> i </head> este informaia din header. Foarte important:
informaia din cadrul header-ului nu se afieaz n fereastra browserului. Ea este destinat descrierii
documentului.
Tag-urile <title> marcheaz titlul documentului i acesta va fi afiat pe fereastra browserului.

Tag-urile de <body> delimiteaz zona de text care va fi afiat n
cadrul ferestrei browser-ului. Textul delimitat de <b> i </b> va fi
afiat ngroat.
Tagul meta este folosit pentru a genera informaii adiionale
motorului de cautare. Aceste informaii nu vor fi vizibile unui
vizitant dect dac acesta va selecta view "Source" din meniul "View" unde va avea acces la partea HTML
a paginii.

2.3. Tagurile HTML
Fiierele HTML sunt fiiere text care conin elemente HTML. Elementele HTML sunt definite cu ajutorul
tag-urilor.
Tag-urile HTML
Tag-urile HTML se folosesc pentru a delimita elemente HTML; forma unui tag este
<nume_tag>
De obicei tag-urile sunt perechi: <nume_tag> bla, bla </nume_tag>
Textul delimitat de cele doua tag-uri se numete coninutul elementului
Elementele HTML
Revenim la exemplul dat:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<head>
<title>prima pagina</title> </head>
<body>
Buna ziua Web <b>!!!!!!!!!!!!!!!! </b>
</body>
</html>

Din acest fiier un element HTML este: <b>!!!!!!!!!!</b>

67

Tag-ul <b> are ca scop definirea unui element HTML care sa fie afiat bold. Un alt exemplu de
element HTML:
<body>
Buna ziua Web <b>!!!!!!!!!!!!</b>
</body>
Tag-ul <body> definete un element
HTML care conine corpul documentului
HTML.
Recomandare:
W3C recomanda utilizarea
literelor mici n scrierea tag-urilor,
aceasta fiind recomandarea pentru
standardul HTML 4. Pentru cei ce se
pregtesc s scrie tag-uri conform
standardului XHTML 1.0 utilizarea
literelor mici este obligatorie.
Atributele tag-urilor
Tag-urile pot avea atribute
<nume_tag atr> text
</nume_tag>

n exemplul de mai sus atr este atributul tagului. Aceste atribute pot aduce informaii
suplimentare despre elementele HTML.

Exemplu:
<body bgcolor="red">.
n exemplul de mai sus tag-ul <body> a primit atributul bgcolor adic se specific browserului
c fundalul paginii este rou.
ntotdeauna atributele sunt nsoite de o valoare care trebuie scris ntre
La noi valoarea atributului bgcolor este red.

Observaii:
1. ntotdeauna atributul pentru tag se adaug doar tag-ului de deschidere. Adic
<body bgcolor="red">.
Text...text
</body>.
2. Valorile atributelor trebuie s fie scrise ntotdeauna ntre ghilimele. Se pot utiliza si n
cazurile rare cnd valoarea atributului necesita ghilimele atunci se poate proceda conform exemplului:
name='George zis "Vasilescu" '

2.4. Tag-urile HTML de baz
Cele mai importante tag-uri in HTML sunt tag-urile care definesc:
antete (headings)
paragrafe (paragraphs)
trecerea forat la rnd nou (line breaks).

Headings (titlurile ntr-o pagin)
Headings sunt definite cu tag-urile <h1> pn la <h6>,. <h1> definete cel mai important
heading. <h6> definete cel mai mic heading.
<h1>Acesta e un antet</h1> <h2> Acesta e un antet </h2> <h3> Acesta e un antet </h3>
<h4> Acesta e un antet </h4> <h5> Acesta e un antet </h5> <h6> Acesta e un antet </h6>
Acest cod va genera n fereastra browserului:







Tag Descriere
<html>
Definete un document
HTML
<body>
Definete corpul
documentului HTML
<h1> to <h6>
Definete antetul 1 la 6
<p>
Definete un paragraf
<br>
Sare la rnd nou
<hr>
Defineteolinie
orizontal
<!-->
Defineteuncomentariu

68














Observaie:
Se aduga automat de ctre browser un rnd liber nainte i dup declararea unui heading.

Paragrafe
Paragrafele sunt definite cu ajutorul tagului <p>.
<p>Un paragraf</p>
<p>Alt paragraf</p>
Observaie: Se aduga automat de ctre browser un rnd liber nainte i
dup declararea unui paragraf.

Rnd nou
Pentru a fora trecerea la rnd nou fr nceperea unui paragraf nou se utilizeaz tag-ul <br />
Exemplu:
<p>Acesta <br/> este un para<br/>graf cu tre<br/>cere fortata la rand nou</p><p> aici
incepe un nou paragraf</p>
Observaie:
Tag-ul <br /> nu are un tag de nchidere (slash-ul de la sfrit ine loc de tag de nchidere).

Comentarii n HTML
Pentru a insera un comentariu se folosete tag-ul <!--.>
<!--Un comentariu -->
Observaie:
Important este doar semnul exclamrii i este necesar doar dup deschiderea parantezei
unghiulare! Comentariul nu este afiat de ctre browser dar cteodat este bine s-l folosim pentru
lizibilitatea codului.

2.5. Vizualizarea sursei unui document HTML
Acest lucru se poate face n dou moduri:
1. Din meniul browser-ului utiliznd meniul View -> Source
2. Cu click dreapta n fereastra browser-ului i apoi View Source
Exemple
1. Centrarea unui heading n pagina: <html> <body>

<h1 align="center">Acesta e un heading 1</h1>
<p>Heading-ul de sus este aliniat centrat. Heading-ul de sus este aliniat centrat. Heading-ul de
sus este aliniat centrat.</p>
</body>
</html>

69

Codul genereaz urmtoarea afiare:



2. Linie orizontal

<html> <body>
<p>Tag-ul hr defineste o linie orizontala</p> <hr>
<p>un paragraf</p>
<hr>
<hr>
<p>un nou paragraf</p> </body> </html>

Codul genereaz urmtoarea afiare:

3. Culoarea de fundal pentru pagina:
<html>
<body bgcolor="red">
<h2>Folosesc un heading de 2 dar nu pentru a scrie ceva bold!!!!!</h2> </body> </html>


Tag-uri pentru formatarea textului
Tag Descriere
<b> Definete text bold
<big> Definete text bold
<em> Definete text italic

70

<i> Definete text italic


<small> Definete text mic
<strong> Definete text ngroat
<sub> Definete text scris la
index (subscript)
<sup> Definete text scris la
putere (superscript)
<ins> Definete text inserat
<del> Definete text ters
<s> Nu se mai utilizeaz. Se
folosete<del>
<strike> Nu se mai utilizeaz. Se
folosete <del>

71


Tag-uri pentru "Computer Output"
Tag Descriere
<code> Definete cod text
<kbd> Definete un text
de tastatura
<samp> Definete un
exemplu de cod
<tt> Definete text
teletype
<var> Definete o
variabila


Tag-uri pentru citri, indentri i definiri

Tag Descriere
<abbr> Definete o abreviere
<acronym> Definete un acronim
<address> Definete un element
HTML de tip adresa
<bdo> Definete direcia de
afiare a textului
<blockquote> Definete o intentare
<cite> Definete o citare
<dfn> Definete un element
HTML de tip definiie

Caractere speciale
Unele caractere cum ar fi < au n HTML un rol special i de aceea nu pot fi folosite n cadrul
textului. Pentru a putea totui utiliza semnul mai mic ca vom folosi entitile de caractere (caractere
speciale)
Caracterul special are trei pri:
1. ncepe cu &
2. nume sau un numr precedat de semnul #
3. la final au semnul (;).
Caracterele speciale cele mai des utilizate:

Semnul
afiat
Descrierea Numele
entitii
Numrul
entitii
non-breaking
space
&nbsp; &#160;
< mai mic ca &l &#60;
> mai mare ca &g &#62;
& ampersand &amp; &#38;
" ghilimele &quo &#34;
' apostrof &apos; &#39;
cent &cen &#162;
lira &pound; &#163;
yen &yen; &#165;
seciune &sec &#167;
copyright &copy; &#169;
marca
nregistrat
&reg; &#174;
X nmulire &times; &#215;
mprire &divide; &#247;

72

Exemplu:
<p> Acesta este semnul mai mic: &l</p>
<p> Acesta este semnul mai mic: &#60;</p>

Observaie: Caracterele speciale sunt case sensitive.


Exemple diverse:
1. Formatarea textului

<html>
<body>
<b>text bold</b> <br>
<strong> text strong </strong> <br>
<big> text big </big> <br>
<em>
text emphasized </em> <br>
<i>
text italic </i> <br>
<small>
text small
</small>
<br>text
<sub>
subscript
</sub>
<br>
text
<sup>
superscript
</sup>
</body>
</html>
2. Vizualizarea unui cod de program
<html> <body>
<code>Computer code</code>
<br>
<kbd>introducere de la tastatura</kbd>
<br>
<tt>text teletype </tt>
<br>
<samp> text sample</samp>
<br>
<var> variabla</var>
<br>
<p>
<b>Nota:</b> Aceste tag-uri se utilizeaza foarte de pentru a afisa
programe (cod).
</p>
</body>
</html>
3. Inserarea unei adrese
<html>
<body>
<address> Mihai Georgescu<br> poet<br>
Str. Pinului Nr. 2<br> Bucuresti
</address>
</body>
</html>

73





4. Acronime si abrevieri

<html> <body>
<abbr title="Uniunea Europeana">EU</abbr> <br>
<acronym title="World Wide Web">WWW</acronym>
<p>La tag-ul de acronim atributul title afiseaza un hint cand
userul trece cu mouse-ul peste acronim in text</p>
<p>functioneaza doar de la IE 5 </p> </body> </html>

5. Text inserat i text ters

<html> <body> <p>
corectam un text <del>cuvant sters</del> <ins>se
inlocuieste cu</ins> bla, bla </p> <p>
Browserele mai vechi afiseaza aceste tag-uri ca text simplu
</p> </body> </html>

2.6. Hiperlink
Ancora
Pentru a crea o legtur spre un alt document WEB, se
utilizeaz tag-ul <a> (ancora). O ancora poate indica spre orice
resurs din web: o pagina web, o imagine, un fiier de sunet, un film
etc.
Tag-ul <a> poate primi atribute.
Atributul href
n cazul acesta ancora va crea o legtur spre un alt document.
Sintaxa pentru crearea unei legturi:
<a href="url">textul meu care se va afisa si care este subliniat albastru</a>
Tag-ul <a> primete ca atribut pe href care ia ca valoare adresa resursei spre care ancora face
legtura. Cuvintele scrise ntre cele doua tag-uri <a> ..... /a> vor fi afiate de ctre browser ca hiperlink.

Exemplu:
<a href="http://www.edu.ro/"> Situl Ministerului Educatiei</a>
Atributul target
Acest atribut se folosete pentru a defini locul unde se va deschide documentul spre care se
face legtura. Daca acest atribut nu se specific atunci pagina se va deschide n fereastra browserului n
locul acelei care a fcut legtura.
Pentru deschiderea documentului spre care se face legtura ntr-o nou fereastr se va folosi
atributul target cu valoarea _blank

Exemplu
<a href=http://www.edu.ro/ target=_blank> Situl Ministerului Educatiei </a>

Atributul name
Atributul name este utilizat pentru a crea o ancora cu nume. Aceste ancore sunt foarte des
utilizate n cadrul documentelor mari. Pentru a ajunge la un anumit punct din document acela se
marcheaz ca fiind o ancora cu nume. Avnd aceasta ancora din orice document se poate sri direct la
seciunea din document marcat de ea. Acest lucru uureaz enorm navigarea prin document.
Sintaxa pentru crearea unei ancore cu nume este:
<a name="nume eticheta">textul de afisat</a>

Exemplu
<a name="cap1">Capitolul 1</a>
Observaie:
O ancora cu nume nu se va afia de ctre browser ntr-un mod anume.

74

Pentru a face o legtur spre o ancor cu nume se adaug la sfritul numelui documentului spre
care se face legtura semnul # urmat de numele ancorei. (Daca suna prea complicat urmrii exemplul):

Exemplu
Pas 1.
n documentul ex1.html avem mai multe denumiri de capitole. Pentru a sri mai uor la nceputul
fiecrui capitol definim cte o ancora cu nume:
<html>
<head>
<body>
<a name=cap1> Capitolul 1</a>
<p> In capitolul 1 povestim basme si intamplari basme si intamplari basme
si intamplari basme si intamplari basme si intamplari basme si intamplari
basme si intamplari basme si intamplari basme si intamplari basme si
intamplari basme si intamplari basme si intamplari basme si intamplari
basme si intamplari basme si intamplari basme si intamplari basme si
intamplari basme si intamplari basme si intamplari basme si intamplari
basme si intamplari basme si intamplari basme si intamplari basme si
intamplari basme si intamplari basme si intamplari basme si intamplari
basme si intamplari basme si intamplari basme si intamplari basme si
intamplari basme si intamplari basme si intamplari basme si intamplari
basme si intamplari basme si intamplari basme si intamplari basme si
intamplari ....... </p>
<a name=cap2> Capitolul 2</a>
<p> In capitolul 2 povestim iarasi basme si intamplari basme si intamplari basme si intamplari
basme si intamplari basme si intamplari basme si intamplari basme si intamplari basme si
intamplari basme si intamplari basme si intamplari basme si intamplari basme si intamplari basme
si intamplari basme si intamplari basme si intamplari basme si intamplari basme si intamplari
basme si intamplari basme si intamplari basme si intamplari basme si intamplari basme si
intamplari basme si intamplari basme si intamplari basme si intamplari basme si intamplari basme
si intamplari basme si intamplari basme si intamplari basme si intamplari basme si intamplari
basme si intamplari basme si intamplari basme si intamplari basme si intamplari basme si
intamplari basme si intamplari basme si intamplari ....... </p>
</body> </html>

Pas 2.
Definim legtura direct spre o ancora cu nume. Presupunem ca avem un document web care
conine cuprinsul...

<html>
<head>
</head>
<body>
<p> Cuprinsul</p>
<a href=ex1.html#cap1 target=_blank>Capitolul 1</a><br>
<a href=ex1.html#cap2 target=_blank>Capitolul 2</a><br>
</body>
</html>

Observaie:
Daca se dorete saltul n cadrul aceluiai document atunci la definirea legturii se poate utiliza
doar numele ancorei precedat de # fr a mai specifica numele fiierului.

Exemplu
<a href=#cap1 target=_blank>Capitolul 1</a><br>

Observaie general:
ntotdeauna este bine s adugai la sfrit un / cnd dai adresa spre un subfolder:

75

Ex corect:
href="http://www.edu.ro/orar/

Daca nu punei si / la sfrit atunci browserul va face doua cereri: prima n care va aduga
automat / iar a doua cnd va face cererea cu / adugat.

Ex. incorect:
href= www.edu.ro/orar/

Exemple diverse
1. Crearea unei legturi

<html> <body> <p>
<a href="elevi.html">
acest text</a> este un link spre pagina elevi.html </p> <p>
<a href="http://www.edu.ro/elevi" target="_blank"> acest text</a> este un link si se deschide
intr-o fereastra noua </p> </body> </html>

2. Crearea unei legturi dintr-o poza
<html> <body>
<p>
utilizam o poza ca link:
<a href="ex.html"> <img border="0"
src="04.gif"> </a>
</p>
</body>
</html>

Observaie: Aici am folosit un tag
<img> care l vom parcurge mai trziu. Atributul
src indic sursa pozei adic numele fiierului care
trebuie s fie n acelai director cu fiierul html.






3. Un link spre o adresa de mail

<html> <body> <p>
un link catre o adresa de mail - daca aveti un
client de mail instalat la click pe acest link se
deschide fereastra clientului de mail: <a
href="mailto:radu.voicu@yahoo.com?subject
=salutare"> trimite-ma</a> </p> </body>
</html>


Observaie: Se observ pe status bar linkul fcut!








76

2.6. Tabele
Tabelele se definesc cu ajutorul tag-ului <table>.
Tabelele se mpart in linii care se definesc cu ajutorul tag-ului <tr> (table row).
Liniile tabelului se mpart in celule cu ajutorul tag-ului <td> (table data)
O celul dintr-un tabel poate conine: text, imagini, paragrafe, forme, tabele, liste etc.

Tag-uri specifice tabelelor
























Exemplu:
<table border="l">
<tr>
<td>rand 1, celula l</td>
<td>rand 1, celula 2</td>
</tr>
<tr>
<td>rand 2, celula l</td>
<td>rand 2, celula 2</td>
</tr>
</table>

Va fi afiat n browser astfel:


Tag Descriere
<table> Definete un tabel
<th> Definete header-ul unui
tabel
<tr> Definete un rnd (linie) n
tabel
<td> Definete o celula n tabel
<caption> Definete caption-ul tabelului
<colgroup> Definete un grup de coloane
ale tabelului
<col> Definete valorile atributelor
a unei sau mai multor
coloane dintr-un tabel
<thead> Definete un rnd de head
<tbody> Definete corpul tabelului
<tfoot> Definete footer-ul tabelului

77

Atributul borders
Daca nu se specifica acest atribut tabelul va fi afiat fr linii. n unele cazuri acest lucru este bun
deoarece cu ajutorul tabelelor se poate asigura mprirea paginii web astfel nct informaia s poat fi
structurat.
Ex. n partea stnga se va afia o celula care conine un meniu de navigare iar n dreapta
coninutul .....
Pentru a afia liniile tabelului atributul borders se utilizeaz astfel:
<table border="1"> <tr>
<td>rand 1, celula 1</td> <td>rand 1, celula 2</td> </tr> </table>


Acelai tabel dar fr atributul border

Capul de tabel
Capul de table sau heading se definesc ntr-un table cu tag-ul <th>.
<table border="1"> <tr>
<th>Cap de coloana 1</th> <th>Cap de coloana 2</th> </tr>
<tr>
<td>rand 1 </td>
<td>rand 1 </td>
</tr>
<tr>
<td>rand 2 </td>
<td>rand 2 </td>
</tr>
</table>

Arata n browser astfel:

Observaie: Capul de tabel apare bold fr a fi nevoie de editare special!

Celule goale ntr-un tabel
Tabelele care conin celule goale nu sunt afiate corect de toate browser-ele. Problema care
apare este lipsa chenarului n jurul celulei care nu conine nimic.
<html>
<body>
<table border="1">
<tr>
<th>Cap de coloana 1</th>
<th>Cap de coloana 2</th>
</tr>
<tr>
<td>rand 1, ce1ula 1</td>
<td>rand 1, celula 2</td>
</tr>
<tr>
<td>rand 2, celula 1</td>
<td></td>
</tr>
</table>
</body>
</html>

78


Pentru a rezolva aceast problem adugm un caracter special de spaiu &nbsp;
<html> <body>
<table border="1"> <tr>
<th>Cap de coloana 1</th> <th>Cap de coloana 2</th> </tr> <tr>
<td>rand 1, ce1ula 1</td> <td>rand 1, celula 2</td> </tr> <tr> <td>rand 2, celula 1</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>

Exemple diverse
1. Tabel cu caption (cu titlu)

<html> <body> <h4>
Acest tabel are un caption adica un titlu pe mijloc si o margine
mai groasa rosie: </h4>
<table border="2" bordercolor="red">
<caption>titlul tabelului</caption>
<tr>
<td>unu</td>
<td>doi</td>
<td>trei</td>
</tr> <tr>
<td>patru</td>
<td>cinci</td>
<td>o mie douasute saptezeci si trei</td> </tr>
</table>
</body> </html>

2. Celule care sunt unite peste 2 coloane/rnduri

<html> <body>
<h4>celula peste doua coloane:</h4> <table
border="1"> <tr>
<th>Nume</th>
<th colspan="2">telefon</th> </tr> <tr>
<td>Stefan Cel Mare</td>
<td>0230.414055</td>
<td>230.4141195</td> </tr> </table>
<h4>celula peste doua randuri:</h4> <table
border="1"> <tr>
<th>Nume:</th>
<td>Stefan Cel Mare</td> </tr> <tr>
<th rowspan="2">telefon:</th>
<td>0230.414055</td> </tr> <tr>
<td>230.4141195</td> </tr> </table> </body> </html>










79

3. Alte tag-uri n cadrul celulelor:



<html> <body>
<table border="1"> <tr> <td> <p>un paragraf</p>
<p>un alt paragraf</p> </td>
<td>celula aceasta contine un tabel:
<table border="1" bordercolor="blue"> <tr>
<td>A</td> <td>B</td> </tr> <tr>
<td>C</td> <td>D</td> </tr> </table> </td> </tr>
<tr>
<td>celula contine o lista
<ul> <li>unu</li> <li>doi</li> <li>trei</li> </ul>
</td>
<td>salut</td> </tr>
</table>
</body> </html>

4. Crearea cu ajutorul atributului de cellpadding de spaiu ntre text i marginea celulei

<html> <body>
<h3> Exemplu de table fara cellpadding</h3>
<table border="1" cellpadding="0">
<tr>
<th>Cap de coloana 1</th>
<th>Cap de coloana 2</th> </tr>
<tr>
<td>rand 1, <td>rand 1, </tr>
<tr>
<td>rand 2, <td>&nbsp;</td> </tr>
</table>
<h3> Exemplu de table cu cellpadding</h3>
<table border="1" cellpadding="10">
<tr>
<th>Cap de coloana 1</th>
<th>Cap de coloana 2</th>
</tr>
<tr>
<td>rand 1, celula 1<td>
<td>rand 1, celula 2</td>
</tr>
<tr>
<td>rand 2, celula l</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>

5. Crearea cu ajutorul atributului de cellspacing de spaiu ntre celule

<html>
<body>
<h3> Exemplu de table fara cellspacing</h3>
<table border="1" cellspacing="0">
<tr>
<th>Cap de coloana 1</th>
<th>Cap de coloana 2</th>
</tr>
<tr>

80

<td>rand 1, ce1ula 1</td>


<td>rand 1, celula 2</td>
</tr>
<tr>
<td>rand 2, celula 1</td>
<td>&nbsp;</td>
</tr>
</table>
<h3> Exemplu de table cu cellspacing</h3>
<table border="1" cellspacing="10">
<tr>
<th>Cap de coloana 1</th>
<th>Cap de coloana 2</th>
</tr>
<tr>
<td>rand 1, ce1ula 1</td>
<td>rand 1, celula 2</td>
</tr>
<tr>
<td>rand 2, celula 1</td>
<td>&nbsp;</td>
</tr>
</table>
</body> </html>

6. Adugarea de culoare sau imagine pe fundalul tabelului cu ajutorul atributelor bgcolor si
background.
<html>
<body>
<h4>culoare de fungdal pe intreg tabelul:</h4>
<table border="1"
bgcolor="green">
<tr>
<td>pam</td>
<td>pim</td> </tr> <tr>
<td>pim</td>
<td>pam</td> </tr> </table>
<h4>o imagine pe fundalul tabelului:</h4> <table border="1" background="04.gif"> <tr>
<td>pam</td>
<td>pim</td> </tr> <tr>
<td>pim</td>
<td>pam</td> </tr> </table> </body> </html>

7. Alinierea coninutului unei celule cu ajutorul atributului align
<html>
<body>
<table border="1">
<tr>
<th align="left">pam</td>
<th>numere</td> </tr> <tr>
<td align="left">pim</td>
<td align="right">150.000 lei</td> </tr> <tr>
<td align="left">pam</td>
<td align="right">1.000 lei</td> </tr> <tr>
<td align="left">pum</td>
<td align="right">12.000 lei</td> </tr> </table> </body>
</html>

81

2.7.Liste
Tag-uri pentru liste

Tag Descriere
<ol> Definete o lista
ordonata
<ul> Definete o lista
neordonata
<li> Definete un element al
listei
<dl> Definete o lista de
definiii
<dt> Definete un termen al
listei de definiii
<dd> Definete o descriere
<dir> Nu se mai utilizeaz. Se
folosete <ul>
<menu> Nu se mai utilizeaz. Se
folosete <ul>

2.7.1. Liste neordonate
O lista neordonat este o list n care elementele listei sunt marcate cu o bulin la nceput - de
obicei un cerc mic negru.
O lista neordonata ncepe cu tag-ul <ul>. Fiecare element al listei ncepe cu <li>.
<ul>
<li>banane</li>
<li>portocale</li>
<li>struguri</li>
</ul>
n interiorul fiecrui element al unei liste pot fi puse paragrafe, imagini, link-
uri, alte liste etc.
2.7.2. Liste ordonate
O lista ordonata este o lista n care elementele listei sunt numerotate. O lista
ordonata ncepe cu <ol> iar fiecare element cu tag-ul <li>
<ol>
<li>banane</li>
<li>portocale</li>
<li>struguri</li>
</ol>
2.7.3. Liste de definiii
Lista de definiii este o lista de termeni si explicarea acestora. O lista de
definiii ncepe tag-ul <dl>. Fiecare termen din lista ncepe cu tag-ul <dt> . Fiecare
definiie a unei liste de definiii ncepe cu tag-ul <dd>.

<dl>
<dt>Prajitura</dt>
<dd>Ceva de obicei dulce si bun</dd>
<dt>Masina</dt>
<dd>O chestie pe 4 roti care are tractiune proprie</dd>
</dl>







82

Exemple
1. Alte tipuri de liste neordonate
<html> <body>
<h4>Disc bullets:</h4> <ul type="disc">
<li>Pim</li>
<li>Pam</li>
<li>Pum</li>
<li>Pom</li> </ul>
<h4>Circle bullets:</h4> <ul type="circle"> <li>Pim</li>
<li>Pam</li>
<li>Pum</li>
<li>Pom</li> </ul>
<h4>Square bullets:</h4> <ul type="square">
<li>Pim</li>
<li>Pam</li>
<li>Pum</li>
<li>Pom</li> </ul>
</body> </html>
2. Alte tipuri de liste ordonate.
<html> <body> <h4>lista <ol>
numerotata:</h4>
<li>Pim</li>
<li>Pam</li>
<li>Pum</li>
<li>Pom</li> </ol>
<h4>lista numerotata cu litere mari:</h4> <ol type="A">
<li>Pim</li>
<li>Pam</li>
<li>Pum</li>
<li>Pom</li> </ol>
<h4> lista numerotata cu litere mici:</h4> <ol type="a">
<li>Pim</li>
<li>Pam</li>
<li>Pum</li>
<li>Pom</li> </ol>
<h4> lista numerotata cu cifre romane mari:</h4> <ol type="I">
<li>Pim</li>
<li>Pam</li>
<li>Pum</li>
<li>Pom</li> </ol>
<h4> lista numerotata cu cifre romane mici:</h4>
<ol type="i">
<li>Pim</li>
<li>Pam</li>
<li>Pum</li>
<li>Pom</li> </ol>
</body> </html>


83

2.8. Imagini
Tag-uri pentru imagini
Tag Descriere
<img> Definete o imagine
<map> Definete o harta a
imaginii
<area> Definete o zona n
cadrul harii unei imagini

Pentru a defini o imagine n HTML avem nevoie de tag-ul <img>.
Pentru a afia o imagine trebuie s specificam valoarea atributului src (sursa). Sursa este chiar
URL-ul imaginii pe care vrem sa o afiam. Sintaxa este:

<img src="url">

Browserul pune ntotdeauna imaginea n locul n care ntlnete tag-ul <img>.

Exemplu:
<html>
<body>
<p> pam pam</p>
<img src="04.gif">
</body>
</html>
Atributul alt
Acest atribut se folosete pentru a afia un text alternativ pentru o
imagine. Adic n cazul n care browserul nu poate afia imaginea atunci n spaiul
rezervat imaginii apare textul specificat de atributul alt.
Foarte important!!!
Fr acest atribut validatorul de cod html nu va valida documentul (http://validator.w3c.org).

Sintaxa:
<img src="04.gif" alt="Smiley"> Utilizarea acestui atribut este o practic buna mai ales pentru cei ce
navigheaz fr s-i afieze si pozele.
<html>
<body>
<p> pam pam</p>
<img src="05.gif" alt="Smiley">
</body>
</html>

Exemple
1. Alinierea imaginii fa de text

<html> <body> <p>
imagine
<img src="04.gif" align="bottom"> in text aliniata jos </p> <p>
imagine
<img src="04.gif" align="middle"> in text aliniata la mijloc </p>
<p>
imagine
<img src="04.gif" align="top"> in text aliniata sus </p> <p>
<img src ="04.gif"> inaintea textului </p>
<p>dupa text <img src ="04.gif"> </p> </body> </html>




84

2. Alinierea imaginii n cadrul unui paragraf:


<html> <body> <p>
<img src ="04.gif" align ="left">
In acest paragraf imaginea ramane in stanga si textul curge frumos in
jurul ei !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! </p> <p>
<img src ="04.gif" align ="right">
In acest paragraf imaginea ramane in dreapta si textul curge frumos in
jurul!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</p> </body> </html>

3. Mrimea pozelor:
<html> <body> <p>
<img src="04.gif" width="15" height="15"> </p> <p>
<img src="04.gif" width="30" height="30"> </p> <p>
<img src="04.gif" width="45" height="45"> </p> <p>
Atentie putem micsora sau mari imaginile cu cele doua
atribute width si height dar atentie calitatea pozei are de
suferit. Asa ca marimea pozei trebuie sa fie stabilita din
programul de editare al pozelor! </p> </body> </html>

2.9. Culori HTML

Valorile culorilor
Culorile sunt definite cu ajutorul notaiei hexazecimale pentru fiecare dintre cele trei culori de
baza: rou, verde, albastru. Cea mai mica valoare care se poate da unei culori este #00 iar cea mai mare
este #FF Tabelul de mai jos arata unele combinaii de culori
Culoare
Numele culorilor
Doar 16 nume de culori sunt recunoscute de ctre standardul HTML 4.0. Acestea sunt: aqua,
black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white i yellow.
Pentru toate celelalte nuane se impune folosirea codului hexa.



Dac am dori s folosim toate nuanele o s ajungem la 16 milioane de culori
(256x256x256)

3. Poziionarea coninutului unei pagini html

3.1. Frame-uri

3.1.1. Taguri
Cu ajutorul frame-urilor se pot afia n aceeai fereastr a browserului mai multe fiiere html.
Fiecare fiier este independent de celelalte. Probleme care apar sunt:
Browserele vechi nu suporta acest tag
Tiprirea ntregii ferestre fiind compusa din mai multe cadre este mai complicata
Motoarele de cutare returneaz doar urn-ul unui singur frame ceea ce duce in multe situaii la
pierderea sistemului de navigare.
Tag-ul Descrierea
<frameset> Definete un set de frame-

85

uri
<frame> Definete un frame (cadre)
<noframes> Definete o seciune n care
se pune cod pentru
browserele care nu suporta
tag-ul de frame
<iframe> Definete o fereastra
interioara paginii

Pentru a mpri o fereastra a browser-ului in mai multe frame-uri avem nevoie de 2 tag-uri:
<frameset> care descrie modul cum se mparte fereastra
<frame> care definete ce fiier se pune intr-un cadru
De obicei frame-urile se utilizeaz la crearea sistemului de navigare care sa fie vizibil tot timpul.
Astfel ntr-un frame se ncrca fiierul care conine doar sistemul de navigare iar in celalalt(e) coninutul
fiierelor spre care indica sistemul de navigare.
Avantaje:
Nu se mai rencrca la fiecare click pe un link tot sistemul de navigare.
Tagul frameset
Tag-ul <frameset> definete modul in cte linii sau coloane se mparte fereastra browserului i
ct de mari s fie acestea n comparaie cu fereastra browserului. Atenie nu se pot defini simultan linii si
coloane!
Exemplu:
<frameset cols="25%,75%">
</frameset>
Primul tag indica faptul ca fereastra browserului nostru se mparte n dou coloane prima avnd o
lime de 25% din limea ferestrei iar a doua de 75%.
Atributele tag-ului frameset

Atribut Valoare Descriere
cols pixels
%
*
Definete
numrul i
mrimea
coloanelor
rows pixels
%
*
Definete
numrul i
mrimea liniilor

Tagul Frame
Tag-ul <frame> definete ce fiier HTML se va pune in fiecare cadru descris n <frameset>. n
exemplul de mai sus am definit dou coloane. Pentru a defini care fiiere s se afieze n aceste coloane
se va proceda astfel: Presupunem c avem dou fiiere cu numele 1.htm si 2.htm. Pentru a afia fiierul
1.htm pe prima coloana i pe 2.htm pe a doua coloan completm codul prezentat n exemplul de mai
sus astfel:
<frameset cols="25%,75%">
<frame src="1.htm">
<frame src="2.htm"> </frameset>
Atributele tag-ului frame
Atribut Valoare Descriere
frameborder 0 1 Specifica faptul ca se
afieaz sau nu
marginea frame-ului
marginheight pixels Definete marginile de
sus si jos in cadrul
frame-ului
marginwidth pixels Definete marginile din
tanga i dreapta in
cadrul frame-ului
name frame_name Definete un nume

86

unic atribuit frame-ului


(se folosete n script-
uri)
noresize noresize Cnd ia valoarea
noresize atunci
utilizatorul nu poate
modifica limea
coloanei sau liniei
scrolling yes
no
auto
Determina afiarea
unui scrollbar
src URL Definete URL-ul
documentului de afiat

Exemple diverse
1. Frame-uri verticale

<html>
<head>
</head>
<frameset cols="25%,75%">
<frame src="4.html">
<frame src="5.html">
</frameset>
</html>
2. Frame-uri orizontale
<html>
<head>
</head>
<frameset rows="25%,75%">
<frame src="4.html">
<frame src="5.html">
</frameset>
</html>

3. Frame-uri mixte:
<html>
<head>
</head>
<frameset rows="25%,75%">
<frame src="6.html">
<frameset cols="200, *">
<frame src="4.html">
<frame src="5.html">
</frameset>
</frameset>
</html>

Observaie: la toate exmplele de mai sus utilizatorul poate modifica limea frame-urilor. Pentru a
bloca acest lucru utilizam atributul de noresize.

<html>
<head>
</head>
<frameset rows="25%,75%">
<frame noresize="noresize" src="4.html">
<frameset cols="200, *">
<frame noresize="noresize" src="5.html"> <frame noresize="noresize" src="3.htm">
</frameset> </frameset> </html>

87


Utilizarea atributului name
Acest atribut se folosete pentru a identifica unic un frame. Se folosete in cazurile n care ntr-un
frameset avem un frame care conine i stemul de navigare iar afiajul se face n alt frame. n acest caz
frame-ul n care se face afiarea trebuie identificat cu ajutorul atributului name.
<html>
<head>
</head>
<frameset rows="25%,75%">
<frame noresize="noresize" src="4.html">
<frameset cols="200, *">
<frame noresize="noresize" src="5.html">
<frame name="principal" noresize="noresize" src="6.html">
</frameset> </frameset> </html>

Prezentm mai jos codul modificat al fisierului 5.html

<html>
<head>
</head>
<body bgcolor="00FFFF">
<a href="6.html" target="principal">cinci </a>
</body>
</html>


Observm faptul c la tag-ul <a> am adugat atributul target care a primit valoarea atributului
name din frame-ul 3 declarat n frameset.

5. Inline frame
<html>
<body>
<iframe src="4.html"></iframe>
<p>ar trebui sa se vada deasupra
acestui rand o fereastra daca
browserul nu este prea vechi</p>
</body> </html>

4. Formulare

Un formular este un ansamblu de zone active alctuit din casete combinate, cmpuri de editare,
butoane radio, butoane de comand etc. Formularele asigur construirea unor pagini Web care permit
utilizatorilor s introduc informaii i s le transmit serverului. O sesiune cu o pagin Web ce conine un
formular cuprinde dou etape:
utilizatorul completeaz formularul i trimite serverului (prin apsarea butonului de expediere)
datele nscrise n formular.
o aplicaie dedicat de pe server (un script) analizeaz informaiile transmise i, n funcie de
configuraia scriptului, fie stocheaz datele ntr-o baz de date, fie le transmite la o adres de
mail indicat de dumneavoastr. Dac este necesar, serverul poate expedia i un mesaj de
rspuns utilizatorului.
Un formular este definit ntr-un bloc delimitat de etichetele <form> </form>. n interiorul
blocului sunt incluse: elementele formularului, n care vizitatorul urmeaz s introduc informaii, un
buton de expediere, la apsarea cruia, datele sunt transmise ctre server,
opional, un buton de anulare, prin care utilizatorul poate anula datele nscrise n formular.
Cele mai importante atribute ale etichetei <form> sunt:

Calea prin care informaiile introduse ntr-un formular pot parveni creatorului paginii este folosirea
comenzii mailto:
<a href="mailto:autor@domeniu.com">

88

Atribut Valoare
Element
introdus
Semnificaie
type text caset de text permite introducerea unui ir de caractere pe un singur
rnd
radio buton radio permite alegerea, la un moment dat, a unei singure
variante din mai multe posibile
checkbox csu de
validare
permite selectarea sau deselectarea unei opiuni
button buton de
comand
permite declanarea unei operaii atunci cnd
utilizatorul execut click sau dblclick pe suprafaa
Valoare Element
introdus
Semnificaie
text caset de text permite introducerea unui ir de caractere pe un singur
rnd
radio buton radio permite alegerea, la un moment dat, a unei singure
variante din mai multe posibile
checkbox csu de
validare
permite selectarea sau deselectarea unei opiuni
button buton de
comand
permite declanarea unei operaii atunci cnd
utilizatorul execut click sau dblclick pe suprafaa


Atribut Semnificaie
action
comunic browserului unde s trimit datele introduse n formular. n general valoarea
atributului action este adresa URL a scriptului aflat pe serverul care primete datele
formularului: <form action="http://www.yahoo.com/cgi-bin/fisier.cgi">
precizeaz metoda utilizat de browser pentru expedierea datelor formularului
method get (valoarea implicit) - datele din formular
sunt adugate la adresa URL precizat de
atributul action (nu sunt permise cantiti mari
de date)
post - folosit cel mai des. n acest
caz datele sunt expediate separat.
Sunt permise cantiti mari de date.

Majoritatea elementelor unui formular sunt definite cu ajutorul etichetei <input>. Aceasta este
utilizat mpreun cu urmtoarele atribute:
Cu ajutorul etichetei <textarea> </texarea> putei insera n pagin o caset de text multilinie care
permite vizitatorului s introduc un text mai lung, care se poate ntinde pe mai multe linii.
<textarea name="adresa" rows=2 cols=30></textarea>
Exemplu: pagina urmtoare conine elemente de mai multe tipuri ncadrate ntr-un formular unic.
Pentru alinierea elementelor utilizate pentru informaiile personale am utilizat un tabel.

















Atributele etichetei <select>:

89



Atributele etichetei <option>:



Atributele etichetei <option>:

Exemple de utilizare a atributelor i valorilor mai sus enunate
Tagul input nu avea nevoie de un tag de nchidere i putea avea numeroase atribute:
- text
- password
- radio
- checkbox
- reset
- submit
Butoane de submit
Aici va trebui s dm i o valoare atributului submit, aceasta fiind textul care va fi afiat pe
butonul generat.
<input type="submit" value="Submit" />
<input type="submit" value="Continuare>>" />




Butoane de reset
Aici ca i la atributul submit va trebui s dm o valoare, aceasta fiind textul care va fi afiat pe
butonul generat. Acest buton este foarte folositor n cazul n care userul completeaz marea majoritate a
formularului cu informaii greite sau eronate.
<input type="reset" value="Reset" />
<input type="reset" value="Sterge tot " />




Mrimea cmpului de text
Atributul size stabilete lungimea cmpului de text. Lungimea standard a unui camp de text este
n general ntre 20-25 de caractere, dar poate varia depinznd de scopul formularului sau al cmpului n
sine.
<input type="text" size="5" />
<input type="text" size="15" />
<input type="text" size="25" />

Atributul value
Folosind acest atribut vom face posibil scrierea de informaie n cmpurile noastre, informaie pe
care userul o poate terge sau nu. Aceast aplicaie este destul de folositoare n special atunci cnd se
integreaz un script php care recunoate un vizitator i retine opiunile nscrise de acesta.
Submit
Continuare >>
Reset

90


<input type="text" size="5" value="12345" />
<input type="text" size="15" value="ceva" />
<input type="text" size="25" value=" HTML" />

Maxlength
Maxlength este unul dintre atributele cele mai folositoare ale cmpurilor de text, el impiedicnd
userul s introduc un ir de caractere mai mare dect cel dorit.
<input type="text" size="5" maxlength="5" />
<input type="text" size="15" maxlength="15" />
<input type="text" size="25" maxlength="25" />

Checkbox - Crearea listelor
Checkbox-urile vin n ajutorul utilizatorului facilitnd alegerea simulatan a mai multor variante de
rspuns.
<p>Alege culorile care iti plac. .</p>
Albastru: <input type="checkbox" name="culori" value="albastru" />
<br />
Galben: <input type="checkbox" name="culori" value="galben" /><br />
Rosu: <input type="checkbox" name="culori" value="rosu" /><br />
Verde: <input type="checkbox" name="culori" value="Verde" />

Checkbox Casue selectate "by default"
Checkbox-urile ofer deasemenea posibilitatea de a fi bifate pentru a facilita n anumite situaii
"munca" userului.
Acest lucru se realizeaz cu ajutorului atributului checked acesta avnd valoarea yes.
<p>Alege culorile care iti plac. .</p>
Albastru: <input type="checkbox" checked="yes" name="culori" value="albastru" /><br />
Galben: <input type="checkbox" name="culori" value="galben" /><br />
Rosu: <input type="checkbox" name="culori" value="rosu" /><br />
Verde: <input type="checkbox" checked="yes" name="culori" value="Verde" />

Butoane radio
Butoanele radio sunt folosite pentru a permite userului s selecteze una dintre opiunile listate.
Pentru a realiza acest tip de formular va trebui n primul rnd s dm un nume fiecrui cmp.

<p> Alege nationaliatea</p>
Romana: <input type="radio" name="nationalitate" />
Engleza: <input type="radio" name="nationalitate" />
Rusa: <input type="radio" name="nationalitate" />

Butoane radio selectate "by default"
La fel ca i la checkbox-uri, butoanele radio pot fi selectate pentru a facilita "munca" userului.
<p> Alege nationaliatea</p>
Romana:
<input type="radio" name="nationalitate" checked="yes" />
Engleza:
<input type="radio" name="nationalitate" />
Rusa:
<input type="radio" name="nationalitate" />

Cmpuri de text

91

Cmpurile de text de acest fel sunt folosite pentru comentarii, bloguri, memos, sau orice alt scop
care cere un spatiu de exprimare.
Pentru a crea un cmp de text (text area) vom avea nevoie de un tag de deschidere i unul de nchidere
dup cum urmeaz:
<textarea>Camp de text!</textarea>

Text area - Cmpuri de text, dimensiuni
Pentru a modifica dimensiunea standard a unui cmp de text vom folosi coloanele i liniile, cu
denumirile lor n englez, cols i rows. Aceste vor avea valori numerice. Cu ct valoarea numeric a
acestora va fi mai mare cu att cmpul va fi mai mare.

<textarea cols="50" rows="2">Camp de text!</textarea>
<textarea cols="40" rows="5">Camp de text!</textarea>
<textarea cols="20" rows="10">Camp de text!</textarea>

Atributul "wrap"
Acest atribut al tagului <textarea> va stabili felul n care va reaciona textul atunci cnd va
ajunge la sfritul liniei.
Wrap va avea una dintre cele trei valori: hard, soft, off.
- Hard - va plasa un enter la sfritul fiecrei linii i va trimite textul n acelai format n care a
fost introdus.
- Soft - va plasa un enter la sfritul fiecrei linii dar spre deosebire de hard va trimite textul n
format liber.
- Off - nu va formata cmpul de text sub nici o forma, lasnd textul introdus ntr-o singur linie
continu.

Atributul hard / soft
<textarea cols="20" rows="5" wrap="hard">
Hard - va plasa un enter la sfarsitul fiecarei linii si va trimite textul in acelasi format in care a
fost introdus.
</textarea>


Atributul off
<textarea cols="20" rows="5" wrap="off">
Off - nu va formata campul de text sub nici o forma, lasand textul introdus intr-o singura linie
continua.
</textarea>

Text area - atributul "readonly"
Depinznd de valoarea acestui atribut, utilizatorul poate sau nu modifica coninutul cmpului de
text. Atributul readonly poate lua valoarile "yes" sau "no".
<textarea cols="20" rows="5" wrap="hard" readonly="yes">
Dupa cum poate fi observat acest text nu poate fi modificat. In cazul in care s-ar alege valoarea
no a atibutului readonly s-ar obtine rezultatul opus.
</textarea>


Html - Embed (Muzica)
Pentru a insera muzica intr-un document.html vom folosi folosi urmatorul rand HTML.
<embed src="tu si tuborg.mp3" hidden="false" autostart="false" loop="false" volume="60" width="144"
height="60" />

Html - Object (Video)
Pentru a insera un video intr-un document.html vom folosi urmatoarea bucata de cod HTML.
<object width="425" height="344">
<param name="movie" value="http://www.youtube.com/v/UAq8qHNWMNw&hl=en&fs=1"></param>
<param name="allowFullScreen" value="true"></param>
<embed src="http://www.youtube.com/v/UAq8qHNWMNw&hl=en&fs=1" type="application/x-

92

shockwave-flash" allowfullscreen="true" width="425" height="344">


</embed>
</object>


Adobe Fireworks este un program folosit pentru crearea i optimizarea graficii web. Putei s
creai i s editai att imagine de tip bitmap ct i imagini vectoriale.
Imaginea vectorial este definit matematic ca o serie de puncte unite de linii. ntr-o imagine
vectorial, elementele grafice sunt numite obiecte. Fiecare obiect este o entitate de sine stttoare, cu
proprieti bine definite: culoare, form, contur (outline), dimensiuni (lime, lungime) i poziie fa de
centrul paginii n care se lucreaz.
Cel mai mare avantaj al imaginii vectoriale este c permite modificarea proprietilor oricrui
obiect din compoziie, fr ca acesta s-i piard calitatea i fr a afecta celelalte obiecte din pagin.
Acest lucru este posibil tocmai datorit faptului c fiecare obiect, ca imagine vectorial, este o entitate
de sine stttoare.
Imaginile vectoriale sunt independente fa de rezoluie. Asta nseamn c ele sunt afiate la rezoluia
maxim a perifericelor de ieire folosite (exemplu: monitor, imprimant). Ca rezultat, nseamn c imaginea va
avea o rezoluie cu att mai bun cu ct rezoluia, de exemplu a imprimantei, este mai mare.
Harta de bii este alctuit din puncte individuale numite pixeli (picture elements), care sunt
aranjate i colorate diferit pentru a forma imaginea. Mrind dimensiunile bitmap-ului, automat se mresc
i pixelii. Astfel calitatea imaginii se deterioreaz, deoarece acelai numr de pixeli vor fi distribuii pe o
suprafa mai mare, deci o rezoluie mai sczut (dots per inch, dpi). Astfel apar formele zimate i
imaginile neclare. ntr-o hart de bii pot fi fcute mici retuuri, culorile pot fi modificate, aplicate efecte
speciale, dar nu independent fa de rezoluie. Bitmap-urile pot fi combinate ntre ele, buci din ele pot fi
desprinse i mutate separat, dar asta numai n programe specializate.
Formate grafice
Reprezentarea unei imagini pe calculator a constituit un pas firesc, odata cu cresterea puterii de
calcul a PC-urilor. O imagine este constituita din pixeli (puncte), denumirea de pixel provenind de la
picture elements, el fiind elementul fundamental ce sta la baza unei imagini. Fiecare pixel capata o
anumita culoare dintr-un spectru variabil i este memorat ca un numar, ce va fi nregistrat intern ntr-o
serie de biti. Cu ct numarul de biti alocati este mai mare, cu att creste posibilitatea de a afisa nuante
coloristice mai apropiate de realitate.
Pentru o imagine monocrom, fiecare pixel va detine culoarea alb sau negru, deci el va fi memorat
ca 0 sau 1. Pentru o imagine n 4 culori, pixelii vor putea lua valori de la 0 la 3 (n format binar 00, 01,
10 i 11 - deci 2 biti), iar pentru 256 de culori (2 la puterea a opta) vor fi necesar cte 8 biti pentru
fiecare pixel. Imaginea astfel creata va fi totui saraca, un numar de culori rezonabil fiind 65536 (16
biti), iar pentru perfectiune fiind necesare 16 milioane de culori (24 de biti).
Cunoscnd faptul ca un byte este format din 8 biti, pentru o imagine pe 24 de biti, un pixel este
memorat pe 24/8=3 bytes. Astfel, pentru o imagine la rezolutia de 1024x768 vor fi necesari
1024x768x3=2.359.296 bytes pe disc. Acesta este spatiul ocupat de o imagine necomprimata, ce poarta
de obicei extensia BMP, fiind formatul standard, cel mai simplu dar i cel mai nepractic.
n timp, s-a constatat ca majoritatea imaginilor nu necesita o fidelitate perfecta i au fost
conceputi numeroi algoritmi de compresie, multi fiind asemanatori cu cei folositi la compresia datelor,
dar care duc n multe cazuri la pierderi de calitate. n acest mod, o imagine de 2 MB poate ocupa doar
100 KB n format comprimat, pierderea de calitate fiind n general insesizabila unui ochi amator.
n timp, s-a constatat ca majoritatea imaginilor nu necesita o fidelitate perfecta i au fost
conceputi numeroi algoritmi de compresie, multi fiind asemanatori cu cei folositi la compresia datelor,
dar care duc n multe cazuri la pierderi de calitate. n acest mod, o imagine de 2 MB poate ocupa doar
100 KB n format comprimat, pierderea de calitate fiind n general nesemnificativa unui ochi amator.
Aparut n 1987, GIF (Graphics Interchange Format) a fost, i ntr-un anumit sens nca este cel
mai popular format grafic. Dezvoltat de CompuServe, compresia sa consta n doua etape: n primul rnd
numarul de culori, indiferent de specificatiile fiierului sursa, erau reduse la maxim 256, ceea ce implica
o scadere drastica a calitatii n cazul imaginilor de tip fotografie. Etapa a doua consta n compresia
folosind algoritmul LZW (fara pierdere de calitate), algoritm dezvoltat de catre Unisys, care initial a cerut
obligativitatea cumpararii unei licente n cazul aplicatiilor comerciale care l foloseau, fapt care a
ngreunat raspndirea formatului. O exensie a sa, GIF89a, a permis aparitia GIF-urilor animate, cu alte
cuvinte mai multe imagini care se succed la un interval prestabilit, realizndu-se astfel scurte animatii.
De asemenea, cu noua versiune se pot realiza asa-numitele GIF-uri "interlaced", foarte utile pentru

93

conexiunile slabe de Internet. Astfel, imaginea nu mai este afisata de sus n jos, pe masura ncarcarii, ci
va aparea mai nti o versiune schematica a imaginii, numarul de detalii crescand odata cu ncaracarea.
Popularitatea de astazi a formatului GIF se datoreaza dezvoltarii Internet-ului, majoritatea
imaginilor n format GIF pe care le gasim astazi contin cteva elemente schematice, carora le sunt
suficiente de multe ori nu 256, ci chiar 64 de culori. Cu toate acestea, GIF pierde teren, ncet dar sigur,
n fata lui PNG, care ofera o serie de avantaje, printre care suportul pentru 24 de biti de culoare.
nca din 1994 a aparut ideea de format grafic nou, fara pierderi de calitate, care sa suporte 24 de
biti de culoare i mai ales, sa fie gratuit. Astfel, n octormbrie 1996 s-a nascut PNG (Portable Network
Graphics), un format exceptional pentru acea vreme, dar care s-a impus destul de greu. Avantajul sau
cel mai important erau pierderile de calitate nule, iar ca dezavantaj putem enunta viteza destul de
scazuta a algoritmului de compresie. PNG este folosit n special pentru compresia imaginilor schematice,
dar i a celor de tip fotografie unde nu se accepta pierderi de calitate. Daca pentru mult timp au fost
preferate alte formate, cum ar fi GIF sau JPG, din simplul motiv al compatibilitatii i - de ce nu - al
comoditatii, n prezent, orice aplicatie din domeniu poate lucra cu acest format. Odata cu introducerea
suportului n browsere (fie direct, fie prin diverse plugin-uri), succesul i-a fost asigurat, el fiind n
prezent cel mai performant format grafic de pe piata din sfera Internet-ului, nsa totui nu att de
raspndit ca GIF sau JPG. "Norocul" sau a fost faptul ca prin definitie, el este destinat web-ului, chiar
dezvoltatorii lui numindu-se The World Wide Web Consortium (W3C). PNG este unul din puinele cazuri
din istorie n care un format mai performant dar initial necunoscut, a putut cuceri piata. Sa ne amintim
de muzica i de formatul MP3, care este n prezent este destul de slab ca performante, dar extrem de
popular, alternativele chiar dac sunt mai bune din toate punctele de vedere, sunt igorate de piata.
Formatul JPEG File Interchange Format (JPEG=Joint Photographic Experts Group) a aparut ca
urmare a necesitatilor tot mai mari a utilizatorilor de a schimba i depozita imagini, imagini care prin
natura lor nu necesita o reconstituire perfecta a originalului. Astfel, fiierele cu extensia JPG au ajuns pe
hard disk-urile oricarui utilizator i pe serverele oricarui site, ele continnd n general fotografii.
JPEG foloseste 24 de biti de culoare, nsa acest factor nu nseamna neaparat i calitate buna. Ea
este data n primul rnd de rata de compresie selectata, existnd posibilitatea alegerii unei calitati ntre
1 i 100. Denumirea de "100" este oarecum nselatoare, nefiind vorba de o calitate perfecta, ci de
maximul care poate fi obtinut cu ajutorul acestui format. O greseala foarte frecventa este salvarea n
format JPEG a capturilor de ecran sau a desenelor schematice. Drept urmare, chiar i dupa setarea
"best quality" rezulta o imagine plina de artefacte nedorite.
Pentru un raport optim calitate/spatiu ocupat, este necesara o rata de compresie n jurul valorii
de 85, un numar superior determinnd utilizarea unui spatiu de pna la patru ori mai mare, cu o
crestere de multe ori nesemnificativa a calitatii.
Ar mai fi de mentionat optiunea Progressive JPEG, care are un efect identic cu Interlaced GIF sau
PNG.
n concluzie, formatele grafice comprimate, prin folosirea de algoritmi performanti, a caror viteza nu mai
este un factor important la puterea de procesare a PC-urilor de azi, ofera posibilitatea oricarui posesor al
unui calculator personal sa vizualizeze i sa prelucreze imagini la o calitate foarte buna, fara irosirea
inutila a spatiului de pe disc.

1. Crearea unui nou document

Documentele fireworks sunt salvate n format png(Portable Network Graphic). Imaginile
create n Fireworks pot fi exportate sau salvate n mai multe
formate grafice i web.
Crearea unui nou document se face prin
selectarea opiunii FileNew , dup care apare fereastra
de dialog New Document n care introducei proprietile
documentului i apsai tasta OK.

1.1. Crearea unui nou document cu
aceleai dimensiuni ca cele din Clipboard
Se copiaz obiectul n Clipboard dintr-un alt
document Fireworks sau dintr-un browser web sau alt
aplicaie care accept comanda Paste. Se selecteaz
FileNew i apare fereastra de dialog New Document n

94

care dimensiunile vor fi aceleai ca ale obiectului din Clipboard. Se seteaz rezoluia i culoarea canvas-
ului dup care se apas OK. Se selecteaz Edit Paste pentru a lipi obiectul din Clipboard n
documentul nou.

2. Deschiderea i importarea fiierelor

2.1. Deschiderea fiierelor
Pentru a deschide un fiier selectai opiunea FileOpen.
Pentru a decshide un fiier nchis de curnd selectai opiunea FileOpen Recent.
Putei deschide fiiere create cu alte aplicaii (Phoposhop, Adobe FreeHand, Adobe Illustrator,
Wbmp, Eps, Jpeg, gif i gif-uri animate).

2.2. Importarea fiierelor
Atunci cnd dorii s importai un fiier n layer-ul curent obiectele de tip hotspot i slice sunt
adugate n layer-ul web. Fireworks menine proporiile imaginii importate.
n fereastra Layer selectai layer-ul n care dorii s importai fiierul, apoi selectai
FileImport pentru a deschide fereastra de dialog Import. Selectai fiierul i apsai Open. Pe
canvas poziionai cursorul import acolo unde vrei s fie poziionat colul din stnga sus al imaginii.
Alegei una din cele dou opiuni: click pentru a importa imaginea la dimensiuni ntregi sau tragei de
cursorul import pentru a redimensiona imaginea.

3. Salvarea fiierelor

Pentru a salva un fiier alegei opiunea Save sau Save as din meniul File. La Save as type
putei alege formatul n care dorii s salvai fiierul.

4. Spaiul de lucru

Cnd deschidei un document Fireworks pentru prima dat, spaiul de lucru include ferestrele
Tools, Properties, meniuri i alte ferestre. Fereastra Tools este n partea stng, cuprinznd diferite
unelte grupate pe categorii. Fereastra Properties apare n partea de jos a documentului i afieaz iniial
proprietile documentului.

Panourile Fireworks:

95

Optimize permite modificarea setrilor care controleaz dimensiunea i tipul fiierului i


lucreaz cu paleta de culori a fiierului.
Layers organizeaz structura documentului i conine opiuni pentru crearea, tergerea i
manipularea straturilor.
Common Library afieaz coninutul folder-ului Common Library care conine simboluri.
Pages afieaz paginile din fiierul curent i conine opiuni pentru manipularea paginilor.
States afieaz strile din fiierul curent i include opiuni pentru crearea animaiilor.
History conine comenzile recente care au fost aplicate documentului.
Auto Shapes conine forme automate care nu apar n panoul Tools.
Styles permite stocarea i reutilizarea caracteristicilor obiectelor.
Document Library conine simboluri grafice, butoane, animaii care sunt n documentul
curent.
URL permite crearea bibliotecilor care conin URL-uri utilizate frecvent.
Color Mixer permite crearea de culori noi pentru a fi adugate la paleta de culori a
documentului curent i pentru aplicarea lor la obiectele selectate.
Swatches gestioneaz paleta de culori a documentului curent.
Info ofer informaii despre dimensiunile obiectelor selectate i coordonatele cursorului.
Behaviors gestioneaz comportamente.
Find permite cutarea i nlocuirea elementelor dintr-un document sau mai multe.
Align conin e controale pentru alinierea i distribuia obiectelor de pe canvas.
Auto Shape Properties permite schimbarea proprietilor unei forme automate.
Color Palette permite crearea i schimbarea paletelor de culori.
Image Editting conine unelte pentru editarea imaginilor.
Path permite accesul rapid la comenzile referitoare la cale.
Special Characters afieaz caracterele speciale care pot fi folosite n texte.
Symbol Properties gestioneaz proprietile simbolurilor grafice.





A documentele deschise
B bara de aplicaii
C Comutatorul spaiului de lucru
D Bara de titlu a panoului
E Panoul de control
F Panoul de unelte
G Butonul de restrngere a panoului
H Grup de panouri ancorate







5. Tools panel

Panoul Tools este organizat n ase
categorii: Select, Bitmap, Vector, Web, Colors i
View. Cnd selectai o unealt panoul Properties
afieaz opiunile uneltei.

6. Operaii asupra canvas-
ului

6.1. Modificarea
dimensiunilor canvas-ului

96

Putei modifica canvas-ul oricnd dorii.


Selectai una dintre urmtoarele opiuni:
ModifyCanvasCanvas size
Selectai Select/Deselect, apsai pe unealta pointer pentru a afia proprietile
documentului i n panoul Properties apsai butonul Canvas size.
Introducei noile dimensiuni dup care apsai butonul Anchor pentru a specifica n ce parte va fi
ters sau adugat spaiul i apsai OK.

6.2. Modificarea culorilor canvas-ului
Selectai una dintre urmtoarele opiuni:
ModifyCanvasCanvas color
Selectai Select/Deselect, apsai pe unealta pointer pentru a afia proprietile
documentului i n panoul Properties apsai butonul Canvas color.

6.3. Redimensionarea documentului i a coninutului
Selectai una din urmtoarele opiuni:
ModifyCanvasImage size
Selectai Select/Deselect, apsai pe unealta pointer pentru a afia proprietile
documentului i n panoul Properties apsai butonul Image size.
n csuele de text Pixel Dimensions introducei noile dimensiuni.
n csuele de text Print size introducei noile dimensiuni pentru imaginea care va fi printat.
n csua Resolution introducei rezoluia imaginii Pentru a menine raportul dimensiunilor pe orizontal
i vertical selectai Constrain Proportions. Pentru a aduga sau elimina pixeli n timp ce
redimensionai imaginea astfel nct aceasta s-i pstreze rezoluia la dimensiuni diferite, selectai
Resample Image. Pentru a aplica modificrile doar paginii curente selectai Current Page Only.

6.4. Rotirea canvas-ului
Canvas-ul poate fi rotit cu 180
0
, 90
0
n sensul accelor de ceasornic sau invers. Pentru a roti
canvas-ul selectai ModifyCanvas i alegei sensul de rotaie.

6.5. Ajustarea canvas-ului
Ajustarea canvas-ului se realizeaz prin selectarea opiunilor Select/Deselect i click pe
butonul Fit Canvas din panoul Properties.

. 6.6. tergere din document
Putei terge poriuni din document. Canvas-ul este redimensionat pentru a conine doar
poriunea definit. Poriunile terse le putei pstra n afara canvas-ului prin schimbarea preferinelor
nainte tergere.
Pentru a terge dintr-un document realizai urmtorii pai:
Selectai unealta Crop din panoul Tools sau selectai Edit Crop Document
Tragei chenarul poriunii care dorii s rmn dup tergere.
Dai dublu click nuntrul chenarului sau apsai Enter pentru a executa comanda.

7. Utilizarea riglelor, liniilor de ghidaj i a grilei de ghidaj

Riglele, liniile de ghidaj i grila de ghidaj v ajut s plasai i s aliniai obiectele n cadrul
documentului.

7.1. Afiarea i ascunderea riglei
Selectai View Rulers, vor aprea riglele orizontale i verticale de-a lungul marginilor
documentului. Unitatea de msur este n pixeli.

7.2. Crearea liniilor de ghidaj
Dai click i tragei din rigla corespunztoare. Poziionai linia de ghidaj n canvas i dai drumul
butonului mouse-ului.

7.3. Mutarea liniei de ghidaj ntr-o poziie specificat
Dai dublu click pe linia de ghidaj i introducei noua poziie n csua de dialog Move Guide apoi
apsai OK.

97


7.4. Afiarea i ascunderea linilor de ghidaj i a grilei de ghidaj
Selectai View Guides Show Guides sau View Grid Show Grid.

7.5. Alipirea obiectelor la liniile de ghidaj sau la grila de ghidaj
Selectai View Guides Snap To Guides sau View Grid Snap To Grid.

7.6. Blocarea i deblocarea tuturor liniilor
Selectai View Guides Lock Guides.

7.7. nlturarea liniilor de ghidaj
Tragei linia n afara canvas-ului.

7.8. Afiai distana dintre liniile de ghidaj
Apsai Shift cnd cursorul este plasat ntre liniile de ghidaj.

7.9. Smart Guides
Smart Guides sunt ghidaje temporare care v ajut s creai, aliniai, editai i transformai
obiecte relativ la alte obiecte. Pentru a activa Smart Guides alegei opiunea View Smart Guides.
Putei folosi Smart Guides n urmtoarele feluri:
Cnd creai un obiect folosii Smart Guides pentru poziionarea lui relativ la obiectele existente.
Cnd mutai un obiect folosii Smart Guides pentru alinierea lui cu celelalte obiecte.
Cnd transformai un obiect Smart Guides apar automat pentru a nlesni transformarea.

8. Undo i repetarea aciunilor multiple

Panoul History afieaz cele mai recente aciuni executate n Fireworks.

8.1. Undo i Redo
Selectai Window History pentru a deschide panoul History i tragei marcrul Undo n sus
sau n jos.

8.2. Repetarea aciunilor
Executai anumite aciuni i alegei una dintre urmtoarele opiuni:
Facei click pe o aciune n panoul History
Ctrl+click pentru a selecta mai multe aciuni
Shift+click pentru a selecta un domeniu continu de aciuni
Apsai butonul Replay din partea de jos a panoului History.

9. Selectarea i transformarea obiectelor

nainte de a executa orice aciune asupra obiectelor acestea trebuie selectate. Pentru a selecta
un obiect folosii panoul Layers sau o unealt de selecie.




Pointer tool selecteaz obiectele cnd facei click pe obiecte sau tragei un chenar de selecie
n jurul lor




Subselection tool selecteaz un obiect individual dintr-un grup sau punctele unui obiect de
tip vector



Select Behind tool selecteaz un obiect care este n spatele altui obiect..



Export Area tool selecteaz o bucat pentru a fi exportat ca fiier separat.

10. Selectarea pixelilor

98

Putei s editai pixeli de pe tot canvas-ul sau putei folosi una din uneltele de selecie pentru a
edita o poriune din imagine.





Marquee tool selecteaz o poriune dreptunghiular din imagine



Oval Marquee tool selecteaz o poriune elipsoidal din imagine



Lasso tool selecteaz o poriune definit de utilizator din imagine.



Polygon Lasso tool selecteaz o poriune poligonal din imagine



Magic Wand tool selecteaz o poriune de pixeli cu aceiai culoare din
imagine

11. Transformarea i distorsionarea obiectelor i seleciilor

Pentru a transforma obiectul, un grup de obiecte sau o selecie de pixeli folosii uneltele Scale,
Skew i Distort.



Scale mrete sau micoreaz obiectul



Skew nclin un obiect de-a lungul unei axe specificate



Distort mut imaginile i colurile unui obiect n direcia n care este tras
punctul de selecie ct timp aceast unealt este activ. Aceasta este ul
n crearea aspectelor 3D.

12. Organizarea obiectelor multiple

12.1. Opiuni pentru organizarea obiectelor
Gruparea obiectelor trateaz obiectele ca i cum ar fi unul sau pstreaz relaia obiectelor n
grup.
Ordonarea obiectelor aranjeaz obiectele n faa sau n spatele altor obiecte.
Alinierea obiectelor selectate aliniaz obiectele relativ la o poriune din canvas sau la axele de
coordonate.

12.2. Gruparea i degruparea obiectelor
Pentru a grupa sau degrupa obiectele selectate folosii ModifyGroup sau ModifyUngroup.

12.3. Ordonarea obiectelor
Pentru a muta un obiect sau un grup de obiecte n faa sau n spatele altor obiecte
selectai ModifyArrangeBack to front sau ModifyArrangeSend to back
Pentru a muta un obiect sau un grup de obiecte cu o poziie n spate sau n fa selectai
ModifyArrangeBring forward sau ModifyArrangeSend backward

12.4. Alinierea obiectelor
Alinierea obiectelor selectate se face astfel:
Selectai ModifyAlign dup care alegei una dintre opiuni: Left, Right, Top, Bottom,
Center Vertical , Center horizontal.
Pentru a distribui n mod egal limile i lungimile a trei sau mai multe obiecte selectate selectai
ModifyAlignDistribute widths sau ModifyAlignDistribute heigths

13. Lucrul cu bitmap-uri

13.1. Crearea obiectelor bitmap prin desenare

99

Atunci cnd creai un obiect bitmap acesta apare n stratul curent. Pentru a crea un obiect bitmap
urmai paii:
Selectai unealta Brush sau Pencil din seciunea Bitmap a panoului Tools
Desenai obiectul pe canvas

13.2. Crearea obiectelor bitmap goale
Pentru a crea un obiect bitmap gol realizai unul dintre urmtorii pai:
Facei click pe butonul New bitmap image din panoul Layers
Selectai EditInsertEmpty bitmap
Selectai o poriune goal din canvas i umplei-o.

13.3. Tierea sau copierea pixelilor i lipirea ca un obiect bitmap nou
Selectai o poriune din imagine dup care dai Cut sau Copy i lipii selecia ntr-un bitmap nou.

13.4. Convertirea obiectelor de tip vector selectate n bitmap
Executai unul din urmtorii pai:
Selectai ModifyFlatten selection
Selectai Flatten selection din meniul Options al panoului Layers

13.5. Retuarea bitmap-urilor




Rubber Stamp tool permite copierea sau clonarea unei pri din
imagine



Blur tool micoreaz focalizarea unei pri din imagine



Smudge tool mpinge imaginea pe direcia n care este tras cursorul



Sharpen tool netezete o poriune din imagine



Dodge tool lumineaz o poriune din imagine



Burn tool ntunec o poriune din imagine



Red-eye Removal tool reduce efectul de ochi-roii n imagine




Replace Color tool schimb o culoare cu alt culoare

13.5.1. Clonarea pixelilor

Selectai unealta Rubber Stamp, facei click pe o zon din imagine pentru a stabili sursa clonrii
(pentru a stabili alt zon facei Alt+Click)
Mutai-v pe alt zon tragei cursorul mouseului

13.5.2 nlocuirea culorilor din imagine

Selectai unealta Replace Color.
n csua From din panoul Properties alegei Swatch
Selectai culoarea pe care vrei s o nlocuii din csua From
Selectai culoarea cu care vrei s nlocuii din csua To
Tragei cursorul peste poriunea pentru care vrei s nlocui culoarea

14. Lucru cu obiecte de tip vector

100

Un obiect de tip vector este un obiect grafic a crui form este dat de ctre o cale. Forma
vectorului este dat de ctre punctele care se afl definite de-a lungul cii. Obiectele de tip vector pot fi
primitive, forme automate i forme definite de utilizator.

14.1. Formele primitive
Formele primitive cu care putei lucra sunt: linii, poligoane, dreptunghiuri, elipse, dreptunghiuri
rotunjite, stele sau forme de tip stea.

14.2. Forme automate
Formele automate, spre deosebire de alte grupuri de obiecte,
au puncte de control de tip romb n plus fa de punctele de control
normale.
Uneltele Auto Shape:
Arrow - sgei simple de orice proporii i linii
drepte sau ntrerupte
Arrow Line - sgei drepte i subiri
Beveled Rectangle - dreptunghi cu coluri
nclinate
Chamfer Rectangle - dreptunghi uri cu col uri rotunji te spre i nteri or
Connector Line - linii formate din trei segmente asemntoare cu cele folosite pentru a
conecta elementele dintr-o diagram
Doughnut inele umplute
L-Shape - col de unghi drept
Measure Tool - sgei si mpl e care i ndi c di mensi uni l e pentru el ementel e de desi gn
chei e n pi xel i sau i nches
Pie - grafi c pl ci nt
Rounded Rectangle - dreptunghi cu col rotunji t
Smart Polygon - poligon echilateral cu 3 pn la 25 segmente
Spiral - spiral deschis
Star - stea care poate avea ntre 3 i 25 coluri.

14.3. Formele definite de utilizator
Formele definite de utilizator se pot desena folosind Pen Tool,
care are o mare varietate de moduri de desenare Air Brush,
Calligraphy, Charcoal, Crayon, i Unnatural. Fiecare categorie
poate avea mai multe opiuni, cum ar fi: Light Marker i Dark
Marker, Splattered Oil, Bamboo, Ribbon, Confetti, 3D,
Toothpaste, i Viscous Alien Paint.
Formele definite de utilizator, pot fi create i prin puncte de control definite cu ajutorul uneltei
Pen.
15. Lucrul cu text

Adobe Fireworks permite folosirea mai multor faciliti specifice aplicaiilor de grafic sofisticat,
incluznd o mare varietate de fonturi i mrimi, spaiere, culoare.
Introducerea textului se face utiliznd unealta Text i opiunile din panoul Properties pentru a
formata textul din documentul de lucru.
n documentele Fireworks testul apare nuntrul unui block de text (dreptunghi cu puncte de
control). Blocurile de text pot fi cu dimensiune fix sau automat.
Blocurile de text cu dimensiune automat se mresc pe orizontal pe msur ce se adaug text.
Sunt create automat atunci cnd facei click pe canvas avnd unealta Text selectat.
Blocurile de text cu dimensiune fix permit controlul dimensiunii textului coninut. Acestea sunt
create automat cnd tragei cursorul i desenai un bloc de text folosind unealta Text.
Atunci cnd cursorul text este activ ntr-un bloc de text n colul din dreapta sus al blocului de
text este vizibil un ptrat sau un cerc. Cercul indic un bloc de text cu dimensiune automat, iar ptratul
indic un bloc de text cu dimensiune fix. Executnd dublu click pe acest col se poate schimba dintr-un
tip de bloc de text n altul.

15.1. Ataarea unui text la o cale

101

Pentru a ataa un text la perimetrul unei ci selectai


textul i calea innd apsat tasta Shift, iar apoi selectai
Text Attach To Path.
Pentru a plasa un text nuntrul unei ci selectai
textul i calea innd apsat tasta Shift, iar apoi selectai
Text Attach In Path.
Pentru dezataa un text de la o cale selectai Text
Deattach From Path.

16. Utilizarea culorilor pentru contur i umplere

n seciunea Colors din panoul Tools executai click pe iconia din
stnga casetei Fill Color sau Stroke Color pentru a o activa.
Pentru a reseta culoarea de contur i de umplere dai click pe
butonul Set Default Stroke/ Fill colors aflat n panoul Tools sau n
Color Mixer.
Pentru a nltura culoarea de contur sau de umplere apsai pe butonul No stroke or fill din
seciunea Colors a panoului Tools.
Pentru a schimba ntre ele culorile conturului i umplerii apsai Swap Stroke/Fill colors din
panoul Tools.

17. Decuparea imaginilor i utilizarea n cadrul paginilor web (slices)

Decuparea imaginii presupune mprirea unui document
Fireworks n buci mai mici i exportarea lor n fiiere separate.

17.1. Crearea bucilor dreptunghiulare
Desenarea unui obiect dreptunghiular Slice
Selectai unealta Slice i innd cursorul apsat definii
bucata care urmeaz a fi tiat.
Crearea unui obiect dreptunghiular Slice pe baza unui obiect
selectat
Selectai EditInsertRectangular slice. Bucata va
include ntregul obiect selectat. Dac sunt selectate mai multe obiecte, selectai single pentru a crea un
singur obiect slice care acoper toate obiectele selectate sau selectai multiple pentru a crea cte un
obiect slice pentru fiecare obiect selectat.

17.2. Crearea obiectelor slice nedreptunghiulare
Desenarea unui obiect nedreptunghiular Slice
Selectai unealta Polygon Slice i facei click pentru a
plasa vrfurile poligonului.
Crearea unui obiect nedreptunghiular Slice pe baza unui
obiect de tip vector sau a unei ci
Selectai obiectul de tip vector i apoi selectai
EditInsertPolygon slice.

17.3. Exportarea slice-urilor
Pentru a exporta toate bucile n fiiere separate executai FileExport, n fereastra export
selectai la Export-Images Only, Slices-Export slices i debifai Selected Slice Only i Include
areas without slices apoi dai Save.








102

















Modulul IV Microsoft Expression Web

1.Descrierea aplicatiei
Aplicatia Expression Web a fost realizata de compania Microsoft in ideea de a concura serios cu
celelate programe de web design, mai precis cu aplicatia Dreamweaver.
Avand in vedere ca Expression Web este urmasul FrontPage-ului( care era destul de practic dar
simplist), dezvoltatorii aplicatiei au trebuit sa lucreze pe doua fronturi: sa realizeze o interfata utilizator
asemanatoare celei din CorelDraw sau Photoshop sau Dreaweaver, interfata care sa tenteze utilizatorii sa
foloseasca aplicatia si a l doilea lucru se refera la introducerea de noi elemente indispensabile in
momentul de fata programatorilor web (legaturile cu bazele de date, recunoastere si formatare cod Php,
actualizare dinamica a paginii).
Toate aceste elemente au fost introduse in cadrul aplicatiei Expression Web3, aplicatie ce a
inceput sa fie mentionata pe blogurile web designerilor.
Majoritatea elementelor de baza ce pot fi inglobate intr-o pagina web sunt pozitionate la
indemana utilizatorului, nefiind necesara decat selectarea obiectului dorit si deplasarea cursorului in
stanga sau in dreapta spatiului de lucru, in functie de carctereristica pe care dorim sa o modificam.
Daca se doreste inserarea unui obiect comun, elementul Toolbox prezent in dreapata spatiului
de lucru ofera mai multe categorii ce contin structurile si obiectele de baza ale unei pagini, introducerea
acestora realizandu-se pe sistemu Drag-and-drop(trage obiectul dorit in pagina -si-da-i drumul in locul
unde dorit sa il pozitionam).

1.1. Interfata aplicatiei
Expression Web reprezinta un program competitiv realizat de compania Microsoft cu scopul de a
se impune pe segmentul de aplicatii adresate designerilor de pagini web.
In afara elementelor clasice HTML si CSS, Expression web permite realizarea facila a legaturilor
cu bazele de date si introducerea rapida a tuturor elementelor pe care un utilizator
ar dori sa le aiba in propriul site.
Interfata oferita utilizatorului este una prietenoasa, in care fiecare element
este plasat logic, acolo unde utilizatorul ar intui ca il poate gasi.
Cele mai importante elemente ale interfetei utilizator sunt:
1.Bara de unelte(Toolbox), prezenta in dreapta spatiului de lucru, care
contine majoritatea elemntelor ce ar putea fi introduse intr-un website sau o pagina
de Internet.
Aceasta bara contine doua categorii de obiecte:HTML si ASP.NET Controls,
fiecare continand la randul ei mai multe subcategorii:HTML(Tags, Form Controls,
Media), ASP.NET Controls(Standard, Data, Validation, Navigation, etc.). Dand dublu
clic pe o subcategorie aceasta se poate extinde sau se poate comprima.
2.Fereastra pentru particularizarea stilurilor CSS- prezenta in dreapta, jos
In cadrul acestei ferestre se pot defini noi stiluri CSS, apasand butonul New
Style si folosindu-ne de optiunile oferite de aplicatie prin intermediul casetei de
derulare Options:
3.Fereastra pentru particularizarea elementelor(Tag Properties)- prezenta
in stanga, jos.

103

Aceasta fereastra contine majoritatea optiunilor de formatare a unui element selectat anterior,
caracteristici ce pot fi modificate de utilizator:

4.Bara pentru prezentarea modului de afisare a paginii- prezenta sub spatiul de lucru.



Exista trei moduri de afisare a informatiei:
a. Modul Design- in care este vizibil doar continutul
unei pagini, fara codul sursa





b. Modul Split- in care este divizat spatiul in doua elemente: partea de sus, in care este prezentat
continutul paginii si partea de jos, in care apare codul sursa al paginii:




























c. Modul Code- in care este prezentat doar codul sursa asociat paginii care a fost realizata:

104

5.Bara pentru afisarea stilurilor(Style), a fonturilor(Font) si a dimensiunii


fonturilor(Font Size), prezenta deasupra spatiului de lucru:
Bara pentru stiluri permite selectarea stilurilor presetate(Heading1-Heading6), a
listelor ordonate si neordoneta si stilurilor de finite de utilizator:





Bara pentru dimensiunea fonturilor contine dimensiunile standard declarate in puncte:
Deschiderea acesteia se face dand clic pe sageata corespunzatoare(prezenta in
dreapta acesteia).

2. Crearea unui site
In aplicatia Expression Web site-urile se creaza accesand meniul File>New>Web Site.
Putem alege fie un site web care sa contina o singura pagina(One page Website) sau
putem alege(lucru recomandat) optiuneaEmpty Web Site-aceasta optiune permite
realizarea unui site al carui continut sa il putem declara dupa bunul plac.
Odata cu crearea noului site se realizeaza si un folder special dedicat elementelor ce vor face
parte din site-ul creat: alte foldere, baze de date, etc. Este indicat mai ales in cazul imaginilor ca inainte
de ale folosi sa le copiem in folderul site-ului deoarece in momentul activarii site-ului doar elementele
specifice acestuia vor putea fi incarcate rapid, celelate necesitand timp suplimentar.
Se observa folderul creat impreuna cu pagina implicita html(Default.htm).
In cadrul unui folder se pot introduce:
-foldere noi, dand clic dreapta pe foldeul initial>New>Folder











-alte elemente(baze de date, imagini,etc.), accesand meniul
File>Import>File>selectam elementul dorit

105














2.1.Crearea unei pagini
In cadrul site-ului nou creat putem introduce pagini de Internet cu diferite caracteristici(de tipuri
diferite). Astfel, accesand meniul File>New>Page sau dand un clic pe sageata corespunzatoare tastei de
comenzi rapideElement nou , utilizatorului i se ofera posibilitatea de a alege dintre urmatoarele
categorii:
-General
-ASP.NET
-CSS Layouts
-Style Sheets
-Frame Pages
In cadrul categoriei General putem selecta unul
dintre urmatoarele tipuri de pagini:
-HTML- ce initial contine doar elemente HTML
-ASPX- ce permite realizarea legaturilor cu bazele de
date, admitand continut dinamic
-PHP- ce recunoaste comenzile specifice limbajului
PHP
-CSS- ce contine setari ce permit recunoasterea claselor si identificatorilor din limbajul extins CSS
-Masterpage- permite realizarea unei pagini sablon al carei continut sa poata fi preluat si
modificat ulterior de catre alte pagini
-JavaScript- contine baza necesara recunoasterii automate a scripturilor Java

2.2. Vizualizarea unei pagini in browser

Pentru a vizualiza continutul unei pagini in browser avem urmatoarele posibilitati:
a.Selectam pagina dorita(simplu clic NU dublu clic)> accesam meniul File>Preview in
Browser>alegem browser-ul dorit:


b.Apasam tasta F12
c. Selectam pagina dorita>clic dreapta>dam un clic pe browser-ul
implicit afisat(in exemplu este Windows Internet Explorer 8.0):


106




Daca alegem optiunea Preview in Multiple Browsers se va afisa pagina selectata in toate
browser-ele instalate pe calculatorul pe care se lucreaza(IE, Mozilla Firefox, Google Chrome
etc.)








2.3. Salvarea unui proiect

Pentru a salva un proiect reprezentat de un site cu mai multe elemnte sau de o singura pagina
avem urmatoarele posibilitati:
a.Accesam meniul File>Save sau Save as
b.Apasam combinatia de taste Ctrl+S
c.Utilizam tasta de comenzi rapide

2.4. Inchiderea unui proiect

Pentru a inchide un proiect reprezentat de un site nou sau o pagina solitatra avem urmatoarele
optiuni:
a.Accesam meniul File>Exit
b.Apasam combinatia de taste Alt+F4
Obs: La inchiderea unui proiect ce nu a fost salvat anterior ni se va cere sa declaram un nume
pentru proiectul in cauza, in caz contrar stabilindu-se un nume ce tine cont de primele caractere ce apar
in proiect.

2.5. Formatarea caracterelor

Caracterelor li se poate aplica o anumita dimensiune, un anumit stil, un efect de ingrosare,
subliniere sau inclinare folosind tastele de comenzi rapide prezente sub bara meniurilor:
Tot aici sunt si optiunile de aliniere la stanga, dreapta sau de centrarea a caracterelor.
Pentru a realiza o formatare complexa a caracterelor putem utiliza toate optiunile CSS urmand
pasii:
-selectam textul pe care dorim sa il modificam
-din bara Tag Properties>categoria Attributes>dam un clic in dreapta comenzii style>dam un
clic pe ...:













107



Se observa aparitia unei ferestre ce contine urmatoarele categorii:
1.Font-permite alegerea dimensiunii(size), a greutatii(weight), a stilului(style), a efectului de
transformare aplicat textului(transform) si a culorii(color) textului
In plus, eventualele efecte de barare cu o linie(line-through) , de supraliniere (overline), de
subliniere(underline) sau de clipire(blink) pot fi aplicate prin simpla bifare acestora.
2.Block-permite declararea setarilor utilizate la:
-alinierea pe verticala a textului(vertical-align)
-alinierea pe orizontala a textului(text-align)
-spatierea cuvintelor(word-spacing)
-spatierea caracterelor(letter-spacing)
Obs:pentru ultimele doua optiuni se pot declara valori numerice(in pixeli) sau pot fi utilizate
unitati de masura(in, cm, mm) sau procente(procentul declarat referindu-se la dimensiunea standard a
caracterelor)
3.Background -permite declararea setarilor utilizate la:
-culoarea de fundal(background-color)
-eventuala imagine folosita drept fundal(background-image)
-daca imaginea utilizata este mai mica decat dimensiunea ecranului, aceasta se poate repeta
folosind comanda background-repeat:repeat-x(repetare pe orizontala), repeat-y(repetare pe verticala),
repeat(repetare si pe orizontala si pe verticala) sao no-repeat(imaginea apare o singura data,
nerepetandu-se).
-pozitionarea fundalului pe orizontala(background-position(x))
-pozitionarea fundalului pe verticala(background-position(y))
Obs:folosind ultimele doua optiuni fundalul isi va face aparitia doar pe o parte a pagini si nu pe
toata pagina
4.Border-permite alegerea valorilor pentr:
-tipul chenarului(border-style)
-latimea chenarului(border-width)
-culoarea chenarului(border-color)

2.6. Introducerea si formatarea imaginilor

Pentru a introduce o imagine intr-o pagina avem urmatoarele posibilitati:
a.Accesam meniul Insert>Image
b.Utilizam combinatia de taste Ctrl+I
Odata selectata locatia din care aducem imaginea, aceasta va fi introdusa in pagina curenta.
Pentru formatarea imaginii dam clic dreapta pe imagine>Properties si isi face aparitia
urmatoarea caseta de dialog:















In categoria General, apasand butonul Browse avem posibilitatea sa schimbam imaginea
afisata prin navigarea printre folderele accesibile.
Optiunea Alternate Text ofera posibilitatea declararii unui text ce isi va face aparitia daca
imaginea introdusa nu exista sau a fost stearsa.

108

Long Description reprezinta o descriere a imaginii ce urmeaza a fi afisata, descriere ce ar


trebui sa ofere utilizatorului informatii despre domeniul sau
aria din care provine imaginea respectiva.
Subcategoria Hyperlink ofera utilizatorului
posibilitatea sa defineasca o hiperlegatura ce poate fi
urmata daca dam un clic pe imaginea ce va fi afisata.
Fisierul spre care va face trimitere hiperlegatura poate fi
alesc prin apasarea butonului Browse.
In categoria Appearance sub oferite optiuni ale
modului de afisare al imaginii selectate:

-Wrapping Style permite setarea modului in
care imaginea se va incadra in textul ce apare deasupra si
dedesubtul sau
-Alignment permite declararea modului de
aliniere al imaginii in raport cu pagina curenta
-Border thickness permite setarea grosimii
eventualului chenar pe care il aplica imaginii
-subcategoria Size permite redimensionarea
imaginii(marirea sau micsorarea acesteia), elemente declarate
in pixeli sau in procente(exeemplu de micsorare:20%, exemplu
de marire:342%). Daca nu dorim ca imaginea sa se modifice
proportional trebuie sa debifam optiunea Keep aspect ratio.
-raportarea marginilor imaginii la marginile paginii in
care este incadrata se realizeaza folosind optiunile Horizontal
margin si Vertical margin.
Declararea chenarului unei imagini se realizeaza dand clic
dreapta pe imagine>Borders and Shading.
Dand un clic pe una dintre setarile Default, Box sau
Custom putem alege din coloanele din centru:
-stilul(style)- dand un clic pe acesta
-culoarea- dand clic pe sageata corespunzatoare si alegand
culoarea dorita
-latimea chenarului(width)- declarand o dimensiune in
pixeli(ex:6) sau marind sau micsorind dimensiunea initiala cu ajutorul
sagetilor
-spatierea imaginii fata de chenar(Padding), la fel ca in cazul
tabelelor, specificand spatiul lasat liber intre imagine si margile din stanga, dreapta, sus si respectiv jos in
pixeli
Obs: stilul se aplica dand un clic pe marginea din stanga, dreapta, sus si jos prezente in dreapta
casetei de dialog:

2.7. Introducerea hiperlegaturilor

Pentru a introduce o hiperlegatura
urmam pasii:
-selectam textul sau imaginea ce va
reprezenta baza hiperlegaturii
-accesam meniul
Inserare>Hyperlink(sau Ctrl+K)
-alegem fisierul sau pagina web catre
care dorim sa realizam hiperlegatura>OK.
Se observa schimbarea culorii textului
sau imaginii respective(asa cum se intampla si in
HTML); in momentul plasarii cursorului deasupra
hiperlegaturii se observa posibilitatea urmarii
hiperlegaturii daca apasam combinatia Ctrl+clic.
Pentru a particulariza hiperlegaturile din pagina avem posibilitatea
modificarii culorii hiperlinkurilor in functie de caracteristicile acestora(la fel ca in

109

CSS). Astfel, selectam hiperlegatura>clic dreapta>Page Properties>Formatting>modificam culorile


respective:
Atributele generale ale hiperlegaturii pot fi modificate in fereastra Tag Properties>Attributes,
unde putem modifica fisierul utilizat la realizarea hiperlegaturii, atributele vizibile ale acesteia, etc:








2.8. Introducerea de continut CSS
La inceput deschidem pagina Default (dand dublu clic pe
aceasta) si alegem un element de tip Header1 in care introducem un
anumit text, apoi mai introducem un element de tip Header2 in care
introducem un alt text:
Rezultatul va fi urmatorul:










Apoi introducem elementele unei liste neordonate ce vor reprezenta parti ale meniului paginii:











Fiecare din aceste elemente trebuie sa reprezinte o
hiperlegatura catre o pagina pe care o putem realiza ulterior.
Pentru definirea unui stil nou CSS urmam pasii:
-apasam butonul NewStyle din cadrul ferestrei Manage Styles
prezenta in dreapta, jos a spatiului de lucru:
Isi face aparitia o fereastra de dialog ce permite setarea
urmatoarelor atribute:
-Selector- permite alegerea unui mod de formatare
specific obiectului selectat( daca este vorba de un
text putem alege h1, ..., h6, daca este vorba de o
imagine alegem img etc.)
!! Stilul nou declarat se aplica numai tipului de
Selector precizat din pagina curenta.

110

De exemplu: primul stil se va aplica numai elementelor de tip h1(Header1) deoarece asa a fost declarat,
adica textului My Web Site
-Define in- permite definirea stilului nou pentru aplicarea sa in pagina curenta sau intr-o alta pagina
specificata
In cadrul ferestrei apar si urmatoarele categorii:
1.Font-permite utilizarea atributelor(prezente in dreapta categoriei):
-font-family- declara familia de fonturi careia ii va apartine stilul declarat
-font-weight- declara
greutatea fontului fie
valori(100,200,...) fie atribute
predefinite(normal, bold,
lighter, bolder)
-font-size- declara
dimensiunea fonturilor
fontului folosind valorile
recunoscute(xx-small,...,xx-
large)
-text-transform- declara
eventualul efect de
transformare aplicat fontului
din stil(scrierea cu litere mari-
uppercase, scrierea avand
prima litera litera mare-
capitalize, etc.)
-color- declara culoarea
caracterelor din stilul in curs
de definire
2.Background- seteaza fundalul pe care o sa apara textul din stilul declarat
Drept fundal putem utiliza o culoare sau o imagine pe care o
selectam dand un clic pe butonul Browse
3.Border- permite definirea unui chenar aplicat textului in
cauza, chenar pentru care se poate specifica:
-latimea sa(border-width)
-culoarea chenarului(border-color)
Se observa faptul ca dupa setarea stilului nou, acesta apare in
caseta CSS Styles, avand in exemplul nostru numele h1:
In acelasi mod declaram alte stiluri printre care cele legate de
setarea hiperlegaturilor active, vizitate sau obisnuite:
Pentru a aplica un stil personalizat unei portiuni de text care nu a
fost declarata de tip h1,...,h6 sau care face parte dintr-o parte Header si
vrem sa apara diferit, declaram stilul nou folosind Selectorul .mystyle:
selectam textul caruia dorim sa ii aplicam stilul nou si dam clic dreapta pe
stilul .mystyle>Apply style:














111




Se observa faptul ca initial in bara CSS Properties apare textul No style deoarece nu fusese
declarat niciun stil, insa pozitionand cursorul in dreptul unui element caruia i s-a aplicat un stil apare stilul
respectiv,specificat prin nume, cu toate caracteristicile sale:
In acest fel putem defini o multitudine de stiluri CSS, stiluri ce se pot aplica anumitor portiuni de
text selectate.

3. Crearea si formatarea formularelor

Majoritatea formularelor presupun realizarea
unei pagini cu continut dinamic de tipul .aspx.
Presupunem ca deja am realizat aceasta pagina
accesand meniul File>New>Page>ASPX.
Se observa aparitia elementului de tip form
in pagina nou creata.


Numele fiecarei parti a formularului va reprezenta eticheta(label-ul) partii respective. Elementul
label se introduce din Toolbox utilizand metoda drag-and-drop(trage si da-i drumul):











Completam eticheta introdusa cu textul ce urmeaza sa apara in formular(in cazul nostru First
Name):
Adaugam in continuarea
etichetei un element de tip
TextBox din categoria Toolbox
prezenta in dreapta spatiului de lucru(prin tragere in spatiul de lucru), in care utilizatorul va putea
introduce datele dorite in formular:
In acelasi mod introducem alte etichete si
casete text corespunzatoare folosind nume diferite:







112




La sfarsitul formularului introducem si doua butoane utilizand elementul Button din Toolbox:


Caracteristicile unui buton sunt prezentate
in stanga spatiului de lucru la categoria Tag
Properties:
Intre optiunile disponibile utilizatorului
privind formatarea(modificarea) butonului in
cauza putem enumera:
-text: prezinta textul ce apare pe butonul respectiv(de exemplu: Trimite sau Sterge)
-ID: prezinta numele sub care va fi recunoscut butonul in cadrul formularului
-type: prezinta tipul butonului(Reset, Submit etc.), tip ce poate fi modificat in functie de dorinta
utilizatorului
Butoanele de diferite tipuri se introduc din Toolbox, alegand tipul de buton si functia pe care
dorim sa o prezinte:

1. Butonul de tip Reset permite stergerea datelor dintr-un
formular
2. Butonul de tip Submit permite trimiterea datelor introduse
intr-un formular catre o adresa de e-mail valida
3. Butoanele Radiopermit alegerea unei optiuni sau valori
dintr-un grup de valori declarat
4. Butonul de tip Password permite utilizatorului sa declare o
parola si sa o introduca ulterior in cadrul formularului
Pentru fiecare element al formularului putem impune
anumite restrictii privind tipul sau valoarea datelor
introduse. Toate aceste restrictii tin de validarea datelor,
subcategorie prezenta in Toolbox:
1.RegularExpressionValidator-permite de clararea unui
mesaj de eroare, setarea legaturii cu un anumit camp
2.RequiredFieldValidator-atunci cand este obligatorie
introducerea datelor in campul precizat
3.RangeValidator-permite de clarae unui tip de date utilizat
si a unui interval in care sa se situeze datele introduse
4.CompareValidator-permite declararea unei valori cu care sa
se compare datele introduse
5.ValidationSummary-permite definirea unei casete in care
vor fi prezentate toate neconcordantele ce au aparut la introducerea
datelor si cum pot fi acestea corectate

Fiecare element contine un mesaj de eroare ce apare in
momentul in care datele introduse intr-un anumit camp nu
corespund.



Pentru a se realiza validarea reala a datelor trebuie specificat
campul in functie de care se va realiza validarea:

In functie de acest camp aplicatia Expression Web ca sti ce fel
de date sa accepte.

113

Totodata poate fi declarata si culoarea textului ce apare in mesajul de eroare:



La fel actionam si in cazul campului LastName, atasandu-i tot un element de tip
RegularExpressionValidator, insa declarand un alt mesaj de eroare.
In cazul campului Age(Varsta) vom folosi un element de tipul RequiredFieldValidator,insa
presupunand ca formularul realizat se adreseaza doar adultilor nu minorilor trebuie sa fie acceptate doar
numere mai mari de 18, de aceea vom atasa un element de tipul CompareValidator:


Caracteristicile elementului CompareValidator tin de:
-aparitia mesajului de eroare
-valoarea cu care se va compara valoarea introdusa de utilizator:
-operatorul de comparatie ce va fi folosit :










In cazul campului ce permite introducerea unei adrese de e-mail trebuie sa restrictionam intrarile
astfel incat sa fie acceptate doar adrese de e-mail valide, ce respecta standardul international. Astfel,
vom atasa un element de tipul RegularExpressionValidator la care vom modifica atributul
ValidationExpression
dand clic pe caseta ... ce apare in dreapta atributului.


Astfel, se deschide o caseta de dialog
din care alegem optiunea Internet
e-mail address:





In cazul ultimului camp ce necesita a
fi completat de utilizator(Date of Purchase-
Data cumpararii), deoarece data vrem sa fie
cuprinsa intr-un anumit interval declarat, vom utiliza un element de tipul RangeValidator pentru care
declaram mesajul de eroare, campul folosit la comparatie si in plus valoarea minima, valoarea maxima si
tipul datelor ce vor fi acceptate:

Dupa salvarea paginii(Ctrl+S), incercam sa o vizualizam
intr-un browser(F12).

114


Se observa faptul ca toate neconcordantele legate de introducerea datelor sunt afisate in dreapta
fiecarui element al formularului.
Pentru a afisa toate informatiile legate de introducerea incorecta a datelor la un loc introducem in
pagina un element de tipul ValidationSummary:


















Datele completate incorect vor fi in acest fele prezentate la sfarsit, grupate, nu separat, pentru
fiecare camp in parte.

3.2. Crearea paginilor de tip Master Page

Acest tip de pagini este utilizat la realizarea de sabloane ce vor putea fi mostenite de catre alte
pagini realizate ulterior.
In fiecare Master Page vor exista zone editabile si zone needitabile, in functie de modul de
creare. Fiecare MasterPage va fi salvata cu extensia .masterfile.
La inceput accesam meniul File>New>Page>Master Page.
In mod implicit, pagina de tip Master Page prezinta un element de tipul ContentPlaceHolder ce
va administra continutul paginii:

115








Adaugam apoi cateva tag-uri div preluate din Toolbox>HTML>Tags prezenta in dreapata
spatiului de lucru. Aceste elemente functioneaza pe principiul drag-and-drop adica dati un clic pe
ele>tinand apasat clic stanga ne deplasam in spatiul de lucru>le dam drumul in locul unde dorim sa le
plasam.
Fiecare tag div corespunde cate unei zone diferite pe care dorim sa o definim in cadrul Master
Page.
Primul container va fi de tip Header deoarece dorim sa contina antetul site-ului:





In ultimul container plasam nota de subsol:






Celelalte doua regiuni necompletate am dori sa reprezinte doua regiuni editabile. Pentru acest
lucru selectam primul container>clic dreapta>ManageMicrosoft ASP.NET:











Redenumim aceasta regiune Content1 si dam clic pe butonul Add>Close:




116










La fel facem si cu al doilea container necomletat, redenumindu-l Content2.
Salvam pagina Master Page cu numele main.master(main=pagina principala), apoi creem o
pagina care sa utilizeze pagina Master Page realizata anterior:
Meniul File>New>Page>From MasterPage>specificam pagina creata anterior>OK:
















In acest moment daca ne uitam la pagina nou creata observam ca prima si ultima sectiune nu
sunt editabile:





Pentru a introduce continut in cele doua zone editabile din mijloc, selectam primul container>ne
plasam la capatul din dreapata si cand apare sageata dam un clic pe ea si slectam optiunea Create
Custom Content:
In acest fel avem posibilitatea de a introduce propriul continut in regiunile editabile:







117

Salvam fisierul cu numele dorit, observand faptul ca pagina realizata este de tip .aspx,
prezentand deci continut dinamic si vizualizam pagina intr-un browser instalat.
Este de remarcat faptul ca in codul sursa al paginii realizate nu apare codul sursa din Master Page
cu toate elementele acestuia ci numai legatura catre Master Page si codul elementelor introduse ulterior
in pagina realizata.




4. Utilizarea controalelor ASP.NET in Expression Web

Elementele ASP.NET sunt utilizate pentru realizarea de legaturi interactive dintre o pagina web si
datele dintr-o baza de date. Toate modificarile aduse datelor din baza de date vor putea fi vizibile in
pagina web.
Incepem prin crearea unui web site nou urmand calea File> New> Web Site:

Se observa faptul ca avem la dispozitie anumite modele de site-uri oferite prin intermediul
template-urilor, modele ce permit preluarea unui anumit stil de formatare si a unui anumit tip de
organizare al site-ului.


Pentru a configura singuri site-ul vom utiliza categoria General> Empty Web Site

118


Daca alegem prima optiune site-ul va fi format dintr-o singura pagina, iar daca alegem ultima
optiune vom putea prelua dintr-o alta sursa un site web extern.
Dand clic pe OK Expression Web a creat un folder web ce initial nu contine nici un fisier. Fisierele l e vom
adauga ulterior urmand calea File> New>..

Sau putem utliliza optiunile atasate shortcut-ului New:


Sau mai repede, putea da clic dreapta pe folder-ul creat>New:

119


In concluzie alegem File>New>ASP.NET>ASPX>OK:


In modul de vizualizare Split site-ul va arata astfel:

Partea impresionanta la Expression Web tine de posibilitatea de a realiza site-uri interactive
sau dinamice, prin intermediul conexiunilor la baze de date sau al hyperlegaturilor, lucru posibil chiar
daca utilizatorul nu este un dezvoltator consacrat de pagini web.
De notat este si faptul ca utilizatorii pot vizualiza modificarile produse automat in codul sursa prin
adaugarea si utilizarea de formulare, liste, butoane sau alte elemente sub forma de obiecte in Expression
Web.
In formularul nostru vom crea un control ce va trebui sa acceseze date dintr-o baza de date
deoarece de cele mai multe ori cand realizam site-uri dinamice va trebui sa accesam date din baze de
date.
Se observa ca in partea dreapta avem un tab numit Data Source Library. Numele sau poate sa
induca putin in eroare utilizatorul deoarece numele ar duce cu gandul la selectarea directa a surselor de
date:

120


De retinut este faptul ca optiunea ASP.NET Connections reprezinta doar informatia de legatura
catre anumite surse de date pe care le veti utliza si nu sursele de date(bazele de date) propriu-zise.
Din bara de
instrumente, la categoria
Standard avem obiectul
DropDownList , obiect pe
care il vom introduce in
cadrul formularului:

Rezultatul va fi
urmatorul:






Se observa in partea de sus si codul atasat Listei, precum si pozitionarea acesteia in cadrul
formularului. Daca unul dintre elemente este selectat atunci si codul corespunzator va fi selectat de
asemenea, acest lucru usurand sarcina utilizatorului de a identifica codul corespunzator fiecarui obiect din
pagina.
Putem schimba ID-UL listei fie din partea de cod fie din lista de taribute prezenta in stanga
paginii.Oricum, schimbam numele listei in 1stTest:

Este evident ca primul lucru de care avem nevoie este o baza de date, asa ca vom utiliza o baza de date SQL pe care o vom adauga proiectului nostru: clic dreapta pe proiect>New>

121


>introducem numele folderului App_Data.
Apoi accesam meniul File>Import>File:

Alegeti AddFile si alegem fisierul Test .mdf>OK,
acest lucru determinand aparitia sa:

In acest moment avem fisierul bazei de date atasat
proiectului nostru.
In dreptul Listei din formular se observa aparitia unei
sageti ce permite afisarea anumitor optiuni ale unui meniu
contextual:

Alegem optiunea Choose data
source, lucru care ne duce la
configurarea sursei de date.
Selectam o sursa de date:





alegand optiunea New data source. Acum putem alege tipul sursei de date:

Alegem Database si pastram ID-ul implicit oferit de program>OK.
Acum urmeaza sa alegem conexiunea catre baza de date, dar cum momentan nu avem asa ceva
alegem New Connection:

122


Obs: este indicat sa folosim o baza de date MsAccess cu extensia .mdb sau o baza de date create
in MySQL.
In cazul nostru alegem Microsoft SQL Server DataBase
File:

Alegerea depinde de modul de lucru al serverului si de tipul
bazei de date utilizate>OK.







In acest moment putem crea un nou fisier al bazei de date sau putem utiliza un fisier existent. In
acest exemplu avem un fisier asa ca dam un clic pe Browse:

Si cautam in arborele de directoare fisierul bazei de date dorit.
Se observa faptul ca fie folosim autentificare oferita de SO Windows fie putem opta pentru
oautentificare a unui Server SQL, lucru posibil doar pe baza unui nume de utilizator si a unei parole.

123

In cazul autentificarii Windows apasam butonul Advanced , lucru ce determina aparitia urmatoarei
ferestre:

Se poate crea o noua instanta a SGBD-ului utilizat (diferita de instanta implicita oferita de sistem)
prin declararea sau alegerea acesteia din categoria Source>Data Source.

Daca dorim sa declaram doar metodic instanta cu toate ca stim ca fie este o instanta fictiva fie ca nu
suntem siguri de functionalitatea ei, alegem la UserInstance>False>OK. Acest lucru ne arata ca
instanta implicita va fi utilizata deoarece instanta nou declarata(SQL2005) este setata drept False:








In acest moment putem testa conexiunea, dand un clic pe butonul Test Connection:

Dupa ce observam testarea cu succes a conexiunii apasam tasta OK.
Apasam tasta Next.Apoi alegem un nume pentru fluxul conexiunii sau lasam numele implicit:

De asemenea bifam optiunea Yes, save this conection as>Next.
Dorim sa salvam conexiunea datorita faptului ca s-ar putea sa dorim sa o folosim in viitor.

124

In acest moment trebuie sa selectam din fisierul bazei de date, datele pe care dorim sa le utilizam la
realizarea conexiunii(campurile de date) . Astfel, putem sa particularizam un mod de declarare a structurii
SQL sau sau putem sa construim tipul de interogare selectam a doua optiune prezentata:

Putem vedea toate tabelele din baza de date utilizata la realizarea conexiunii: authors, discounts,
etc. Din tabelul ales trebuie sa selectam campurile(coloanele) pe care dorim sa le afisam in site-ul
creat.Selectarea acestor campuri(coloane) se realizeaza prin simpla bifare a acestora in fereastra
deschisa.
De asemenea putem declara anumite criterii de sortare sau filtrare a datelor din campurile precizate
sau putem folosi anumite optiuni avansate apasand butonul Advanced prezent in dreapta ferestrei
pentru prezentarea campurilor:

Apasam butonul Next.
Putem in acest moment sa testam interogarea(datele ce urmeaza a fi afisate) apasand butonul Test
Query.Datele vor fi afisate in fereastra de mai sus ce initial era goala. Sub buton sunt preizate campurile
ce au fost anterior selectate si tabeul din care fac parte, pentru a putea fi verificate de utilizator:

125

Apasam butonul Finish.


Am ajuns din nou in punctul in care trebuie sa alegem o sursa de date pe care initial nu o aveam
dar pe care am creat-o in etapele descrise anterior.Apoi trebuie selectat un camp ce va fi afisat in cadrul
paginii web, camp ce poate fi selectat din lista de campuri alese anterior:

Apoi apasam butonul OK.
Este indicat sa folosim doua campuri diferite: unul pentru afisarea propriu-zisa si unul pentru
indexarea datelor din primul camp.
In acest moment in Expression Web se observa faptul ca am creat o sursa de date SQL(tip baza de
date) al carei cod se afla acum introdus in codul site-ului avand precizate toate caracteristicile alese
anterior :

Se observa adaugarea si a unui fisier web. Config, si dand dublu clic pe acesta se observa afisarea
unui flux al conexiunii ce contine numele conexiunii, si caracteristicile sale:

Iar daca ne plasam in fereastra din dreapta la categoria ASP.NET Connections observam ca
valoarea s-a schimbat din 0 in 1 si a aparut obiectul testConnection creat anterior:

126


Tot ce a mai ramas acum de facum este sa vizualizam pagina realizata intr-un browser web.
Bineinteles,trebuie mai intai salvat site-ul intr-o locatie aleasa de dumneavoastra cu extensia
.aspx.Dand dublu clic pe pagina, browser-ul va afisa urmatoarea pagina:

Se observa aparitia casetei in care se prezinta datele pe care le-am selectat din tabela bazei de date
.Aceasta lista creata este conectat acum la baza de date, orice modificare adusa acesteia
reflectandu-se asupra datelor prezentate in pagina web.

4.2. Corelarea datelor

Prin corelarea datelor intelegem afisarea
detaliilor privitoare la o persoana sau un obiect atunci
cand numele acestuia a fost selectat dintr-o lista ce
reprezinta o conexiune cu o baza de date existenta.
Prin urmare, pastram toate elementele din
sectiunea precedenta, tinand minte ce campuri am
folosit in cadrul elementului DropDown List, la partea
de alegere a sursei datelor si a campurilor ce vor fi
afisate si a celor ce vor indexa afisarea. Pe scurt,
trebuie sa retinem numele celui de al doilea camp
folosit(in exemplu au_id):

Primul lucru pe care il facem este sa bifam
optiunea Enable Auto PostBack ce permite serverului
sa actualizeze selectia realizata(adica sa isi dea seama
ca la un moment dat am selectat numele Ionescu si nu
Marin cum era la inceput):

127


Pentru a afisa detaliile referitoare la o persoana utilizata
elementul Details View din subcategoria Data, prezenta in dreapta
spatiului de lucru:

Details View, dupa cum suna si numele, va oferi detalii
despre elementul ce va fi selectat de utilizator folosit lista de derulare
configurat anterior.


Plasam lista detaliata intre lista de derularea si SQL
DataSource, astfel incat detaliile sa fie afisate sub numele selectat, si
nu deasupra sa.


In continuare trebuie sa
specificam o sursa de date pe care sa o
utilizam la realizarea legaturii si la
prezentarea amanuntelor:




Selectam New
DataSource>alegem Categoria Database>OK:











Alegem conexiunea realizata anterior, nefiind nevoie de declararea unei noi conexiuni cu noi
caracteristici>Next.
Selectam campurile(coloanele) din baza de date care vor fi utilizate si eventual afisate si apoi
selectam clauza WHERE:

Clauza WHERE permite declararea unor conditii pe baza
carora sa fie afisate anumite tipuri de date.

128

La categoria Column alegem campul retinut(al doilea din


DropDown List), la Operator alegem =, la Source alegem
Control si la Control ID(adica coloana in functie de care sa se
faca afisarea) alegem DropDown List1 si apasam butonul
Add>OK>Next:
Odata cu adaugarea criteriului de afisare se observa si
setarea parametrilor folositi la legatura cu baza de date:


Se observa faptul ca majoritatea clauzelor de
selecatre folosite corespund sintaxei unei baze de date
obisnuite.

Apasam butonul Test Query si daca dorim sa
obtinem informatii valide trebuie sa declaram o valoare ce
apare in baza de date.
Apasam butonul Finish.
In acest moment observam ca in pagina web si-a facut aparitia
un tabel ce contine toate campurile pe care le-am selectat din baza de
date:

In dreptul fiecarui camp apare simbolul abc semn ca nu am
facut setari suplimentare legate de afisarea datelor si pe toate le
recunoaste drept siruri de caractere.





Pentru formatarea afisarii dam clic pe sageata corespunzatoare
listei si alegem optiunea
Autoformat:













Se observa aparitia unei casete de dialog ce permite alegerea unui stil dintre cele prezentate,
avand in partea dreapta si posibilitatea de a vizualiza modul de afisare ales:











129





Daca alegem optiunea Edit Fields vom putea
modifica pentru fiecare camp(coloana) in parte:
-numele acesteia
-daca e vizibil sau nu

















Salvam pagina si o vizualizam in browser:

Odata cu schimbarea numelui din bara de selectie se vor schimba si detaliile afisate mai jos.





















Modulul V Adobe Dreamweaver CS4

130


Introducere - caracteristici
Adobe Dreamweaver CS4 este un binecunoscut web editor commercial care-i permite s proiectezi, s
construieti i s administrezi site-uri web complexe. Editorul este de tipul What-You-See-Is-
What-You-Get , adic Ceea Ce vezi este ceea ce primeti, ceea ce nseamn c v putei crea pagina web
vizual i orice ai vedea pe ecran n timp ce proiectezi este ceea ce vei obine atunci cnd site-ul dvs. este
ncrcat.
Dreamweaver face o treab foarte bun de a genera cod care respect standardele de pagini
web. Aceasta nseamn c site-ul dvs. nu se va distruge n versiunile mai noi de browsere web.

1. Interfaa aplicaiei
1.1. Examinarea suprafeei de lucru
Interfaa acestei aplicaii face uoar proiectarea i administrarea att site-urilor simple ct i complexe.
Proiectanii pot insera cu uurin elemente n pagin prin drag and drop, iar dezvoltatorii pot lucra direct
cu codul surs al paginii, dramweaver furniznd sintaxa corect.
Dreamweaver CS4 face uoar personalizarea spaiului de lucru, oferind opt layout-uri predefinite i se
pot schimba aceste workspace-uri prin meniul pop-up:

Fereastra Document
Toate spaiile de lucru ofer aceleai elemente, doar c sunt organizate altfel (unele afiate i
altele ascunse n funcie de activitatea desfurat). De exemplu fereastra Document afieaz implicit i
panoul cu proprieti:


Workspace-ul App Developer mparte modul de vizualizare design cu cel code:



Se poate afia fereastra document n acelai timp cu panourile i cu codul paginii:

131



Se poate crea un workspace propriu:



Fereastra document este cea mai important fereastr, prin intermediul acesteia se adaug elementele
n pagin:


Dreamweavar folosete tab-uri pentru a-i organiza paginile, aflate n partea de sus a ferestrei
ncepnd cu partea stng spre dreapta. n partea dreapt a ferestrei se afieaz calea complet a
paginii web. n partea de jos a ferestrei ncepnd cu stnga se afieaz tag-urile limbajului HTML,
continundu-se cu instrumentele de selecie, mn, zoom.
Modurile de vizualizare ale documentelor sunt design, code, split.
Modul code permite editarea codului:

132



Aplicaia coloreaz tag-urile astfel nct s se fac diferena ntre ele, de asemenea ea furnizeaz
sintaxa tag-ului dac se tasteaz cteva litere ale tagului sau pune la dispoziie lista cu tag-uri.



Se pot vizualiza dou documente diferite n aceeai fereastr, de exemplu un fiier de tip CSS i
o pagin web pot fi afiate prin mprirea ecranului n dou:

Deci se poate lucra cnd n una cnd n cealalt.
1.2. Meniuri
1.2.1.Meniuri derulante
Unii prefer s utilizeze comenzi din meniuri, alii scurtturile de la tastatur, iar alii prefer s
dea clic pe pictograme. Meniurile File i Edit sunt standard pentru majoritatea programelor.
Meniul File conine comenzi de deschidere, salvare, import i export de fiiere. Meniul Edit
conine comenzile Cut, Copy i Paste, alturi de comenzile Find and Replace i comanda Preferences.
Meniul View activeaz i dezactiveaz vizualizarea coninutului seciunii de antet(head); a
elementelor invizibile; a straturilor, tabelelor i limitelor cadrelor; a barei de stare i a hrilor de imagine.
Meniul View are, de asemenea, comenzi de activare a riglei i a grilei, de executare a plug-in-urilor i
pentru afiarea unei imagini de trasare.

133

Meniul Insert este aproape echivalent cu bara de inserri. Meniul Modify v permite s modificai
proprietile obiectului selectat la un moment dat. Comanda Prevent Layer Overlaps (prevenirea
suprapunerii de straturi) este i ea poziionat n meniul Modify >Arrange.
Meniul Text v ofer acces la mai multe modaliti de finisare a aspectului textului din pagina
Web. Cel mai important pentru cei care scriu cu greeli este c meniul Text conine comanda Check
Spelling (verificarea ortografiei). Meniul Text dubleaz multe din proprietile disponibile n fereastra de
inspectare Property. Putei indenta un text, crea o list i modifica proprietile fontului. Meniul
Commands ofer comenzi utile, cum ar fi Clean Up HTML (curarea codului HTML) i Clean Up Word
HTML (curarea cuvintelor din codul HTML).
Putei nregistra i reda o animaie sau putei formata i sorta un tabel. Putei configura o schem
de culori i automat putei lansa Macromedia Fireworks pentru a optimiza o imagine.
Meniul Site gzduiete comenzile corespunztoare site-ului. Meniul Windows lanseaz toate
panourile i ferestrele de inspectare Dreamweaver.
Alturi de legturile la fiierele help pentru HTML, meniul Help conine comenzi prin care v
nregistrai online pachetul software Dreamweaver. Este util s dai comanda About Dreamweaver dac
trebuie s aflai ce versiune de Dreamweaver rulai sau seria licenei.
1.2.2. Meniurile contextuale
Exist mai multe ci de accesare a proprietilor obiectelor din Dreamweaver. Meniurile
contextuale reprezint una dintre opiunile disponibile. Aceste meniuri apar cnd efectuai clicdreapta pe
un obiect din fereastra Document. Coninutul meniului depinde de obiectul pe care ai dat clic.
Obiecte invizibile
Unele obiecte pe care le inserai n pagina Web nu sunt proiectate pentru a putea fi vzute.
Deoarece Dreamweaver este un instrument de proiectare WYSIWYG, Macromedia a gndit un mod de a
vizualiza obiectele invizibile de pe pagina Web. Cum putei vizualiza obiecte invizibile, precum ancorele cu
nume i formularele de pe pagina Web? Selectai comanda Invisible Elements din meniul View.
Activnd comanda Invisible Elements, Dreamweaver va arta un contur rou interrupt pentru a
reprezenta un formular i marcaje care reprezint ancore cu nume (arat precum nite mici ancore pe un
suport auriu). Selectai marcajele i vizualizai sau editai n fereastra de inspectare Property proprietile
obiectului pe care l reprezint.
Sistemul Help
Una dintre cele mai uoare metode de a obine informaii despre un anumit subiect este s
lansai sistemul de ajutor contextual. Cnd avei un obiect selectat (i i putei vedea proprietile n
fereastra de inspectare Property), efectund clic pe pictograma Help din fereastra de inpectare Property,
vei ajunge direct la informaia despre proprietile acelui obiect.
Fereastra Proprieti(fereastra de inspectare)
Aceast fereastr se afieaz pentru elemental current selectat din pagin:

n Dreamweaver CS4 exist dou moduri de vizualizare a acestei ferestre: CSS i HTML.
Vizualizarea CSS permite modificarea acestora n timpul activitii:

Dar aceasta nu e valabil pentru toate elementele.
1.2.3. Panouri
Acestea se afieaz vertical n partea dreapt a ferestrei. Fiecare grup de panouri
conine unul sau mai multe panouri organizate ca i tab-uri. Pentru accesa comenzile
panoului se apas pe butonul din imagine:




134

Avnd ca efect:

Fiecare panou are un meniu cu opiuni n colul din dreapta sus:


2. Crearea unei pagini web

Se foloseste meniul Create New optiunea HTML:



2.1. Proprietile paginii sau site-ului web
Aceste proprieti ale paginii sau site-ului se acceseaz prin meniul Modify opiunea Page
Properties, n care se poate seta pentru toate paginile site-ului fie culoarea fundalului, fontul,
dimensiunea textului din pagini, fontul sau culoarea link-urilor vizitate sau nevizitate.

135



2.2. Previzualizarea paginii web

Aceasta se poate realize n mai multe feluri, fie cu tasta F12, fie cu meniul File opiunea
Preview in browser, fie folosind butonul din bara de butoane:


Dac se dorete adugarea altui browser se apas butonul Add browser din fereastra:


Cum se creeaz o pagin Web cu dou coloane i cu antet i subsol
Vom crea o pagin web cu 2 coloane, care este
un lazout des ntlnit, deoarece una din coloane conine
meniul de navigare al site-ului, n timp ce coloana
cealalt va avea coninutul principal.
n momentul n care se creeaz o pagin web se
folosete meniul File opiunea New avnd ca efect
urmtoarea fereastr:
Se va alege din fereastr opiunea "2 column
liquid, left sidebar, header and footer", n partea stng
a aceleiai ferestre se alege opiunea CSS i apoi se va
alege din partea dreapt Create New File, ceea ce are
ca efect plasarea informaiilor de control a aspectului paginii dvs. de web ntr-un fiier separate. Cnd ai

136

terminat cu toate opiunile se alege butonul Create, urmnd o fereastr de dialog cu "Save Style Sheet
File As", se accept numele implicit i locaia prin simpla apsare a butonului Save, astfel crendu-se o
pagin web cu 2 coloane.
Dreamwaver afieaz uor diferit layout-ul n funcie de ct de mare este rezoluia monitorului.
Dac rezoluia monitorului este mare, Dreamwaver acioneaz n modul Split, care ar putea
indica codul brut al paginii web n jumtatea de sus a ferestrei i n jumtatea de jos partea de design.
Dac rezoluia este mic Dreamwaver va ncepe prin modul Design.
Dac cumva este n modul Split, pentru a se trece la design se acceseaz meniul View
opiunea Design.
2.3. Formatarea caracterelor i a paragrafelor
Paginile web nu seamn cu editoarele de texte. Prin reeaua Internet pagina voastr web este
vzut de ceilali folosind calculatoarele lor personale i nu pe ale voastre, este posibil ca vizitatorii s nu
aib aceleai fonturi pe care vrei s introducei voi, de aceea rezultatul nu se va vedea pe calculatorul
lor, de aceea este indicat s se foloseasc un subset de fonturi pentru site-urile web(Verdana, Arial,
Helvetica, sans-serif, pe lng acestea Dreamwaver mai are cteva).
Fonturile pot fi setate folosind meniul Format opiunea Font, pe lng fonturile disponibile se
mai pot crea altele folosind opiunea Edit font list.
nainte de a schimba fontul caracterelor este bines tii cum lucreaz Dreamwaver pentru
aceste operaii.
Dreamwaver folosete tehnologia Cascading Style Sheets sau "CSS" pentru a realiza lucruri care
afecteaz aspectul paginii web. De exemplu dac se dorete schimbarea fontului pentru exemplu de
companie, nainte de apariia CSS-ului trebuia cutat n pagin peste tot aceste cuvinte i schimbat
fontul, dar CSS permite s eticheteze toate apariiile acestor cuvinte cu un nume descriptive, de exemplu
companiamea, apoi se asociaz fontul dorit pentru eticheta companiamea o singur dat n site, adic
ceea ce se numete style sheet, de ci cu os ingur operaie toate prile din site care conin eticheta
companiamea vor fi schimbate cu fontul dorit, iar dac mai trziu se dorete schimbarea acestuia, n style
sheet se modific fontul. Aceste etichete de fapt se numesc clase.
Pentru modificarea fontului ntr-o pagin web, acesta se ncarc prin aplicaia Dreamwaver, se
selecteaz textul dorit, se alege meniul Format opiunea Font, va aprea un submeniu cu o list a
fonturilor, se selecteaz fontul dorit i o fereastr de dialog numit "New CSS Rule".
Valorile implicite din fereastra de dialog a "New CSS Rule" deping de ceea ce ai selectat, dac
sunt selectate cteva cuvinte dintr-un paragraf atunci n cmpul "Selector Type" se va afia "Class (can
apply to any HTML element)" i "Selector Name" va fi gol. Dac sunt selectate unul sau mai multe
paragrafe "Selector Type" va avea implicit "Compound (based on your selection)" i "Selector Name" va
avea ceva asemntor cu ".twoColLiqLtHdr container mainContent p".
Nu conteaz ce a fost selectat dinainte, dar se alege n "Selector Type" opiunea "Class (can
apply to any HTML element)", iar "Selector Name" va fi gol, aici trebuie introdus un nume al clasei care
s descrie blocul de text. Acest nume trebuie s nceap cu o liter a alfabetului, nu trebuie s conin
semen de punctuaie sau spaiu. Dup aceea se caut cmpul "Rule Definition" i se selecteaz opiunea
"twoColLiqLtHdr.css", apoi se finalizeaz prin apsarea butonului OK.

2.3.1. Schimbarea fontului pentru alte piese de text
Procedura de schimbare a fontului pentru alte piese de text n restul documentului depinde de
ceea ce vrei s schimbai.
S presupunem c se dorete un anumit font pentru paragrafele cu descrierea unui produs,
pentru aceasta se creeaz o etichet folosind instruciunile de mai sus, apoi cand se adaug un nou
produs paginii i se vrea ca acest text s aib acelai font se selecteaz textul i se vizualizeaz panoul cu
proprieti:

137

Se poate vedea n acesta cmpul cu Class, se d click pe lista


derulant a acestui cmp pn cnd se gsete numele etichetei create de
dvoastr, care se va selecta, iar textul selectat va fi afiat cu fontul
respective.
Frumuseea CSS ului vine din faptul c dac se dorete
schimbarea fontului la toate bucile de text care au folosit o anumit
clas, atunci e suficient s se schimbe fontul la una singur din pagin i
toate prile de text care impart aceeai clas se vor schimba. Pentru
aceasta se poziioneaz cursorul pe textul ce trebuie schimbat(una din
locaii) i se caut opiunea "CSS STYLES" din meniul Insert :
Cnd se acceseaz acesta se va vizualiza fereastra asemntoare
cu cea de mai sus, aici se localizeaz cmpul Font-family, urmnd a se
schimba n fontul dorit.
Cum s schimbi dimensiunea fontului
Dac se dorete schimbarea dimensiunii pentru o parte mic de text, aceasta se va selecta i se
va accesa panoul de proprieti:

Aici se localizeaz cmpul Size care implicit e setat la 100%, aici se va
introduce dimensiunea dorit i unitatea de msur dorit. La apsarea tastei
enter va aprea fereastra "New CSS Rule", unde se fac operaiile de mai sus. Dac
se dorete schimbarea dimensiunii pentru alte buci de text se va folosi butonul
HTML, unde se va alege clasa dorit pentru textul respectiv.
Se mai poate folosi opiunea "Text" din meniul Insert pentru a schimba
att fontul ct i dimensiunea fontului.
Cum s schimbi culoarea textului
Dac se dorete schimbarea culorii unui text care are dj aplicat un stil
CSS, se va folosi panoul cu "CSS STYLES":


i se va schimba culoarea de aici.
Dac textul nu are nici un stil aplicat se va folosi butonul CSS i butonul negru de lng Size
pentru culoare, deschizndu-se o fereastr cu culori.
Folosirea lui BOLD i ITALIC
Dac se dorete folosirea bold-ului i italic-ului pentru un text, acestea se gsesc n panoul de
proprieti:

138

Sau se mai pot folosi combinaiile de taste folosite n editoarele de texte (ctrl+b, ctrl+i).
Dup ce s-au fcut toate modificrile, se vor salva, folosind meniul File opiunea Save ALL,
astfel se va salva pagina de home i implicit paginile css.
Folosirea listelor i a indentrii
Se folosete panoul de proprieti:


Cum se poate configura site-ul dvoastr cu Adobe Dreamweaver CS4
Definirea unui site nou
Se pornete aplicaia i se deschide o fereastr care seamn cu urmtoarea. Aspectul real al
ferestrei va fi uor diferit n funcie de sistemul de operare folosit.

n partea de sus a ferestrei este o bara de meniu cu cuvintele "File Edit View Insert Modify
Format Commands Site Window Help". Acest meniu ne permite s modificm diferite caracteristici ale
aplicaiei.
Pentru a crea un site, trebuie folosit meniul Site din bara de meniuri , apoi opiunea New Site,
va aprea o csu de dialog avnd n bara de titlu "Site Definition for Unnamed Site 2", numrul care
nsoete cuvntul site poate fi diferit dac ai folosit Dreamweaver pentru a modifica alt site, asta nu
conteaz, deoarece se poate schimba ulterior.

Dac ar fi s ne uitm la partea de sus a casetei de dialog, vom vedea dou butoane: "Basic" i
"Advanced". Este indicat s fie folosit basic. n partea din mijloc a csuei este un camp deasupra "What
would you like to name your site?". Aici se introduce numele site-ului web, dac nu tii cum vrei s-l
numeti n acest moment i ai deja un domeniu, se poate introduce numele domeniului.

139


Sub nume este un camp n care se introduce adresa site-ului. Dac numele site-ului este
exemplu.com, adresa acestuia va fi http://www.exemplu.com/ fr ghilimele. Apoi se apas butonul
Next. n urmtoarea fereastr se accept implicit "No, I do not want to use a server technology" i se
trece mai departe folosind butonul Next . Urmtoarea fereastr se refer la locul n care vor fi salvate
fiierele pe care le vom crea, numele directorului trebuie s fie acelai cu numele site-ului, ar trebui s v
pstrai mereu o copie a site-ului pe computerul dvoastr, dac nu tii ce s facei acceptai opiunea
implicit i trecei mai departe cu butonul Next , va aprea o fereastr cu "How do you connect to your
remote server?", se selecteaz opiunea FTP .

Vei avea nevoie de un nume de utilizator (login) folosit pentru deschiderea unei sesiuni de
lucru - i o parol (Password) pentru accesul la serverul FTP. Numele standard de login anonymous
(utilizator anonim), adesea utilizat pentru a descrca fiiere prin Internet, nu va funciona probabil la
ncrcarea fiierelor pe un site Web. Trebuie s deschidei o sesiune de lucru ca un utilizator cu acces i
permisiune de a prelua i a pune fiiere n directoarele care vor gzdui site-ul dumneavoastr Web.
Dreamweaver salveaz automat parola dumneavoastr. Dac au i alii acces la Dreamweaver pe
calculatorul dumneavoastr i nu dorii ca ei s aib acces la contul dumneavoastr FTP, debifai caseta
de validare Save.
Selectai butonul Test Connection pentru a verifica dac ai introdus corect datele i dac v
conectai la serverul FTP. Putei depana problemele conexiunii FTP folosind FTP Log ce se gsete n
submeniul Results al meniului Window. FTP Log conine lista cu motivele unei conexiuni euate. De
exemplu, dac nregistrarea din jurnalul conexiunii spune c parola a fost incorect sau c directorul
indicat de dumneavoastr nu exist, le putei modifica n definiia site-ului i putei ncerca din nou.

140

Dac suntei n spatele unui program de protecie


firewall (parafoc) sau folosii un server proxy, ai putea avea
dificulti cu conexiunea FTP. Consultai administratorul de
reea n legtur cu atributele care trebuie alese cnd
configurai legtura FTP. Bifai caseta de validare Use Firewall
(n Advanced selectai Remote Info) dac accesul la Internet se
face printr-un program firewall. Configurai portul i gazda
firewall n preferinele Dreamweaver. (La Category selectai
Site.) Dac avei o legtur lent la Internet, intervalul de timp
de expirare implicit acordat pentru FTP (timeout) ar putea fi
prea scurt, ceea ce ar ntrerupe conexiunea FTP prea curnd.
Putei crete acest interval n preferinele din Site.
n final apare butonul Done prin care se finalizeaz crearea site-ului.
n panoul Files apare directorul rdcin definit:

3. Organizarea activitii
Introducere n Home Page
Prima pagin pe care o vei crea va fi pagina Home, care este pagina principal a site-ului. Este
pagina pe care vizitatorii site-ului o vor vedea n momentul n care vor introduce adresa site-ului n
browser.
Avnd n vedere c funciile paginii de start sunt initial aproape ca ua din fa a site-ul dvs,
trebuie s conin informaii despre site, legturi ctre pagini importante ale site-ului. Prin aceast pagin
trebuie s oferii vizitatorilor o idee despre ce s se atepte n site.
Cum s proiectezi pagina Home
n fereastra creat cu 2 coloane, exist o bar orizontal numit Header, aici este locul unde
se va scrie i va fi vizibil numele site-ului. Deasupra antetului este seciunea Title n care va aprea
numele site-ului, acesta este un cmp intern, el nu va aprea n partea de coninut a site-ului. Fereastra
arat n felul urmtor:

Se va terge Header i Main Content i se va trece ce text se dorete, n schimb n partea de
sidebar nu se schimb nimic, pentru c aici se va introduce un meniu de navigare, ceea ce vom vedea
mai ncolo. La fel, n partea de jos a ferestrei se afl seciunea Footer n care se introduce textul dorit.
Dac s-au realizat toate modificrile dorite se salveaz pagina cu File opiunea Save As, trebuie ca
aceast pagin s aib numele index.html, fr spaii, cu litere mici.
Link-uri (legturi)
Adresa web a unei pagini este un tip de URL (Uniform Resource Locator). De exemplu
http://www.example.com/ este URL ul unui site web, adic acesta indic faptul c este nevoie de un
browser care s foloseasc protocolul de comunicare HTTP.
URL poate fi absolut sau relativ.
Un link absolut specific adresa complet a paginii sau fiierului pn la ultimul detaliu. De
exemplu http://www.example.com/features.html este o adres absolut. Dac pentru a accesa pagina
features.html fr a specifica adresa absolut ci o form scurt, atunci vorbim de URL relativ.
Link pe poz
Se selecteaz poza i se ncarc panoul cu proprieti:


141

Aici se afl cmpul "Link", unde se va introduce URL-ul paginii ctre care se realizeaz legtura.
Se poate alege ntre cele dou variante de URL.
Dac se dorete ca dnd click pe o poz s fie afiat poza la dimensiunea ei normal, atunci se
salveaz dou variante ale pozei, una mai mic(folosind editoare de imagini) i cea normal n dou
fiiere separate. Se creeaz link pe poza mic, ce va fi inserat n pagin, iar link-ul va fi ctre fiierul ce
conine poza la dimensiunile ei.
Dac cmpul Target va fi gol atunci pagina de legtur va fi deschis ntr-o pagin nou, site-ul
ramnnd deschis i el.
Link pe text
Se selecteaz textul care va fi link i se vizualizeaz panoul cu proprieti, de unde se folosete
butonul HTML dac nu a fost dj accesat, aici apare un cmp Link i se introduce adresa paginii sau
site-ului ctre care se dorete legtura. Dac link-ul este ctre o pagin a site-ului se poate specifica URL
ul relativ, dac este ctre alt site, se va specifica URL-ul absolut.
Link ctre fiier
Dac este nevoie de legtur ctre un fiier PDF, PowerPoint, Word, atunci aceste fiiere trebuie
deschise cu programele lor sau browser-ul va cere s salvai fiierul pe unitatea de HDD. Pentru a crea
acest link este nevoie ca fiierul s fie salvat n directorul site-ului, apoi se selecteaz textul sau imaginea
i se seleceteaz fiierul spre care se realizeaz legtura.
Pentru link-ul ctre o prezentare PowerPoint, ar trebui salvat fiierul ca i pagin web folosind
aplicaia PowerPoint i apoi s se realizeze link-ul.
Link ctre email
Aceste link-uri sunt deschise automat cu programul implicit pentru email i au o adres de mail
vid. Pentru a crea acest link se folosete meniul Insert, opiunea Email Link n care se introduce
numele link-ului i adresa de email ctre care se face trimiterea:



Sau se mai poate folosi fereastra cu proprieti:


Vizualizarea i modificarea codului HTML
Dreamweaver v ofer mai multe metode de acces la cod. Vei folosi funcia Dreamweaver de
curare a codului produs prin salvarea unui document Word ca HTML.
Examinarea vizualizrii codului
Se pot activa i dezactiva toate panourile apsnd tasta F4. Creai o nou pagin HTML de baz
n Dreamweaver, se d click pe butonul Code view (vizualizarea codului) din bara de instrumente pentru
a vizualiza codul HTML. Prima linie din cod indic versiunea de HTML folosit n pagina dumneavoastr.
Examinarea antetului i a corpului
Exist dou seciuni importante ntr-o pagin Web: head (antetul) i body (corpul). Dreamweaver
insereaz un tag <meta>:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Tagul <meta> specific setul de caractere ce ar trebui folosit de browser pentru a afia pagina.
Linia specific un set de caractere latin pentru limbile din Europa de vest. Putei stabili setul de caractere
pentru paginile Web n categoria Fonts din preferinele din Dreamweaver. Modificarea setului de
caractere va modifica acest tag <meta> pentru fiecare pagin creat n Dreamweaver.
n seciunea antet a paginii se mai afl codul JavaScript, definiiile tip Cascading Style Sheets i
alte coduri. Aflndu-v n modul Design, dac vrei s vedei o reprezentare vizual a coninutului

142

seciunii antet, selectai comanda Head Content (coninutul antetului) din meniul View. n partea de sus a
ferestrei Document se pot vedea pictograme care reprezint elementele din seciunea antet. Cnd
selectai una dintre pictograme, proprietile ei apar n fereastra de inspectare Property.
Opiunile vizualizrii codului
n vizualizarea Code meniul View -- Code Options (opiunile de vizualizare) din bara de
instrumente v permite s modificai modul n care este afiat codul. n meniul Code Options sunt
disponibile urmtoarele opiuni:
Word Wrap Grupeaz liniile codului astfel nct s l putei vedea pe tot fr a derula pe
orizontal. Aceast opiune nu schimb codul; doar l afieaz altfel.
Line Numbers Afieaz numrul de linie n marginea din stnga.
Highlight Invalid HTML Activeaz evidenierea codului care nu este valid, cel pe care
Dreamweaver nu-l nelege.
Syntax Coloring Coloreaz codul pentru ca elementele s fie mai uor de distins. Stabilii
culorile n categoria Code Coloring din preferinele Dreamweaver.
Auto Indent Face automat indentarea codului, pe baza configurrilor din categoria Code
Format (formatarea codului) a preferinelor. Dac apare o eroare de JavaScript la previzualizarea unei
pagini Web n browser, eroarea afieaz adesea numrul liniei din cod care determin problema. Pentru a
depana eroarea, vizualizai codul n fereastra de inspectare Code, cu numerele de linie afiate.
Dac facei modificri n cod n vizualizarea Code, Dreamweaver nu afieaz imediat modificrile
n fereastra Document, ci doar cnd selectai butonul Refresh (mprosptare) din bara de instrumente.
Dac introducei cod HTML care nu este valid, Dreamweaver va evidenia tagurile nevalide cu galben
strlucitor, att n fereastra de inspectare Code, ct i n fereastra Document. Cnd selectai un tag
evideniat, fereastra de inspectare Property spune c tagul nu este valid. Poate s dea un motiv pentru
care tagul nu este valid i s ofere unele indicaii despre ceea ce ar trebui fcut.
Stabilirea preferinelor de cod
Sunt trei categorii de preferine n Dreamweaver care se aplic la HTML Code Colors (culorile
codului), Code Format (formatarea codului) i Code Rewriting (rescrierea codului).
Stabilirea preferinelor de culoare a codului
Tagurile din vizualizarea Code afieaz culoarea stabilit conform valorilor din preferinele
Dreamweaver. Culoarea sintaxei (Syntax Coloring) trebuie s fie activat n meniul View Code Options
pentru a vedea codul colorat. Selectai categoria Code Colors din preferine.
Selectai tipul de cod pe care dorii s l editai. De asemenea, panoul v permite s stabilii
culoarea de fundal pentru vizualizarea codului. Pentru a alege o culoare, fie introducei o culoare n
format hexazecimal, fie folosii selectorul de culoare.
Selectai tipul de document HTML din list i dai clic pe butonul Edit Coloring Scheme (editarea
schemei de culoare). Partea stng a casetei de dialog v permite s selectai un tag i apoi n partea
dreapt s i stabilii individual o culoare. Cele mai multe taguri au culoarea implicit. Tagurile folosite
uzual, cum sunt tagurile pentru imagini (<img>) i legturi sau tagurile pentru ancore (<a>), au o
culoare proprie pentru a putea fi remarcate uor n restul codului HTML.
Pentru a schimba culoarea unui tag, selectai tagul. Selectai fie Default (implicit), pentru a aplica
culoarea implicit selectat mai sus, fie o nou culoare. Dac dorii ca ceea ce este n coninutul tagului
(cum ar fi textul unei hiperlegturi) s aib tot culoarea tagului, bifai caseta de validare Apply Color to
Tag Contents (aplic culoarea la coninutul tagului).
Stabilirea preferinelor de formatare a codului
n categoria Code Format din format Source Code, se poate stabili modul n care va crea
Dreamweaver codul. Dreamweaver indenteaz codul pentru a-l face uor de citit. Putei modifica
dimensiunea indentrii n preferine. Mai putei selecta sau deselecta opiunea prin care Dreamweaver
indenteaz codul pentru tabele i cadre.
Opiunile din Code Format se aplic doar documentelor noi create n Dreamweaver. Se poate
selecta comanda Apply Source Formatting din meniul Commands pentru a aplica aceeai formatare unei
pagini Web existente.
Dac este selectat ncadrarea (nfurarea) automat n dimensiuni (wrapping), Dreamweaver
va diviza o linie n funcie de limea coloanei introdus n cmpul After Column (dup coloan). Unele
linii pot ajunge a fi foarte lungi deoarece Dreamweaver nu va grupa liniile ce afecteaz aspectul paginii
Web.
Prin intermediul meniurilor derulante Case for Tags i Case for Attributes se pate stabili dac se
lucreaz cu litere mari sau mici pentru taguri i atribute. Dac nu dorii ca Dreamweaver s modifice tipul
de litere al tagurilor ntr-un document existent, marcai caseta de validare Override Case Of Tags i
Dreamweaver va lsa tagurile aa cum sunt.

143

Ultima configurare permite stabilirea utilizrii de ctre Dreamweaver a tagurilor <center> pentru
a centra obiectele sau a tagurilor <div> cu atributul align=center.
Standardele se ndreapt ctre tagurile <div>, dar tagul <center> a existat mult timp i este larg
acceptat att n versiunile vechi de browsere, ct i n cele noi.
Opiunile stabilite n seciunea Code Format din preferinele Dreamweaver se aplic doar
modificrilor n fereastra Document. Formatarea nu va avea loc cnd se editeaz codul HTML n fereastra
de inspectare Code.
Stabilirea preferinelor de rescriere a codului
Preferinele Code Rewriting (rescrierea codului), stabilesc modificrile efectuate de Dreamweaver
la deschiderea unei pagini Web. Dreamweaver rezolv automat anumite probleme ale codului, dar numai
dac se dorete acest lucru. Dac se dezactiveaz opiunile Rewrite Code, Dreamweaver va continua s
afieze cod nevalid care se poate corecta singur.
Opiunea Fix Invalidly Nested and Unclosed Tags (rezolv tagurile imbricate incorect i nenchise)
cere ca Dreamweaver s rescrie tagurile incorect imbricate. De exemplu, <b><i>hello</b></i> va fi
rescris ca <b><i>hello</i></b>. Dreamweaver mai insereaz taguri de nchidere care lipsesc, marcaje
de citate (ghilimele) sau paranteze unghiulare de nchidere. Opiunea Remote Extra Closing Tags
(nlturarea tagurilor de nchidere aflate n plus) i permite lui Dreamweaver s nlture orice tag de
nchidere rtcit, rmas n pagina Web.
Curarea codului HTML creat cu Microsoft Word
Pentru a salva un document Word n format de pagin Web, selectai comanda Save as Web
Page (salvare ca pagin Web) din meniul File. Word v solicit s dai un nume documentului i ataeaz
extensia de fiier .htm. Pagina care rezult are mult cod suplimentar. Cnd salvai un document Word n
format de pagin Web, verificai ca acesta s fie nchis nainte de a lucra cu el n Dreamweaver.
Dreamweaver nu va putea s-l deschid i s-l transforme n documente HTML dac este deschis
concomitent n Word.
Deschidei o pagin Web creat cu Word i dai comanda Clean up Word HTML (cur codul
HTML creat cu Word). Pentru a putea aplica efectul comenzii Clean up Word HTML paginii Web din
fereastra Document, selectai comanda din meniul Commands. Aceasta lanseaz caseta de dialog Clean
Up Word HTML.
Caseta de dialog Clean Up Word HTML apare cnd importai un document Word HTML sau
selectai Clean Up HTML from Word.

Dreamweaver ar trebui s detecteze automat versiunea de Word n care a fost creat fiierul
HTML, pe baza tagurilor adugate de Word fiierului. Mai putei alege manual versiunea din meniul
derulant Clean Up HTML from Word. Caseta de dialog Clean Up Word HTML are dou seciuni Basic (de
baz) i Detailed (detaliat). Selectai urmtoarele opiuni ale seciunii Basic:
Remove All Word Specific Markup - nltur tot codul XML din tagul <html>, tagurile meta i
tagurile de legtur din seciunea antet (head), marcajele Word XML, tagurile condiionale, paragrafe
goale i marginile. Se poate selecta fiecare dintre aceste opiuni individual, folosind seciunea Detailed.
Clean Up CSS - nltur stilurile CSS suplimentare din document. Stilurile nlturate sunt stiluri
CSS inline, atribute de stil care ncep cu mso, declaraii de stil care nu sunt CSS, stiluri CSS din rndurile
i celulele de tabele i stiluri nefolosite. Putei selecta opiunile individual folosind seciunea Detailed.
Clean Up <font> Tags - nltur tagurile <font>.
Fix Invalidly Nested Tags rezolv tagurile neimbricate corect, mai ales cele de marcare a
fontului.

144

Set Background Color v permite s specificai culoarea de fundal a paginii Web. Culoarea
implicit din Dreamweaver este culoarea alb, ffffff.
Apply Source Formatting aplic opiunile de formatare a codului pe care le-ai stabilit n
categoria Code Format din preferinele Dreamweaver.
Show Log On Completion afieaz o caset de dialog cu un rezumat al modificrilor fcute de
Dreamweaver n pagina Web. Dup ce se selecteaz opiunile din seciunea Basic sau din Detailed, se d
click pe OK. Dreamweaver cur pagina Web. Opiunile selectate vor aprea cnd se va mai selecta
comanda Clean Up HTML from Word.
Dac dorii s adugai atribute care nu apar n meniul derulant din Quick Tag Editor, folosii Tag
Library Editor (editorul de bibliotec de taguri) selectnd comanda Tag Libraries din meniul Edit. Acest
editor controleaz atributele care apar n meniul derulant de taguri.
Dreamweaver nu listeaz toate atributele disponibile, aa c ar trebui s fie unul sau dou pe
care ai vrea s le adugai.
Folosii panoul Reference pentru a cuta taguri i atribute care v intereseaz.
Apariia unui tag evideniat cu galben n pagina Web nseamn c Dreamweaver consider c
este un tag nevalid.
Dreamweaver formateaz automat codul HTML, pe msur ce se introduce de la tastatur n
fereastra de inspectare Code? Nu! Dar putei folosi comanda Apply Source Formatting n orice pagin
Web.
Inserarea de imagini
Pentru aceasta, mai nti se creeaz un folder pentru imaginile folosite n paginile web, care se
vor copia n acest director. Se va deschide pagina web n care se insereaz imaginile. Se folosete meniul
Insert opiunea Image i va aprea o fereastr de dialog n care se precizeaz locaia fiierelor de tip
imagine, dac sunt prea multe imagini de inserat, se pot vizualiza nainte de inserare prin Image
preview, cnd este totul bine se apas butonul OK, urmeaz o alta fereastr Image Tag Accessibility
Attributes n care exist cmpul "Alternate text" pentru introducerea unui text.
n partea de jos a ferestrei Dreamwaver apar proprietile imaginii:

Csuele pentru H space i V space se refer la spaiul lsat ntre text i imagine, imaginea se mai
poate alinia prin cmpul Align. Imaginii i se mai pot modifica dimensiunile.
Examinarea tipurilor de imagini: GIF, JPEG i PNG
Formatul GIF este mai bun pentru imaginile care au zone de culoare continu, de obicei
desene.
Formatul JPEG este mai bun pentru imaginile fotografice i imaginile care nu au zone continue
de culoare de exemplu, imaginile care conin un gradient de culoare.
Formatul PNG este un nlocuitor pentru formatul GIF. El accept canale alfa, care sunt foarte
utile pentru transparen.
Un program care are faciliti de optimizare de imagine este Adobe Photoshop.
Cnd este selectat o imagine apare un buton Edit (editare) n fereastra de inspectare Property.
Acest buton va deschide imaginea curent ntr-un program de grafic. Comenzile de editare mai apar n
meniul derulant contextual cnd executai clic-dreapta pe o imagine. n preferinele Dreamweaver trebuie
s configurai un editor de imagine extern. Categoria File Types/Editors (tipuri/editare de fiier) din
preferinele Dreamweaver permite asocierea extensiilor de fiiere la diferite programe externe. De
exemplu, putei asocial extensiile de fiier .jpg, .gif i .png cu Fireworks. Cnd este selectat o imagine n
Dreamweaver, apsai butonul Edit i fiierul cu imaginea se deschide n Fireworks. Facei editrile i
salvai fiierul.
Cnd v aflai ntr-un editor de imagine, putei crea o versiune cu rezoluie mai mic a imaginii la
care se face legtura, n caseta Low Src din fereastra de inspectare Property. Aceast imagine va aprea
n timpul ncrcrii iniiale a paginii Web i apoi va trece n versiunea cu rezoluia mai mare a imaginii. De
obicei, imaginea cu rezoluie mic este o gam de griuri sau o versiune mai mic a imaginii color.
Crearea unei hiperlegturi cu efect de rollover
Al treilea tip de stil este un CSS Selector. Redefinete un grup de taguri HTML n loc de unul
singur. Ai putea defini cum s arate un anumit tag de titlu doar n cadrul unei celule de tabel,

145

introducnd tagul de celul de tabel, <td>, i apoi tagul de paragraf, <p>. Pentru aceasta, introducei
toate numele de taguri n caseta Selector (td p), i apoi definii stilul.
Crearea unor hiperlegturi cu efecte de rollover redefinesc tagul de ancor (<a>) tagul folosit
de hiperlegturi. Putei defini un stil de ancor care face s se schimbe culoarea unei legturi cnd
utilizatorul are cursorul poziionat deasupra unei hiperlegturi. Pentru a crea o hiperlegtur cu efect de
rollover:
1. Creai un stil nou i selectai butonul radio de lng Advanced.
2. Meniul derulant Selector afieaz cele patru stiluri pentru legturi. Selectai selectorul a:hover
(a plana) pentru a aduga un efect de rollover tuturor hiperlegturilor din pagina dumneavoastr Web.
Dai clic pe OK.
3. Apare caseta de dialog CSS Style Definition. n categoria Type, selectai o culoare i apoi
apsai pe OK.
Pentru a vedea selectorul, creai o hiperlegtur n pagina dumneavoastr Web.

Crearea hrilor de imagini i a barelor de navigare
Adugarea legturilor la grafic folosind hrile de imagini
O hart de imagini (image map) este o imagine cu regiuni definite ca hiperlegturi.
Aceste regiuni sunt numite zone fierbini sau hotspots.
Crearea unei hri de imagini
Avnd selectat o imagine, se pot vedea n colul de jos al ferestrei de inspectare Property (cu
fereastra de inspectare Property extins) patru instrumente pentru hrile de imagini. Aceste patru
instrumente sunt utilizate pentru a defini zone fierbini pe o hart de imagini. Un instrument traseaz
dreptunghiuri, altul traseaz cercuri i altul, poligoane. Al patrulea instrument este un instrument sgeat
utilizat pentru a selecta sau a muta zonele fierbini.
Pentru a crea o hart de imagini:
1. Inserai o imagine n pagina Web. Imaginea trebuie s fie selectat pentru ca instrumentele
hrii de imagini s apar n fereastra de inspectare Property.
2. Dai hrii un nume n caseta de text Map. Numele trebuie s fie unic n lista cu alte nume de
hri ale paginii.
3. Selectai unul dintre instrumentele de desenare descrise mai jos pentru a trasa o zon
fierbinte.
4. Avnd selectat un hotspot trasat, introducei de la tastatur un URL n caseta pentru legturi,
sau dai clic pe pictograma dosar pentru a naviga la o pagin Web local. Mai putei lega un hotspot la o
ancor cu nume introducnd semnul # urmat de numele ancorei.
Adugarea unei zone fierbini dreptunghiulare
Pentru a aduga o zon fierbinte dreptunghiular, selectai mai nti instrumentul pentru
dreptunghiuri. Dai clic i tragei cu mouse-ul cursorul cruce pentru a trasa un dreptunghi care are
dimensiunile zonei fierbini pe care dorii s o creai. Cnd eliberai butonul mouse-ului, apare o caset
peste imagine. Avnd zona fierbinte selectat, introducei un URL n caseta Link din fereastra de
inspectare Property.
Pentru a muta sau a ajusta dimensiunea unei zone fierbini trebuie mai nti s selectai
instrumentul sgeat. Dai clic cu instrumentul sgeat i fie deplasai zona fierbinte n alt poziie, fie
redimensionai zona folosind reperele de manevrare pentru dimensionare.
Codul HTML pentru o zon dreptunghiular arat cam aa:
<area shape=rect coords=110,130,180,170 href=pg.htm>
n acest exemplu, colul din stnga sus al dreptunghiului este situat la 110 pixeli de partea stng
a imaginii i la 130 pixeli de marginea de sus a imaginii. Colul din dreapta jos al dreptunghiului este la
180 pixeli de stnga imaginii i la 170 pixeli de sus.
Adugarea unei zone fierbini circulare
Selectai instrumentul pentru cerc i apoi executai clic i tragei cu mouse-ul pentru a crea zona
fierbinte. Zona fierbinte este ntotdeauna un cerc perfect i nu o elips. Repoziionai sau redimensionai
zona fierbinte cu instrumentul cu sgeat.
Un cerc este definit prin trei valori: valorile x i y care definesc centrul cercului i raza cercului.
Codul HTML ce definete o zon circular arat astfel:
<area shape=circle coords=100,150,45 href=pag.htm>
Adugarea unei zone fierbini neregulate
Instrumentul pentru poligon din fereastra de inspectare Property v permite s creai orice form
dorii pentru a defini o zon fierbinte neregulat.

146

Selectai instrumentul pentru poligon din fereastra de inspectare Property. n loc s dai clic i s
deplasai mouse-ul pentru a crea forma, dai clic cte o dat pentru fiecare vrf al poligonului. Pentru a
nchide poligonul, selectai instrumentul cu sgeat. Un poligon este definit de un numr infinit de
coordonate x i y, fiecare reprezentnd unul dintre vrfurile create printr-un clic cu instrumentul poligon.
Codul HTML pentru un exemplu de zon fierbinte poligonal arat cam aa:
<area shape=poly coords=8,14,32,33,29,112,130,99,140,130 href=despre.htm>
Poligonul definit n codul HTML este alctuit din 5 puncte, aa c exist 5 perechi de coordonate
x i y.
Alinierea zonelor fierbini
Mai nti, trebuie s selectai zonele fierbini pe care dorii s le aliniai. Pentru a selecta toate
zonele fierbini dintr-o hart de imagini, folosii combinaia de taste Ctrl+A. De asemenea, putei da
Shift+clic pe zonele fierbini pentru a le aduga la selecie. V putei da seama cnd sunt selectate aceste
zone deoarece putei vedea reperele de manevrare pentru redimensionare. Submeniul Align al meniului
Modify conine comenzi de aliniere a zonelor fierbini.
Putei alinia mai multe asemenea zone fierbini la stnga, dreapta, sus sau jos. Putei aduce mai
multe zone fierbini la aceeai nlime cu comanda Make Same Height sau la aceeai lime, cu comanda
Make Same Width.
Zonele fierbini se pot suprapune unele cu altele. Zona care este deasupra (de obicei cea creat mai
nti), indiferent care este ea, va fi legtura fcut la executarea unui clic pe suprafaa de suprapunere.
Putei schimba ordinea zonelor fierbini cu comenzile aflate n submeniul Arrange al meniului
Modify.
Pentru aduga un grafic la o hart trebuie s te asiguri c este selectat, iar instrumentul pentru
hotspot este localizat n partea stng jos a ferestrei de proprieti. Se d click pe butonul rectangular n
cmpul Map:



Apoi se trage cu mouse-ul pn n suprafaa unde hotspot-ul trebuie s acioneze, adic aria pe
care utilizatorul o folosete pentru a accesa legtura cu cealalt pagin. Hotspotul este afiat ca un ptrat
galben-albastru, dar n momentul publicrii acesta nu apare. Dup ce s-a introdus hotspotul se afieaz
fereastra de proprieti pentru a se defini acestea:



n care se introduce link-ul, dac e nevoie fereastra target, textul alternativ i un nume pentru
map. Atunci cnd se d un nume hrii, de fapt se d unui singur hotspot, deci fiecare hotspot are un
nume unic.

Inserarea fiierelor media speciale
Multimedia
Ce este multimedia ?
Cuvantul multimedia provine de la cuvintele multi (mai multe) si media (medii de
transmitere si prezentare a informatiilor).
In viata cotidiana aveti de multe ori ocazia sa intrati in contact cu aceste medii de transmitere a
informatiilor: ziare si reviste (imagini si text), televizorul si combina muzicala (video si audio). Multimedia
nu face altceva decat sa combine toate aceste medii, in computer-ul dumneavoastra.
Astazi multimedia a devenit mai mult decat o obisnuinta, a devenit o necesitate si o moda.
Majoritatea computerelor asamblate contin placi de sunet si CD-ROM-uri (sau DVD-uri), unele chiar

147

accesori mai complexe (acceleratoare grafice, tunere TV etc). Instaland aceste componente pe un
calculator destul de performant veti putea avea toate informatiile in biroul dumneavoastra, de la simplele
texte si imagini, pana la animatii, sunete si aplicatii interactive. 49547ikh45oxk1c
Imagine si text
Cele doua medii sunt intalnite peste tot, pornind de la publicatiile foarte vechi si pana la
enciclopediile computerizate, interactive, de ultima ora. Imaginile au fost folosite ca mediu de prezentare
a informatiilor cu mult inainte de inventarea primelor scrieri, sub forma artei preistorice.
Imaginile si textul sunt cele mai simple, dar tot odata si cele mai cunoscute si folosite medii,
textul transmitand informatia propriu-zisa, imaginea fiind o completare, reprezentata prin scheme,
grafice, fotografii, ilustratii, desene etc.
Primele texte memorate de sisteme computerizate au fost scrise in format ASCII, un sir de
caractere, care au o marime, font si stil constant. Odata cu dezvoltarea PC-urilor s-au realizat editoare de
texte avasate care aveau mult mai multe facilitati si obtiuni. kx547i9445oxxk
Imaginea sta la baza realizarii filmelor si animatiilor, care nu sunt altceva decat imagini afisate la
o rata foarte ridicata (20-30 pana la 50 de frame-uri/sec), creand iluzia miscarii.
Desi din punct de vedere tehnologic si social suntem la limita dintre real si virtual, aceste doua
medii clasice vor fi folosite pentru un timp foarte indelungat...
Sunet si muzica
Inregistrarea si transmiterea sunetelor a fost devenit posibila in urma cu aproape o suta de ani,
insa in ziua de astazi s-a ajuns la limite nemaiimaginate.
Muzica care era stocata in trecut pe placi si pe casete audio nu avea nici pe departe o calitate
suficienta, reproducerea si inregistrarea ei fiind deasemenea scumpe. Astazi, folosind multimedia, sase
ore de muzica de inalta calitate pot fi stocate pe un CD-ROM obisnuit (de 650 MB). Acesta facilitate
consta in formatul care poarta numele de MP3, destinat in special comprimarii pieselor muzicale, prin
eliminarea sunetelor de inalta frecventa, care nu sunt perceptibile de urechea umana si o arhivarea de tip
ZIP. Astfel, dupa eliminarea a mai mult de 85-90% din fisierul wave initial, melodia pare a ramane
aproape neschimbata. Programele care convertesc muzica in format MP3 se gasesc oriunde la preturi
foarte scazute, prin intermediul lor facilitandu-se pirateria de muzica pe Internet.
Desi este cea mai des folosita, muzica nu este singura utilizare a tehnologiile avansate pentru
inmagazinare a sunetelor: reproducerea diferitelor sunete (din natura, produse de anumite aparate etc.),
vorbirea dintre doua sau mai multe persoane, sunete produse de computer pentru a atentiona utilizatorul
in legatura cu anumite actiuni (de obicei primejdioase).
O utlizarea foarte frecventa a sunetelor este in materie de efecte speciale. In filme, de obicei
actiune si SF, unde se doreste obtinerea unor zgomote mai ciudate sau speciale, care sunt foarte greu
sau imposibil de realizat folosind metodele clasice, ele se proceseaza pe computere performante, cu
ajutorul unor programe dedicate. Sunetele realizate astfel sunt de obicei insotite de efecte speciale
vizuale, formand secvente foarte complexe, rupte de firul realitatii pe care o cunoastem astazi: lupta
dintre doua flote de distrugatoare stelare, monstri robotizati sau de origine extraterestra, doua submarine
care sunt pe punctul de a declansa un razboi nuclear etc.
Folosind cateva dintre programele ieftine sau gratuite, care le puteti obtine dese ori de pe
Internet, puteti realiza propriile efecte speciale sau piese muzicale, fara prea mari eforturi. Daca pe
vremuri pentru a scoate pe piata un album de succes trebuia sa cheltuiesti cateva zeci de mii de dolari
astazi totul se poate rezolva mult mai simplu cu doar cateva sute de dolari: iti faci rost de un program
frumos pentru muzica (tehno-house, hip-hop, dance, depinde de stilul pe care il preferi), inveti cum se
utilizeaza, faci cateva teste si incepi sa lucrezi din greu la micul tau proiect muzical. Dupa ce l-ai terminat,
il poti expune gratuit la o galerie on-line, beneficiind astfel de toata reclama de care ai nevoie pentru a te
promova.
Film si animatie
Filmele video si animatiile sunt doua medii asemanatoare, care in ciuda diferentelor minore se
contopesc intr-unul singur. Ele au la baza aceeasi tehnologi: redarea cadrelor asemanatoare la o rata
ridicata pentru a creea iluzia miscarii. Filmele si animatia sunt deseori insotite de sunet, pentru a parea
mai reale. Rata de cadre (frames) folosita cel mai des in multimedia este 25-30 fps (frames per second).
Cu cat numarul de cadre pe secunda este mai mare cu atat calitate filmului creste, dar si resursele
necesare redarii filmului trebui sa fie mai puternice.
Diferenta dintre filme video si animatie specificata mai sus nu este mare: filmele sunt provenit din
realitate si sunt inregistrate cu ajutorul camerelor video digitale, in timp ce animatiile sunt create cu
ajutorul unor aplicatii software specilizate (3D MAX, Fractal Design Poser, Lightwave, Cinema 4D XL ,
RayDream Studio etc) sau sunt rezultatul muncii manuale, cu creionul si hartia (in cazul desenelor

148

animate mai vechi). Anumite secvente din filmele noi sunt rezultatul prelucrarii computerizate a imaginilor
inregistrate in realitate.
Utilizatorii computerelor si ai multimediei prefera de obicei filmele si animatiile ca medii de
transmitere a informatiilor pentru ca ele stimuleaza simultan, in timp real, atat vazul cat si auzul, fiind
foarte usor de perceput. Acesta este motivul pentru care articolelor importante din enciclopediile noi le
sunt adaugate, pe langa text, poze si sunete animatii sau filme.
Filmele necesita un spatiu de stocare enorm, motiv pentru care cercetatorii au incercat sa
realizeze formate de comprimare a acestora. Astfel au luat nastere primele formate care reduceau o mare
parte din marimea animatiei prin eliminarea informatiei nefolositoare, dar odata cu acesta si calitatea ei,
cum ar fi MPEG si DAT. Aparitia DVD-urilor a determinat realizarea unui format de o calitate mai ridicata,
numit MPEG 2. Ultima metoda de comprimare a informatiei audio/video este numita MPEG 4. Desi
raportul dintre calitate si marime al filmelor salvate in acest format din urma este optim, el nu a avut
parte de o promovare spectaculoasa. Se asteapta in curand aparitia ultimului format de compresie: MPEG
7.
Efectele speciale
Realizarea efectelor speciale este considerata cel mai profitabil si cel mai interesant domeniu al
multimediei. Ea a aparut prima data in cinematografie sub forma exploziilor bine plasate si a trucurilor
care sa creeze impresia unor scene cat mai reale. Odata cu aparitia computerelor super-performante si a
programelor specializate de grafica s-a reusit realizarea a unor efecte mult mai rapid, ieftin si realist.
Daca la primul film Godzilla a fost nevoie de un om sa se imbrace intr-un costum de monstru si apoi sa
umble printr-un oras in miniatura (aceea era limita tehnologiei) , la a doua versiune totul a fost mult mai
simplu: s-a proiectat modelul 3D al monstrului, dupa care acesta s-a suprapus peste imaginea filmata.
Pe masura ce computerele personale s-au dezvoltat suficient de mult, jocurile sofisticate au
devenit ceva nelipsit de pe un computer. Ele au devenit din ce in ce mai realiste. Toate obiectele si
personajele au inceput a fii tot mai complexe si proiectate pana la cele mai mici detalii. Efectele speciale
din jocuri (mai ales strategie si shootere) erau nelipsite, fiind intalnite la tot pasul.
Revenind in domeniul cinematografiei, ultimele tipuri de filme (in special science-fiction, horror)
imbina in foarte multe din secvente realul cu virtualul. Primul film care a folosit efectele speciale
computerizate in foarte multe dintre scene a fost The Matrix (cu o poveste foarte captivanta), marele film
care a luat tot ce se putea in domeniu efectelor speciale la Oscaruri: premiul pentru cele mai bune efecte
vizuale, pentru sunet, editarea sunetului si editarea peliculei (a fost si cel mai bun film, dupa parerea
mea). Au fost alte filme (Sleepy Hollow, Godzilla, The Fifth Element) care desi au folosit acelasi stil de FX-
uri nu s-au remarcat.
Se crede ca urmtorul pas in domeniul cinematografiei este realizarea unor filme de lunga durata
in realitatea virtuala.
Cerintele hardware
Cu cat mediile de transmitere a informatiilor sunt mai complexe si mai interesante pretentiile
asupra componentelor hardware sunt mai ridicate.
Cele mai putin pretentioase medii sunt si cele mai banale, textul si imaginea. Ele pot fi vizionate
fara probleme prea mari pe un computer foarte vechi, 386 sau 486 (cu anumite retineri cu privire la
calitatea imaginii).
Sunetele si filmele sunt putin mai pretentioase. Necesita un procesor Pentium 166 MHz MMX, 32
MB RAM, o placa de sunet si un CD-ROM 24x.
Daca doriti anumite facilitati, cum ar fi jocurile cu grafica foarte avansata, va trebui sa investiti
ceva bani intr-un accelerator grafic destul de puternic. Cele mai cunoscute sunt Vodoo 3 (2000 si 3000).
Exista multe altele, mai mult sau mai putin puternice, alegerea trebuie facuta doar in functie de cerintele
dumneavoastra.
Un alt set de facilitati interesante sunt reprezentate de captura video. Puteti alege un tunner TV,
care permite directionarea semnaluli din cablu direct in computer, cu o multime de facilitati incluse
(gasirea automata a posturilor, telecomanda). In caz ca doriti sa inregistrati propriile filme, o mini-camera
de filmat digitala, care poate fi folosit pentru capturarea filmelor sau o fotografiilor digitale este ideala.
Daca sunteti un impatimit al relitatii virtuale, un echipament VR v-ar fi de mare folos. Cu o
manusa si o casca veti putea naviga prin lumi neimaginabile. Lumile virtuale nu au evoluat destul in
comparatie cu alte domenii din multimedia, dar totusi merita.
Am prezentat mai sus cele mai importante componente hardware folosite de multimedia
(obisnuita). Fiecare dintre ele se potriveste unui anumit tip de utilizatori. Bineinteles, folosind aceste
componente nu veti putea face efecte speciale asemanatoare celor din filme sau video clipuri. Statiile
grafice sunt super-computerele care sunt folosite pentru proiectari, realizarea modelelor 3D sau alte
astfel de operatii care necesita resurse extraordinare.

149

Sisteme de videoconferinta
Odata cu dezvoltarea retelelor de calculatoare, comunicatiile la distante foarte mari nu mai sunt o
problema nici de timp, nici de bani si nici de tehnologie. Ca urmare au aparut diverse sisteme de
comunicatii prin retea, cu performante excelente, performante limitate aproape in exclusivitate de
capacitatea retelelor de calculatoare de a vehicula informatia ("latimea de banda").
Sistemele de video-conferinta ridica standardele in comunicatii la niveluri de performanta
neatinse pana nu demult. Video-conferinta presupune ca mai multi participanti sa poata comunica sonor
si vizual fiecare-cu-fiecare, ca si cand s-a afla in aceeasi sala. In prezent, din punct de vedere al cerintelor
hardware, video-conferinta nu este nici pe departe atat de pretentioasa pe cat suna, fiind accesibila fara
probleme oricarui utilizator de PC (de generatie mai recenta, totusi). O arhitectura uzuala de sistem
echipat pentru video-conferinta cuprinde:
un calculator PC (de preferat cu facilitati multimedia) conectat la reteaua de calculatoare :
un set be boxe audio;
un kit de video-conferinta;
latime de banda suficienta la retea.
Kit-ul de video-conferinta este un pachet hardware si software disponibil la preturi
rezonabile, in comertul de tehnica de calcul.
Televiziunea interactiva
Televiziunea interactiva specifica posibilitatea ca telespectatorul sa poata deveni un participant
mult mai activ decat este in prezent. Exista mai multe tipuri de interactivitate ce poate fi utilizata in astfel
de sisteme. Cel mai simplu tip este acela in care telespectatorul poate "produce" programele pe care le
vizioneaza. De exemplu, utilizatorul poate selecta un anumit unghi de filmare a unui eveniment sportiv
televizat, din mai multe variante posibile. Sau poate cere informatii suplimentare despre o echipa sau
despre un anumit jucator.
Un alt exemplu ar putea fi o emisiune educativa in care utilizatorul poate selecta un anumit nivel
educational din mai multe disponibile, poate cere documentatie suplimentara despre un anumit subiect,
sau chiar poate raspunde la diferite intrebari de verificare a cunostintelor. Acest tip de aplicatie
multimedia necesita diferite tipuri de solutii tehnologice, deoarece programele TV interactive vor fi prea
specializate pentru a putea fi transmise pe canalele TV comune. Astfel, va fi necesara inscrierea
doritorului la un serviciu TV special, achizitionarea unui decodor pentru semnalul TV respectiv si a unui
echipament specializat pentru comunicatia telespectator-studio TV producator.
Pasi urmatori in multimedia "Simpla compunere a sistemelor si metodelor multimedia existente,
nu reprezinta o solutie multimedia globala."
Toate sistemele multimedia cunoscute in prezent iau in considerare doar partial aspectele legate
de procesarea critica in raport cu timpul a datelor audio si video. S-au implementat doar componentele
critice strict necesare procesarii corecte din cadrul aplicatiilor multimedia particulare. De exemplu, se
presupune de fiecare data ca intreruperile cu prioritate mare nu vor cauza probleme in timpul procesarii
continue a datelor. Cu toate acestea, in situatiile critice, pot aparea intarzieri sesizabile in fluxul de
procesare a datelor multimedia. Scopul prioritar in dezvoltarea urmatoare a sistemelor multimedia este de
a integra toate componentele hardware si software in cadrul procesarii in timp real.Filmele video si
animatiile sunt doua medii asemanatoare, care in ciuda diferentelor minore se contopesc intr-unul singur.
Ele au la baza aceeasi tehnologi: redarea cadrelor asemanatoare la o rata ridicata pentru a creea iluzia
miscarii. Filmele si animatia sunt deseori insotite de sunet, pentru a parea mai reale. Rata de cadre
(frames) folosita cel mai des in multimedia este 25-30 fps (frames per second). Cu cat numarul de cadre
pe secunda este mai mare cu atat calitate filmului creste, dar si resursele necesare redarii filmului trebui
sa fie mai puternice.
Diferenta dintre filme video si animatie specificata mai sus nu este mare: filmele sunt provenit din
realitate si sunt inregistrate cu ajutorul camerelor video digitale, in timp ce animatiile sunt create cu
ajutorul unor aplicatii software specilizate (3D MAX, Fractal Design Poser, Lightwave, Cinema 4D XL ,
RayDream Studio etc) sau sunt rezultatul muncii manuale, cu creionul si hartia (in cazul desenelor
animate mai vechi). Anumite secvente din filmele noi sunt rezultatul prelucrarii computerizate a imaginilor
inregistrate in realitate.
Utilizatorii computerelor si ai multimediei prefera de obicei filmele si animatiile ca medii de
transmitere a informatiilor pentru ca ele stimuleaza simultan, in timp real, atat vazul cat si auzul, fiind
foarte usor de perceput. Acesta este motivul pentru care articolelor importante din enciclopediile noi le
sunt adaugate, pe langa text, poze si sunete animatii sau filme.
Filmele necesita un spatiu de stocare enorm, motiv pentru care cercetatorii au incercat sa
realizeze formate de comprimare a acestora. Astfel au luat nastere primele formate care reduceau o mare
parte din marimea animatiei prin eliminarea informatiei nefolositoare, dar odata cu acesta si calitatea ei,

150

cum ar fi MPEG si DAT. Aparitia DVD-urilor a determinat realizarea unui format de o calitate mai ridicata,
numit MPEG 2. Ultima metoda de comprimare a informatiei audio/video este numita MPEG 4. Desi
raportul dintre calitate si marime al filmelor salvate in acest format din urma este optim, el nu a avut
parte de o promovare spectaculoasa. Se asteapta in curand aparitia ultimului format de compresie: MPEG
7.
Efectele speciale
Realizarea efectelor speciale este considerata cel mai profitabil si cel mai interesant domeniu al
multimediei. Ea a aparut prima data in cinematografie sub forma exploziilor bine plasate si a trucurilor
care sa creeze impresia unor scene cat mai reale. Odata cu aparitia computerelor super-performante si a
programelor specializate de grafica s-a reusit realizarea a unor efecte mult mai rapid, ieftin si realist.
Daca la primul film Godzilla a fost nevoie de un om sa se imbrace intr-un costum de monstru si apoi sa
umble printr-un oras in miniatura (aceea era limita tehnologiei) , la a doua versiune totul a fost mult mai
simplu: s-a proiectat modelul 3D al monstrului, dupa care acesta s-a suprapus peste imaginea filmata.
Pe masura ce computerele personale s-au dezvoltat suficient de mult, jocurile sofisticate au
devenit ceva nelipsit de pe un computer. Ele au devenit din ce in ce mai realiste. Toate obiectele si
personajele au inceput a fii tot mai complexe si proiectate pana la cele mai mici detalii. Efectele speciale
din jocuri (mai ales strategie si shootere) erau nelipsite, fiind intalnite la tot pasul.
Revenind in domeniul cinematografiei, ultimele tipuri de filme (in special science-fiction, horror)
imbina in foarte multe din secvente realul cu virtualul. Primul film care a folosit efectele speciale
computerizate in foarte multe dintre scene a fost The Matrix (cu o poveste foarte captivanta), marele film
care a luat tot ce se putea in domeniu efectelor speciale la Oscaruri: premiul pentru cele mai bune efecte
vizuale, pentru sunet, editarea sunetului si editarea peliculei (a fost si cel mai bun film, dupa parerea
mea). Au fost alte filme (Sleepy Hollow, Godzilla, The Fifth Element) care desi au folosit acelasi stil de FX-
uri nu s-au remarcat.
Se crede ca urmtorul pas in domeniul cinematografiei este realizarea unor filme de lunga durata
in realitatea virtuala.Imagini rollover
Sunt imagini care v permit s schimbai grafica atunci cnd mouse-ul este deasupra imaginii.
Aceste imagini se insereaz folosind urmtoarea succesiune Insert -> Image Objects -> Rollover Images:

Filme QuickTime
Pentru aceasta se folosete: Insert > Media > Plug-in. (implicit filmul va deschis ntr-o fereastr
mic, pentru a fi mai mare, se redimensioneaz pn la dimensiunile dorite). Trebuie s v asigurai c
filmul este copiat n folderol site-ului.
Fiiere Flash
Aceasta se realizeaz ca i cum ai introduce o imagine: din meniul Insert , te asiguri c
categoria Common este selectat, apoi se apas butonul Media i se deschide un meniu pop-up cu
mai multe opiuni( SWF insereaz un Flash Movie, FLashPaper insereaz un document FlashPaper,
FLV insereaz un Flash Video, Shockwave insereaz un Shockwave Movie). Fereastra de dialog care
se deschide depinde de tipul de fiier selectat.
Adugarea fiierelor multimedia
Despre multimedia i limea de band
Adugarea fiierelor multimedia, precum sunetele i filmele, devine tot mai folosit pe msur ce
modemurile devin tot mai rapide, iar oamenii navigheaz pe Web cu o lime de band (bandwidth) mai
mare. Cele mai multe fiiere multimedia ocup o lime de band mare.

151

Cei mai muli au acces la Internet folosind o conexiune broadband (de band larg): modem DLS
sau cu cablu TV. Dac suntei pe un modem cu cablu TV, avei acces la o lime de band Internet mai
mare dect cineva care este conectat la un modem de 56 kbps.
Unele formate, precum fiierele RealMedia sau Shockwave, satisfac cerinele unei benzi largi
pentru sunet i filme prin fluxul continuu (streaming) al coninutului ctre dumneavoastr.
Coninutul transmis n flux continuu ncepe s fie redat dup o scurt perioad de memorare ntr-
un buffer; coninutul continu s se descarce n culise, n timp ce este redat coninutul din memoria
buffer anterioar. Cele mai multe fiiere multimedia transmise prin Web sunt comprimate prin tehnici
aflate n permanent perfecionare. Unele dintre formatele tradiionale de fiiere multimedia, cum sunt
WAV (audio), AVI (film Windows), MOV (film QuickTime) i AIFF (audio), sunt adesea prea mari pentru a
fi transmise prin Web. Unele dintre aceste formate necesit descrcarea ntregului fiier nainte de a fi
redat. Pentru a transmite un astfel de tip de sunet sau coninut video trebuie s nelegei ce tehnologie
s alegei; apar mereu noi instrumente de comprimare i de transmitere n flux continuu.
Despre programele de redare
Toate fiierele multimedia necesit un ter program pentru a fi rulate de un browser.
Aceste programe de redare (play) sunt fie module plug-in, fie controale ActiveX, iar unele sunt
instalate automat cu browserul sau cu sistemul de operare. Nu putei presupune c cei care vor vizita
pagina dumneavoastr Web au instalate aceleai programe de redare ca i dumneavoastr.
Trebuie s i oferii vizitatorului informaii pentru obinerea programului de redare necesar.
Netscape Navigator i Internet Explorer lucreaz cu fiierele multimedia n dou moduri diferite,
dar totui similare. Netscape extinde capacitile sale cu module plug-in. Netscape are un dosar pentru
module plug-in n care pstreaz aceste programe. Dup instalarea unui modul plug-in trebuie s
repornii Netscape pentru ca acesta s funcioneze. Microsoft folosete standardul su ActiveX pentru a
lansa i a rula coninutul multimedia. Controalele ActiveX sunt similare cu modulele plug-in i sunt
instalate pe calculatorul dumneavoastr pentru a aduga capacitatea de a reda diferite tipuri de fiiere.
Controalele ActiveX funcioneaz n cadrul browserului Internet Explorer. Multe extensii tere de browsere
sunt livrate i sub forma unui modul plug-in i ca un control ActiveX. Un control ActiveX se instaleaz
singur de obicei, n culise, fr a fi nevoie s repornii browserul.
Unii utilizatori fie au dezactivat capacitatea calculatorului de a instala controale ActiveX n
browserele lor, fie sunt nedumerii i poate chiar suspicioi cnd apare o caset de dialog care le spune
c vor descrca i vor instala ceva. Dreamweaver are mai multe funcii care mbuntesc capacitatea
dumneavoastr de a aduga cu succes fiiere multimedia la o pagin Web. Exist o funcie behavior (un
comportament) care detecteaz dac vizitatorul are un anumit program de redare (player). Ar fi indicat
s spunei vizitatorului de unde s descarce programul de redare cerut. Putei amplasa informaia pe
pagina dumneavoastr Web incluznd o legtur prin care se descarc programul de redare. Mai putei
s permitei browserului s ncerce automat descrcarea unui program de redare, folosind atributul
pluginspage.
Adugarea fiierelor Flash
Macromedia Flash i Director au devenit n mod discutabil standardele pentru animaia pe Web.
Director, creat iniial pentru programe interactive pe CD-ROM, are un program de redare pe Web prin flux
continuu, numit Shockwave. Flash este mai nou sosit, devenind extreme de cunoscut pentru crearea
animaiei mici, interactive pentru Web. Funcia de interactivitate din Flash este limitat n comparaie cu
Director, dar Flash este cunoscut pentru grafica sa vectorial - un format grafic care este redus i
scalabil.
Un alt instrument interactiv cu flux continuu de la Macromedia, disponibil pentru dezvoltare, este
Authorware Web Player. Authorware este folosit pentru a crea aplicaii pentru instruire cu o interactivitate
puternic. Obiectul Authorware Web Player nu este instalat cu Dreamweaver.
Filmele Flash se ncheie cu extensiile de fiier .swf, .fla sau .swt. Filmele
Shockwave se ncheie cu extensia de fiier .dcr. Pentru a vedea aceste filme trebuie s avei
instalat un program de redare Flash sau Shockwave.
Pentru a insera un film Flash selectai un obiect Flash n seciunea Common a barei de inserare.
Filmul Flash are o caset de validare n fereastra de inspectare Property pentru parametrii de buclare
(Loop) i autoredare (Autoplay).
Utilizarea tagurilor <object> i <embed>
Exist dou taguri folosite pentru a insera coninut multimedia. Obiectele Plugin insereaz n
codul HTML un tag <embed>, tagul standard pentru modulul plug-in din Netscape. Browserul Internet
Explorer recunoate tagul <object> i apeleaz controalele ActiveX Flash sau Shockwave. Cnd inserai
un obiect Flash, Dreamweaver insereaz automat ambele taguri n pagina dumneavoastr Web. Utilizarea

152

ambelor taguri permite browserului s trateze optim fiierul. Netscape recunoate tagul <embed> i
apeleaz modulul plug-in Flash, iar Internet Explorer apeleaz controlul ActiveX Flash.
Previzualizarea filmului n fereastra Document din Dreamweaver
Dac avei instalat pe calculatorul dumneavoastr modulul plug-in corespunztor, putei reda
filmul Flash n fereastra Document din Dreamweaver. Cnd instalai Dreamweaver, el caut automat
module plug-in pe care le-ai instalat n dosarele de module plug-in ale browserelor instalate pe
calculatorul dumneavoastr. Dac nu avei modulele plug-in instalate n browserul dumneavoastr, putei
instala module plug-in direct n dosarul de module plug-in din Dreamweaver, aflat n
Configuration/Plugins. Pentru a previzualiza filmul Flash n fereastra Document, selectai butonul verde
Play din fereastra de inspectare Property. In timp ce ruleaz filmul, butonul Play devine un buton rou
Stop. Se selecteaz butonul Stop pentru a opri filmul.
Gestionarea componentelor cu panoul Assets
Dup ce ai proiectat pagina dumneavoastr Web, probabil o vei popula cu elemente de pagin.
Elementele care alctuiesc paginile Web vor proveni din mai multe surse i vor fi tipuri de obiecte diferite
(filme Flash, imagini, culori, legturi, etc).
Vei aduna i organiza aceste elemente de pagin nainte de a ncepe crearea paginii Web.
Panoul Assets (componente) din Dreamweaver v permite s organizai elementele din site-ul
dumneavoastr Web pentru a avea acces rapid la ele i a le reutiliza.
Ce sunt componentele
Paginile Web nu sunt alctuite doar din text i cod. Se folosesc imagini, filme, culori i URL-uri
pentru a prezenta informaia n paginile Web.
Panoul Assets organizeaz aceste elemente, permindu-v s gsii rapid o imagine sau o
culoare pe care dorii s o folosii. Putei previzualiza componente n panoul Assets. De asemenea, mai
putei crea o list de componente favorite cele pe care le utilizai des.
Administrarea componentelor n panoul Assets
Dreamweaver catalogheaz automat componentele ntregului dumneavoastr site. Cnd
deschidei panoul Assets, putei selecta unul dintre butoanele de categorii aflate pe marginea din stnga
a panoului, pentru a afia o list cu toate componentele de acel tip din site. Panoul Assets include mai
multe categorii: Imagini, Culori, URL-uri, Filme Flash, Filme Shockwave, Filme, Scripturi, Machete,
Bibliotec. Panoul Assets v permite s adugai rapid paginii dumneavoastr Web o component
selectat.
Componentele sunt specifice site-ului curent. Adesea vei folosi anumite elemente de pagin din
mai multe site-uri Web la care lucrai. Putei copia componentele dumneavoastr n alt site Web definit n
Dreamweaver, pentru a le folosi n acel site.
Listarea componentelor unui site
Dreamweaver plaseaz componentele n categoriile corespunztoare, examinnd extensiile
fiierelor din site-ul dumneavoastr Web. Panoul Assets conine doar lista componentelor ce se afl n
site-ul curent selectat. Dac schimbai site-ul, vei vedea c n timp ce se actualizeaz panoul Assets
apare pentru scurt timp o caset cu un mesaj.
Toate categoriile de componente cu excepia categoriilor Library (bibliotec) i Templates
(abloane) au dou butoane radio n partea de sus a panoului, permindu-v s alegei dac dorii s
vedei toate componentele acelui tip sau doar favoritele.
Dac adugai o component la site-ul dumneavoastr, este necesar s selectai butonul Refresh
pentru a o vedea n lista panoului Assets.
Previzualizarea componentelor
Elementele listate n panoul Assets sunt implicit sortate n ordine alfabetic. Putei sorta
elementele dup orice antet de coloan disponibil, dnd clic pe capul (antetul) de coloan.
De exemplu, n loc de sortarea implicit, dup numele de fiier, putei sorta componentele de
imagine dup dimensiunea fiierului.
Uneori, putei localiza fiierul iniial al componentei n panoul sau fereastra Site. Dreamweaver
are o comand care deschide panoul sau fereastra Site avnd evideniat fiierul componentei. Clic-
dreapta pe o component i apoi selecteaz comanda Locate in Site (localizare n site) din meniul
contextual. Comanda funcioneaz doar pentru componentele care se afl n fiierele individuale, cum
sunt filmele sau imaginile, i nu funcioneaz pentru componentele care sunt elemente de pagin Web,
cum sunt URL-urile sau culorile.
Examinarea componentelor de imagine
Categoria de imagini a panoului Assets afieaz toate imaginile din site-ul dumneavoastr Web.
Dreamweaver catalogheaz imaginile n formate GIF, JPG sau PNG.

153

Examinarea componentelor de culoare


Categoria de culori a panoului Assets afieaz toate culorile folosite n site-ul Web definit. Culorile
sunt catalogate i sunt afiate n format hexazecimal. Dreamweaver afieaz o previzualizare a culorii
selectate, mpreun cu definirile hexazecimal i RGB, n partea de sus a panoului.
Examinarea componentelor pentru legturi
Categoria URL-urilor din panoul Assets pstreaz toate hiperlegturile coninute n siteul Web
curent definit. Aceast categorie listeaz toate URL-urile din site, incluznd cele FTP, pentru e-mail,
pentru Gopher, JavaScript, HTTP (Web) i HTTPS (Web protejat).
Examinarea componentelor de filme
Exist trei categorii diferite de componente de filme: filme Flash, filme Shockwave i filme.
Categoria filmelor va conine diferite tipuri de filme, altele dect Flash sau Shockwave, cum sunt filmele
QuickTime sau MPEG. Exist un buton Play/Stop n colul din dreapta sus al ferestrei de previzualizare
care permite redarea filmului n fereastra de previzualizare.
Examinarea componentelor de tip script
Categoria scripturilor din panoul Assets conine toate fiierele script externe din site-ul
dumneavoastr Web. Fiierele script externe se termin cu extensia .js. Aceste fiiere script conin funcii
JavaScript pe care le putei apela din paginile Web. Fereastra de previzualizare arat codul real din script.
Codul JavaScript coninut n pagini Web individuale nu este inclus n categoria de scripturi a panoului
Assets.
Facei trimitere la un script extern din seciunea head a paginii Web. Dac apelai o funcie care
este coninut ntr-un script extern, trebuie s legai fiierul script extern la pagina dumneavoastr Web,
prin tragerea sa cu mouse-ul din categoria scripturilor a panoului Assets n seciunea Head Content
(comanda Head Content din meniul View) din fereastra Document n Dreamweaver.
Adugarea componentelor la o pagin Web
Folosii panoul Assets pentru a aduga componente paginii dumneavoastr Web.
Pentru a aduga o component paginii Web:
1. Selectai o categorie.
2. Gsii componenta pe care dorii s o adugai, prin derularea listei pn la numele ei sau
vizualiznd-o n fereastra de previzualizare.
3. Plasai punctul de inserare n pagina dumneavoastr Web, acolo unde dorii s poziionai
componenta.
4. Selectai butonul Insert i componenta este inserat n pagina Web.
De asemenea, mai putei folosi componentele din panoul Assets pentru a modifica alte obiecte de
pe pagina Web. De exemplu, putei aplica o component de culoare unui text de pe pagina Web, dup
cum urmeaz:
1. Selectai un text de pe pagin.
2. Tragei cu mouse-ul o culoare din panoul Assets prin selectarea numelui, fie din fereastra de
previzualizare, fie din lista de categorii.
3. Plasai culoarea peste textul selectat.
n loc de operaiile de tragere i plasare peste text, putei doar s apsai butonul Apply pentru a
aplica acea culoare textului.
Pentru a sri rapid la o seciune din lista de componente, se selecteaz una dintre componentele
din list i apoi se introduce prima liter din numele componentei cutate. Se ajunge la prima
component care ncepe cu acea liter.
Crearea de componente favorite
Exist adesea componente n site-ul Web pe care le folosim n mod repetat. Putei ataa aceste
componente la lista de favorite, astfel nct ele s fie uor de selectat din panoul Assets.
Pentru a crea o component favorit, selectai componenta din panoul Assets i apoi selectai
butonul Add to Favorites (adugare la favorite). Cnd selectai butonul radio Favorites, ar trebui s apar
n list componentele favorite adugate deja. Putei da unei componente favorit un alt nume, printr-un
click-dreapta pe ea, selectarea comenzii Edit Nickname (editarea pseudonimului).
Componentele favorite nu sunt disponibile pentru categoriile Templates i Library ale panoului
Assets.
V putei organiza componentele favorite pe grupuri, prin crearea de noi dosare n cadrul listei de
favorite. Butonul New Favorites Folder (dosar cu favorite noi) v permite s creai un dosar n cadrul listei
de favorite. Dup ce ai creat un dosar, punei componentele n acesta cu operaia drag-and-drop
(tragere i plasare). Extindei dosarul pentru a vizualiza coninutul selectnd butonul + de lng numele
dosarului. Comprimai vizualizarea dosarului prin selectarea butonului de lng numele dosarului.

154

nlturai elementele din lista de favorite prin selectarea butonului Remove from Favorites
(ndeprtarea dintre favorite). Elementul este nlturat doar din lista de favorite, nu este ters din site-ul
Web. De asemenea, putei s dai clic-dreapta pe un element i s selectai comanda Remove from
Favorites din meniul contextual.
Crearea de noi componente n panoul Assets
Putei aduga o nou culoare, un URL, ablon sau element de bibliotec.
Cnd vizualizai componentele favorite, mai putei crea noi URL-uri i culori pentru a fi folosite n
site. Aceste noi componente sunt apoi disponibile chiar dac nu au fost folosite nc n site-ul Web.
Pentru a crea o culoare nou sau o nou component de legtur:
1. Selectai butonul radio Favorites din partea de sus a panoului Assets. Selectai fie categoria
culorilor, fie categoria legturilor.
2. Dai clic-dreapta pentru a lansa meniul contextual.
3. Selectai comanda New Color (culoare nou) sau New URL (URL nou). Apare fie selectorul de
culoare, fie caseta de dialog Add URL.
4. Alegei o culoare din selectorul de culoare sau completai URL-ul i numele asociat n caseta de
dialog Add URL (adugare de URL).
Copierea componentelor n alt site
Putei copia n alt site o singur component, un grup de componente sau un grup de favorite.
Pentru a copia o singur component n alt site, executai click-dreapta pe numele elementului din list i
selectai comanda Copy to Site. Selectai site-ul definit n care vrei s copiai componenta. Dreamweaver
copiaz structura exact a dosarului i a fiierului pentru o component imagine sau film.
Pentru a copia un grup de componente n alt site selectai mai multe elemente din lista de
componente prin Shift-clic (sau Ctrl-clic) pe numele elementelor. Dai clic-dreapta pe grup i selectai
comanda Copy to Site din meniul contextual. Toate componentele vor fi copiate n cellalt site.
Parcurgnd aceiai pai putei copia un grup de favorite n alt site.
Panoul Assets ne poate ajuta s organizm imaginile astfel nct s nu fie nevoie s folosim mai
multe directoare pentru organizare. Putei folosi o convenie de denumire pentru a sorta imaginile. De
exemplu, toate imaginile pentru seciunea 1 a unui site Web pot s nceap cu numrul 1 (1_image1,
1_image2 etc.). Dup ce ai sortat imaginile, putei crea componente favorite i dosare pentru a organiza
favoritele astfel nct s putei gsi rapid imaginile de care avei nevoie.
Dac exist URL-uri care ncep cu numefisier:/// n lista panoului Assets atunci se identific
paginile care conin aceste legturi este prin rularea raportului Check Links (verific legturile) din panoul
Site. Selectai fiierele care apar n raport ca avnd legturi ce ncep cu numefisier:/// i modificai URL-ul
cu o adres relativ la document.
Inserarea de tabele
Se folosete meniul Insert, opiunea Table, se specific numrul de rnduri i coloane, limea
tabelului n pixeli (ntre 600 i 800), Border thickness(grosimea bordurii) dac se pune 0 nu e vizibil, deci
pentru a fi vzut trebuie un numr mai mare sau egal cu unu, Cell padding adaug spaiu n interiorul
celulei, Cell spacing adaug spaiu ntre celule.



Proprietile tabelului
Aceste proprieti se pot vizualiza n panoul de proprieti:

155



Se observ c se poate aduga nume tabelului, alinierea, background-ul acestuia.
Proprietile celulelor tabelului
Acestea se pot vedea printr-un click ntr-o celul:



Aici se pot modifica limea i nlimea celulei, alinierea n celul, se mai poate insera antet,
background, mbina celulele sau scinda.
Adugarea celulelor de antet la tabel
Coninutul celulelor de antet apare ngroat i centrat. Pentru a face un rnd de celule de antet
de-a lungul prii de sus a tabelului, selectai primul rnd din tabel i bifai n fereastra de inspectare
Property caseta de validare de lng Header. Bifarea casetei de validare Header transform tagurile
pentru celule de tabel <td> n taguri pentru celula cap de tabel, <th>.
Adugarea i sortarea datelor
Pentru a introduce date dai clic ntr-o celul de tabel, introducei date de la tastatur i apoi
apsai tasta Tab pentru a trece la urmtoarea celul. Cnd ajungei la celula cea mai din dreapta a
rndului de jos, apsarea tastei Tab va crea un nou rnd. Cnd folosii tasta Tab pentru a crea noi
rnduri de tabele, Dreamweaver d noului rnd atributele celui precedent. Dar, dac folosii tasta Tab ca
s creai un rnd nou dup un rnd de celule de titlu, noul rnd va fi unul de noi titluri!
Dreamweaver faciliteaz sortarea datelor din tabelul dumneavoastr cu comanda Sort Table din
meniul Commands. Pentru a sorta un tabel cu comanda Sort Table:
1. Selectai tabelul. Selectai comanda Sort Table din meniul Commands. Caseta de dialog Sort
Table conine mai multe meniuri derulante pentru sortarea tabelului.
2. n meniul Sort By, selectai coloana dup care se face sortarea.
3. n meniul derulant Order, alegei dac dorii s sortai coloana n ordine alfabetic sau
numeric.
4. Alegei dac dorii sortarea n ordine cresctoare sau descresctoare din opiunile din dreapta
meniului derulant Order.
5. Sub primul set de opiuni de sortare putei stabili un al doilea set de opiuni. Dreamweaver va
sorta mai nti dup prima coloan i apoi dup a doua coloan.
6. Dac primul rnd al tabelului este un rnd de anteturi (cap de tabel), lsai nebifat caseta
Sort Includes First Row (sortarea include primul rnd). Dac nu avei celule de antet cu alte cuvinte,
cap de tabel -, putei include primul rnd n sortare.
7. Caseta de validare Keep TR Attributes With Sorted Row (pstreaz atributele de rnd de tabel
n rndul sortat) permite s se pstreze atributele rndului de tabel dup sortare. Dac ai formatat
tabelul ntr-un anumit mod, putei bifa aceast caset pentru a nu pierde formatarea.
8. Dai clic pe OK pentru a lansa sortarea.
Adugarea i nlturarea rndurilor i a coloanelor
Pentru a aduga sau a nltura un rnd sau o coloan folosii meniul contextual care apare cnd
dai clic-dreapta pe o celul de tabel. Dai clic-dreapta pe o celul de tabel i selectai submeniul Table;
apare un alt submeniu cu cteva comenzi pentru a aduga i a nltura rnduri, coloane sau ambele.
Selectai una dintre aceste comenzi pentru a face modificri n tabel. La folosirea comenzilor de inserare,
Dreamweaver insereaz o nou coloan n stnga coloanei curente.
Mai putei aduga sau terge rnduri i coloane prin editarea proprietilor de tabel din fereastra
de inspectare Property. Pentru a aduga sau terge grupuri de celule ajustai numrul de rnduri i
coloane din fereastra de inspectare Property avnd tot tabelul selectat.

156

La folosirea ferestrei de inspectare Property, Dreamweaver insereaz o nou coloan n partea


cea mai din dreapta a tabelului i un rnd nou n partea de jos a tabelului. Dac tergei coloane sau
rnduri n fereastra de inspectare Property, coloanele vor fi nlturate din partea dreapt, iar rndurile vor
fi terse din partea de jos. Se pierd toate datele care se afl n coloanele sau rndurile terse.
Modificarea limii coloanei i a nlimii rndului
Se pot modifica limea coloanei i nlimea rndului prin tragerea cu mouse-ul a marginilor de
celul sau prin introducerea valorilor n fereastra de inspectare Property. Dac preferai s dimensionai
fr a sti dimensiunile, poziionai cursorul peste o margine de celul pn cnd cursorul devine un cursor
cu dou linii (paralele). Tragei cursorul cu dou linii pentru a modifica limea coloanei sau nlimea
rndului.
Folosii casetele W (lime) i H (nlime) din fereastra de inspectare Property pentru a da valori
exacte limii i nlimii. Valorile sunt exprimate n pixeli sau n procente.
Redimensionarea unui tabel
Avnd tot tabelul selectat, deplasai marcajele de dimensionare pentru a da tabelului o alt dimensiune.
Dac nu ai dat valori pentru limea i nlimea celulelor, rndurilor i coloanelor, celulele se vor
distribui singure proporional cnd se modific dimensiunea ntregului tabel. Pentru a terge toate valorile
de lime i de nlime din tabel, selectai submeniul Table din meniul Modify. n partea de jos a
meniului sunt comenzi de tergere a nlimii celulelor sau de tergere a limii celulelor. Mai sunt
disponibile comenzi pentru a converti toate valorile n pixeli sau n procente. Aceste comenzi sunt la
ndemn dac stabilii atributele de tabel n pixeli i dorii s le modificai n procente sau invers. Cnd
este selectat tabelul, butoanele pentru aceste comenzi sunt disponibile n jumtatea de jos a ferestrei de
inspectare Property.
Stabilirea spaiilor de umplere a celulei i distanarea celulelor
Spaiile de umplere a celulei (cell padding) stabilesc distana dintre un obiect coninut ntr-o
celul i marginea celulei. Spaierea celulelor (cell spacing) stabilete distana dintre dou celule.
Adugarea unui titlu de tabel din seciunea Table a barei Insert
Cele mai multe comenzi ale seciunii Tables a barei Insert sunt active doar atunci cnd vizualizai
pagina Web n Code View. Aceste comenzi sunt destinate utilizatorilor de Dreamweaver care prefer s
lucreze singuri codul HTML. Folosirea seciunii Tables este singura cale de a aduga tagul <caption> la
pagina dumneavoastr Web, pentru a aduga un titlu de tabel.
Pentru a aduga un titlu de tabel:
1. Selectai Code View sau vizualizarea dubl a codului i designului.
2. Plasai punctul de inserare imediat dup tagul de deschidere <table>.
3. Selectai seciunea Tables din bara Insert.
4. Selectai comanda Table Caption. Dreamweaver adaug paginii Web tagurile pereche
<caption>, punnd cursorul ntre cele dou taguri.
5. Introducei un titlu ntre tagurile <caption>.
6. Plasai punctul de inserare imediat nainte de paranteza de nchidere a tagului de deschidere
<caption> i apsai bara de spaiu de la tastatur. Dup cteva secunde, apare meniul derulant cu
atribute. Selectai atributul align.
7. Dreamweaver plaseaz punctul de inserare ntre ghilimelele atributului <align>. Selectai
bottom din atributele meniului derulant pentru aliniere. n acest fel se cere browserului s afieze titlul de
tabel n partea de jos a tabelului.
Importul datelor n tabel
Dac avei deja date ntr-o foaie de calcul sau o baz de date, acestea se pot importa datele
exportate din aplicaia de foi de calcul sau de baze de date n Dreamweaver cu comanda Import
Tabulator Data. Cele mai multe aplicaii de foi de calcul sau baze de date pot exporta date ntr-un fiier
de text astfel nct Dreamweaver s-l poat importa. Trebuie s cunoatei ce caracter este folosit n
fiierul de date ca delimitator nainte de a putea importa cu succes datele n Dreamweaver. Un delimitator
este un caracter folosit ntre cmpurile individuale de date. Delimitatorii folosii de obicei sunt spaiul Tab,
spaiul, virgula, punctul i virgula i dou puncte. Cnd exportai fiierul de date, va trebui s alegei un
delimitator care s nu apar n date.
Microsoft Excel import i export fiiere cu extensia de fiier .cvs, avnd virgula ca delimitator i
cu extensia .prn, avnd spaiul ca delimitator.
Putei crea fiiere de date deschiznd un editor de texte, precum Notepad, i introducei nite
date. Creai o singur linie de text cu mai multe cmpuri separate prin spaii Tab. Creai mai multe
nregistrri repetnd n fiierul text procedura pentru linii succesive. Salvai fiierul i importai-l n
Dreamweaver ca fiier cu date delimitate prin spaii tab.
Pentru a importa date n Dreamweaver:

157

1. Plasai punctul de inserare n fereastra Document, acolo unde dorii s se afle tabelul.
2. Selectai fie obiectul Tabular Data din seciunea Common a barei Insert, fie comanda Import
Tabular Data dintre submeniul Table Objects al meniului Insert. Apare caseta de dialog Insert Tabular
Data.
3. Selectai pictograma Browse (dosarul) pentru a naviga la fiierul de date pentru tabel i al
importa n Dreamweaver.
4. Selectai delimitatorul de cmpuri din meniul derulant Delimiter. Dac delimitatorul nu este
unul dintre cele patru delimitatoare obinuite din list, selectai Other (altul) i introducei delimitatorul n
caseta care apare la dreapta meniului derulant Delimiter.
5. Alegei din casetele de sub Table Width dac noul tabel va avea limea conform datelor (Fit to
Data) sau va avea o anumit valoare n pixeli sau n procente.
6. Dac este necesar, introducei o valoare pentru spaiul de umplere (cell padding) i spaierea
celulelor (cell spacing). Nu uitai, mai trziu putei s modificai aceste valori prin editarea tabelului.
7. Selectai o valoare din meniul derulant pentru formatul primului rnd (care este rndul de
anteturi sau capul de tabel). Va trebui s tii dac fiierul de date are capete de coloan care vor aprea
ca celule de antet n tabelul dumneavoastr HTML.
8. Introducei o valoare pentru grosimea chenarului tabelului.
9. Dai clic pe butonul OK pentru a importa datele n tabel.
Exportul datelor din tabel
De asemenea, putei, s exportai date dintr-un tabel HTML. Datele pot fi apoi importate ntr-o
aplicaie de foi de calcul, baze de date sau pe alt aplicaie care are capacitatea de a prelucra date
delimitate.
Pentru a exporta date dintr-un tabel Dreamweaver:
1. Selectai un tabel sau plasai cursorul n oricare dintre celulele tabelului.
2. Selectai submeniul Export din meniul File i apoi selectai comanda Table. Apare caseta de
dialog Export Table.
3. Selectai delimitatorul de date din meniul derulant Delimiter.
4. Din meniul derulant Line Breaks selectai stilul pentru linie nou. Stilul pentru linie nou
depinde de sistemul de operare, deci selectai sistemul de operare ce va rula cnd va fi importat fiierul
de date. De exemplu, dac trimitei fiierul de date cuiva care va rula o aplicaie de foi de calcul pe un
calculator Macintosh, selectai Macintosh.
5. Dai clic pe butonul Export i salvai fiierul.
Proiectarea machetei de pagin folosind tabele
Macheta paginii Web (page layout) se refer la proiectarea modului n care va arta pagina atunci
cnd va fi vizualizat n browser. Poziionai textul, meniurile i alte elemente de pagin ntr-un mod
eficient i atractiv.
Dreamweaver v permite s lucrai n vizualizarea Layout (vizualizarea machetei) astfel nct s
putei trasa elementele de tabel direct n fereastra Document. Acest lucru faciliteaz crearea tabelelor
pentru macheta paginii.
Utilizarea vizualizrii Layout
Proiectarea tabelelor pentru o machet de pagin este o sarcin complicat. Modificarea sau
crearea numrului perfect de celule solicit dezvoltatorilor de Web s uneasc, s divizeze i s distribuie
diverse rnduri i coloane pentru a face paginile s arate aa cum doresc. Dreamweaver include o
vizualizare a machetei (vizualizarea Layout) ce v permite s trasai, s mutai i s editai uor celule de
tabel.
Examinarea unui tabel n vizualizarea Standard
Dup ce ai proiectat macheta dumneavoastr n vizualizarea Layout, revenii la vizualizarea
Standard pentru a aduga coninut. Putei edita tabelul dumneavoastr de machet n vizualizarea
Standard prin modificarea atributelor tabelului i ale celulelor lui. Mai trebuie stabilit alinierea
coninutului din celule.
Unirea i separarea celulelor de tabel
Putei s avei n tabelul dumneavoastr unele rnduri sau coloane cu mai puine celule dect alte
rnduri. De exemplu, putei avea n rndul de sus al unui tabel un titlu care este centrat peste toate
coloanele. Cum se poate face asta?
Putei crete sau descrete ntinderea coloanelor i a rndurilor fie prin separarea, fie prin unirea
celulelor. Pentru a uni un rnd ntreg astfel nct s apar ca o singur celul, selectai rndul i dai clic
pe butonul Merge. Mai putei da clic-dreapta oriunde n rnd i selecta comanda Merge Cells din
submeniul Table al meniului contextual.

158

Alinierea coninutului celulelor tabelului


Meniul pentru alinierea vertical stabilete alinierea coninutului unei singure celule sau al unui
grup de celule. Aliniai coninutul unei celule sau al unui grup de celule pe vertical. Cnd stabilii o
aliniere vertical, avei urmtoarele opiuni:
Default este de obicei alinierea implicit, aceeai cu alinierea pe mijloc a coninutului celulei.
Top aliniaz coninutul celului n partea de sus a celulei.
Middle aliniaz coninutul celulei pe mijlocul celulei.
Bottom aliniaz coninutul celulei n partea de jos a celulei.
Baseline se aplic la mai multe celule dintr-un rnd, aliniind partea de jos a obiectelor din toate
celulele. De exemplu, dac avei un text foarte mare n prima celul i un text mic n a doua celul,
partea de jos a ambelor linii de text va fi aliniat prin aliniere vertical a liniilor de baz.
Aliniai coninutul unei celule sau al unui grup de celule pe orizontal cu meniul derulant pentru aliniere
orizontal. Cnd stabilii o aliniere pe orizontal, avei urmtoarele opiuni:
Default este de obicei alinierea implicit, aceeai cu alinierea la stnga pentru coninutul de
celul i pe centru pentru coninutul unei celule de antet.
Adugarea culorilor la tabel
Exist mai multe locuri n care putei aduga culori la tabel:
O culoare de fundal pentru o celul sau un grup de celule n tabel
O culoare de fundal pentru tot tabelul
O culoare pentru chenarul unei celule sau grup de celule
O culoare de chenar pentru tot tabelul
Stabilii fundalul tabelului i chenarul tabelului n fereastra de inspectare Property. Border Color
stabilete culoarea chenarului pentru tot tabelul.
Putei aduga o imagine de fundal unei celule de tabel sau unui tabel ntreg. Introducei URL-ul
pentru o imagine de fundal n caseta numit Bg n fereastra de inspectare Property. Trebuie s
introducei o valoare n pixeli n proprietatea de dimensiune a chenarului (Border Size) pentru a vedea un
chenar.
Exist un butn cu un tabel, acest mic tabel arat ce celule ai selectat: o singur celul, un rnd
sau o coloan. Cuvintele cell (celul), row (rnd) i column (coloan) apar la dreapta acestui mic tabel.
Imbricarea unui tabel ntr-un tabel
Plasarea unui tabel ntr-o celul de tabel creeaz un tabel imbricat (nested). Pentru a imbrica un
tabel, plasai punctul de inserare n interiorul unei celule de tabel i inserai un tabel nou. Dimensiunile
celulei de tabel limiteaz limea i nlimea tabelului imbricat. Ar putea fi mai uor s imbricai tabele n
vizualizarea Layout. Trasarea unui tabel machet folosind instrumentul Draw Layout Table v permite s
trasai un tabel peste o celul existent. Tabelul imbricat se va distribui la dimensiunea celulei printe.
Este frumos s imbricai tabele n tabele. Dar, dac imbricai prea mult, browserul ar putea afia
tabelele mai lent. Dac browserul trebuie s munceasc mult pentru a reda tabelele, ar fi mai bine s
formatai informaia n alt mod.
Exist un buton de eliminare a imbricrii (Remove Nesting).
Utilizarea unei imagini schi pentru a transfera un proiect n pagina Web
Imaginea schi (tracing image) este util atunci cnd creai un design de pagin i avei o
imagine care arat toate elementele paginii finale. Putei utiliza aceast imagine ca fiind o imagine schi.
n loc s estimai unde vor merge elementele pe ecran, putei afia o imagine schi i s amplasai
perfect fiecare element de imagine i de text peste imaginea schi. O imagine schi faciliteaz alinierea
obiectelor.
ncrcai o imagine schi n Dreamweaver cu caseta de dialog Page Properties. Imaginea schi
este vizibil doar n Dreamweaver i nu este niciodat vizibil n browser. O imagine schi acoper orice
culoare de fundal sau imagine de fundal. Culoarea de fundal sau imaginea de fundal vor fi totui vizibile
n browser.
Pentru a ncrca o imagine schi n Dreamweaver:
1. Deschidei Page Properties din meniul Modify i selectai butonul Browse de lng caseta
Tracing Image (aflat n partea de jos a casetei de dialog). Sau selectai comanda Tracing Image din
meniul View i alegei Load.
2. Navigai pn la fiierul imaginii schi. Ar trebui s fie un GIF, JPEG sau PNG.
3. Deplasai cu mouse-ul glisorul Image Transparency (transparena imaginii) pentru a stabili ct
de opac sau transparent s fie imaginea schi.
4. Dai clic pe butonul OK.
Dup ce ai ncrcat imaginea schi, putei trece la vizualizarea Layout din Dreamweaver i s
ncepei trasarea proiectului pe care l vedei sub fereastra Document n imaginea schi. Aceast

159

facilitate este foarte util cnd implementai un design complicat care a fost creat de un grafician. De
obicei, elementele de pagin, cum sunt butoanele, titlurile i siglele, sunt decupate ntr-un program de
editare de imagini. Artistul grafic poate exporta o imagine a ntregului proiect pentru a-l utiliza ca imagine
schi.
Transformarea tabelului n straturi
Straturile permit o amplasare absolut a obiectelor pe pagin. Dreamweaver convertete un tabel
ntr-un grup de straturi. Pentru a transforma un tabel n straturi:
1. Selectai tabelul.
2. Selectai comanda Tables to AP Divs (transformarea unui tabel n straturi) din submeniul
Convert al meniului Modify.
3. Apare caseta de dialog Convert Tables to Ap Divs.
4. Acceptai valorile implicite i dai clic pe OK.
Caseta de dialog Convert Tables to AP Divs creeaz un strat pentru fiecare celul de tabel.
Utilizarea limbajului Dynamic HTML i a straturilor
Dynamic HTML (DHTML) ofer flexibilitatea necesar pentru machetarea paginilor Web i
includerea elementelor de interactivitate. Straturile din Dreamweaver ofer o modalitate de control al
amplasrii obiectelor pe pagin. Putei pune elementele exact acolo unde le dorii, fr a fi nevoie s
creai tabele complicate. Dac dorii s distribuii pagina Web pentru browsere mai vechi ce nu pot reda
elemente de Dynamic HTML, Dreamweaver poate crea un tabel care folosete straturile pentru a afia
formatul creat de dumneavoastr.
Ce este Dynamic HTML?
Dynamic HTML (DHTML) permite s creai vizitatorului paginii Web o experien interactiv.
DHTML este un termen folosit de dezvoltatorii de Web pentru a se referi la o colecie de tehnologii
folosite pentru a produce o pagin Web mai interactiv. Principalele trei componente din DHTML sunt
straturile, foile de stil n cascad (Cascading Style Sheets CSS) i JavaScript.
DHTML este o extensie a lui HTML care acord dezvoltatorilor de pagini Web un control mai mare
asupra machetrii i poziionrii n pagin. DHTML permite o mai mare interactivitate fr a depinde de
interaciunea cu un server. Cnd se vorbete de DHTML se nelege de obicei combinaia dintre HTML 4
i Cascadyng Style Sheets (CSS). Aceste elemente funcioneaz mpreun printr-un limbaj de tip script,
de obicei JavaScript.
Iat o list scurt de tipuri de aciuni posibile prin DHTML:
Adugarea de imagini ascunse pe pagin, care vor aprea cnd utilizatorul apas pe un buton
sau d clic pe o zon fierbinte.
Miscarea imaginilor sau textului pe pagina Web.
Crearea meniurilor popup.
Realizarea de ctre utilizatori a operaiilor drag-and-drop (tragere-i-plasare) asupra unui obiect
pe ecran, aa cum vrea el.
Determinarea schimbrii culorii sau dimensiunii textului atunci cnd utilizatorul trece cu mouse-
ul peste el.
ncrcarea n mod repetat un text ntr-o zon a ecranului, ca rspuns la o aciune a
utilizatorului. De exemplu, dac utilizatorii dau clic pe o variant greit dintr-un chestionar, putei s le
transmitei o reacie i s nlturai reacia cnd dau rspunsul corect.
Adugarea unui strat
Straturile sunt containere pe care le folosii pentru a poziiona coninutul pe o pagin Web.
Straturile au dou atribute interesante:
Visibility Aceast proprietate permite s ascundei tot coninutul unui strat i apoi s
declanai apariia lui cnd utilizatorul execut o aciune. De exemplu, putei simula un clic pe un meniu
ntr-un program. Stratul care conine imaginea meniului este iniial ascuns. Utilizatorul d clic pe titlul de
meniu de pe ecran i un script modific atributele stratului n care se afl meniul pentru ca acesta s
devin vizibil.
z-index Aceast proprietate controleaz ordinea de aezare (stacking order) a straturilor de
pe pagin. Putei suprapune straturile unul peste altul (overlapping) i controla ordinea lor. Aceasta d
capacitatea de a crea proiecte complicate.
Putei crea un strat n Dreamweaver prin dou metode diferite:
Cea mai simpl este s selectai instrumentul de trasare a straturilor din bara Insert i s
tragei cu mouse-ul pe pagina dumneavoastr cursorul n cruce pn cnd stratul ajunge
la dimensiunea pe care o dorii.
Selectai comanda AP Div din meniul Insert pentru a insera un strat.

160

Categoria AP Div din preferinele Dreamweaver este locul n care stabilii valorile implicite ale
straturilor. Putei stabili vizibilitatea, limea, nlimea, culoarea de fundal i imaginea de fundal. Mai
putei activa imbricarea prin marcarea casetei de dialog Nesting.
Se observ reperele de manevrare pentru redimensionare pe fiecare margine a stratului. Putei
deplasa aceste repere pentru a mri sau micora stratul. Mai putei stabili limea i nlimea stratului n
fereastra de inspectare Property. Unitatea de msur implicit este pixelul. Este bine s dai nume
straturilor. Cnd vei ncepe s adugai funcii behavior (comportamente) sau animaie n straturi,
numele v vor ajuta s identificai fiecare strat n parte. Putei specifica un nume n caseta ID din
ferereastra de inspectare Property. Nu se folosesc spaii sau punctuaie n numele de straturi.
Stabilirea poziiei stratului
Straturile au un reper de manevrare pentru tragere n colul din stnga sus. Pentru a selecta mai
multe straturi, inei apsat tasta Shift n timp ce dai clic pe straturi pentru a le aduga la selecie.
Mutai straturile apucndu-le de reperul de tragere. Dac nu putei folosi reperul de tragere deoarece
stratul este n marginea de sus a ferestrei Document, selectai-l n panoul Property al Ap Div-ului i
folosii tastele cu sgei pentru a-l muta sau introducei valorile de poziie n fereastra de inspectare
Property.
Adugarea unei culori de fundal i a unei imagini de fundal
Straturile pot avea o culoare de fundal. Putei folosi selectorul de culoare sau putei introduce de
la tastatur o culoare n format hexazecimal standard HTML, precedat de un #.
Aceast opiune trebuie s fie necompletat dac dorii ca stratul s fie transparent. Mai putei pune o
imagine de fundal ntr-un strat. Imaginea se va repeta de mai multe ori (tiling), ca un mozaic, n cadrul
stratului dac stratul este mai mare dect imaginea de fundal. Selectai pictograma de navigare (dosarul)
de lng caseta Bg Image n fereastra de inspectare Property i navigai la fiierul cu imaginea de fundal.
Despre ordinea de aezare a straturilor
Ordinea de aezare decide care strat este deasupra celorlalte. Valoarea z-index este cea care
determin ordinea de aezare, putnd fi o valoare negativ sau pozitiv. Stratul cu cel mai mare z-index
va fi deasupra.
Dreamweaver d tuturor straturilor dumneavoastr o valoare unic pentru z-index. n HTML este
permis s avei mai multe straturi cu acelai z-index. Dac reordonai straturile, Dreamweaver le va
renumerota cu un z-index unic.
Alinierea straturilor i utilizarea grilei
Putei activa i dezactiva grila i n meniul View Options din bara de instrumente.
Modificarea vizibilitii unui strat
Straturile au un atribut de vizibilitate ce poate lua valorile visible (vizibil), hidden (ascuns), inherit
(motenit) sau default (implicit).
n panoul AP Elements, ochiul de lng un strat este deschis cnd stratul este configurat vizibil.
El este nchis cnd stratul este ascuns. Opiunea inherit nu are o reprezentare printr-un ochi. ei
stabili caracteristicile de vizibilitate ale straturilor prin selectarea pictogramei ochi din capul de tabel al
panoului AP Elements.
Vizibilitatea implicit are n cele mai multe browsere opiunea inherit.
Imbricarea straturilor
Putei crea un strat n cadrul altui strat; noul strat este imbricat n stratul su printe. Cnd
mutai stratul printe, noul strat copil se mut o dat cu el. Stratul copil motenete i atributele de
vizibilitate ale printelui.
Pentru a crea un strat imbricat plasai cursorul n interiorul stratului printe i alegei comanda AP Div
din meniul Insert, submeniul Layout Objects. Se poate trasa un strat imbricat n cadrul unui strat
existent. Putei plasa un strat existent n cadrul unui alt strat selectndu-l n timp ce inei apsat tasta
Ctrl i apoi plasndu-l n alt strat.
Construirea cadrelor i a seturilor de cadre
Crearea unui set de cadre
Exist o diversitate de configuraii disponibile printr-un clic pe pictogramele din seciunea Frames
a barei Insert, submeniul HTML. Cnd lucrai cu cadre, folosirea comenzii Save devine mai complicat. n
timp ce lucrai cu cadre, Dreamweaver activeaz comenzile Save Frameset (salvarea setului de cadre) i
Save Frameset As (salvarea setului de cadre ca) din meniul File. Mai putei folosi i comanda Save All
pentru a salva tot coninutul cadrului i al setului de cadre. Exist, de asemenea, o comand
suplimentar de deschidere, comanda Open in Frame (deschidere n cadru), care apare n meniul File
cnd lucrai cu cadre.
Putei deschide cu aceast comand o pagin Web existent ntr-un cadru. Sunt trei metode de a
crea cadre:

161

Vizualizai chenarele de cadre i apoi deplasai-le cu mouse-ul pentru a crea noi cadre.
Folosii comenzile din submeniul Frameset al meniului Modify. S-ar putea s fie nevoie de
utilizarea comenzilor de meniu cnd configurarea cadrului pe care dorii s-l creai nu este posibil prin
tragerea chenarelor cu mouse-ul.
Folosii configuraiile de cadre preconstituite, disponibile n bara Insert.
Vizualizarea chenarelor de cadre
Trebuie s vizualizai chenarele de cadre nainte de a le putea trage cu mouse-ul i a crea cadre
noi. Selectai comanda Frame Borders din submeniul Visual Aids (ajutoare vizuale) al meniului View. Vei
vedea un set de chenare ce nconjoar pagina. Aceste chenare sunt instrumente vizuale ajuttoare din
Dreamweaver i nu reprezint modul n care va arta pagina final n browser. Putei deplasa aceste
chenare pentru a redimensiona proiectul.
Divizarea unei pagini n cadre
Pentru a crea cadre, tragei cu mouse-ul chenarele de cadru. ntr-o pagin Web goal, putei
crea dou cadre, sus i jos, prin tragerea n jos cu mouse-ul a chenarului cadrului de sus.
Denumirea cadrelor
Cnd comanda Frame Borders nu este bifat n submeniul Visual Aids al meniului View, pagina
Web apare aa cum va fi n browser.
Acum vei diviza cadrul de jos n dou cadre. Dac tragei cu mouse-ul latura din stnga a
chenarului, vei avea n final patru cadre dou n partea de sus i dou n partea de jos. n schimb,
folosind comenzile din submeniul Frameset al meniului Modify, divizai cadrul de jos n dou cadre.
Pentru a diviza cadrul de jos:
1. Avnd cursorul n cadrul de jos, selectai comanda Split Frame Right din submeniul Frameset al
meniului Modify. Aceast comand plaseaz cadrul existent n partea dreapt i adaug un nou cadru n
partea stng. Alternativ, putei trage cu mouse-ul latura din stnga a cadrului, innd apsat tasta Ctrl.
Putei selecta setul de cadre dnd clic pe unul dintre chenarele de cadru. Putei spune c ai selectat setul
de cadre atunci cnd vedei tagul <frameset> n selectorul de taguri. Salvai pagina Web cu setul de
cadre prin selectarea comenzii Save Frameset din meniul File. Putei denumi setul de cadre index.html.
n timp ce avei setul de cadre selectat, dai paginii Web un titlu n bara de instrumente.
Doar titlul setului de cadre apare n bara de titluri a browserului, niciodat titlurile separate ale
paginilor Web din cadre.
Dac nu ai salvat nc paginile Web din cadre i pagina Web a setului de cadre, Dreamweaver v
va solicita s facei salvarea nainte de a le previzualiza n browser. Cnd salvai prima oar, este mai
simplu s salvai separat fiecare pagin Web ce conine cte un cadru i setul de cadre cu pagini Web,
dect s salvai toate fiierele deodat la solicitarea din Dreamweaver.
Utilizarea panoului Frames
Panoul Frames v permite s selectai cadre individuale i s stabilii atributele cadrului. Panoul
Frames reprezint vizual cadrele care sunt n pagina dumneavoastr Web. Selectai un cadru dnd un clic
pe reprezentarea cadrului din panoul Frames. Mai putei selecta un cadru dnd Alt-clic n interiorul
cadrului din fereastra Document.
Cnd dai clic pe reprezentarea unui cadru n panoul Frames, proprietile cadrului sunt
disponibile n fereastra de inspectare Property.
Este important ca fiecare cadru s aib un nume. Numele cadrului este folosit pentru a stabili
inta unui cadru, fcnd o pagin Web s se ncarce n cadru printr-un clic pe o legtur din alt cadru.
Dai clic pe fiecare cadru din panoul Frames i introducei un nume n caseta Frame Name din fereastra
de inspectare Property. Putei denumi cadrul de sus banner, cadrul din stnga toc (de la table of
contents), iar cadrul din dreapta main.
Numele de cadre nu ar trebui s conin semne de punctuaie, precum punctul, cratimele sau
spaiile. n numele de cadre putei folosi linia de subliniere. De asemenea, nu ar trebui s folosii nume
rezervate ca top, parent, self sau blank.
Imbricarea cadrelor
Dai clic pe unul dintre cadrele de jos ale panoului Frames i uitai-v la selectorul de taguri. Vei
vedea un cadru n interiorul unui set de cadre n interiorul unui alt set de cadre. Dai clic pe cadrul de sus
al panoului Frames. Selectorul de taguri arat c acest cadru este ntr-un singur set de cadre. Cele dou
cadre de jos sunt ntr-un set de cadre imbricat.
Dreamweaver creeaz un set de cadre suplimentar deoarece seturile de cadre pot conine fie
rnduri, fie coloane, dar nu pe ambele. Primul set de cadre creat are dou rnduri. Al doilea set de cadre
creat are dou coloane.
Utilizarea n cadre a paginilor Web existente
Pentru a ncrca o pagin Web existent ntr-un cadru:

162

1. Avnd panoul Frames deschis, dai clic pe un cadru.


2. n fereastra de inspectare Property, selectai pictograma cu dosar de lng caseta de text Src
i navigai la o pagin Web existent sau introducei un URL absolut n caseta Src.
3. Dac ea este pe un disc local vei vedea pagina Web afiat. Dac ai fcut trimitere la un URL
absolut al unei pagini de pe Internet, Dreamweaver va afia un mesaj ce spune c acel cadru conine un
fiier aflat la distan i arat URL-ul.
Putei deschide o pagin Web existent n cadrul n care se afl cursorul, folosind comanda Open
in Frame din meniul File.
Stabilirea atributelor pentru cadre i a seturilor de cadre
Exist atribute separate pentru fiecare cadru i set de cadre care le nglobeaz. Unele atribute se
suprapun (chenare, de exemplu), aa c trebuie s fii atent ce atribute stabilii i unde le stabilii. Putei
experimenta modelele de seturi de cadre livrate cu Dreamweaver pentru a ncerca rapid mai multe
atribute.
Stabilirea atributelor de derulare i redimensionare
Este important s v gndii dac dorii ca utilizatorul s aib posibilitatea de a derula materialul
ntr-un cadru. Barele de derulare pot aprea n cadru fie pe orizontal, fie pe vertical. Barele de derulare
orizontale nu sunt des utilizate i n general nu sunt de dorit. Barele de derulare verticale sunt foarte
utilizate i apar atunci cnd materialul din pagina Web este mai lung dect ceea ce se poate vedea n
fereastra browserului.
Fiecare cadru are propriile atribute de derulare afiate n fereastra de inspectare Property cnd
este selectat un cadru n panoul Frames. Exist patru valori n meniul derulant Scroll din fereastra de
inspectare Property.
Valoarea Yes activeaz barele de derulare fie dac exist un coninut care le necesit, fie dac
nu exist. Ambele bare, orizontal i vertical, pot aprea, n funcie de browser.
Valoarea No dezactiveaz barele de derulare fie dac exist un coninut ce le necesit, fie dac
nu exist. Dac utilizatorii nu pot vedea coninutul n cadru, nu au nici o posibilitate de a-l derula ca s-l
vad.
Valoarea Auto activeaz barele de derulare cnd coninutul cadrului este mai mare dect ceea
ce se poate vedea n fereastra browserului. Dac este vizibil tot coninutul, barele de derulare sunt
dezactivate. Aceast valoare activeaz doar barele de derulare necesare, orizontal sau vertical.
Pentru cele mai multe browsere, valoarea Default este aceeai cu Auto. Bifai caseta de validare
No Resize dac nu dorii ca utilizatorul s poat redimensiona cadrele.
Stabilirea chenarelor
Navignd prin Web, uneori este dificil s identificai site-urile Web care folosesc cadre, deoarece
au chenarele de cadre dezactivate sau colorate astfel nct s se nglobeze n designul site-ului.
n fereastra de inspectare Property putei activa i dezactiva chenarele, stabili culoarea
chenarului i modifica grosimea acestuia. Atributele de chenar sunt puin dificile pentru c unele dintre
ele se stabilesc n cadru, altele, n setul de cadre i altele pot fi stabilite n ambele locuri. Stabilirea
proprietilor ntr-un anumit cadru are ntietate asupra proprietii stabilite n setul de cadre. Dac
stabilii atributele pentru cadre, iar ele par s nu funcioneze, verificai dac ai stabilit atributele n toate
seturile de cadre; poate lucrai cu un cadru imbricat care este afectat de dou seturi de atribute de seturi
de cadre.
Stabilii grosimea chenarului din setul de cadre. Cea mai simpl cale de a selecta setul de cadre,
afind atributele setului de cadre n fereastra de inspectare Property, este s selectai tagul <frameset>
din selectorul de taguri.
Selectai un cadru din panoul Frames i dai clic pe tagul <frameset> din partea cea mai din
stnga. Dai chenarului o valoare pentru grosime i selectai o culoare din caseta de culori.
Pentru a dezactiva chenarele de cadre, avnd setul de cadre selectat, alegei No din meniul derulant
Borders. Va trebui s dezactivai chenarele din toate seturile de cadre ale paginii. n situaia n care
chenarele din anumite cadre sunt activate, se vor suprapune peste valorile date pentru seturile de cadre
i chenarele vor fi vizibile. Pentru a dezactiva un chenar, toate cadrele adiacente trebuie s aib i ele
chenarele dezactivate. Dac nu dorii s apar chenarele, ar trebui s mai verificai c nu au alocat o
culoare de chenar.
Stabilirea dimensiunii unui cadru
Putei trage uor cu mouse-ul chenarele cadrului n Dreamweaver pentru a redimensiona un
cadru. Pentru un control mai fin al dimensiunii unui cadru, putei stabili dimensiunile de cadru n fereastra
de inspectare Property, avnd selectat setul de cadre. Putei selecta rndurile sau coloanele n setul de
cadre, dnd clic pe mica reprezentare din fereastra de inspectare Property. Adesea, primul cadru are o
valoare absolut (n pixeli sau n procente), n timp ce al doilea cadru este definit ca relativ.

163

Crearea de alternative la cadre


Selectai comanda Edit NoFrames Content (editarea de coninut fr cadre) din submeniul
Frameset al meniului Modify. Exist o bar gri de-a lungul prii de sus a ferestrei Document care spune
c este vorba de coninut fr cadre (NoFrames Content).
Stabilirea destinaiei paginilor legate astfel nct s se deschid ntrun anumit cadru
Setul de cadre este printele, iar cadrele sau seturile de cadre pe care le conine sunt copii.
nelegerea acestui concept v ajut s nelegei metoda targeting (stabilirea destinaiei).
Exist patru nume rezervate pentru destinaii: _top, _self (valoarea prestabilit), _parent i
_blank.
Meniul derulant Target din fereastra de inspectare Property conine lista numelor rezervate de
destinaii, plus numele tuturor cadrelor. Crearea unei hiperlegturi i selectarea unui nume de cadru din
meniul derulant Target va determina ca pagina Web legat s se ncarce n acea fereastr. Dac nu este
introdus nici o destinaie, pagina legat se va ncrca n cadrul care conine legtura.
Folosii grupul iniial de cadre pe care le-ai creat la nceputul acestei lecii pentru a da destinaia
unei hiperlegturi:
1. Creai o hiperlegtur n cadrul numit toc.
2. Selectai main din meniul derulant Target.
3. Dai comanda Save All.
4. Previzualizai cadrele n browser. Dai clic pe legtur.
Utilizarea funciei behavior Go To URL pentru ncrcarea cadrelor
Funcia behavior (numit i comportament) Go To URL (salt la URL) are capacitatea de a da o
destinaie cadrelor i este o metod bun de a obine un coninut de ncrcat n dou cadre deodat. De
exemplu, putei modifica att cadrul cu tabela de cuprins, ct i coninutul cadrului main atunci cnd
utilizatorul d clic pe o hiperlegtur n cadrul numit banner. Utilizatorul poate selecta o seciune diferit
a coninutului care are alte pagini Web ca tabel de cuprins i coninut n main. Deoarece o hiperlegtur
poate schimba coninutul doar ntr-un cadru, trebuie s folosii funcia behavior Go To URL. Pentru a
folosi funcia behavior (comportamentul) Go To URL:
1. Selectai un obiect din cadrul numit banner pentru a deveni hiperlegtur. Adugai nite text
i creai o hiperlegtur dac nu ai adugat nc nici un coninut.
2. Introducei javascript:void(); n caseta Link din fereastra Property pentru a crea o legtur
goal.
3. Deschidei panoul Behaviors din meniul Window. Cu hiperlegtura tocmai creat selectai
butonul + din panoul Behaviors i selectai Go To URL.
4. Selectai cadrul numit toc. Introducei un URL i apoi dai clic pe butonul OK.
5. Declanai aciunea Go To URL executnd dublu-clic pe ea n panoul Behavior.
6. Remarcai un asterisc lng cadrul numit toc. Asta nseamn c exist un URL introdus pentru
acest cadru. Adugai un alt URL unui alt cadru prin selectarea mai nti a cadrului numit main.
Introducei un URL n caseta de dedesubt i dai clic pe OK.
7. Salvai cadrele i previzualizai pagina n browser.
CSS
O problem important cnd avem un site cu multe pagini este atunci cnd dorim s facem
anumite schimbri n elementele paginii: fundalul, grafica sau fontul textelor din pagini.
Prin utilizarea CSS (Cascading Style Sheets), "foi de stil in cascada", acest lucru nu mai este o problem,
realizndu-se relativ uor, prin schimbarea sau adugarea unor elemente n codul CSS, nefiind nevoie s
lucrm la fiecare pagin sau la fiecare element din pagin.
CSS se ocup n general cu aspectul i controlul grafic al elementelor din pagin, cum ar fi:
textul, imaginile, fundal, culorile i aezarea acestora n cadrul ferestrei paginii.
CSS folosete stiluri, acestea nglobeaz, sub un anumit nume, atribute de formatare care se aplic
asupra unui element individual din pagin, asupra unui grup de elemente sau la nivelul intregului
document. CSS funcioneaz cu HTML, ns nu este HTML. El extinde funcionalitile HTML, permind
redefinirea etichetelor HTML existente. Prin utilizarea CSS aspectul documentului pe ansamblu, sau a unui
element individual din interiorul su, poate fi controlat mult mai uor. Stilurile pot fi aplicate asupra unui
element, a unui document sau chiar asupra unui ntreg site web. Un dezavantaj ar fi ca unele
navigatoare nu sunt compatibile CSS, astfel c documentele HTML sunt afiate ca i cum CSS n-ar exista,
dar cele mai cunoscute i utilizate browsere, cum ar fi: Mozilla Firefox, Internet Explorer, Opera, i altele,
sunt compatibile cu CSS.
Avem nevoie de un editor de texte simplu, cum ar fi Notepad, i un navigator, de exemplu Mozilla
Firefox.

164

Scrierea codului CSS folosind tag-uri


Codurile CSS pot fi scrise n interiorul paginii sau ntr-un fiier extern cu extensia".css".
Codul CSS, ca form general, este alcatuit din: obiectul care va fi formatat, proprietile acestuia i
valoarea (sau atributele) fiecrei proprieti. Cnd este adugat n documentul HTML, trebuie scris n
cadrul unui tag <style> din seciunea HEAD a documentului HTML, dup cum urmeaza:
<html>
<head>
<title>Titlul</title>
<styletype="text/css">
obiect_css{
proprietate:valoare;
alta_proprietate:valoare;
}
</style>
</head>
<body>
... Continut ...
</body>
</html>
Se poate observa sintaxa codului CSS. Perechile proprietate:valoare se scriu ntre acoladele
obiectului CSS pe care-l definesc, ntre "proprietate" i "valoare" trebuie s fie un caracterul (:) iar la
sfritul perechii se adaug un caracterul (;)
Cand este adugat ntr-un fiier extern ".css", codul CSS se scrie la fel, dar nu se mai adaug
tag-ul <style>.
1. Obiectele (regulile) CSS
Exist trei tipuri principale de obiecte CSS: selector, clasa i identificator.
Selectorul HTML
Selectorul HTML se folosete pentru a redefini modul de afiare a coninutului etichetei HTML.
Un selector HTML reprezint partea etichetei HTML care indic browser-ului tipul de etichet.
De exemplu:
h1 { font-family:"Arial"; font-size:15px; }
Aici selectorul este "h1". Definirea unui selector HTML folosind CSS are ca rezultat redefinirea
etichetei HTML. Selectorul i eticheta dei par identice, totui nu sunt.
Clasa
Clasa este un obiect care poate fi aplicat oricrei etichete HTML. O clas trebuie creat n interiorul
etichetei HTML nainte de a fi definit ntr-un cod CSS. Crearea clasei n interiorul etichetei se face simplu,
prin specificarea cuvantului class i numele clasei, ca n exemplu de mai jos:
<h1 class="nume_clasa"> Text </h1>
- "nume_clasa", poate fi orice nume dorim.
Apoi n interiorul codului CSS, clasa trebuie definit prin adugarea unui caracter (.) naintea
numelui clasei, ca n exemplul urmtor:
.nume_clasa { font-family:"Arial"; font-size:15px; }
Numele aceleai clase poate fi atribuit mai multor etichete HTML din aceeai pagin, i toate vor
prelua acelai stil css.
Identificator
Obiectele de tip identificator (ID) sunt asemntoare cu clasele. Pot fi aplicate oricrei etichete
HTML, dar spre deosebire de clase, numele unui identificator trebuie atribuit numai unei singure etichete
HTML dintr-o pagin, pentru alt etichet se adaug un ID cu nume diferit.
Ca i clasa, identificatorul trebuie nti creat n interiorul etichetei HTML. Modul de creare este
simplu, prin specificarea cuvntului id i numele clasei, ca n exemplu de mai jos:
<h1 id="nume_id"> Text </h1>
- "nume_id", poate fi orice nume dorim.
In interiorul codului CSS, identificatorul este definit prin adugarea unui caracter diez (#) naintea
numelui, ca n exemplu urmator:
#nume_id { font-family:"Arial"; font-size:15px; }

165


2. Componentele unui obiect CSS
Obiectele CSS, indiferent de tipul lor, au n componen urmtoarele elemente:
Selectorii - identific un obiect; pot fi selectori de etichete HTML, clase sau identificatori.
Proprietatile - identific o proprietate a obiectului; se refer n special la aspect.
Valorile - sunt atributele unei proprieti; pot fi cuvinte cheie, valori numerice sau procentuale,
tipul valorii depinznd de proprietate.
Sintaxa general a unei reguli CSS este urmtoarea:
selector {proprietate: valoare; }
Proprietile i valorile constituie definiia regulii (obiectului) CSS. Acestea se regsesc sub forma
de perechi,desprite de caracterul dou puncte :, fiecare pereche se termin cu un caracter punct i
virgul ";".
Etichetele HTML nu sunt sensibile la diferena ntre majuscule i litere mici. Dar odat cu apariia
limbajului XHTML, acesta face distincie ntre majuscule i minuscule, astfel c toate etichetele i toti
selectorii trebuie scrii cu litere mici.
Crearea Foilor de Stil
1. Etichete HTML si stiluri CSS
CSS ofer posibilitatea de a schimba aspectul fiecrei etichete n parte, prin stabilirea unui anume
stil n interiorul ei, cu atributul "style". Acest lucru este util mai ales pentru a anula alte stiluri ale
elementului respectiv sau de a da elemente grafice de stil doar etichetei respective.
Sintaxa pentru definirea stilurilor este urmtoarea:
<eticheta style="proprietate:valoare;"> text ... </eticheta>
CSS permite i definirea unor reguli de stil generale ntr-o pagina web. Acest set de reguli trebuie scris in
seciunea de antet (head) a documentului, n cadrul tag-ului <style>.
Sintaxa pentru definirea CSS ntr-un document HTML, n interiorul etichetei <head> </head>, este
urmtoarea:
<style type="text/css">
selector_1 {proprietate1:valoare1; proprietate2:valoare2; ... }
...
selector_n {proprietate1:valoare1; proprietate2:valoare2; ... }
</style>
- Definirea tuturor stilurilor ntr-o locaie comun uureaz modificarea mai rapid a unei pagini.
Iata un exemplu practic de cod css:
<style type="text/css">
h1 { font-family:Arial; font-size:15px; font-weight:bold; color:#1111ff; }
p {font-family:Arial; font-size:12px; color:blue; }
</style>
Foile de stil pot fi utilizate nu doar la nivel de pagin web, ci i la nivel de ntreg site. Astfel,
trebuie creat o foaie de stil extern ntr-un fiier separat, de preferat cu extensia ".css", care poate fi
inclus n pagina HTML prin dou procedee: legatur sau import.
In fiierul extern creat se adaug reguli CSS, fr ns ca aceste reguli s fie incadrate n etichete
STYLE.
Dupa ce a fost creat foaia de stil extern, aceasta poate fi folosit de un document HTML
utiliznd urmtoarea sintax, n interiorul tag-ului <head> </head>:
<link rel="stylesheet" href="nume_fisier.css" type="text/css">
- Eticheta LINK apare n antetul documentului (seciunea head), iar atributele folosite transmit
navigatorului tipul de legatur ("rel" legatura cu o foaie de stil, "type" - tipul codului din fiier) i locaia
nspre fiierul ce conine codul CSS ("href" calea i numele complet al fiierului, inclusiv extensia).
O alt modalitate de utilizare a foilor de stil externe ntr-un document HTML o reprezint importul
acestora folosind comanda @import.
Sintaxa pentru importul unei foi de stil externe este urmtoarea:
<style type="text/css">
@import url(nume_fisier.css);
</style>
Pentru a importa un fiier CSS extern se folosete n cadrul seciunii HEAD a documentului HTML
eticheta STYLE. In cadrul acestei etichete este adugata instruciunea "@import" de mai sus, unde
"nume_fisier.css" reprezint calea i numele fiierului ce conine regulile CSS definite.
Alturi de instruciunea "@import", n cadrul etichetei STYLE, pot fi adugate definiii i selectori.
suplimentari.

166

Legtura la un fiier CSS extern sau importul acestuia ntr-un document HTML are acelai efect ca
i cum stilurile incluse ar fi fost definire direct n eticheta STYLE din seciunea HEAD a documentului
HTML.
2. Definirea selectorilor
Selectorii HTML pot fi definii prin adugarea unui numr de definiii compatibilie cu eticheta
HTML la care se refer, avnd urmtoarea form general:
selector_HTML {proprietate1:valoare1; proprietate2:valoare2; ... }
Dup redefinirea etichetei HTML, stilurile etichetelor respective din documentul HTML vor fi
modificate automat. Prin redefinirea unei etichete, proprietile prestabilite existente nu sunt anulate, ci
se adaug altele noi.
Utilizarea selectorilor de tip clas ofer posibilitatea realizrii unor stiluri care se pot aplica doar
acelor elemente care sunt etichetate cu clasa respectiv. Sintaxa general de definire a unei clase CSS
este:
.nume_clasa { proprietate1:valoare1; proprietate2:valoare2; ... }
Exist cazul n care o clas este asociat unui selector HTML, ceea ce nseamn c acea clas
poate fi folosit doar cu eticheta HTML respectiv. Pentru a defini o clas care s afecteze n mod direct
un anume selector HTML, se folosete urmtoarea sintax:
selector_HTML .nume_clasa {proprietate1:valoare1; proprietate2:valoare2; ... }
Selectoarele de clas sunt acceptate de toate browserele. Numele unei clase e recomandat s fie
diferit de cuvintele rezervate JavaScript.
Asemntor cu selectorii de clas se definesc i identificatorii (id-ul). Acetia sunt folosii pentru
crearea de stiluri care pot fi atribuite unei singure etichete HTML dintr-o pagin. Sintaxa general de
definire a unui identificator este:
#identificator{ proprietate1:valoare1; proprietate2:valoare2; ... }
Identificatorii permit definirea unui element sub forma unui obiect, fiind folosii doar o singur
dat n cadrul unei pagini web pentru identificarea tag-ului respectiv, astfel poate fi manipulat i cu
ajutorul funciilor JavaScript.
3. Crearea etichetelor HTML personalizate
Majoritatea etichetelor HTML au unele proprieti prestabilite. Acestea fie rmn aa cum sunt,
fie pot fi redefinite. Exist ns cazuri n care se doreste crearea unor etichete personalizate, pornind de la
zero. In acest caz se folosesc etichetele <span> si <div>.
Eticheta <span> nu are proprieti motenite. Ea reprezinta doar o locaie vid care creaz o
etichet n linie.
Pentru a configura o etichet n linie trebuie definit o clas sau identificator care s poat fi
aplicat apoi unei etichete <span>. Iat un exemplu cu, forma general, n care selectori sunt precedai
de eticheta <span> :
<span class="nume_clasa"> ... </span>
...
<span id="span1"> ... </span>
...
<span class="clasa_span"> ... </span>
...
Acum iat cum pot fi definii acetia n interiorul unei foi de stil:
.nume_clasa { proprietate1:valoare1; proprietate2:valoare2; ... }
span1 { proprietate1:valoare1; proprietate2:valoare2; ... }
span .clasa_span { proprietate1:valoare1; proprietate2:valoare2; ... }
In momentul n care se dorete configurarea unui bloc separat de restul coninutului unui
document HTML, soluia este eticheta <div>. Aceasta creaz o zon proprie n pagin, cu linie nou att
deasupra sa ct i dedesubtul su.
Pentru crearea etichetelor DIV se procedeaz la fel ca i n cazul etichetelor n linie SPAN, prin
definirea mai nti a unei etichete de tip clas sau identificator, urmat apoi de aplicarea ei asupra unei
etichete <div>.
Iat forma general de aplicare a unei etichete <div> ntr-o pagin HTML :
...
<div class="nume_clasa"> ... </div>
...
<div id="div1"> ... </div>
...
Definirea acestor etichete <div> ntr-un cod CSS se face astfel:

167

div { proprietate1:valoare1; proprietate2:valoare2; ... }


.nume_clasa { proprietate1:valoare1; proprietate2:valoare2; ... }
div1 { proprietate1:valoare1; proprietate2:valoare2; ... }
Regulile CSS pentru definirea etichetelor <span> sau <div>, pot fi plasate la fel ca i celelalte
tipuri de selectoare, n seciunea "head" a documentului n interiorul etichetei "style", sau ntr-un fiier
extern carev ulterior este legat sau importat in documentul HTML.
4. Definirea de reguli similare
Dac mai muli selectori folosesc aceleai definiii css, acetia pot avea aceeai list de elemente,
fiind scrii separat prin virgule. Sintaxa general pentru definirea unei liste cu mai muli selectori este
urmtoarea:
selector1, selector2, ... {proprietate1:valoare1; proprietate2:valoare2; ... }
Impreun cu selectorii pot fi de asemenea definii identificatorii i clasele. Dezavantajul ar fi c n
momentul n care este modificat o valoare a unei proprieti incluse n definiie, valoarea respectiv se
va modifica n toate etichetele reprezentate de aceti selectori.
Formatarea paginilor Web cu HTML i cu Cascading Style Sheets
Dreamweaver afieaz cele mai multe stiluri n fereastra Document; cele pe care nu le poate
afia, sunt notate cu un asterisc la definirea stilului.
Exist trei tipuri diferite de stiluri.
Crearea i aplicarea unui stil personal
Panoul CSS Styles conine lista stilurilor personale ce au fost definite i sunt gata s fie aplicate
obiectelor paginii dumneavoastr Web. Caseta de dialog CSS Style Definition din Dreamweaver are
panouri cu liste ce conin numeroase opiuni de stiluri. Pentru a crea un stil personal:
1. Selectai butonul New CSS Style (stil CSS nou) din panoul CSS Styles. Mai putei selecta
comanda New CSS Style n meniul options sau n submeniul CSS Styles din meniul Text din
Dreamweaver.
2. Apare caseta de dialog New CSS Syle. Selectai butonul radio de lng Class creeaz un stil
personal.


3. Introducei un nume de stil n caseta Name. Numele stilurilor personale ncep ntotdeauna cu
un punct. Dreamweaver va introduce acest punct pentru dumneavoastr, dac ai uitat s-l introducei.
Nu folosii spaii sau semne de punctuaie n numele stilurilor.
4. Selectai butonul radio de lng This Document Only. Dac trecei peste acest pas,
Dreamweaver v va solicita s salvai stilul ca fiind o foaie de stil extern. Dai clic pe butonul OK.
5. Apare caseta de dialog CSS Style Definition. Caseta se deschide avnd selectat categoria
Type. n categoria Type, selectai un font i o dimensiune de font. Alegei o culoare de font cu selectorul
de culoare.
6. Selectai OK pentru a salva stilul. Panoul CSS Styles conine n list noul stil personal. Aplicai
obiectelor stilul personal selectnd mai nti obiectul i apoi executnd clic pe stil n panoul CSS Styles.
Unele atribute de stil vor funciona doar cnd sunt aplicate anumitor taguri. De exemplu, un stil numit
bigcell cu valori pentru umplerea celulei, stabilite n categoria Box din caseta CSS Styles Definition, nu va
avea efect asupra textului, deoarece atributul de umplere nu este un atribut de text. n schimb, aplicarea
acestui stil va avea efect asupra unui obiect corespunztor, cum ar fi o celul de tabel.
Dac ai aplicat din greeal un stil unui obiect, putei s-l nlturai selectnd opiunea No CSS
Style din panoul CSS Styles.

168

Opiunile stilurilor
Caseta de dialog CSS Style Definition are opt panouri cu numeroase opiuni pe care le putei
folosi pentru a defini un stil.
Panoul Type definete atributele de scriere. Aceste opiuni de stil pot fi aplicate unui text sau
unui obiect care conine text.

Panoul Background definete atributele de fundal, cum ar fi culoarea sau imaginea. Aceste
opiuni de stil pot fi aplicate obiectelor n care putei stabili un fundal, precum straturile i tabelele.

Panoul Block definete atributele de scriere pentru paragrafe.

Panoul Box definete atribute aplicate unui obiect, precum dimensiunea marginii.

169

Panoul Border definete atribute care sunt aplicate obiectelor cu chenare, cum ar fi straturile i
tabelele.
Panoul List definete atribute pentru liste, cum este tipul de marcare.
Panoul Positioning definete atributele unui strat, cum ar fi vizibilitatea i z-index.
Panoul Extensions definete diverse atribute care sunt fie dezvoltri ulterioare, fie valabile
doar pentru Internet Explorer.
Opiunile de stil din caseta de dialog Style Definition
Panoul Type
Size - Stabilete dimensiunea fontului i unitatea de msur.
Line Height- Stabilete nlimea liniei de text i unitatea de msur. Aceast opiune este
numit n mod obinuit leading (interliniere).
Weight - Adaug o grosime textului. Textul bold obinuit are o grosime de 700.
Variant - Stabilete varianta cu litere mari la nivelul celor mici pentru text.
Panoul Background
Attachment - Stabilete dac imaginea de fundal se deruleaz o dat cu coninutul sau este
fixat n poziia ei iniial.
Horizontal Position - Poziia orizontal iniial a imaginii de fundal.
Vertical Position - Poziia vertical iniial a imaginii de fundal.
Panoul Block
Word Spacing - Folosii valori negative pentru a reduce spaiul dintre cuvinte.
Letter Spacing - Utilizai valori negative pentru a reduce spaiul dintre litere.
Vertical Alignment - Stabilete alinierea obiectului relativ la obiectele din jurul lui.
Text Align - Aliniaz textul dintr-un obiect.
Text Indent - Stabilete cu ct este indentat prima linie. Folosii valori negative pentru a stabili
un outdent (opusul indentrii).
Whitespace - Stabilete cum va aprea spaiul liber ntr-un obiect. Opiunea Normal elimin
spaiul liber, Pre afieaz tot spaiul liber, iar Nowrap stabilete ca textul s se limiteze la limea
obiectului care l conine doar cnd se ntlnete tagul <br>.
Panoul Box
Float - Stabilete pe care parte se vor aranja alte obiecte (cum ar fi textul) n jurul unui obiect.
Clear - terge opiunea Float pentru ca obiectele (cum ar fi textul) s nu se aranjeze n jurul altui
obiect.
Padding - Stabilete ct spaiu s fie ntre obiect i chenarul su (sau margine).
Margin - Stabilete ct spaiu s fie ntre chenarul unui obiect i alte obiecte.
Panoul Border
Style - Stabilete aspectul stilului chenarului. Opiunile sunt dotted (punctat), dashed (linie ntrerupt),
solid (linie plin), double (linie dubl), groove (crestat), ridge (ncreit), inset i outset.
Panoul List
Type - Stabilete aspectul marcajelor. Opiunile sunt decimal (numerotare zecimal), lower-
roman (cifre romane mici), upper-roman (cifre romane mari), lower-alpha (caractere alfanumerice mici) i
upperalpha (caractere alfanumerice mari).
Panoul Positioning
Type - Stabilete modul n care este poziionat stratul. Opiunile sunt relative (cu coordonatele
relative la poziia lui), absolute (cu coordonatele exacte) i static (la locul su n derularea documentului).
Placement - Stabilete atributele left, top, right i bottom ale unui strat.
Clip - Stabilete atributele de decupare pentru laturile top, right, bottom i left i ale unui strat.
Panoul Extensions
Page Break - Foreaz o ntrerupere de pagin n timpul tipririi fie nainte, fie dup un obiect.
Acest stil nu este acceptat de multe browsere.
Cursor - Schimb cursorul cnd este plasat peste un obiect. Acceptat doar n Internet Explorer
versiunea 4.0 sau mai recent.
Filter - Aplic efecte speciale. Este acceptat doar n Internet Explorer versiunea 4.0 sau mai
recent.
Poziionarea unui strat cu un stil
Pentru a defini un stil de poziionare pentru un strat:
1. Creai i denumii un stil personal.
2. Selectai categoria Positioning.
3. Selectai Absolute din categoria Type. Stabilii proprietile Left, Top, Width i Height.
4. Selectai butonul OK.

170

Creai un strat n pagina dumneavoastr Web i poziionai-l n alt zon a ecranului dect cea n
care tocmai l-ai definit. tergei proprietile de strat L (left), T (top), W (width) i H (height) i aplicai
stratului stilul. Stratul ar trebui s sar n poziia pe care ai definit-o n stil.
Trebuie s nlturai proprietile din tagul <div> al stratului pentru ca stratul s preia
proprietile definite n stil. Putei spune c acest strat are aplicat un stil deoarece numele stilului este
evideniat n panoul CSS Styles atunci cnd selectai stratul.
n loc de a crea mai nti un strat, putei pur i simplu s aplicai stilul tocmai creat unui obiect n
pagina dumneavoastr Web. Stilul va crea un strat n jurul unui obiect.
Crearea unei foi de stil externe
Dac ai creat deja stiluri ntr-o pagin Web, nainte de a v decide s folosii o foaie de stil
extern folosii comanda Export CSS Styles din submeniul Export al meniului File. n loc de a crea un
fiier nou, legai-v la acest fiier folosind butonul Attach to Style Sheet (ataare la foaia de stil) din
partea de jos a panoului CSS Styles.

Cum se poate terge sublinierea din hiperlegturile realizate cu stiluri CSS? Redefinii tagul ancor
<a> din CSS Styles. Dai atributului Decoration valoarea none n categoria Type a casetei de dialog
Style Definition.
Pentru a crea legtura goal introducei javascript:void(); n caseta Link a ferestrei Property.
Funcia behavior
Cnd aplicai unui obiect o funcie behavior, Dreamweaver insereaz cod JavaScript n seciunea
<head> a documentului HTML. Un element de bibliotec nu are o seciune <head>.
Pentru a edita o funcie behavior ataat unui element trebuie mai nti s detaai elementul, s editai
funcia behavior i apoi s recreai elementul.
Funcia behavior permite vizitatorilor s interacioneze cu site-ul, putnd s-l modifice n anumite
feluri. Atunci cnd ataezi unui element comportament, browser-ul cheam aciunea respectiv asociat
evenimentului respectiv prin codul JavaScript aferent.
Un singur eveniment poate avea mai multe aciuni.
Afiarea unui mesaj n bara de stare
Aciunea The Set Text of Status Bar afieaz un mesaj n bara de stare, aceast opiune va
deschide o fereastr n care se introduce un mesaj ce trebuie afiat.
Afiarea i ascunderea straturilor
Straturile din Dreamweaver ofer o modalitate de control al amplasrii obiectelor pe pagin.
Putei pune elementele exact acolo unde le dorii, fr a fi nevoie s creai tabele complicate.
Straturile au dou atribute interesante:
Visibility Aceast proprietate permite s ascundei tot coninutul unui strat i apoi s
declanai apariia lui cnd utilizatorul execut o aciune. De exemplu, putei simula un clic pe un meniu
ntr-un program. Stratul care conine imaginea meniului este iniial ascuns. Utilizatorul d clic pe titlul de
meniu de pe ecran i un script modific atributele stratului n care se afl meniul pentru ca acesta s
devin vizibil.
z-index Aceast proprietate controleaz ordinea de aezare (stacking order) a straturilor de
pe pagin. Putei suprapune straturile unul peste altul (overlapping) i controla ordinea lor. Aceasta d
capacitatea de a crea proiecte complicate.
Deschiderea unei ferestre noi
Aciunea Use the Open Browser Window deschide un URL ntr-o fereastr nou, creia i se pot
specifica dimensiunile, attribute ca navigation toolbar, location toolbar, menu bar i nume.
Schimbarea background-ului paginii
Pentru a modifica culoarea sau imaginea background-ului paginii se d click n interiorul paginii,
iar n panoul cu proprieti se caut butonul "Page Properties", astfel se va deschide o nou ferestr.
Dac se dorete schimbarea culorii se folosete butonul "Background color", iar o unealt de colorare va
aprea i v va permite s schimbai culoarea.

171

Dac se dorete s se introduc ca i background o imagine, se salveaz aceasta n folderol cu


imagini ale paginilor create pentru site, iar n fereastra de proprieti se selecteaz butonul Browse
aprnd o fereastr cu "Select Image Source" , unde se va selecta imaginea. Dac imaginea este mic se
poate apsa butonul "Repeat" pentru a se realize copii ale imaginii pe ntreaga suprafa a paginii.
Bara de stare a aplicaiei Dreamweaver

Bara de stare apare asemntor ca n figura de mai jos:


Aceasta este foarte important dac se dorete personalizarea site-ului web(adic schimbarea
culorii, fontului a ntregii pagini, printr-o singur operaie). Partea stng a brii de stare conine un text
de neneles, coninut ntre paranteze, ca de exemplu "<div#container> <div#sidebar1> <p>". Acestea
sunt tag-uri utilizate n limbajul HTML. Pe fiecare din aceste tag-uri se poate face click, de exemplu dac
se face click pe tag-ul <div#sidebar1> toat coloana stng va fi selectat. Fiecare dintre aceste etichete
indic un bloc de elemente de pe ecran.
Schimbarea background-ului antetului, subsolului, barei laterale, coninutului
principal
Pentru a modifica partea care se vrea se pune cursorul n seciunea respectiv. Se d click n bara
de stare pe tag-ul <divheader> pentru antet, <div#sidebar1> pentru coloana din stnga,
<divmainContent> pentru coloana din dreapta.
Schimbarea background-ului pentru antet, subsol, bara lateral se face la fel, adic prin panoul
de CSS Styles, unde se modific background-ul aa cum se dorete.
Trebuie vizualizat linia cu Properties pentru ".twoColLiqLtHdr mainContent", mutai mouse-ul
pe linia care separ aceste cuvinte glisai-l n sus pn cnd putei vedea link-ul "Add property", dai click
pe acesta i va aprea o caset derulant, dac se vrea schimbarea culorii background-ului se alege
"background-color", altfel "background-image", urmnd alegerea culorii sau sursa imaginii alese.
Crearea unei animaii
Redimensionarea controlului
Dimensiunea implicit a obiectelor plug-in este de 32 x 32 pixeli. Este destul de mic, dar putei
redimensiona un obiect plug-in.
Dimensionarea corespunztoare a unui plug-in poate fi destul de dificil de prevzut. Dac ai
inclus un fiier de sunet n pagina dumneavoastr Web, unii vizitatori pot folosi un applet Java implicit,
LiveAudio, din Netscape pentru a reda sunetul. Alii pot avea modulul nregistrat de QuickTime pentru a
reda fiiere WAV ntr-o pagin Web. Alii pot folosi Windows Media Player.
nlimea de 25 de pixeli era necesar pentru a afia butoanele din Windows Media Player n
Internet Explorer. In funcie de modulul plug-in sau controlul ActiveX nregistrat n browser pentru a reda
fiiere MP3, ecranul dumneavoastr s-ar putea s nu arate la fel. Pn acum ai utilizat un program de
redare n linie (inline) sau nglobat (embedded), adic modulul plug-in apare n cadrul paginii
dumneavoastr Web. Cnd creai o hiperlegtur la un fiier de sunet, utilizatorul va lansa controlerul
ntr-o fereastr separat cnd selecteaz legtura.
Adugarea capacitii de ciclare a sunetului
Prin caseta de dialog Parameters, Dreamweaver ofer flexibilitatea de a lucra cu atribute
avansate ale obiectelor i chiar cu atribute care nu au fost create nc. Selectarea butonului Parameters
deschide caseta de dialog Parameters. Parameters const din dou pri: un nume de parametru i o
valoare.
Multe module plug-in au parametric opionali sau impui pe care i putei stabili n caseta de
dialog Parameters. Parametrii disponibili pentru sunete, cum sunt loop (ciclare) i autostart, pot fi sau nu
disponibili pentru alte formate. Module plug-in diferite au parametri disponibili diferii.
Dup selectarea butonului Parameters, dai clic pe butonul + pentru a aduga un parametru.
Pentru a cicla un sunet, introducei loop ca nume al parametrului. Apsai tasta Tab sau dai clic
n coloana pentru valoare i introducei TRUE. Valoarea implicit este false, deci dac dorii ca sunetul s
fie redat doar o dat, nu trebuie s introducei parametrul loop. Netscape va recunoate un numr ca
fiind valoarea pentru parametrul loop i va reda sunetul de acel numr de ori.
Pentru a crea acelai efect cu Internet Explorer, adugai parametrul playcount n plus fa de
loop. Valoarea implicit pentru contorul redrii sunetului este unu. Dai clic pe butonul OK. Pentru a edita
un parametru, selectai din nou butonul Parameter i dai clic pe parametrul pe care dorii s-l modificai.
Ignorai pictogramele cu sgeile fulger; ele sunt implicate n ncrcarea dinamic a datelor n cmpurile
parametrilor atunci cnd folosii scripturi de tip server-side (aflate pe partea de server).

172

Adugarea unei legturi la un fiier PDF


Pn acum, ai inclus coninut multimedia ntr-o pagin Web. Mai putei s facei o legtur la un
coninut care apare singur. Legai fiiere multimedia tot aa cum ai face legtura la o alt pagin Web.
Adobe Acrobat Reader este un program de redare distribuit gratuit i care a devenit un standard
Web de vizualizare a fiierelor de text formatate. Fiierele PDF (portable digital format) permit unui
vizitator s vad un fiier exact aa cum s-a dorit, fonturile, macheta paginii i grafica apar dup cum s-a
prevzut. Creai fiiere PDF i le vizualizai cu Acrobat Reader. Cnd este instalat aplicaia Reader este
de obicei instalat i un modul plug-in Acrobat Reader. Pentru a afia un fiier PDF creai o hiperlegtur la
URL-ul fiierului PDF. Fiierul se va deschide n cadrul browserului dac exist modulul plug-in Acrobat.
Dac nu exist instalat modulul plug-in, dar exist Acrobat Reader, fiierul PDF se va deschide n Acrobat
Reader n afara browserului.
Adugarea unui fiier de sunet
Folosii obiectul Plugin din seciunea Media a barei Insert (sau comanda Plugin din submeniul
Media al meniului Insert) pentru a insera un sunet ntr-o pagin Web.
Pentru a insera un obiect Plugin:
1. Poziionai punctul de inserare n fereastra Document n Dreamweaver acolo unde ai vrea s
apar controlul de sunet la vizualizarea paginii n browser.
2. Selectai obiectul Plugin din seciunea Media a barei Insert. Apare caseta de dialog Select File.
Navigai la un director care conine un fiier de sunet i selectai un fiier. Dai clic pe butonul Select dup
ce ai selectat fiierul.
3. Salvai modificrile i apoi previzualizai pagina dumneavoastr Web ntr-un browser, pentru a
vedea cum arat i cum sun.
Remarcai c fereastra de inspectare Property pentru obiectul Plugin are unele proprieti care
sunt similare cu unele pe care le-ai vzut n timp ce lucrai cu imagini. Selectarea unui fiier completeaz
caseta Src. Exist un meniu derulant Align, similar cu cel pentru imagini, care afecteaz modul n care
alte obiecte se aliniaz la obiectul Plugin. Alte proprieti familiar sunt W, H, V Space, H Space. Mai putei
aduga un chenar la obiectul Plugin. Plg URL i butonul Parameters sunt dou proprieti suplimentare pe
care le vom comenta mai trziu n aceast lecie.
Includerea elementelor multimedia depinde foarte mult de tipul de browser i de module plug-in
pe care le are utilizatorul. Unele module plug-in i unele formate de fiiere de sunet sunt mai cunoscute
dect altele. Formatele de sunet RealMedia i MP3 sunt cunoscute i foarte des ntlnite pe Web.
Adugarea funciilor behavior avansate Drag Layer
Fereastra Dreamweaver Document are o bar de stare de-a lungul prii de jos a paginii.
Ea conine selectorul de taguri, meniul derulant Windows Size i statisticile de descrcare.
Selectorul de taguri din colul din stnga jos al ferestrei Document ofer un acces uor la tagurile
HTML care sunt implicate n orice obiect de pe ecran.
Selectorul de taguri arat toate tagurile HTML care influeneaz un obiect.
Selectorul de taguri faciliteaz mult selectarea ntregului coninut al paginii Web, printrun simplu
clic pe tagul <body>.
Meniul derulant Window Size funcioneaz doar atunci cnd nu avei fereastra Document
maximizat.
Dimensiunile ferestrei de browser sunt mai mici dect rezoluia ecranului, deoarece interfaa de
browser (butoane i meniuri, de exemplu) ocup din spaiu.
Comanda Edit Sizes v duce n categoria Status Bar din Dreamweaver Preferences, unde putei
aduga dimensiunea proprie de fereastr.
Deoarece limea de band este adesea o problem n dezvoltarea pentru Web, este bine de tiut
dimensiunea estimat a unui fiier i durata de descrcare a paginii dumneavoastr Web.
Durata estimat de descrcare artat n bara de stare se bazeaz pe configurarea modemului
din categoria Status Bar din Dreamweaver Preferences.
Crearea unui formular i utilizarea acestuia pentru a prelua date
Crearea unui formular
Un obiect formular este un container pentru alte obiecte i, n acelai timp, un element invizibil.
Cnd adugai un formular unei pagini Web, dac avei bifat opiunea Form Delimiter
(delimitator de formular) n categoria Invisible Elements din caseta de dialog Preferences, Dreamweaver l
reprezint ca o caset conturat cu linie ntrerupt roie. Pentru a putea vedea conturul formularului,
verificai c avei aceast opiune selectat.
Primul pas n crearea unui formular este s inserai n pagina dumneavoastr Web un obiect
formular pentru a pstra toate obiectele formularului.
Pentru a aduga un formular:

173

1. Plasai punctul de inserie acolo unde dorii s inserai formularul.


2. Selectai comanda Form din meniul Insert sau selectai obiectul formular din panoul Forms al
barei Insert.
3. Poate aprea o caset cu un mesaj care v spune c nu vei putea vedea formularul dect
dac vizualizai elementele invizibile. Dac este necesar, selectai comanda Invisible Elements din
submeniul Visual Aids al meniului View.
4. Vei vedea o caset conturat cu linie ntrerupt roie, care reprezint formularul.
Putei formata suprafaa unui formular cu tabele, linii despritoare, text i alte elemente pe care
le avei de obicei ntr-o pagin Web. Singurele elemente care vor fi preluate sunt ns numele
elementelor de formular i datele introduse de utilizator n formular.
Pentru a selecta un formular, dai clic pe marginea conturului formularului. Fereastra de
inspectare Property afieaz cele trei proprieti pe care le putei introduce pentru un formular:
Form Name (numele formularului) este necesar dac intenionai s aplicai vreun script unui
formular. Este bine s dai ntotdeauna nume formularelor.
Action (aciune) este un URL care trimite la o aplicaie, de obicei un script, de pe server, care va
prelucra datele formularului.
Method (metoda) spune aplicaiei de pe server cum ar trebui prelucrate datele.
Dai un nume formularului dumneavoastr. Pentru a formata un formular, dai clic pe conturul
formularului; n selectorul de taguri apare tagul <form>. Pentru a insera obiecte plasai cursorul n
interiorul formularului.
Adugarea cmpurilor de text
Cmpurile de text de o linie v permit s introducei un nume, o adres, un numr de telefon sau
alte mici informaii. Cmpurile de text pot avea i mai multe linii, adecvate pentru comentarii sau
informaii mai lungi. Putei folosi unul dintre modelele disponibile prin selectarea categoriei Page Designs
la crearea unei pagini noi .
Creai un grup de cmpuri de text proiectate pentru a prelua numele i prenumele utilizatorului,
adresa de e-mail i comentariile. ncepei prin a insera n pagina dumneavoastr Web un cmp de text de
o linie pentru a prelua prenumele utilizatorului, dup cum urmeaz:
1. Verificai dac punctul de inserare se afl n interiorul formularului.
2. Selectai obiectul Text Field din seciunea Forms a barei Insert sau selectai comanda Text
Field din submeniul Form al meniului Insert.
3. n formular apare un cmp de text.
Pentru a aduga un cmp de text exact la dreapta primului, poziionai punctul de inserare dup
cmpul de text i inserai un alt cmp de text pentru numele utilizatorului. nainte de a insera cmpul de
text, apsai tasta Enter pentru a aduga un nou paragraf n cadrul formularului. Adugai un alt cmp de
text de o singur linie pentru adresa de e-mail a utilizatorului.
Aplicarea atributelor pentru cmpul de text
Cnd avei selectat un cmp de text, fereastra de inspectare Property prezint atributele
cmpului de text. Dreamweaver completeaz un nume implicit unic. Redenumii toate cmpurile de text
din formularul dumneavoastr dnd nume intuitive i unice; nume posibile ar putea fi prenume, nume,
email.
Putei stabili att dimensiunea cmpului de text ct i numrul de caractere pe care le poate
introduce un utilizator. Exist dou atribute diferite pentru limea unui cmp de text:
Char Width stabilete dimensiunea cmpului de text i numrul de caractere vizibile n cmp.
Dac exist mai multe caractere n cmpul de text dect valoarea limii, acestea vor fi transmise, dar nu
vor fi vizibile.
Max Chars limiteaz numrul de caractere introduse de un utilizator n cmpul de text.
Un cmp de text poate conine pn la 32700 de caractere!
Exist trei tipuri diferite de cmpuri de text:
Cmpurile de text Single line (cu o singur linie).
Cmpurile de text textarea (zon de text) prezint o zon cu mai multe linii.
Cmpurile de text Password (parol) sunt cmpuri speciale de o linie prin care se mascheaz
ceea ce introduce utilizatorul n cmp, folosind asteriscuri sau alte simboluri. Acest lucru nu cripteaz
totui datele care sunt expediate la server.
Un obiect textarea are atributele Num Lines i Wrap.Obiectul textarea nu are un atribut Max
Characters; se poate controla doar numrul de linii vizibile pe ecran.
Valoarea implicit a proprietii Wrap (nfurare) face ca textul dintr-o zon de text s treac la
o nou linie atunci cnd utilizatorul ajunge la sfritul unei linii. Putei dezactiva nfurarea textului
selectnd comanda Off din meniul derulant Wrap. Exist dou attribute suplimentare pentru nfurarea

174

textului: Physical i Virtual. Physical (fizic) permite liniilor de text s se nfoare la captul casetei
punnd un caracter de rnd nou (CRLF) acolo. Virtual (virtual) permite liniilor de text s se nfoare la
sfritul casetei, dar nu este inserat nici un caracter.
Putei aduga un text care s apar n cmpul de text. Acesta poate consta n instruciuni asupra
a ceea ce se introduce n cmp sau poate fi valoarea implicit.
Dreamweaver include unele elemente de formular mpreun cu alte elemente n panoul Snippets
(fragmente de cod). Un fragment util pentru formular ar putea fi Text Field, Autoclear; acesta plaseaz n
formular un cmp de text ce conine un text implicit. Cnd utilizatorul d clic pe cmpul de text, textul
implicit dispare automat.
Adugarea etichetelor
Ai creat cmpuri de text, dar pentru a face utilizabil formularul trebuie s i adugai instruciuni,
etichete i alte elemente. Adugai o etichet n faa fiecrui cmp de text care s descrie ce text ar
trebui s introduc utilizatorul n cmp. Pentru a avea un control mai bun asupra alinierii obiectelor putei
plasa etichetele i cmpurile de text ntr-un tabel.
Adugarea butoanelor radio i a casetelor de validare
Butoanele radio sunt grupate astfel nct, la un moment dat, utilizatorul s poat selecta doar un
buton dintr-un grup. Pentru a grupa butoanele radio, ele trebuie s aib acelai nume.
Pentru a crea un grup de butoane radio:
1. Plasai punctul de inserare n cadrul unui formular unde vor fi amplasate butoanele radio.
2. Selectai obiectul Radio Group din seciunea Forms a barei Insert sau selectai comanda Radio
Group din submeniul Form al meniului Insert.
3. Introducei numele grupului de butoane radio n caseta Name a casetei Radio Group.
4. Introducei un nume de etichet n coloana Label i valoarea butonului radio Checked Value
(valoarea de validare) n coloana Value. Eticheta este un text simplu care apare lng buton i nu face
parte din formular. Folosii butoanele + i pentru a aduga sau terge butoane radio. Dai clic pe
butonul OK pentru a salva configurrile.
5. Selectarea unui buton radio afieaz proprietile lui n fereastra Property. Alegei dac butonul
s fie bifat sau nu la prima ncrcare a formularului, selectnd fie opiunea Checked (bifat), fie opiunea
Unchecked (debifat), care se afl lng atributul Initial State (starea iniial).
Casetele de validare preiau intrarea de la utilizator cnd acesta fie bifeaz, fie debifeaz o caset.
Ele difer de butoanele radio deoarece nu sunt grupate, ci se comport independent. Butoanele radio i
permit utilizatorului s selecteze o singur opiune, pe cnd casetele de validare i permit s selecteze
oricte opiuni dorete. Pentru a aduga o caset de validare:
1. Plasai punctul de inserare n cadrul formularului n care se va afla caseta de validare.
2. Selectai obiectul Checkbox (caset de validare) din bara Insert sau selectai comanda
Checkbox din submeniul Form al meniului Insert.
3. Introducei un nume pentru caseta de validare n caseta CheckBox.
4. Introducei o valoare de validare n caseta Checked Value.
5. Alegei starea iniial a casetei de validare Initial State dac s fie cea bifat sau nu.
6. Introducei un text pentru eticheta de lng caseta de validare.
Adugarea unei liste sau a unui meniu
Butoanele radio sunt o modalitate excelent de a da utilizatorului nite opiuni stabilite. Totui,
uneori ele nu sunt adecvate. Obiectul List/Menu insereaz liste de valori. Creai un obiect List/Menu fie ca
o list, care afieaz un numr stabilit de linii, fie ca un meniu, un meniu derulant care afieaz toate
valorile din list. Listele afieaz un anumit numr de valori. Un meniu se deruleaz cnd utilizatorul d
clic pe el, permindu-i acestuia s selecteze o valoare. Pentru a crea o list:
1. Plasai punctul de inserare n cadrul formularului, acolo unde se va afla lista.
2. Selectai obiectul List/Menu din bara Insert sau selectai comanda List/Menu din submeniul
Form al meniului Insert.
3. Introducei numele listei n caseta Name.
4. Dup ce ai selectat List pentru atributul Type, devin active atributele Height (nlime) i Allow
Multiple (permite mai multe selecii).
5. Stabilii nlimea n funcie de numrul de elemente din list pe care le dorii vizibile la un
moment dat. Dac sunt mai multe elemente de list dect pot fi afiate, vor aprea automat bare de
derulare.
6. Dac dorii s-i permitei utilizatorului s selecteze mai multe valori din list, marcai caseta de
validare Allow Multiple de lng atributul Selections. Putei aduga instruciuni care s spun utilizatorului
c poate selecta mai multe elemente folosind tasta Ctrl i dnd clic pe mai multe selecii.
7. Configurai valorile listei selectnd butonul List Values. Apare caseta de dialog List Values.

175

8. Pentru fiecare element din list introducei o etichet i o valoare. Eticheta de element este
textul vzut i selectat de utilizator. Valoarea este cea transmis spre prelucrare.
9. Dai clic pe butonul OK al casetei de dialog List Values.
10.Selectai un element din caseta Initially Selected (selectat iniial) dac ar trebui selectat
implicit unul dintre elementele listei. Altfel, el va aprea ca prim element.
11.Adugai o etichet alturi de list. n timp ce o list poate afia un numr de linii, un meniu
afieaz numai una pn cnd utilizatorul deruleaz meniul printr-un clic. Meniul folosete mai puin
spaiu dect listele, pentru c meniul se poate derula peste alte obiecte ale paginii atunci cnd se d clic
pe el, dar se restrnge la numai o linie cnd nu este activ.
O metod mai rapid i mai uoar de a aduga meniuri standard este prin intermediul panoului
Snippets (fragmente de cod).
Adugarea butoanelor i a butoanelor cu imagini
Exist patru tipuri diferite de butoane pe care le putei aduga formularelor:
Butonul Submit (expediere) trimite datele introduse de utilizator ntr-un formular ctre script
sau o aplicaie server. Butonul Submit declaneaz aciunea pe care ai stabilit-o n caseta Action a
ferestrei de inspectare Property.
Butonul Reset (repornire) terge toate datele introduse de utilizator n formular i rencarc
valorile iniiale.
Un buton generic nu are o funcie automat. Putei aduga o funcionalitate unui buton generic
aplicndu-i o funcie behavior (un comportament).
Un buton Image (cu imagine) se comport ca un buton Submit. Toate datele din formular sunt
transmise o dat cu coordonatele punctului n care s-a dat clic. Primele trei butoane sunt butoane de
apsare, create prin inserarea obiectului Dreamweaver Button. Ele difer prin modul n care sunt
configurate n fereastra de inspectare Property. Al patrulea buton, butonul cu imagine, este inserat
folosind obiectul Image Field (cmp de imagine).
Adugarea butoanelor Submit i Reset
Mai nti, adugai formularului butoanele Submit i Reset. Adugai formularului un buton
poziionnd punctul de inserare i apoi selectnd obiectul Button din bara Insert (sau comanda Button din
submeniul Form al meniului Insert). Selectai Submit Form (expedierea formularului) ca aciune pentru
butonul din stnga i Reset Form (repornirea formularului) ca aciune pentru butonul din dreapta. Fiecare
formular trebuie s aib un buton Submit pentru a trimite datele formularului. Butonul Reset este
opional. Ar trebui s avei un singur buton de tip Submit pe un formular.
Adugarea unui cmp de imagine unui formular Submit
Putei nlocui un buton Submit cu un cmp de imagine. Cnd un utilizator d clic pe imagine este
transmis coninutul formularului, mpreun cu coordonatele poziiei n care utilizatorul a dat clic pe
imagine. Dac dorii putei prelua i prelucra informaia despre coordonate. Mai nti, verificai c punctul
de inserare se afl n interiorul formularului. Adugai un cmp de imagine selectnd fie obiectul Image
Field din bara Insert, fie comanda Image Field din submeniul Form al meniului Insert. Caseta de dialog
Select Image Source v permite s navigai i s selectai un fiier de imagine standard Web. Fereastra
de inspectare Property afieaz atributele de nume, lime, nlime, surs, text alternativ i aliniere.
Adugarea unui buton generic
Putei aduga un buton generic oriunde pe pagina Web. Nu trebuie s fie n cadrul formularului,
deoarece el nu poate transmite coninutul formularului. Adugai un buton generic selectnd obiectul
Button din bara Insert sau comanda Button din meniul Insert. Dai butonului un nume, dai-i o etichet i
selectai None (nici una) ca aciune. Acum putei aplica butonului un comportament ce poate fi declanat
de un clic pe buton.
Cea mai simpl cale de a terge un formular este s dai clic-dreapta pe formular pentru a
vizualiza meniul contextual. Alegei comanda Remove Tag <form>.
Putei transmite prin e-mail coninutul unui formular prin amplasarea adresei de e-mail ca
aciune. Adresa de e-mail trebuie s fie prefaat de mailto astfel nct s arate aa
mailto:nume@domeniu.com. n plus, s-ar putea s fie nevoie s adugai atributul ENCTYPE=text/plain
la tagul <form>. Un program de e-mail trebuie configurat corespunztor cu browserul pentru ca aceast
metod s funcioneze. n plus, unele browsere afieaz un mesaj de avertizare la transmiterea
formularelor n acest fel.
Adugarea unui meniu de navigare
Nu exist reguli fixe pentru crearea unui site, dar majoritatea au o anumit structur: harta site-
ului (Site Map), Contact (o pagin care permite vizitatorilor s transmit un mesaj, aceast pagin conine
un formular), Despre noi sau About Us (conine informaii despre persoanele aflate n spatele site-ului),
Link-uri.

176

Trimiterea i primirea rspunsului la datele unui formular


Va trebui s trimitei datele unui script de pe server pentru a prelucra datele formularului.
Scriptul de pe server poate stoca datele ntr-o baz de date, le poate trimite la o adres de email,
poate trimite rezultatele napoi la browser sau le poate prelucra aa cum dorii.
Mai putei avea scripturi de tip client-side (aflate pe partea de client) create n JavaScript pentru
a prelucra datele formularului, dar acele scripturi nu vor avea acces la resursele serverului i nu vor putea
s transmit datele prin e-mail sau s le insereze ntr-o baz de date.
Primirea informaiei dintr-un formular
Metoda standard de a prelucra un formular este prin intermediul unei aplicaii server care
analizeaz datele i efectueaz o aciune asupra lor. Analizarea (parsing) datelor este aciunea
de mprire i interpretare a perechilor de nume i valori trimise la server.
Fiecare pereche de nume i valoare conine numele elementului de formular introdus n
Dreamweaver i valoarea pe care a introdus-o utilizatorul pentru acel cmp.
Un mod cunoscut de prelucrare a formularelor pe un server este script CGI. Aceste scripturi sunt
scrise de obicei n Perl sau n alte limbaje de programare. Mai trziu n aceast lecie vei afla despre alt
mod de prelucrare a formularelor, cu Hypertext Preprocessor (PHP).
Exist mai multe locuri pe Web de unde se descarc scripturi CGI deja scrise. Deoarece
programarea scripturilor CGI nu este scopul acestei cri, exemplele vor utiliza un script existent care
prelucreaz datele de formular i le trimite la o anumit adres de e-mail.
CGI este acronimul pentru Common Gateway Interface, care este definiia metodei standard de
comunicare dintre un script i serverul Web. Scriptul CGI se afl ntr-un anumit director pe serverul Web.
De obicei, accesul la acest director este limitat la administratorii de Web, din motive de siguran. Putei
avea un director n propriul dumneavoastr director de Web care poate pstra scripturi CGI. Adesea,
acest director este numit cgi-bin sau are cgi n componena numelui.
Va trebui s verificai dac gazda serviciilor dumneavoastr Web, n caz c folosii una, accept
scripturi CGI. Uneori putei folosi doar scripturile disponibile ale gazdei; verificai dac este disponibil un
script pentru formular de mail.
Introducei calea ctre scriptul CGI ca valoare pentru Action ntr-un formular. URL-ul trebuie s
fie un URL absolut i nu relativ, chiar dac scriptul se afl ntr-un director relativ la site-ul Web.
Metoda GET adaug un numr limitat de perechi de nume i valori la sfritul unui URL de
script CGI. Probabil ai vzut URL-uri care au caractere suplimentare ataate la ele. Aceste caractere sunt
transmise serverului pentru prelucrare.
Metoda POST trimite oricte perechi de nume i valori codificate, mpreun cu alte informaii,
ctre script.
Adugarea unui cmp ascuns
Cmpurile ascunse sunt trimise mpreun cu toate celelalte cmpuri ale formularului.
Utilizatorul nu poate schimba coninutul acestor cmpuri, nici nu poate vedea cmpurile dect
dac vizualizeaz sursa dumneavoastr HTML. Creai cmpuri ascunse pentru destinatarul mesajului e-
mail ce conine datele de formular, pentru subiectul care apare n cmpul Subject al mesajului i pentru
URL-ul la care este redirecionat utilizatorul dup ce a completat formularul. Putei examina singur multe
alte configuraii.
Verificai ca formularul dumneavoastr s aib ca aciune URL-ul scriptului FormMail de pe server.
Pentru transmiterea datelor, scriptul FormMail poate accepta metoda GET sau metoda POST. Eu v
sugerez metoda POST pentru c este mai cunoscut i nu riscai s depii cantitatea de date cu care
poate lucra metoda GET. Pentru a aduga cmpuri ascunse n formularul dumneavoastr:
1. Plasai punctul de inserare oriunde n interiorul formularului dumneavoastr. Nu conteaz unde
sunt amplasate cmpurile ascunse.
2. Selectai obiectul Hidden Field (cmp ascuns) din bara Insert sau comanda Hidden Field din
submeniul Form al meniului Insert.
3. Dreamweaver afieaz simbolul Hidden Form Field n pagina dumneavoastr Web. Trebuie s
avei bifat opiunea Invisible Elements din submeniul Visual Aids al meniului View; de asemenea,
categoria Invisible Elements din preferinele Dreamweaver trebuie s aib bifat opiunea Hidden Form
Fields.
4. Introducei numele cmpului ascuns i valoarea cmpului. Creai trei cmpuri ascunse folosind
paii de mai sus. Introducei urmtoarele perechi de nume i valoare n cmpurile ascunse:
Numii un cmp ascuns recipient (destinatar) i dai-i ca valoare adresa dumneavoastr de e-
mail.
Numii un cmp ascuns subject (subiect) i introducei un text pe care l vei vedea n cmpul
Subject al mesajului de e-mail pe care l vei primi o dat cu datele.

177

Numii un cmp ascuns redirect (redirecionare) i introducei un URL al unei pagini Web
preconstruite pe care o va vedea utilizatorul dup ce a expediat formularul. Cnd utilizatorul expediaz
formularul, perechile de nume i valoare sunt trimise la adresa de e-mail specificat n cmpul ascuns
recipient, avnd subiectul specificat n cmpul ascuns subject. Browserul va ncrca automat URL-ul
specificat n cmpul ascuns redirect.
Aceasta este cea mai simpl prelucrare posibil a unui formular. Alte scripturi pot salva datele
ntr-o baz de date, pot valida i prelucra informaii de pe carduri de credit i pot executa tot felul de
aciuni complexe.
Despre securitatea expedierii datelor
Cnd utilizatorii dumneavoastr expediaz informaiile formularului prin butonul Submit,
informaia cltorete n pachete prin Internet, mpreun cu milioane de alte pachete. Pachetele sunt
mnunchiuri electronice de informaie care poart datele dumneavoastr ctre server.
Aceste pachete de informaie pot fi interceptate i citite de persoane care neleg cum s
intercepteze i s reasambleze datele luate de pe Web. Chiar dac acest lucru nu este uzual, tot ar trebui
s facei ceva pentru a-i asigura pe utilizatorii dumneavoastr c datele sensibile sunt n siguran.
Din nou, este o problem ce ine de serverul Web. Serverul Web pe care este localizat site-ul
dumneavoastr trebuie s aib activate soclurile securizate (secure sockets). Muli furnizori de servicii
Internet ofer acest serviciu. ntrebai administratorul dumneavoastr Web dac avei acces la protejarea
paginilor Web.
Un utilizator are acces la un URL protejat exact aa cum ar avea la un URL obinuit.
Singura diferen este protocolul, care se schimb din http n https. Cnd este n modul protejat,
browserul afieaz n bara de stare un desen cu un lact.
Nu trebuie s v facei griji n privina expedierii protejate a datelor, cu excepia cazurilor n care
utilizatorul introduce informaii confideniale, cum ar fi numerele cardurilor de credit i alte date
financiare. Pentru sondaje sau formulare de rspuns, nu trebuie s protejai informaia de eventuale
furturi. Clienii vor atepta de la dumneavoastr s protejai datele lor sensibile. Avei nevoie de un
certificat pentru a aduga protecie transmiterii de date din formulare. Uneori putei folosi certificatul
gazdei paginii Web sau putei procura unul propriu. Unul dintre cei mai mari furnizori de certificate este
Verisign i putei afla mai multe despre certificate i site-ul lor Web de la adresa www.verisign.com/.
Certificatul este un document electronic care verific identitatea dumneavoastr electronic.
ncrcarea unui fiier dintr-un formular
Ai putea s adugai un cmp de fiier formularului dumneavoastr, care s permit utilizatorilor
s ncarce fiiere pe Internet. Printr-un obiect cmp de fiier putei prelua imagini, teme de coal sau
orice tip de fiiere de care avei nevoie s v fie trimis. Utilizatorul selecteaz butonul Browse, pentru a
selecta un fiier de pe discul local. Cnd apas butonul Submit, fiierul este trimis ctre server.
Putei stabili dimensiunea cmpului de fiier prin introducerea unei valori n caseta Char Width din
fereastra de inspectare Property. Mai putei stabili atributele Max Chars i Init Val. Va trebui s dai
cmpului de fiier un nume unic.
Selectai multipart/form-data ca valoare pentru atributul EncType al tagului <form>, pentru ca
fiierul s fie codificat corect. Trebuie s folosii metoda POST pentru transmiterea formularului; metoda
GET nu funcioneaz cu cmpuri de fiier.
Pregtii pagina dumneavoastr pentru a interaciona cu cod PHP
Pe lng scripturile CGI exist alte metode de a prelucra formularele i a crea aplicaii Web
dinamice. Ca i scriptarea CGI, aceste tehnologii interacioneaz cu serverul Web pentru a prelucra
informaia de pe pagina Web. Dreamweaver v permite s creai pagini Web dinamice care s
ncorporeze scripturi de tip server-side (aflate pe partea de server). Cnd creai o pagin Web nou,
creai o pagin dinamic selectnd categoria Dynamic Page.
PHP (Hypertext Preprocessor) este un limbaj de scriptare server-side (aflat pe partea de server)
care trimite pagini Web dinamice utilizatorului dup interpretarea codului PHP. Putei include cod PHP n
paginile dumneavoastr Web, iar Dreamweaver va reprezenta codul cu pictograme speciale. Cnd definii
site-ul dumneavoastr pentru a conine pagini dinamice, pagina dumneavoastr va arta puin altfel. ntr-
un site dinamic, Dreamweaver afieaz o reprezentare a codului; putei afia date reale din baze de date
prin afiarea paginiiWeb n vizualizarea Live Data View.
Pentru a edita codul PHP selectai pictograma corespunztoare de pe pagina dumneavoastr
Web. Apare fereastra de inspectare Property. Dai clic pe butonul Edit pentru a afia caseta de dialog Edit
Contents. Editai codul dumneavoastr n aceast caset de dialog.
Fereastra de inspectare Property afieaz butonul Edit cnd selectai una dintre pictogramele
Server Markup Tags de pe pagina Web. Caseta de dialog Edit Contents v permite editarea codului.
Pentru a prelucra un formular putei s folosii scripturi PHP coninute n fiiere externe.

178

n fereastra de inspectare Property facei referire la URL-ul scriptului ca fiind aciunea


formularului. Directorul scriptului trebuie s aib permisiunea corespunztoare pentru a executa
scriptul.
Cnd definii site-ul dumneavoastr ca fiind un site dinamic putei crea pagini Web dinamice n
Dreamweaver.
Introducere n publicarea primei pagini web
nainte de a trece la lustruirea paginii, putem face urmtorul pas, acela de a o publica, adic de a
transfera pagina web i fiierele ataate ei astfel nct s fie vii pe internet.
Dei suntei probabil jenat de a face acest lucru la acest punct, deoarece pagina este incomplet,
nu exist de fapt nici o cauz de ngrijorare. Dac nu ai spus nimnui adresa site-ului, nimeni nu va ti
de existena lui, de aceea nu va fi vzut dect de dvoastr.
Publicarea se realizeaz astfel: meniul Site, opiunea Manage Sites , va aprea o fereastr de
dialog cu numele site-ului, se va apsa butonul Next pn cnd se va ajunge la "How do you connect
to your remote server?", dac la nceput l setasem pe None, acum se va modifica. n caseta derulant
se va alege FTP, iar la ntrebarea "What is the hostname or FTP address of your Web Server?" se va
introduce n csua de rspuns adresa FTP a host-ului web pe care l avei. Dac avei propriul domeniu i
este gzduit de un host web commercial atunci adresa este precedat de ftp. De exemplu dac adresa
este exemplu.com, atunci adresa ftp va fi ftp.exemplu.com.
Urmtoarea ntrebare este "What folder on the server do you want to store your files in?". Unele
host-uri web vor ca rspuns un folder numit www, altele public_html, dac nu, se va lsa csua goal.
Pentru "What is your FTP login?" se va introduce contul pentru FTP, apoi pentru "What is your FTP
password?" se va introduce parola.
Apoi se va apsa pe butonul Test Connection pentru a testa dac informaiile au fost introduce
correct. Dac acesta eueaz, Dreamwaver va afia o csu n care ntreab dac se vrea conectarea cu
Passive FTP. Dac n continuare testul eueaz, nseman c datele sunt incorecte. Dac nu, se va trece
mai departe cu ajutorul butonului Next pn la Done.
Pentru finalizarea publicrii se folosete Site opiunea Put, la ntrebarea "Put dependent files?"
rspunsul va fi Yes.
Testarea paginii web
Pentru a testa aceast pagin: se va folosi un browser web i se va tasta adresa paginii, dac
detaliile de ftp au fost introduce correct, pagina va putea fi vizualizat. Dac apare o eroare "No DNS for
www.example.com" sau "Domain not found" nseamn c pagina nu a fost propagate de providerul de
internet. Dac eroarea este "404 File Not Found" nseamn c numele directorului nu a fost introdus
correct.
Administrarea i ncrcarea proiectului
Site-urile Web complete rezid de obicei pe un server Web prin care utilizatorii au acces la
paginile Web. n timp ce lucra#i la site-urile dumneavoastr Web, putei s le trecei pe server pentru a
le testa. La sfritul proiectului va fi nevoie s mutai paginile Web pe un server public pentru ca
utilizatorii s le poat vizita. Exist mai multe modaliti de a trece fiierele pe server i metode diferite
de a v asigura c versiunea fiierelor este corect i nu au fost suprascrise din greeal.
Dreamweaver are mai multe comenzi utile pentru gestionarea ntregului site Web. Putei crea (i
chiar salva) o hart a site-ului, care este o reprezentare vizual a relaiilor dintre fiierele site-ului
dumneavoastr Web. Exist comenzi care actualizeaz legturile din site i caut i nlocuiesc textul fie
din poriunile de text, fie din codul HTML al paginii Web.
Activarea conexiunii la server
Cnd definii un site Web n Dreamweaver definii un site local care oglindete exact siteul final,
public. Oglindirea nseamn c site-ul local conine o copie exact a fiierelor de pe site-ul final.
Dreamweaver numete site-ul final site-ul de la distan sau site-ul de pe server (remote site). Lucrai
asupra fiierelor pe site-ul dumneavoastr local i apoi le ncrcai pe site-ul de pe server folosind
comenzile de transfer de fiiere din Dreamweaver.
Adugarea site-ului de la distan
Definii un site de la distan prin editarea definiiei site-ului Web (comanda Edit Sites din meniul
Site). Selectai butonul Edit pentru a lansa caseta de dialog Site Definition a site-ului Web selectat. n
seciunea Basic, dai clic pe butonul Next pn cnd ajungei la seciunea Sharing Files (fiiere partajate)
din programul wizard Site Definition.
Din meniul derulant putei alege cinci metode de transfer: FTP, Local/Network, RDS, SourceSafe
Database, WebDAV
Metoda de transfer pe care o selectai depinde de locul n care rezid site-ul de la distan. Site-ul
poate fi n reeaua intranet a companiei dumneavoastr i, dac este aa, l putei transfera pe site-ul de

179

la distan folosind conexiunea LAN sau Local/Network. Site-ul poate fi la furnizorul dumneavoastr de
servicii Internet (ISP) cei care v pun la dispoziie un serviciu Internet prin legtur telefonic. n acest
caz v vei conecta la serverele lor prin FTP.
Conexiunile SourceSafe, RDS sau WebV sunt mai puin cunoscute, dar sunt uneori folosite n
mediile profesionale de dezvoltare Web.
Configurarea informaiei pentru FTP
Selectai accesul FTP dac vrei s transferai fiiere pe Web ctre un server. Serverul poate fi
amplasat, din punct de vedere fizic, n cldirea dumneavoastr sau chiar pe partea cealalt a Pmntului.
Avei nevoie de numele serverului FTP pentru a-l introduce n caseta FTP Host (gazda FTP). Adesea
acesta este de forma: ftp.domeniultau.ro.
Nu introducei numele de server precedat de protocol aa cum ai face-o ntr-un browser (cum ar
fi ftp://ftp.domeniultau.ro).
Introducei directorul corect n caseta de text, imediat sub caseta de text a adresei serverului
FTP. Poate fi nevoie s obinei calea pentru acest director de la administratorul de Web sau de reea
(/domeniultau.ro/ sau domeniultau.ro/). Dac nu suntei sigur ce director rdcin este pe site-ul de la
distan, ncercai s lsai caseta Host Directory (directorul gazd) goal. Serverul FTP poate s v
poziioneze n directorul corect dac avei contul dumneavoastr configurat corespunztor.
Vei avea nevoie de un nume de utilizator (login) folosit pentru deschiderea unei sesiuni de lucru - i o
parol (Password) pentru accesul la serverul FTP. Numele standard de login anonymous (utilizator
anonim), adesea utilizat pentru a descrca fiiere prin Internet, nu va funciona probabil la ncrcarea
fiierelor pe un site Web. Trebuie s deschidei o sesiune de lucru ca un utilizator cu acces i permisiune
de a prelua i a pune fiiere n directoarele care vor gzdui site-ul dumneavoastr Web. Dreamweaver
salveaz automat parola dumneavoastr.
Dac au i alii acces la Dreamweaver pe calculatorul dumneavoastr i nu dorii ca ei s aib
acces la contul dumneavoastr FTP, debifai caseta de validare Save.
Selectai butonul Test Connection pentru a verifica dac ai introdus corect datele i dac v
conectai la serverul FTP. Putei depana problemele conexiunii FTP folosind FTP Log ce se gsete n
submeniul Results al meniului Window. FTP Log conine lista cu motivele unei conexiuni euate. De
exemplu, dac nregistrarea din jurnalul conexiunii spune c parola a fost incorect sau c directorul
indicat de dumneavoastr nu exist, le putei modifica n definiia site-ului i putei ncerca din nou. Dac
suntei n spatele unui program de protecie firewall (parafoc) sau folosii un server proxy, ai putea avea
dificulti cu conexiunea FTP. Consultai administratorul de reea n legtur cu atributele care trebuie
alese cnd configurai legtura FTP. Bifai caseta de validare Use Firewall (n Advanced selectai Remote
Info) dac accesul la Internet se face printr-un program firewall. Configurai portul i gazda firewall n
preferinele Dreamweaver. (La Category selectai Site.) Dac avei o legtur lent la Internet, intervalul
de timp de expirare implicit acordat pentru FTP (timeout) ar putea fi prea scurt, ceea ce ar ntrerupe
conexiunea FTP prea curnd. Putei crete acest interval n preferinele din Site.
Configurarea informaiei pentru LAN
Selectai accesul Local/Network, dac serverul este pe un calculator la care v putei conecta
direct folosind reeaua. Dac avei acces la fiierele de pe server, aa cum avei acces la hard-discul
dumneavoastr, i mutai cu uurin fiierele pe i de pe server, atunci avei acces LAN. Va trebui s tii
directorul accesibil prin Web; administratorul dumneavoastr de Web v poate da aceast informaie.
Configurai accesul LAN la serverul de la distan introducnd calea la directorul de pe server. Folosii
pictograma cu dosar pentru a naviga la director sau tastai calea. Validarea opiunii Refresh Remote File
List Automatically (actualizarea automat a listei de fiiere de la distan) ar putea ncetini puin
performanele Dreamweaver, dar ai avea o reflectare la zi a site-ului de la distan.
Utilizarea seciunii Advanced pentru configurarea site-ului de la distan
Dai clic pe seciunea Advanced din caseta de dialog Site Definition pentru a avea o alt
vizualizare a atributelor site-ului de la distan. Categoria Remote Info, afieaz informaia de deschidere
a sesiunii (login) mpreun cu atributele programului firewall i altele. Putei selecta pe rnd seciunile
Basic i Advanced, dac dorii.
Putei nchide caseta de dialog Site Definition selectnd butonul OK pentru a salva valorile
atributelor.
Mutarea site-ului dumneavoastr pe un server
Dac serverul dumneavoastr este localizat ntr-o reea LAN, v conectai de obicei la server n
momentul n care deschidei sesiunea de lucru pe calculatorul dumneavoastr i rmnei conectat toat
ziua. Dac avei acces la server prin Internet, folosind accesul FTP, v conectai ct timp preluai i punei
fiiere pe server, iar apoi v deconectai. Chiar dac nu v deconectai explicit calculatorul, conexiunea va
expira pe server dac ai fost inactiv o perioad i va trebui s v reconectai.

180

Panoul Site conine butoane ce v permit s transferai fiiere pe i dinspre site-ul de la distan.
Putei transfera fiiere pe site-ul dumneavoastr local selectnd butonul Get (preia) i putei transfera
fiiere pe site-ul de la distan selectnd butonul Put (pune). Comanda Synchronize (sincronizare), care
este o metod mai bun de a transfera fiiere. Comanda Synchronize detecteaz dac un fiier local (sau
de la distan) este mai nou i l transfer doar dac este necesar, reducnd astfel timpul de transfer.
Butonul Connect/Disconnect (conectare/deconectare) stabilete o conexiune la un server
FTP. Acest buton are ntotdeauna valoarea conectat cnd avei acces LAN la site-ul de la distan.
Butonul Refresh (mprosptare) actualizeaz manual ferestrele Site local i de la
distan. Dac la configurarea site-ului dumneavoastr nu ai selectat opiunea Refresh Local File List
Automatically sau Refresh Remote File List Automatically, putei folosi acest buton pentru a actualiza
manual lista de fiiere.
Butonul Get (preia) recupereaz fiiere de pe site-ul de la distan i le mut pe site-ul local.
Butonul Put (pune) aaz fiiere de pe site-ul local pe site-ul de la distan.
Selectai butonul Expand/Collapse din marginea din dreapta a panoului Site pentru a extinde panoul n
fereastra Site. Fereastra Site nu numai c prezint site-ul local, ca panoul Site, dar mai arat i site-ul de
la distan. Cnd suntei conectat, apare o list a fiierelor de pe site-ul de la distan. Dac dorii s
revenii la vizualizarea ferestrei Document Dreamweaver, apsai din nou butonul Expand/Collapse.
Capacitile Dreamweaver de management al site-ului Web
Folosii opiunile Check In/Check Out ale Dreamweaver-ului pentru a fi siguri c la un moment
dat o singur persoan lucreaz la un fiier. Dac avei un fiier marcat Check Out, altcineva nu poate
folosi acel fiier pn nu va fi marcat din nou Check In.
Transferul fiierelor
Dup ce l marcai Check In, putei deschide fiierul, dar nu putei salva modificrile deoarece
Dreamweaver l marcheaz ca read-only (fiierul poate fi doar vizualizat).
Pentru a prelua sau a pune fiiere, trebuie s verificai mai nti dac n meniul derulant Site al
panoului Site din fereastra Site este selectat site-ul corect. Dac obinei accesul la site prin FTP, dai clic
pe butonul Connect. Dac suntei deja conectat sau avei acces la fiiere ntro reea LAN, srii peste
acest pas.
Pentru a prelua fiierele:
1. Selectai fiierele pe care dorii s le transferai pe site-ul dumneavoastr local.
2. Dai clic pe comanda Get.
3. Dreamweaver poate afia o caset de dialog care v ntreab dac dorii s descrcai fiierele
dependente. Fiierele dependente sunt imagini i alte componente legate la fiierele pe care le
transferai. Putei dezactiva aceast caset de dialog prin bifarea casetei de validare Dont show me this
message again (nu-mi mai arta acest mesaj din nou).
Pentru a transfera fiierele:
1. Selectai fiierele pe care dorii s le transferai pe site-ul de la distan.
2. Dai clic pe comanda Put. Dac transferai un fiier deschis n acel moment, Dreamweaver v
va cere s salvai fiierul nainte de a-l pune pe site-ul de la distan.
3. Dreamweaver poate afia o caset de dialog ntrebndu-v dac dorii s ncrcai i fiiere
dependente. Putei dezactiva aceast caset de dialog prin bifarea casetei de validare Dont show me this
message again.
Importul unui site Web existent
Cnd un site Web exist deja pe un site de la distan (un server), trebuie s definii siteul Web
n Dreamweaver, s v conectai la site-ul de la distan i s descrcai toate fiierele de pe site pentru a
lucra cu ele. Nu uitai, ar trebui s editai doar fiierele localizate pe propriul dumneavoastr calculator.
Putei descrca i edita un site existent, chiar dac nu a fost creat cu Dreamweaver.
Cnd descrcai pentru prima dat site-ul ar putea s dureze ceva, n funcie de accesul la site i
de viteza de conectare a reelei. Totui, dup ce ai descrcat toate fiierele ar trebui s fie nevoie s
descrcai numai un fiier care se modific.
Pentru a importa un site Web existent nu trebuie dect s facei pe discul local o copie oglind a
site-ului. Nu exist nici un proces de conversie i fiierele vor rmne nemodificate n Dreamweaver.
Pentru a importa un site Web existent:
1. n caseta de dialog Site Definition configurai informaiile att pentru site-ul local, ct i pentru
site-ul de la distan.
2. Preluai toate fiierele de pe site-ul de la distan prin selectarea rdcinii din seciunea
Remote Site a panoului Site. Selectarea elementului de sus din dosarul rdcin selecteaz ntregul site.
Dac selectai ns un fiier, vei prelua doar acel fiier.

181

3. Selectai butonul Get pentru a transfera toate fiierele de pe site-ul de la distan pe siteul
local.
Editarea unui site ntreg
Dreamweaver are mai multe comenzi utile ce v pot ajuta s facei modificri n tot siteul.
n cele ce urmeaz, vei folosi comenzi foarte puternice, putnd economisi mult timp.
Trebuie s avei grij la modificarea elementelor din tot site-ul, pentru a nu face o greeal.
Desigur, putei corecta greeala tot la nivelul ntregului site!
Sincronizarea fiierelor pe site-urile local i de la distan
Sincronizarea fiierelor de pe site-urile local i de la distan pentru a v asigura c avei n
ambele locuri fiierele actualizate. Dreamweaver are trei comenzi utile n determinarea site ului care are
cele mai recente fiiere. Selectai comanda Syncronize pentru a sincroniza automat fiierele ntre site-urile
local i de la distan, aducnd ambele site-uri la zi. n cazul n care dorii s verificai dac noile fiiere se
afl pe site-ul de la distan sau pe site-ul local, folosii comanda Select Newer Local (selecteaz-l pe cel
mai nou de pe site-ul local) sau Select Newer Remote (selecteaz-l pe cel mai nou de pe site-ul de la
distan) din meniul Edit. Pentru a vedea ce fiiere sunt mai noi pe site-ul de la distan:
1. Conectai-v la site-ul de la distan dnd clic pe butonul Connect, dac avei acces FTP la site-
ul de la distan.
2. Selectai fie directorul rdcin, fie o seciune de fiiere din site-ul local.
3. Selectai comanda Select Newer Remote din meniul Edit.
Dreamweaver caut prin fiierele de pe site-ul de la distan pentru a vedea care dintre ele sunt
mai noi dect fiierele corespunztoare de pe site-ul local. Fiierele care sunt mai noi pe site-ul de la
distan sunt selectate. Dac fiierele care nu exist pe site-ul local exist pe site-ul de la distan,
Dreamweaver le selecteaz i pe acestea. Avnd toate fiierele selectate, preluai simplu fiierele de pe
site-ul de la distan pentru a le actualiza pe cele de pe site-ul local.
Urmai aceiai pai pentru a selecta fiierele mai noi de pe site-ul local, folosind comanda Select
Newer Local.
Cnd sincronizai fiierele, Dreamweaver le analizeaz att pe cele de pe site-ul local, ct i pe
cele de pe site-ul de la distan i v d un raport asupra fiierelor care trebuie copiate pentru a
sincroniza site-urile. Dumneavoastr avei un control total asupra procesului i putei deselecta orice fiier
pe care nu dorii s l transferai. Dreamweaver v va mai spune dac fiierele sunt complet actualizate i
dac este nevoie s le sincronizai.
Pentru a sincroniza fiierele pe site-urile local i de la distan:
1. Deschidei fereastra Site i selectai site-ul pe care vrei s-l sincronizai.
2. Dac dorii s sincronizai doar anumite fiiere, selectai acele fiiere.
3. Selectai comanda Synchronize din meniul Site.
4. Apare caseta de dialog Synchronize Files.
5. n meniul derulant Synchronize alegei sincronizarea ntregului site sau doar a fiierelor pe care
le-ai selectat.
6. Din meniul derulant Direction selectai modul n care dorii s transferai fiierele. Putei
transfera fiierele mai noi pe site-ul de la distan, putei prelua fiierele mai noi de pe site-ul de la
distan sau putei s preluai i s punei fiierele mai noi n ambele direcii.
7. Bifai caseta de validare de lng opiunea Delete local files not on remote server (tergei
fiierele locale care nu se afl pe serverul de la distan) dac dorii s scpai de orice fiier local n plus.
8. Dai clic pe butonul Preview.
9. Dac fiierele dumneavoastr sunt la zi, vei primi un mesaj c nu este necesar nici o
sincronizare. Dac exist fiiere care trebuie s fie sincronizate, Dreamweaver va afia caseta de dialog
Site, coninnd toate fiierele care fie nu exist, fie sunt mai vechi.
10. Parcurgei lista i deselectai orice aciune pe care nu o dorii. Cnd suntei gata s transferai
fiierele, apsai butonul OK.
11. n timpul transferului, Dreamweaver afieaz o bar de evoluie n colul din dreapta jos al
casetei de dialog Site. Dup ce s-a ncheiat sincronizarea, caseta de dialog Site afieaz mesajul
Synchronization complete i d starea fiecrui fiier.
12. Dac dorii s salvai un jurnal al sincronizrii, selectai butonul Save Log i salvai fiierul pe
hard-discul dumneavoastr. Altfel, apsai butonul Close.
Crearea unei hri a site-ului
Creai o hart a site-ului pentru a reprezenta vizual macheta site-ului dumneavoastr.
Pentru a facilita crearea hrii site-ului, extindei panoul Site n toat fereastra Site cu ajutorul
butonului Expand/Collapse. Restrngei fereastra Site dup ce ai terminat crearea hrii siteului,

182

selectnd butonul Expand/Collapse din fereastra Site. Dup ce ai definit harta n fereastra Site, o putei
vizualiza n panoul Site, selectnd vizualizarea Map din meniul derulant View al panoului Site.
nainte de a vizualiza harta site-ului trebuie s definii o pagin de start (home page) pentru site-
ul dumneavoastr. Pentru a defini o pagin de start, selectai o pagin Web ca pagin de start pe site-ul
local i selectai comanda Set as Home Page din meniul Site.
Selectai pictograma Site Map pentru a afia harta site-ului. Aceasta apare n fereastra Site alturi
de fiierele din site-ul local. n harta site-ului, fiierele apar ca pictograme avnd trasate linii ce reprezint
legturile ntre fiierele corelate. Urmtoarele simboluri apar alturi de pictogramele care descriu fiierele:
O legtur invalid (rupt) apare ca un text rou cu o mic imagine a unui lan de legtur
rupt.
O legtur apare ca un text albastru cu un mic glob alturi.
Un fiier care poate fi doar citit (read-only) apare cu un lact alturi.
Putei modifica vizualizarea hrii site-ului dnd clic pe orice pictogram i selectnd comanda
View as Root (s apar ca rdcin) din meniul View.
Pentru a modifica modul n care este afiat harta site-ului, selectai comanda Layout din meniul
View al panoului Site sau al ferestrei Site. Pentru a vedea aceast comand, trebuie s afiai harta site-
ului. Stabilii numrul de coloane afiate i limea lor.
Salvai harta site-ului fie ca fiier bitmap (.bmp), fie ca fiier PNG, folosind comanda Save Site
Map din meniul File al panoului Site (sau al ferestrei Site).
Gestionarea legturilor
Dreamweaver actualizeaz automat legturile atunci cnd mutai sau redenumii un fiier dintr-un
site Web curent. Nu uitai ca atunci cnd definii site-ul Web s creai o copie cache pentru a mri viteza
de procesare a actualizrii. Cnd mutai sau redenumii paginile Web, Dreamweaver afieaz caseta de
dialog Update Files. n caseta de dialog este afiat o list cu fiierele legate. Dai clic pe butonul Update
pentru a actualiza toate legturile sau selectai fiecare fiier n parte pentru actualizare.
Folosii facilitatea Link Checker (verificarea legturilor) pentru a verifica toate legturile din site-ul
dumneavoastr. Selectai comanda Check Links Sitewide (verific legturile din site)din meniul Site. Link
Checker afieaz trei categorii diferite: legturi invalide (rupte), legturi externe i fiiere orfane.
Legturile externe sunt legturi pe care Dreamweaver nu le poate verifica. Fiierele orfane sunt
fiiere nelegate la nici un alt fiier.
Legturile invalide (rupte) trebuie refcute. Din fericire, Dreamweaver faciliteaz acest lucru.
Selectai legtura invalid (rupt), dai clic pe pictograma dosar i navigai la fiierul corect pentru a
repara legtura.
Generarea de rapoarte despre site-ul Web
Rapoartele Dreamweaver v permit s compilai informaii despre site-ul dumneavoastr, cum ar
fi data cnd au fost create fiierele sau erorile din site. Sunt disponibile urmtoarele rapoarte:
Combinable Nested Font Tags (taguri de font imbricate ce pot fi combinate)
Missing Alt Text (textul alternativ lipsete)
Redundant Nested Tags (taguri imbricate redundante)
Removable Empty Tags (taguri goale ce pot fi terse)
Untitled documents (documente fr titlu)
Pentru a rula un raport:
1. Selectai comanda Reports din meniul Site fie n Site Manager, fie n fereastra Document.
2. Apare caseta de dialog Reports. Selectai la ce vrei s se refere raportul (la documentul
curent, la site-ul curent, la fiierele selectate sau la un anumit dosar).
3. Selectai un raport.
4. Unele rapoarte au atribute suplimentare care pot nuana descrierea. Dac n partea de jos a
casetei de dialog este activ butonul Report Settings, nseamn c sunt disponibile attribute suplimentare
pentru raport.
5. Selectai butonul Run pentru a rula raportul.
Reutilizarea elementelor din site-ul Web prin intermediul bibliotecii
Cnd proiectai pagini Web putei crea elemente de bibliotec din obiectele pe care le folosii des.
Dac actualizai un element de bibliotec, el se poate actualiza peste tot n site-uldumneavoastr.
Elementele de bibliotec v ajut s meninei consecvena site-ului Web.
Cnd v aflai n faza de design a site-ului dumneavoastr Web ar trebui s v gndii la
elementele comune pe care ar fi adecvat s le creai ca elemente de bibliotec n Dreamweaver.
Putei transforma tot felul de obiecte n elemente de bibliotec. De exemplu, o bar de navigare
care apare n multe dintre paginile site-ului dumneavoastr ar fi un candidat excelent la a deveni un
element de bibliotec. Cnd trebuie s adugai un buton nou la bara de navigare este simplu s

183

adugai butonul elementului iniial de bibliotec i apoi s actualizai automat ntregul site cu acea
modificare.
Crearea unui element de bibliotec
Putei s creai un element de bibliotec, s l salvai n categoria Library a panoului Asset i apoi
s l aplicai oricrei pagini Web din site-ul dumneavoastr Web. Putei include un element de bibliotec
de mai multe ori ntr-o pagin Web. Elementele de bibliotec pot fi create din orice obiect coninut n
seciunea body a paginii Web, precum formularele, tabelele, textul, applet-urile Java, modulele plug-in
sau imaginile.
Trebuie s definii un site Web nainte ca Dreamweaver s insereze un element de bibliotec.
Dreamweaver creeaz n rdcina site-ului Web un director numit Library, unde pstreaz toate
elementele de bibliotec. Cnd inserai un element de bibliotec n pagina dumneavoastr Web,
Dreamweaver insereaz n pagin o copie a coninutului elementului de bibliotec.
Elementele de bibliotec difer de abloanele din Dreamweaver deoarece elementele de
bibliotec sunt poriuni dintr-o pagin, pe cnd ablonul este o pagin ntreag. Bibliotecile i abloanele
sunt similare, deoarece ambele pot actualiza automat toate legturile i paginile.
Utilizarea categoriei Library din panoul Asset
Cnd creai i aplicai elemente de bibliotec, deschidei categoria Library din panoul Asset
(componente). Categoria Library din panoul Asset v arat toate elementele de bibliotec din site-ul Web
curent.
Categoria Library din panoul Asset afieaz toate elementele de bibliotec din site-ul Web curent
pentru a insera, crea, deschide i terge elemente de bibliotec. Exist butoane n partea de jos a
panoului.
Categoria Library din panoul Asset este mprit n dou. Jumtatea de jos conine lista cu
numele elementelor de bibliotec din site-ul Web. Jumtatea de sus afieaz coninutul unui element de
bibliotec selectat n jumtatea de jos. Butoanele din partea de jos sunt:
Butonul Insert insereaz n pagina Web elementul de bibliotec selectat la acel moment.
Butonul New Library Item creeaz un element de bibliotec nou, fr coninut.
Butonul Edit deschide elementul de bibliotec n propria sa fereastr Document.
Butonul Delete terge elementul de bibliotec. Acest lucru nu afecteaz nici o copie a
elementului de bibliotec. (dei elementul nu mai poate fi actualizat nicieri n site).
Crearea unui element de bibliotec din coninutul existent
Exist dou ci de a crea obiecte de bibliotec:
Din obiecte sau grupuri de obiecte existente dup ce v decidei s creai un element de
bibliotec dintr-un grup de obiecte existent pe o pagin Web, selectai obiectele i salvaile
n bibliotec.
Lund-o de la nceput, cu un element nou, gol, de bibliotec - putei crea un element de
bibliotec nou, putei s-l deschidei i s i adugai obiecte, ca i cum ar fi o pagin obinuit de Web.
Creai pe pagina dumneavoastr Web un element de bibliotec dintr-un obiect sau grup de
obiecte existent, dup cum urmeaz:
1. Selectai un obiect sau grup de obiecte. Selectai mai multe obiecte fie deplasnd cursorul
peste ele, fie innd tasta Shift apsat i dnd clic pe obiecte pentru a le aduga la selecie.
2. Pentru a aduga selecia la bibliotec, dai drag-and-drop (tragere i plasare) pe jumtatea de
jos a categoriei Library din panoul Asset. Selectai alternativ comanda Add Object to Library din
submeniul Library al meniului Modify.
3. Dai obiectului de bibliotec un nume intuitiv. Cmpul numelui este selectat imediat dup ce
creai elementul de bibliotec sau l putei reselecta cu un clic lung pe el.
Dreamweaver creeaz un fiier individual pentru fiecare element de bibliotec. Extensia de fiier
pentru elementele de bibliotec este .lbi. Dac v uitai n directorul Library al siteului dumneavoastr
Web, vei vedea cte un fiier .lbi pentru fiecare element de bibliotec pe care l avei n site-ul Web.
Crearea de la zero a unui element de bibliotec
Creai un element nou de bibliotec i adugai obiecte dup cum urmeaz:
1. Dai clic pe butonul New Library Item aflat n partea de jos a Library din panoul Asset.
2. Dreamweaver creeaz un element de bibliotec nou. ]n jumtatea de sus a categoriei Library
din panoul Asset apare un mesaj care v spune cum s adugai coninut elementului de bibliotec gol.
3. Denumii elementul de bibliotec. De exemplu, creai o declaraie de copyright care se va afla
n partea de jos a fiecrei pagini Web. Numele Copyright ar fi o soluie bun.
4. n categoria Library din panoul Asset executai dublu-clic pe elementul de bibliotec.
Dreamweaver deschide elementul de bibliotec ntr-o fereastr Document separat. Putei spune

184

c avei deschis un element de bibliotec, deoarece Dreamweaver afieaz n bara de titlu <<Library
Item>> alturi de numele elementului de bibliotec.
5. Inserai obiecte n fereastra Document a elementului de bibliotec tot aa cum ai face-o n
orice pagin Web. Inserai simbolul de copyright (din panoul Characters n bara Insert), un an i numele
dumneavoastr.
6. nchidei fereastra Document i salvai elementul de bibliotec. Modificrile dumneavoastr vor
fi reflectate n categoria Library din panoul Asset. Categoria Library din panoul Asset are un meniu pop-up
care conine comenzi utile. Comanda New Library Item este o alt cale de a crea un element de
bibliotec. Exact acelai meniu apare cnd dai clic dreapta pe un element de bibliotec n categoria
Library din panoul Asset.
Adugarea unui element de bibliotec la o pagin
Dup ce ai creat un element de bibliotec, tragei-l cu mouse-ul din lista aflat n categoria
Library a panoului Asset i plasai-l pe pagina dumneavoastr Web. Putei s preluai elementul de
bibliotec i s l mutai n alt locaie din fereastra Document. Nu vei putea s selectai obiecte separate
coninute n elementul de bibliotec pe care l-ai inserat. Cnd dai clic pe orice obiect, selectai de fapt
tot elementul de bibliotec; grupul de obiecte dintr-un element de bibliotec este n esen un singur
obiect n pagina dumneavoastr Web.
Cnd inserai un element de bibliotec n pagina dumneavoastr Web este inserat o copie a
coninutului su. Nu mai trebuie s fie prezent elementul de bibliotec iniial. Cnd ncrcai pagina Web
pe un site Web de la distan (aflat pe server), nu trebuie s ncrcai I directorul de bibliotec. Este
bine s pstrai directorul pentru situaia n care dorii s facei modificri la elementele de bibliotec din
site-ul Web.
Fereastra de inspectare Property afieaz atributele elementului de bibliotec selectat n fereastra
Document. Caseta Src afieaz numele elementului de bibliotec (pe care nu l putei modifica aici). ]n
fereastra de inspectare Property exist trei butoane care v ajut s lucrai cu un element de bibliotec:
Butonul Open (deschidere) deschide elementul de bibliotec pe care dorii s l editai.
Butonul Detach from Original (detaare de original) rupe legtura dintre aceast copie a unui
element de bibliotec i elementul original. Dac elementul original de bibliotec este modificat, un
element detaat nu va fi actualizat. Dac detaai un element de bibliotec de originalul su obiectele
individuale coninute n element vor fi editabile.
Butonul Recreate (recreare) suprascrie elementul original de bibliotec cu copia selectat
curent a elementului de bibliotec. Acest lucru este util dac elementul original de bibliotec a fost editat
din greeal sau pierdut.
Putei aplica o evideniere elementelor de bibliotec, astfel nct ele s fie uor de vzut n
fereastra Document. Evidenierea apare doar n Dreamweaver i nu n browser. n plus, evidenierea
apare doar dac este bifat opiunea Invisible Elements din meniul View. Stabilii
culoarea de evideniere n categoria Highlighting din preferinele Dreamweaver.
Modificarea unui element de bibliotec
Editai elementele de bibliotec deschiznd elementul pentru a aduga sau modifica obiectele din
fereastra Document. Nu dai atenie culorii de fundal la editarea elementelor de bibliotec; elementul va
aprea pe culoarea de fundal a paginii n care este inserat. Dup ce ai inserat ntr-o pagin elementul de
bibliotec creat anterior, deschidei-l pentru a-l edita. Aplicai diferite formate unor obiecte din element.
Dup ce ai terminat editarea, salvai elementul de bibliotec. Dreamweaver v va ntreba dac dorii s
actualizai toate documentele din site-ul Web care conin elementul de bibliotec.
Selectai butonul Update pentru a actualiza automat toate elementele de bibliotec legate.
Caseta de dialog Update Pages afieaz statisticile despre fiierele examinate, cele actualizate i
cele care nu au putut fi actualizate. Caseta de validare Show Log (arat jurnalul) trebuie s fie bifat
pentru a afia aceste statistici. Selectai butonul Close pentru a nchide caseta de dialog Update Pages.
Avnd opiunea Show Log bifat, caseta de dialog Update Pages afieaz cte fiiere au fost
examinate, cte au fost actualizate i cte nu au putut fi actualizate.
Putei actualiza manual elementele de bibliotec n orice moment. Executai clic pe elementul de
bibliotec n categoria Library a panoului Asset i selectai fie comanda Update Page pentru a actualiza
pagina Web, fie comanda Update Pages pentru a actualiza ntregul site Web. Comanda Update Current
Page acioneaz imediat i nu apare nici o caset de dialog. Cnd lansai comanda Update Pages (Update
Site), apare caseta de dialog Update Pages. Executai clic pe butonul Start pentru a ncepe actualizarea
tuturor elementelor de bibliotec legate, aflate n site-ul Web.
Utilizarea funciilor behavior i a stilurilor n elementele de bibliotec
Cnd aplicai unui obiect o funcie behavior, Dreamweaver insereaz cod JavaScript n seciunea
<head> a documentului HTML. Un element de bibliotec nu are o seciune <head>. Ce se ntmpl cu

185

codul JavaScript cnd tragei un obiect cu mouse-ul n categoria Library din panoul Asset, dac obiectul
are aplicat o funcie behavior? Cnd un element de bibliotec care are ataat o funcie behavior este
inserat ntr-o pagin Web, Dreamweaver
insereaz inteligent orice cod JavaScript necesar n seciunea <head> a paginii Web.
Un element de bibliotec are doar coninut HTML i nu este o pagin Web HTML. El nu include
tagurile <head> sau <body>.
Probleme apar dac dorii s modificai funcia behavior asociat cu un element de bibliotec. Nu
putei folosi panoul Behavior la editarea unui element de bibliotec, deoarece este prezent doar
jumtatea cu evenimentele a funciei behavior. Pentru a edita o funcie behavior ataat unui element de
bibliotec trebuie mai nti s detaai elementul, s editai funcia behavior i apoi s recreai elementul
de bibliotec. Este mai uor s stabilii cum dorii s funcioneze elementul de bibliotec nainte de a-l
pune n bibliotec!
Putei aplica stiluri elementelor de bibliotec, dar va trebui fie s copiai manual definiia stilului n
fiecare pagin care folosete elementul de bibliotec, fie s folosii o foaie de stil legat. Pentru acest
scop, este mai uor s folosii o foaie de stil legat. Verificai ca toate paginile Web care includ elementul
de bibliotec s fie legate la foaia de stil care conine definiiile stilului folosit n elementul de bibliotec.
Dac editai un stil n foaia de stil legat, toate elementele de bibliotec vor reflecta modificrile fcute
stilului.
Zonele fierbini dintr-o imagine sunt pierdute cnd salvai harta de imagine ca un element de
bibliotec. Imaginea este salvat, dar coordonatele zonei fierbini sunt nlturate.
Crearea i aplicarea unui ablon
Creai abloane (templates) pentru a oferi o baz de control paginilor Web controlate. abloanele
conin obiecte pe care le marcai ca fiind editabile; restul ablonului este blocat. Cnd actualizai un
ablon original, el se va actualiza peste tot n site.
Crearea unui ablon
Mai nti creai un ablon, salvai-l n categoria Templates a panoului Assets i apoi folosii-l
pentru a crea o nou pagin Web n cadrul site-ului dumneavoastr Web. nainte ca Dreamweaver s
poat insera un ablon, trebuie s definii un site Web. Dreamweaver creeaz un director numit
Templates n rdcina site-ului dumneavoastr Web, acolo unde se pstreaz fiierele ablon originale.
Dreamweaver pstreaz codul unui ablon ntr-un fiier n directorul Template i insereaz o copie a
codului, acolo unde ai inserat un ablon ntr-o pagin Web.
Un ablon difer de un element de bibliotec deoarece ablonul se refer la o ntreag pagin
Web, nu doar la o poriune a unei pagini.
Utilizarea categoriei Templates din panoul Assets
Cnd creai i aplicai abloane, deschidei categoria Templates a panoului Assets.
Categoria Template prezint toate abloanele care exist n site-ul Web curent.
Butoanele din partea de jos sunt urmtoarele:
Butonul Apply (aplicare) aplic paginii Web ablonul selectat curent.
Butonul New Template (ablon nou) creeaz un ablon nou, gol.
Butonul Edit deschide ablonul n propria sa fereastr Document.
Butonul Delete Template (tergere de ablon) nltur ablonul din directorul Templates.
Aceasta nu afecteaz nici o copie a abloanelor, atta doar c ablonul nlturat nu mai
poate fi actualizat n site.
Crearea unui ablon dintr-o pagin Web existent
Exist dou moduri de a crea abloane:
Dintr-o pagin Web existent - dac v decidei s creai un ablon pe baza unei pagini Web,
putei salva pagina ca ablon.
Lund-o de la zero putei s creai un ablon nou, s l deschidei i apoi s adugai obiecte
la ablon ca i cnd ar fi vorba de o pagin Web obinuit. Dup ce ai aplicat un ablon paginii
dumneavoastr Web o copie a ntregului coninut din ablon va fi inserat n pagin. Nu mai trebuie s
avei ablonul original prezent pentru ca pagina Web s fie afiat. Cnd ncrcai pagina Web pe un site
Web de la distan, nu trebuie s ncrcai directorul Templates. Pstrai directorul pentru momentul cnd
vei dori s facei modificri abloanelor din site-ul dumneavoastr Web.
Pstrarea abloanelor pe server v asigur c avei o copie de siguran pentru cazul n care
modificai din greeal un ablon i vrei s-l readucei la forma iniial. Folosii opiunea cloaking
(tinuire) din Dreamweaver pentru a face ca directorul Templates s nu fie sincronizat sau ncrcat cnd
transferai fiiere. Activai tinuirea n meniul Site i apoi dai clic-dreapta pe directorul Templates i
selectai comanda Cloak din submeniul Cloaking. Dosarul va aprea n site cu o linie roie peste el.
Pentru a crea un ablon dintr-o pagin Web existent:

186

1. Selectai comanda Save As Template (salvare ca ablon) din meniul File.


2. Apare caseta de dialog Save As Template. Introducei un nume intuitiv pentru ablon.
Dai noului ablon un nume intuitiv n caseta de dialog Save As Template. Vei vedea o list cu
abloanele existente n site-ul afiat la acel moment. Dreamweaver creeaz cte un fiier pentru fiecare
ablon. Extensia de fiier pentru abloane este .dwt. n directorul Templates al site-ului dumneavoastr
Web, vei vedea cte un fiier .dwt pentru fiecare ablon din site.
Crearea unui ablon de la zero
Pentru a crea un ablon nou i a-i aduga obiecte:
1. Dai clic pe butonul New Template din partea de jos a categoriei Template a panoului Asset.
Dreamweaver creeaz un ablon nou. Apare un mesaj n jumtatea de sus a categoriei Template din
panoul Asset, care v spune cum s adugai un coninut ablonului.
2. Dai ablonului un nume. De exemplu, creai un ablon pentru a afia colecia de cri i
numii-l carte.
3. Dai dublu-clic pe ablon n categoria Template a panoului Asset. Dreamweaver deschide
ablonul ntr-o fereastr Document separat. Putei spune c avei deschis un ablon deoarece
Dreamweaver afieaz, n bara de titlu, <<Template>> mpreun cu numele ablonului.
4. Inserai obiecte n fereastra Document a ablonului, aa cum ai face-o cu orice pagin Web.
5. nchidei fereastra Document i salvai ablonul. Modificrile dumneavoastr vor fi reflectate
n categoria Template din panoul Asset. Nu v facei griji acum cu mesajul pe care l primii, relativ la
faptul c ablonul dumneavoastr nu are regiuni editabile, deoarece n cele ce urmeaz vei nva s
adugai nite regiuni editabile.
Categoria Template din panoul Asset are un meniu pop-up care conine comenzi utile. Sunt
disponibile diferite comenzi n funcie de ceea ce este selectat curent.
Marcarea unei regiuni existente ca fiind editabil
nainte de a aplica un ablon la o pagin Web, trebuie s marcai regiunile ablonului ca fiind
editabile. n mod implicit, toate regiunile din ablon sunt blocate. Marcai o regiune ca fiind editabil dac
dorii s o modificai, s adugai sau s actualizai coninutul din regiune. Lsai blocate toate regiunile
care nu trebuie modificate. Dac este nevoie s facei schimbri ntr-o regiune blocat, putei schimba
fiierul ablonului original i s actualizai toate paginile Web legate la acel ablon. Comenzile Templates
pentru lucrul cu regiunile editabile sunt localizate n submeniul Template Objects din meniul Insert.
Utilizai un nlocuitor de imagine n ablon pentru a reprezenta o imagine.
Pentru a face editabil o regiune existent:
1. Deschidei un ablon i selectai regiunea care trebuie s fie fcut editabil.
2. Selectai comanda Editable Region din submeniul Template Objects al meniului Insert.
3. Apare caseta de dialog New Editable Region. Dai regiunii un nume intuitiv. Dup ce ai creat o
regiune editabil, numele regiunii apare n lista din partea de jos a submeniului Templates din meniul
Modify, n timp ce lucrai cu ablonul. Selectai n meniu unul dintre numele de regiune pentru a evidenia
acea regiune n fereastra Document. De asemenea, Dreamweaver creeaz automat regiuni editabile
pentru titlul documentului (numit doctitle) i o regiune goal n seciunea <head> a documentului,
disponibil pentru codul JavaScript.
Dreamweaver v ofer capacitatea de a crea regiuni editabile pe diferite obiecte dintr-un ablon.
De exemplu, putei face editabil un strat. Vei putea muta stratul sau modifica oricare dintre proprietile
sale dup ce aplicai ablonul paginii Web. Putei lsa stratul blocat i crea o regiune editabil n cadrul
stratului. Dup aceea, nu mai putei muta sau modifica proprietile stratului la aplicarea ablonului, dar
putei plasa coninut n strat.
Dreamweaver evideniaz regiunile editabile astfel nct ele s fie uor de gsit n fereastra
Document. Evidenierile vor fi vizibile n Dreamweaver, dar nu n browser. Pentru a vedea evidenierile,
selectai Invisible Elements din meniul View. Stabilii culoarea pentru evideniere n categoria Highlight a
preferinelor Dreamweaver. Regiunile editabile sunt evideniate doar cnd editai fiierul de ablon
original. n paginile Web care au un ablon aplicat este valabil contrariul: regiunile blocate sunt
evideniate.
Crearea unei regiuni editabile noi
ntr-un ablon putei crea regiuni opional editabile. Selectai comanda Optional Region (regiune
opional nou) din submeniul Template Objects al meniului Insert. Numii noua regiune n caseta de
dialog New Optional Region. O regiune opional permite autorilor de pagini Web s decid dac au
nevoie sau nu de coninut n aceast regiune de pe pagina Web. Dac regiunea nu este necesar, ei pot
s o dezactiveze. O regiune editabil apare cu un dreptunghi n jurul ei i o bar care i arat numele.
Pentru a bloca o regiune care a fost anterior marcat ca fiind editabil, selectai comanda Remove
Template Markup (ndeprtarea marcrii ablonului) din submeniul Templates al meniului Modify. Dac

187

ai introdus informaie n regiunile editabile anterioare din paginile Web, vei pierde informaia dup
blocarea regiunii i actualizarea paginilor Web.
Aplicarea unui ablon la o pagin Web
Putei aplica abloane n trei moduri diferite:
Tragei cu mouse-ul ablonul din categoria Template a panoului Asset i aplicai-l noii pagini
Web.
Selectai un ablon din categoria Template a panoului Asset i dai clic pe butonul Apply.
Selectai comanda New i alegei seciunea Templates. Din partea stng a casetei de dialog
selectai site-ul care conine ablonul, iar din partea dreapt, selectai ablonul pe care dorii s-l folosii
n pagina dumneavoastr.
Modificarea unui ablon
Editai abloanele deschizndu-le pentru a aduga sau a schimba coninutul lor. Putei deschide
ablonul din categoria Template a panoului Asset sau putei deschide ablonul din Site Manager. Editrile
asupra obiectelor blocate sunt aplicate tuturor paginilor Web care folosesc ablonul. Editrile asupra
obiectelor editabile nu au nici un efect n paginile Web care folosesc ablonul.
Dup ce editai i salvai un ablon, Dreamweaver v va ntreba dac dorii s actualizai fiierele.
Selectai fiierele i apoi selectai butonul Update pentru a actualiza automat abloanele legate. Caseta de
dialog Update Pages afieaz statistici asupra modului n care fiierele vor fi examinate, actualizate sau
asupra fiierelor imposibil de actualizat. Pentru a vedea aceste statistici bifai caseta de validare Show
Log. Executai clic pe butonul Close pentru a nchide caseta de dialog Update Pages.
Mai putei actualiza manual fiierele legate la abloane. Dai clic-dreapta pe ablon n categoria
Template a panoului Asset i selectai fie comanda Update Current Page, pentru actualizarea paginii Web
curente, fie comanda Update Site, pentru actualizarea ntregului site Web. Comanda Update Current Page
acioneaz imediat i nu apare nici o caset de dialog. Cnd lansai comanda Update Site, apare caseta
de dialog Update Pages. Dai clic pe butonul Start pentru a actualiza toate abloanele legate din site-ul
dumneavoastr Web.
Utilizarea n abloane a funciilor behavior i a stilurilor
n abloane putei folosi funcii behavior (comportamente) i stiluri. Stilurile i codul JavaScript
vor fi aplicate unei pagini Web bazate pe un ablon. Pentru a edita stiluri i funcii behavior
(comportamente) ntr-o pagin Web, obiectele la care acestea sunt aplicate trebuie s fie editabile.
Selectai un obiect cu un stil sau cu o funcie behavior (un comportament) i editai stilul sau funcia
behavior (comportamentul) n panoul CSS Style sau n panoul Behaviors.
Chiar dac putei edita funcii behavior i stiluri ntr-o pagin Web legat la un ablon, putei
aplica funcii behavior i stiluri doar obiectelor din ablonul original.
Tagul <body> este blocat cnd se aplic un ablon.
Creai o pagin Web nou cu ajutorul ablonului. Modificai orice obiect care trebuie editat.
Dac nu avei o imagine n ablonul dumneavoastr, inserai un GIF mic transparent (1x1 pixeli)
undeva n pagina Web i ataai-i funcia behavior (comportamentul).
Utilizarea informaiilor incluse dinamic de server i adugarea datei
Informaiile incluse dinamic de server (Server-side Includes SSI) v pot adduce economie de
timp i de effort n dezvoltarea unui site Web. Atunci cnd un utilizator v acceseaz pagina Web,
dumneavoastr creai fiiere care v sunt inserate n pagina Web de ctre server. Serverul n care este
pstrat site-ul Web prelucreaz o comand pe care ai inserat-o n pagina dumneavoastr Web.
Utilizarea informaiilor incluse dinamic de server permite serverului Web s plaseze dinamic
informaia n paginile dumneavoastr Web. Deoarece prelucrarea informaiei incluse are loc pe server, nu
putei vizualiza corespunztor fiierul fr a-l ncrca de pe server. Dreamweaver simuleaz aspectul final
al paginii Web prin afiarea informaiei n fereastra Document. De asemenea, informaiile incluse dinamic
de server se afieaz cnd previzualizai pagina Web n browser. Unei pagini Web i mai putei aduga
data ultimei modificri. Dreamweaver poate actualiza automat data ultimei modificri fcute n pagina
dumneavoastr Web.
Ce este o informaie inclus dinamic de server?
O informaie inclus dinamic de server (SSI) permite serverului s pun date externe n pagina
dumneavoastr Web. Datele puse n pagin pot fi iruri de date sau coninutul unui fiier. Dreamweaver
nu se va amesteca n informaiile incluse dinamic de server. Dreamweaver poate s simuleze prelucrarea
unor directive de server.
Vei examina utilizarea facilitilor Dreamweaver pentru a include alte fiiere n pagina
dumneavoastr Web. Informaiile incluse dinamic de server pot s insereze i informaie pe care
Dreamweaver nu o poate afia. Putei include copii ale multor tipuri de informaii incluse dinamic de
server n paginile dumneavoastr Web.

188

Iat cele cinci lucruri principale pe care le fac informaiile incluse dinamic de server:
Insereaz un alt fiier n pagina Web curent. Aceasta este util la adugarea antetelor,
subsolurilor de pagin sau bannerelor cu reclame. Dreamweaver simuleaz aspectul astfel nct
dumneavoastr nu trebuie s verificai mereu cum va arta pagina transfernd-o i vizualiznd-o de pe
server.
Transmite napoi informaia de la server pentru a afia o dat, adresa IP a utilizatorului, URL-ul
paginii Web anterioare sau alte informaii disponibile pe server.
Configureaz informaia ntr-o alt informaie inclus dinamic de server. De exemplu, adaug o
informaie inclus dinamic de server naintea alteia pentru a face s apar o dat ntr-un anumit format.
Execut un script CGI. De exemplu, dac folosii o informaie inclus dinamic de server pentru a
aduga butoane de salt nainte sau napoi la pagina Web, aceasta apeleaz un script CGI pentru a gsi
care este hiperlegtura la pagina urmtoare i la cea anterioar.
Afieaz dimensiunea fiierului paginii Web curente folosind informaia de pe server. Pentru a
face s funcioneze informaiile incluse dinamic de server, va trebui s cunoatei puin serverul
dumneavoastr. Mai nti, directorul n care vei pune pagina Web trebuie s fie configurat pentru a
permite informaii incluse dinamic. Trebuie apoi s cunoatei ce extensie de fiier recunoate serverul
dumneavoastr pentru un eventual coninut de informaii incluse dinamic. Administratorul dumneavoastr
de reea sau de Web v poate da aceast informaie sau poate s o configureze pentru dumneavoastr.
Consultai-v cu administratorul dumneavoastr Web nainte de a proiecta informaii incluse dinamic de
server n site-ul Web. Unele conturi pur i simplu nu permit utilizarea informaiilor incluse dinamic.
Serverul trebuie s tie n ce fiiere s caute informaiile incluse dinamic. Dac serverul
dumneavoastr este configurat s caute informaii incluse dinamic n toate fiierele, el aduce o ncrcare
mare a prelucrrii i poate ncetini ntregul server. Adesea, serverele sunt configurate s caute informaii
incluse dinamic doar n fiiere care se termin cu .shtml, .shtm, .stm sau alte extensii care spun
serverului c n pagin este prezent o informaie inclus dinamic. Serverul analizeaz numai acele
pagini, cutnd informaii incluse dinamic i prelucrndu-le.
Informaiile incluse dinamic de server de mare ntindere, care necesit o prelucrare a codului, pot
duce la un consum de resurse ale serverului Web. Dac site-ul dumneavoastr rezid pe un server cu
mult trafic, informaiile incluse dinamic pot crete timpul necesar serverului pentru a transmite pagina
utilizatorului.
Din aceleai motive pentru care ai folosi elemente de bibliotec n Dreamweaver, ai putea folosi
i informaiile incluse dinamic de server. Putei s actualizai un fiier inclus i s modificai fiecare pagin
din site-ul dumneavoastr la care face acesta trimitere. Dreamweaver
insereaz coninutul elementului de bibliotec n pagina Web, iar serverul insereaz coninutul
fiierului la care se face referire ntr-o informaie inclus dinamic de server cnd este solicitat fiierul.
Inserarea unei informaii incluse dinamic de server
Informaiile incluse dinamic de server arat ca i comentariile HTML. Putei insera un comentariu
n pagina dumneavoastr Web selectnd obiectul Comment din seciunea Common a barei de inserare
sau comanda Comment meniul Insert. Apare caseta de dialog Comment. Un comentariu Dreamweaver
apare ca un element invizibil. Putei edita un comentariu n fereastra de inspectare Property. Dac
selectai editorul Quick Tag din fereastra de inspectare Property avnd selectat un comentariu, putei
vedea codul HTML al comentariului.
Transformarea unui comentariu ntr-o informaie inclus dinamic de server
O informaie inclus dinamic de server arat ca un comentariu. Pentru informaia inclus dinamic
exist un simbol nainte de cod. Serverul nlocuiete informaia inclus dinamic cu textul corespunztor
(sau cu orice altceva insereaz informaia inclus dinamic).
Exist cteva comenzi diferite pentru informaia inclus dinamic, ce pot fi puse n
pagina Web
echo var=HTTP_REFERER Afieaz URL-ul paginii Web din care tocmai ai venit.
echo var=DATE_LOCAL Afieaz data i ora.
echo var=REMOTE_ADDR Afieaz IP-ul utilizatorului.
echo var=DOCUMENT_NAME Afieaz numele paginii Web curente.
echo var=HTTP_USER_AGENT Afieaz browserul utilizatorului i sistemul de operare.
fsize file=my_file.shtml Afieaz dimensiunea fiierului.
flastmod file=my_file.shtmlAfieaz data ultimei modificri a fiierului.
Dac serverul dumneavoastr recunoate aceste comenzi, putei s le inserai ntr-un cmp de
comentariu. Salvai fiierul (nu uitai, ar trebui s aib o extensie special de fiier), transferai pagina
Web pe serverul de la distan i apoi vizualizai pagina Web.

189

Includerea unui fiier


Putei insera un comentariu pentru a aduga orice informaie inclus dinamic. Dreamweaver are
ns un obiect specializat care v permite s inserai un fiier inclus, un tip cunoscut de informaie inclus
dinamic. Obiectul Server-Side Include (informaii incluse dinamic de server) din Dreamweaver insereaz o
referin la un fiier extern inclus n pagina dumneavoastr Web.
Mai nti trebuie s creai fiierul extern care va fi inclus n pagina dumneavoastr Web.
Fiierul inclus este un fragment de cod HTML, nu o pagin ntreag.
Pentru a crea un fiier extern i a insera coninutul su ntr-o pagin Web printr-o informaie
inclus dinamic de server:
1. Deschidei un editor de texte, precum Notepad din Windows i introducei un text n el.
2. Salvai fiierul de text n acelai director n care va rezida pagina dumneavoastr Web. Putei
da fiierului orice extensie; putei folosi .txt, .html sau .htm.
3. Deschidei o pagin Web n Dreamweaver.
4. Punei punctul de inserare acolo unde dorii s apar textul din fiier.
5. Selectai obiectul Server-Side Include din panoul Script al barei Insert sau selectai comanda
Server-Side Include din meniul Insert.
6. Apare caseta de dialog Select File. Selectai fiierul de text pe care l-ai creat mai devreme.
Textul pe care l-ai adugat la fiierul separat apare acum n pagina dumneavoastr Web.
Fereastra de inspectare Property afieaz numele fiierului cu informaia inclus dinamic de
server, tipul de fiier i un buton de editare. Observai c atunci cnd coninutul fiierului extern este
selectat, el nu poate fi editat n pagina Web.
Exist dou ci de a introduce adresa unui fiier extern folosit ca o informaie inclus dinamic.
Selectai opiunea Virtual sau opiunea File din fereastra de inspectare Property, de lng Type. Selectai
File pentru a crea o adres care este relativ la cea a fiierului current (similar cu adresarea relativ a
documentului). Selectai Virtual pentru a adresa fiierul relativ la rdcina serverului dumneavoastr Web
(similar cu adresarea relativ la rdcina site-ului).
Dac folosii adresarea virtual n informaia inclus dinamic, va trebui s tii ce director este
configurat ca rdcin a site-ului Web pe server. Va mai trebui s obinei permisiunea corespunztoare
pentru a salva fiierul acolo.
Spre deosebire de elementele de bibliotec, Dreamweaver nu insereaz de fapt n pagina Web
codul HTML pentru informaia inclus dinamic. Dac v uitai la codul HTML, vei vedea un tag care arat
aa: <!-- include file=header.txt -->
Editarea fiierului de informaii incluse dinamic de server
Editai fiierul dumneavoastr inclus chiar n Dreamweaver. Avnd selectat informaia inclus
dinamic, dai clic pe butonul Edit n fereastra de inspectare Property. Dreamweaver deschide coninutul
fiierului inclus ntr-o fereastr Document separat. Cnd salvai fiierul, modificrile dumneavoastr vor
fi reflectate n toate paginile Web care fac referire la fiier. Deoarece fiierul nu are nevoie de atribute de
pagin, cum ar fi culoarea de fundal, culorile legturilor sau imaginea de fundal, ele nu vor aprea cnd
editai fiierul extern inclus.
n fiierul de text putei include taguri HTML, care s conin referine la imagini, i orice alt
obiect pe care poate s-l conin o pagin Web.
Adugarea datei ultimei modificri
Exist dou modaliti prin care putei aduga paginii Web data ultimei modificri: o informaie
inclus dinamic i un obiect Date din Dreamweaver. O informaie inclus dynamic preia data ultimei
modificri din atributele de fiier ale paginii. Obiectul Date din Dreamweaver actualizeaz pur i simplu
data (i ora) de fiecare dat cnd editai i salvai pagina Web n Dreamweaver.
Cnd selectai obiectul Date din seciunea Common a barei Insert sau comanda Date din meniul
Insert apare caseta de dialog Insert Date (inserarea datei). Selectai dintre diversele formate pentru zi,
dat i or. Dac selectai caseta de validare Update Automatically on Save (actualizare automat la
salvare), Dreamweaver va actualiza data de fiecare dat cnd salvai pagina Web. Dai clic pe OK pentru
a insera data.
Editai formatul unei date pe care ai inserat-o ntr-o pagin Web selectnd mai nti obiectul
Date din fereastra Document i apoi dnd clic pe butonul Edit Date Format din fereastra de inspectare
Property. Dup ce ai stabilit actualizarea automat, nu mai putei s o retragei; va trebui fie s tergei
data i s inserai una nou, fie s editai codul HTML.



190

Modulul VI PHP i My SQL



1. Introducere n PHP i My SQL
PHP este unul dintre cele mai populare limbaje de scripting pe parte de server. Pentru mult
lume, principala raiune de a nva un limbaj precum PHP ar fi interaciunea pe care o ofer cu bazele de
date. Este, de fapt, surprinztor ct de util poate fi o baz de date, mai ales atunci cnd poate fi folosit
ntr-un site Web. Sunt foarte multe lucruri care se pot face ntr-un astfel de caz, de la afiarea unor
simple liste i pn la producerea integral a paginilor Web dintr-o baz de date. Cteva exemple cu PHP
i MySQL, folosite mpreun, sunt:
Schimbarea-rotaia banner-elor. Pentru a realiza schimbarea pe ecran a imaginilor la
diferitele vizitri ale unei pagini i a asigura astfel un interes mai mare al vizitatorilor, se poate folosi un
script PHP care deschide o baz de date i extrage aleator o imagine sau un set de imagini, pentru a o(a-
l) include ntr-un set de pagini Web. Scriptul PHP va contoriza de asemeni numrul de vizualizri ale
banner-ului, putnd, cu modificri minore, s urmreasc chiar i numrul de click-uri. Pentru a aduga,
schimba sau edita bannerele, tot ce avem de fcut este s schimbm baza de date iar scriptul va ncrca
banner-ul corect n toate paginile site-ului Web.
Forumurile Web. Sute de forumuri de dezbatere sunt acum realizate i ruleaz n PHP
i MySQL. Acestea s-au dovedit mult mai eficiente dect alte sisteme, crend cte o pagin pentru fiecare
mesaj i oferind o larg varietate de opiuni. Toate paginile forumului pot fi actualizate prin schimbarea
unui script PHP.
Bazele de Date. Un astfel de exemplu (edificator) l ofer site-urile care dau toate
informaiile dintr-o baz de date.
Site-urile Web. Cnd avem un site de mari dimensiuni - cu multe pagini, i dorim s
modificm aspectul general sau s schimbm proiectul, chestiune care ar cere foarte mult timp pentru
aducere la zi i ncrcare. Cu PHP i MySQL ntregul site Web se poate reduce la unul sau dou scripturi
PHP care s acceseze o baz de date MySQL pentru a obine informaiile pentru paginile Web. Pentru a
actualiza sau a modifica proiectul centrului Web nu trebuie s schimbm dect o pagin.
Sunt necesare trei componente pentru a putea rula scripturi PHP care s acceseze baze de date
cu MySQL.
1. Un server Web. Acesta poate fi sau pe calculatorul personal sau pe o gazd Web. Oricare
pachet - oricare tip de server Web este acceptat i va lucra cu PHP i MySQL, dar cel mai recomandat
este Apache, care e public i gratis.
2. PHP trebuie s fie instalat pe server. Dac nu este deja instalat, putei s o facei sau s
apelai la administratorul serverului Web, n acest sens. Pachetul de instalare poate fi descrcat - preluat
de la http://PHP.net i este deasemeni public - gratuit.
3. MySQL. Acesta este de fapt pachetul de programe pentru gestiunea bazelor de date. Putei
folosi de asemeni multe alte sisteme de baze de date (SQL, Oracle etc. ). i pachetul MySQL este public,
gratuit, putnd fi preluat din pagina oficial a firmei MySQL.

2. Instalarea i configurarea PHP i MySQL cu serverele web Apache sub sistemul de
operare Windows
Pentru instalarea PHP avei nevoie de un server web, instalat local, cum ar fi Apache HTTP
Server.
2.1. Instalare MySQL 5
Pentru nceput, putei descrca kitul de instalare Windows Essentials de la
http://dev.mysql.com/downloads/mysql.
Alegei tipul de instalare Typical, iar la sfritul instalrii optai pentru configurarea imediat a
serverului MySQL (opiunea Configure the MySQL Server now trebuie s fie bifat).
Alegei Standard Configuration, apoi debifai opiunea Install As Windows Service n caz
c nu dorii ca serverul MySQL s porneasc ca serviciu Windows (dacalegei s debifai aceast
opiunea, va trebui s pornii manual serverul, rulnd c:\Program Files\MySQL\MySQL Server 5.
0\bin\mysqld. exe pentru Windows 95/98 sau c:\Program Files\MySQL\MySQL Server 5.
0\bin\mysqld-nt. exe pentru Windows NT/2000/XP/Vista/7.
Pe o platforma de test, pe care o utilizai numai dumneavoastr, putei lsa pentru numele de
utilizator sau pentru parola cte un ir gol. Mai trziu, va trebui s folosii aceste date, la orice conectare
la serverul MySQL.
Pentru a lsa numele de utilizator i parola ca iruri goale, debifai opiunea Modify Security
Settings, n acest stadiu. n acest fel, numele de utilizator va fi setat ca fiind "root". La sfrit, apsai
Execute pentru a termina procesul de configurare.

191

2.2. Instalarea i configurarea serverului Apache


Avei nevoie de kitul pentru serverul Apache, pachetul PHP (disponibil sub forma de installer sau
arhiv), serverul MySQL i un browser web. Informaiile pentru procurarea pachetelor de instalare sunt
oferite treptat.
Apache HTTP Server este o soluie open-source (sursa liber), dezvoltat de Apache Software
Foundation care este folosit de peste 60% dintre siturile prezente pe web, fiind disponibil att pentru
Windows, ct i pentru Linux. Putei descrca ultima versiune de la http://httpd.apache.org/download.cgi
.
Apache 2.0.63, 2.3.15 sau mai nou este compatibil cu versiuni mai noi dect PHP 4.3.0 i
respectiv PHP 5.
n timpul instalrii, trebuie s specificai Network Domain i Server Name ca fiind localhost, iar
la adresa administratorului putei introduce adresa dumneavoastr de e-mail, dei nu are vreo importan
n utilizarea ulterioar a produsului (fereastra este ilustrat mai jos). Este instalat i Apache Monitor cu
care putei porni sau opri serverul web Apache.
Pentru a testa dac server-ul a fost instalat corect,
navigai cu browserul dumneavoastr web la
adresa http://localhost.
Avei capturi de ecran cu pagina ncrcat n cazul
n care instalarea a fost efectuat cu succes.
Pentru a ncrca pagini ce pot fi accesate local de ctre serverul web, copiai-le n directorul:
c:\Program Files\Apache Software Foundation\Apache2. 2 \htdocs\ pentru Apache
2.3. Instalarea PHP pentru Apache HTTP Server
n cazul n care ai descrcat arhiva ce conine fiierele PHP, creai un director \php pe discul pe
care este instalat sistemul de operare i serverul web Apache i dezarhivai pachetul acolo. Vom
presupune de aici nainte ca discul respectiv este c:. Aceasta este o instalare tipic pentru PHP ca modul
Apache.
1) Navigai la c:\php\ i redenumii fiierul php.ini-dist n php.ini. Deschidei acest fiier n
Notepad (pentru a face aceasta, cel mai bine este s deschidei o fereastr Notepad, apoi tragei de
iconia fiierului, aflndu-v ntr-un file manager - Windows Explorer de exemplu - asupra ferestrei
deschise), sau ntr-un alt editor text i cutai textul doc_root = pe care va trebui s-l nlocuii cu
doc_root = "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\". Apoi cutai
extension_dir = i nlocuii cu extension_dir = "c:\php".
2) Copiai fiierele php.ini i php4ts.dll (sau php5ts.dll n caz ca ai ales PHP 5) din c:\php\
n c:\windows\system32\ (pentru Windows 2000/XP) sau c:\windows\system\ (pentru Windows
98/Me).
3) Acum, pentru a configura i serverul web Apache s lucreze cu PHP, mergei la c:\Program
Files\Apache Software Foundation\Apache2.2\conf\ (sau locaia corespunztoare distribuiei
instalate) i deschidei fiierul httpd.conf cu Notepad (sau alt editor text). Parcurgei treptat
instruciunile de mai jos i adugai la sfritul fiierului liniile ce corespund situaiei dumneavoastr.
ncrcarea modulului PHP, pentru Apache 2 i PHP 4
LoadModule php4_module c:/php/sapi/php4apache2.dll
ncrcarea modulului PHP, pentru Apache 2 i PHP 5
Pentru acest caz, exist o cunoscut eroare de compatibilitate ntre Apache 2. 0.x i Apache
2.2.x, legat de interfaa API.
Pentru versiunile Apache 2. 0. x putei utiliza cu succes directiva de mai jos. Pentru 2.2.x, trebuie
s folosii fiierul php5apache2_2.dll, disponibil n distribuia PHP 5. 2. x, aflat n stare de dezvoltare
i testare.

192

Vizitai PHP Snapshots i descrcai ultimul pachet de tip (5.2.x-dev), din categoria Win32
Packages. Apoi dezarhivai ntr-un director separat coninutul pachetului i copiai fiierul menionat
anterior la c:\php\. Alegei una din directivele de mai jos:
o #pentru Apache 2. 0. x
LoadModule php5_module c:/php/php5apache2.dll
o #pentru Apache 2. 2. x
LoadModule php5_module c:/php/php5apache2_2.dll
ncrcarea modulului PHP, pentru Apache 1. 3. x i PHP 4
LoadModule php4_module c:/php/sapi/php4apache.dll
ncrcarea modulului PHP, pentru Apache 1. 3. x i PHP 5
LoadModule php5_module c:/php/sapi/php5apache.dll
Doar dacai ales Apache 1. 3. x, adugai i urmtoarea linie:
AddModule mod_php4 c
Adugarea suportului pentru fiiere de tip .php.
AddType application/x-httpd-php . php
Adugarea suportului pentru fiiere de tip .php3.
AddType application/x-httpd-php . php3
Adugarea suportului pentru fiiere de tip .phtml.
AddType application/x-httpd-php . phtml

Pentru a configura calea ctre fiierul de configurare PHP (php.ini), adugai urmtoarea linie
(bineneles, nlocuii cu calea corespunztoare instalrii dumneavoastr):
PHPIniDir c:\php\
Pana acum trebuie s avei trei linii pentru server-ele Apache 2 i respectiv patru linii pentru
server-ele Apache 1. 3. X adugate sfritul fiierului httpd.conf.
Exemplu (Apache 1. 3. x i PHP5):
LoadModule php5_module c:/php/sapi/php5apache. dl
AddModule mod_php4. c
AddType application/x-httpd-php . php
PHPIniDir c:\php\
Nota: Liniile precedate de caracterul "#" se numesc comentarii, acestea nu sunt interpretate de
Apache i le putei terge.
4) Cutai linia DirectoryIndex index.html i modificai-o n DirectoryIndex index.html
index.php. Astfel, indicai c pagina de index pe care o va deschide Apache cnd este accesat un
director s fie ori index.html ori index.php, n aceasta ordine. Dup ce ai fcut acest lucru, restartai
serverul Apache.
Pentru a testa dacinstalarea PHP a fost realizat cu succes, creai urmtorul fiier PHP n
Notepad:
<?php
phpinfo();
?>
Salvai cu numele index.php i copiai-l n directorul c:\Program Files\Apache Software
Foundation\Apache2. 2\htdocs.
Deschidei pagina web http://localhost. Dac se vor afia informaii despre server, instalarea a
fost finalizat cu succes. n alte cazuri, fiierul index.php poate fi propus pentru download, ceea ce
nseamn ca serverul web nu recunoate extensia ".php". n acest caz asigurai-v c paii anteriori au
fost parcuri ca atare (c serverul web, Apache, este pornit, ai copiat i editat fiierele prezentate mai
sus etc. ).
2.3.1. Precizri pentru Apache HTTP Server
Este nevoie s editai php.ini pentru a activa extensia pentru MySQL.
Deschidei acest fiier cu Notepad (n mod normal, fiierele de tip ini sunt asociate cu Notepad) i
cutai linia ;extension=php_mysql.dll, i tergei virgula din faa ei.
Salvai fiierul i restartai serverul web Apache. n acest moment, suportul pentru funciile
MySQL este activat.
Apache HTTP Server, PHP i MySQL sunt soluii gratuite open-source (surs liber) protejate de
GNU General Public License.
Consultai licena pentru fiecare produs n parte dac avei nelmuriri cu privire la termenii de
utilizare.

193

Documentaia complet (inclusiv instruciuni de configurare pentru alte tipuri de servere, note de
compatibilitate ntre versiuni etc. ) o putei gsi pe siturile productorilor.
Apache HTTP Server: http://httpd.apache.org
PHP: http://www.php.net
MySQL: http://www.mysql.com
2.4. Noiuni de securitate. Securizarea conexiunii la MySQL
Dac serverul MySQL este instalat local pe calculatorul dumneavoastr, folosii aplicaii de tipul
screen-saver sau mecanisme de blocare cu parol a ecranului.
Dac serverul MySQL este instalat pe un server din afara reelei dumneavoastr, securizarea
conexiunii ar trebui s fie prima prioritate. Ca orice alt transmisiune de date prin Internet, i aceasta ar
putea fi interceptat. Dac transmisiunea este necriptat, persoana care o intercepteaz o poate
reconstitui i folosi. S presupunem c transmisia necriptat conine informaia de autentificare pentru
serverul MySQL - un individ ruvoitor are acum acces la baza dumneavoastr de date i poate ntreprinde
diferite aciuni folosind acreditrile dumneavoastr.
O metod sigur de a preveni astfel de ntmplri este s v conectai la serverul dumneavoastr
MySQL folosind o conexiune securizat. n loc s v conectai la calculatorul aflat la distan folosind
clasicul Telnet, conectai-v prin intermediul SSH. SSH arat i se comport la fel ca Telnet, dar toate
transmisiunile de la i ctre calculatorul aflat la distan sunt criptate. De asemenea dac folosii o
interfa de administrare bazat pe tehnologie Web, cum este cazul phpMyAdmin sau orice alte
instrumente puse la dispoziie de furnizorul dumneavoastr de servicii Internet, avei grij s le accesai
prin intermediul unei conexiuni HTTP securizate.
2.5. Introducere n sistemul de privilegii al MySQL
Sistemul de privilegii al MySQL este ntotdeauna pornit. Prima dat cnd ncercai s v conectai
i ulterior pentru orice aciune ntreprins, serverul MySQL verific urmtoarele trei aspecte:
de unde accesai serverul (host-ul dumneavoastr);
cine suntei sau pretindei c ai fi (utilizatorul i parola);
ce operaii avei dreptul s ntreprindei (privilegiile dumneavoastr de comand).
Toate aceste informaii sunt stocate ntr-o baz de date intitulat mysql, care se creeaz automat
n momentul instalrii. n aceast baz de date ntlnii mai multe tabele:
columns_priv - conine informaiile referitoare la privilegiile unui anumit utilizator pentru
anumite cmpuri dintr-o tabel;
db - conine informaiile referitoare la permisiunile pentru toate bazele de date de pe server;
func - conine funciile create de utilizator;
host - conine lista tuturor staiilor (host-urilor) de unde sistemul poate accepta conexiuni;
tables_priv - conine informaiile cu privire la privilegiile unui anumit utilizator pe tabele
specifice dintr-o baz de date;
user - conine informaiile referitoare la comenzile pe care un anumit utilizator are dreptul s le
execute sau nu.

2.6. Procesul de autentificare n doi pai
Serverul MySQL verific staia (host-ul) de unde v conectai, precum i perechea utilizator
parol pe care ai furnizat-o. Dac staia dumneavoastr este autorizat s se conecteze, parola
corespunde utilizatorului i utilizatorul este cel asociat staiei respective, serverul MySQL trece la pasul
urmtor.
Pentru orice comand SQL pe care ncercai s o rulai, serverul MySQL verific dac suntei
autorizat s executai respectiva comand asupra bazei de date, tabelei sau cmpului vizat.
Dac sunt ntlnite erori la pasul 1, vei vedea un mesaj care descrie respectivele erori i nu vei
putea trece la pasul 2.
De exemplu: s presupunem c v conectai la serverul MySQL folosind numele de utilizator joe
i parola abc123 i c dorii s accesai o baz de date intitulat myDB. Vei primi un mesaj de eroare
dac oricare dintre aceste variabile de conectare sunt incorecte, din cauza unuia dintre urmtoarele
motive:
parola este incorect;
utilizatorul joe nu exist;
utilizatorul joe nu are dreptul de a se conecta de pe staia localhost;
utilizatorul joe are dreptul de a se conecta de pe staia localhost, dar nu are dreptul s utilizeze
baza de date myDB.
Exist i posibilitatea s vedei o eroare precum cea de mai jos:
# /usr/local/mysql/bin/mysql -h localhost -u joe -pabc123 test

194

Error 1045: Access denied for user: 'joe@localhost' (Usingpassword: YES)


2.7. Lucrul cu privilegiile acordate utilizatorilor
n cele mai multe cazuri, atunci cnd accesai serverul MySQL prin intermediul furnizorului
dumneavoastr de servicii Internet, vei avea la dispoziie doar un utilizator i o singura baz de date.
Iniial, acel utilizator va avea acces la toate tabelele din acea baz de date i va fi acreditat s efectueze
orice aciune asupra ei. n acest caz, responsabilitatea de a crea prin programare o aplicaie sigur v
aparine dumneavoastr ca dezvoltator.
Dac suntei administratorul serverului propriu de baze de date sau suntei abilitat s adugai
oricte baze de date i utilizatori dorii, precum i s modificai drepturile i privilegiile de acces ale
utilizatorilor dumneavoastr, atunci urmtoarele seciuni v vor oferi informaii foarte importante despre
aceti pai.
2.7.1. Adugarea utilizatorilor
Administrarea serverului dumneavoastr cu ajutorul unui instrument dezvoltat de o ter parte v-
ar putea oferi metode foarte simple de adugare a utilizatorilor, cu ajutorul unor procese de tipul
utilitarelor de asisten sau a unei interfee grafice specifice. Totui, adugarea de utilizatori cu ajutorul
utilitarului MySQL monitor nu este deloc dificil.
Cea mai simpl metod de a aduga un utilizator nou este comanda GRANT. Conectndu-v la
serverul MySQL ca utilizator root putei s tastai aceast comand care v permite adugarea de noi
utilizatori. Cealalt metod este utilizarea comenzii INSERT asupra tuturor tabelelor relevante din baza
de date mysql, caz n care este necesar o cunoatere temeinic a cmpurilor i tabelelor n care sunt
stocate permisiunile. Metoda comenzilor INSERT succesive produce acelai rezultat dar este puin mai
laborioas i mai complicat dect comanda clasic GRANT.
Sintaxa simpl a comenzii GRANT este urmtoarea:
GRANT privilegii ON nume_baza_de_date.nume_tabela TO nume_utilizator@host IDENTIFIED BY
"parola";
Privilegiile pe care le putei oferi utilizatorilor prin intermediul comenzii GRANT sunt urmtoarele:
ALL - confer utilizatorului toate privilegiile de mai jos;
ALTER - utilizatorii pot modifica tabele, coloane i indexuri;
CREATE - utilizatorii pot crea baze de date, tabele i indexuri noi;
DELETE- utilizatorii pot terge nregistrri din tabele;
DROP- utilizatorii pot muta tabele i baze de date;
FILE - utilizatorii pot citi i scrie fiiere; procedur folosit la importul i exportul (dump) datelor
din baza de date;
INDEX- utilizatorii pot aduga sau terge indexuri;
INSERT- utilizatorii pot introduce date noi n tabele;
PROCESS - utilizatorii pot vizualiza i interaciona cu procesele de sistem, oprindu-le, resetndu-
le sau pornindu-le; ca msur de securitate, doar administratorii i utilizatorii de mare ncredere
ar trebui s poat beneficia de aceast facilitate;
REFERENCES - opiunea nu este utilizat n prezent de ctre serverul MySQL; exist totui n
tabelul user o coloan rezervat pentru privilegii privind referinele;
RELOAD - utilizatorii pot comanda resetarea serverului (FLUSH); opiunea este recomandat
numai administratorilor i utilizatorilor de mare ncredere;
SELECT - utilizatorii pot selecta i vizualiza nregistrri din baza de date;
SHUTDOWN - utilizatorii pot opri serverul MySQL; opiune recomandat numai administratorilor
i utilizatorilor de mare ncredere;
UPDATE - utilizatorii pot modifica i actualiza datele din tabelele bazei de date;
USAGE - utilizatorii se pot conecta la serverul MySQL, dar nu au nici un alt fel de privilegiu.
Dac, de exemplu, dorii s creai un utilizator numit john cruia s i fie asociat parola 99hjc i
care s aib privilegiile de a selecta (SELECT) i introduce (INSERT) date n toate tabelele din
baza de date numit myDB i dorii, de asemenea, ca acest utilizator s se poat conecta de la
orice staie, ar trebui s scriei o comand ca cea de mai jos:
GRANT SELECT, INSERT ON myDB.* TO john@"%" IDENTIFIED BY "99hjc";
Observai utilizarea celor dou caractere generale joker * i %. Aceste caractere generale sunt
utilizate pentru a nlocui toate valorile posibile. n acest exemplu * nlocuiete ntreaga lista de tabele din
baza de date myDB, iar % nlocuiete lista tuturor numelor de staii cunoscute n ntreaga lume list, de
altfel, extrem de lung.
Iat un alt exemplu de adugare a unui utilizator pe un server MySQL folosind comanda
GRANT, de aceast dat pentru a aduga un utilizator numit jane cu parola 45sdg11, care s aib toate

195

(ALL) privilegiile pentru o tabel numit employees din baza de date numit myCompany. Acest nou
utilizator se va putea conecta doar de la o staie predefinit:
GRANT ALL ON myCompany.employees TO jane@janescomputer.company.com IDENTIFIED BY
"45sdg11";
n cazul n care tii c staia janescomputer.company.com are adresa de IP 63.124.45.2, putei
nlocui aceast adres n poriunea din comanda GRANT dedicat numelui staiei (hostname), la fel ca n
exemplul de mai jos:
GRANT ALL ON myCompany.employees TO jane@'63.124.45.2' IDENTIFIED BY "45sdg11";
Trebuie avut n vedere un amnunt foarte important cu privire la adugarea de utilizatori: folosii
ntotdeauna parole i avei grij ca aceste parole s ndeplineasc cerinele generale de securitate!
Serverul MySQL v permite s adugai utilizatori fr a le defini o parol, dar acest lucru las ua
deschis acelor indivizi ru intenionai care pot deduce un nume de utilizator din sistemul
dumneavoastr care are toate privilegiile asociate.
n cazul n care folosii comanda GRANT pentru a aduga utilizatori, modificrile vor intra
imediat n vigoare. Pentru a v asigura complet de acest lucru, putei utiliza comanda FLUSH
PRIVILEGES din interfaa MySQL monitor, care duce la rencrcarea tabelei de privilegii.
2.7.2. Revocarea privilegiilor
Revocarea privilegiilor este la fel de simpl ca i adugarea lor; singura deosebire este c n locul
comenzii GRANT vom utiliza comanda REVOKE.
Sintaxa comenzii REVOKE este urmtoarea:
REVOKE privileges ON nume_baza_de_date.nume_tabela FROM nume_utilizator@nume_host;
De asemenea, n acelai mod n care putei conferi privilegii utiliznd comanda INSERT la nivelul
tabelelor de sistem, le putei i revoca folosind comanda DELETE pentru a terge nregistrrile aferente
din tabelele de sistem din baza de date mysql. Totui, aceast metod presupune o foarte bun
cunoatere a tabelelor i cmpurilor aferente fiecrui privilegiu, de aceea recomandm utilizarea comenzii
REVOKE, aceasta oferind o metod mult mai uoar i mai sigur de revocare a privilegiilor.
Pentru a revoca abilitatea utilizatorului john de a introduce nregistrri noi n baza de date myDB,
ar trebui s utilizai comanda REVOKE, aa cum v este ea prezentat n exemplul de mai jos:
REVOKE INSERT ON myDB.* FROM john@"%";
Modificrile fcute cu ajutorul comenzii REVOKE intr n vigoare imediat, dar pentru ca serverul
s afle despre aceste modificri trebuie s utilizai n interfaa MySQL monitor comanda FLUSH
PRIVILEGES. Serviciul de server MySQL nu ar trebui s ruleze sub utilizatorul root. De asemenea,
utilizatorii nregistrai pe serverul MySQL ar trebui s aib ntotdeauna o parol, iar privilegiile lor de acces
ar trebui s fie ntotdeauna foarte bine definite.
MySQL folosete tabelele de privilegii ntr-un proces n doi pai pentru fiecare solicitare fcut.
MySQL trebuie s tie cine suntei i de unde v conectai i fiecare poriune de informaie pe care o
oferii n cadrul acestui proces trebuie s se corespund cu informaiile stocate n baza de date mysql, n
tabelele de privilegii. De asemenea, utilizatorul trebuie s beneficieze de permisiuni explicite pentru a
executa un anumit tip de comand.
3. Primii pai cu PHP
Pe scurt, ce este PHP? Ca idee general, PHP reprezint un limbaj ce permite modificarea
paginilor web nainte ca acestea s fie transmise de server ctre browserele utilizatorilor. PHP poate
insera text ntr-un fiier HTML deja definit, poate defini un fiier HTML de la zero, poate s afieze o
imagine sau s redirecioneze utilizatorul ctre alt pagin. n cadrul acestui proces, PHP poate consulta
baze de date, fiiere externe sau orice alta resurs, poate trimite email-uri sau executa comenzi ale
sistemului de operare.
Modul n care PHP modifica/definete o pagin ce va fi afiat de browser este prin instruciunile
scrise de programator i delimitate de etichetele <?php?>. Astfel, orice se afl ntre aceste tag-uri va
fi executat de interpretorul PHP i nlocuit cu rezultatul execuiei. Ce este n afara lor rmne neschimbat
i este transmis ctre browser. Spre exemplu, avem o pagina ca mai jos.
<html>
<body>
Azi e <?php print date( 'd.m.Y' ); ?>
</body>
</html>
Rezultatul va fi o pagina HTML ce va conine cuvintele "Azi e" i rezultatul codului PHP (n cazul
acesta - data curent). Codul HTML final, transmis de server n urma procesrii PHP este urmtorul:
<html>
<body>

196

Azi e 30.04.2010
</body>
</html>
Codul PHP nu trebuie s fie neaprat intercalat n pagina HTML. Secvena de mai jos produce o
pagina similara celei de mai sus (n acest caz PHP produce o pagina HTML de la zero).
<?php
print '<html><body>';
print 'Azi e' . date( 'd.m.Y' );
print '</body></html>';
?>
Rezultatul unui script PHP este de obicei text simplu care, de cele mai multe ori, este interpretat
ca fiind cod HTML. Cu alte cuvinte, n majoritatea cazurilor PHP returneaz o pagin ce va fi afiat n
browser. La nceput, acest lucru poate genera confuzii, ntruct sursa HTML este diferit de ceea ce se
afieaz efectiv n browser.
Spre exemplu, fie urmtoarea secvena de cod:
<?php
print "Salut";
print "Acesta este un script simplu";
?>
Probabil v-ai atepta ca rezultatul s fie un text afiat pe 2 linii. Salvnd aceasta secven ntr-un
fiier PHP i accesndu-l prin intermediul unui web-server, vei observa c rezultatul este urmtorul:
Salut Acesta este un script simplu
Dei este confuz, rezultatul este corect. Codul PHP afieaz doar caracterele care i-au fost
indicate. Sfritul de linie reprezint un caracter separat, neprintabil, dar care controleaz cum apare
textul pe ecran. n cazul nostru, nu s-a transmis acest caracter (numit i new-line) i prin urmare PHP nu
l-a afiat.
Sa rescriem exemplul de mai sus pentru a se afia i caracterul "sfrit de linie"
<?php
print "Salut";
print "\n"; # se afieaz caracterul "new-line" care determina trecerea la un rnd nou
# rndul nou va fi afiat n textul trimis ctre browser
print "Acesta este un script simplu";
?>
Verificnd iar n browser vei constata c nu s-a schimbat nimic. La prima vedere. n realitate
rezultatul este afiat pe 2 linii, n textul trimis de PHP ctre browser. ntruct pagina este interpretat ca
fiind HTML, browserul ignora caracterele new-line. Pentru verificare vizualizai sursa paginii (meniul View
din browser -> view source).
Pentru a ajunge la efectele dorite (acelea de a afia un text pe 2 linii) trebuie folosit urmtoarea
secvena:
<?php
print "Salut";
print "\n"; # acum se afieaz caracterul care determina trecerea la un rnd nou
# rndul nou va fi afiat n textul primit de browser (vizibil n sursa HTML)
print "<br>"; # se afieaz tag-ul BR ce va fi interpretat de browser ca 'linie noua'
# linia noua va fi afiat n pagina finala HTML dup ce este interpretata de
# browser i nu are nici o legtura cu \n
print "Acesta este un script simplu";
?>
Sursa paginii arata n felul urmtor:
Salut
<br>Acesta este un script simplu
n browser nu apare tag-ul BR, ntruct acesta este interpretat ca sfrit de linie. Caracterul
"new-line" afiat de noi (n print "\n") este ignorat oricum. Rezultatul:
Salut
Acesta este un script simplu
Nota: Este foarte important s se neleag diferena dintre ceea ce se returneaz n urma
execuiei unui script PHP i ceea ce se afieaz propriu-zis n browser. Pe scurt, PHP printeaz cod HTML
care este afiat diferit de browsere.

197

De asemenea, trebuie neles faptul c funcia print nu afieaz textul pe mai multe linii dac nu
se specifica acest lucru n mod express. Spre exemplu fie urmtoare secvena de cod:
<?php
print "1";
print "2";
print "3";
?>
Rezultatul va fi
123
S-a afiat doar ce s-a indicat, 3 caractere, pe o singura linie, fr spaii.
Un alt lucru important de reinut este faptul ca odat printat, un text nu mai poate fi "ters". Nu
exista "undo" pentru un print. Se poate captura ntregul coninut ce se transmite la finalul execuiei, dar
nu se poate altera textul afiat de o instruciune print anume.
nelegnd aceste aspecte v va fi mai uor n lucrul cu PHP i n modul n care verificai
rezultatele scripturilor voastre.
XHTML, este o versiune mult mai stricta i mai curata a HTML. Poate fi considerat o combinaie
intre Html i XML.
XHTML 1.0 a devenit o recomandare a W3C (World Wide Web Consortium) la data de 26 ianuarie
2000. XHTML este un standard compatibil cu toate browserele i este aproape identic cu HTML 4.01.
Diferene ntre HTML i XHTML
XHTML este o versiune stricta a html-ului. Vom lua un exemplu pentru a demonstra aceasta
afirmaie. De exemplu, multe browsere ar afia codul de mai jos fr erori.
<html>
<head>
</head>
<title>Un exemplu de cod HTML cu greeli</title>
<body>
<h1>Titlu aici
<p>Text ntr-un paragraf
<body>
Acesta nu ar fi un cod valid din punct de vedere XHTML.
n XHTML toate elementele trebuiesc
- nchise ntotdeauna
- nchise n aceeai ordine n care au fost deschise
- scrise cu litere mici
- deschise i nchise n ordinea specifica
Reguli:
1. n XHTML toate elementele trebuiesc nchise
Cod HTML acceptat de browser
<p>Acesta este un paragraf
<p>Acesta este un alt paragraf
Cod corect XHTML
<p>Acesta este un paragraf</p>
<p>Acesta este un alt paragraf</p>
O greeal ntlnit destul des este nenchiderea elementelor unei liste
<ul>
<li>Element 1
<li>Element 2
</ul>
Cod corect XHTML
<ul>
<li>Element 1</li>
<li>Element 2</li>
</ul>
2. n XHTML toate elementele trebuiesc nchise n ordinea n care au fost deschise
Cod HTML acceptat de browser

198

<b><i>Acest text este ngroat i inclinat n acelai


timp</b></i>
Cod corect XHTML
<b><i>Acest text este ngroat i inclinat n acelai
timp</i></b>
3. n XHTML toate elementele trebuiesc scrise cu minuscule.
Cod HTML acceptat de browser
<HTML>
<HEAD>
<TITLE>Cod XHTML incorect</TITLE>
</HEAD>
<BODY>
<P>Un paragraf oarecare</P>
</BODY>
</HTML>
Cod corect XHTML
<html>
<head>
<title>Cod XHTML corect</title>
</head>
<body>
<p>Un paragraf oarecare</p>
</body>
</html>
4. Toate elemente XHTML trebuiesc deschise i nchise n ordinea specifica. M refer aici la faptul
ca toate elementele trebuiesc ncapsulate n cele doua tag-uri <html> iar celelalte elemente deschise i
nchise n ordinea corespunztoare.
<html>
<head>....</head>
<body>....</body>
</html>
Scripturile PHP sunt destinate generrii dinamice de coninut n paginile de Web. De aici rezulta
faptul ca un astfel de script trebuie inclus ntr-o pagina HTML. n acest scop pot fi folosite mai multe tipuri
de tag-uri HTML dup cum urmeaz:
Stilul "scurt":
<? echo "<H1>Text generat dinamic din PHP</H1?>"; ?>
Avantajul acestui stil este simplitatea. De aici rezulta o viteza mai mare de scriere a codului.
Stilul XML:
<?php echo "<H1>Text generat dinamic din PHP</H1?>"; ?>
Acest stil este compatibil cu documente conforme cu standardul XML (Extensible Markup
Language). Datorita rspndirii n continua cretere a acestui standard n continuare se va prefera acest
stil.
Stilul SCRIPT:
<SCRIPT LANGUAGE='php'> echo "<H1>Text generat dinamic din PHP</H1?>"; </SCRIPT>
Acest stil este destinat celor obinuii cu scrierea de cod JavaScript sau VBScript. Este util dacse
folosete un editor HTML care are probleme cu alte stiluri de tag-uri.
Textul care apare intre tag-ul de nceput i cel de ncheiere (indiferent de stil) va fi interpretat ca
script PHP. Textul care apare n afara acestor taguri va fi tratat ca i cod HTML obinuit.
Codul PHP nu va fi vizibil n sursa trimisa de serverul Web ctre navigatorul clientului. Acest cod
va fi interpretat de ctre modulul PHP din server i doar textul generat de acest script va fi trimis mai
departe de ctre server.
La scrierea codului, instruciunile PHP din script vor fi terminate printr-un separator punct i
virgula ';' asemntor celor din limbajul C, C++ sau Java. Omiterea acestui separator va genera o eroare
de sintaxa.
Interpretorul de PHP va ignora n schimb spatiile dintre instruciuni sau dintre elementele unei
instruciuni. Spre exemplu, secvenele:

199

<?php echo "Hello"; echo "world !"; ?>


i
<?php echo "Hello";
echo "world !" ;?>
vor genera acelai rezultat.
Pentru claritatea codului se obinuiete s se adauge comentarii n care s se explice rolul liniilor
respective. Interpretorul de PHP va ignora textul din comentarii, el avnd doar rolul de a ajuta
programatorul n dezvoltarea codului respectiv. Comentariile pot i adugate n trei moduri:
stilul C: Comentariul se poate ntinde pe mai multe linii i este cuprins intre semnele '/*' i '*/'.
El se poate insera chiar i n mijlocul unei expresii dar nu poate fi imbricat n alt comentariu.
stilul C++: Comentariul se ntinde pe o singura linie, de la apariia semnului '//' pana la sfritul
liniei curente.
stilul Shell: Comentariul se ntinde pe o singura linie, de la apariia semnului '#' pana la sfritul
liniei curente.
4. Numere i iruri, tipul variabilelor
Programele de calculator manipuleaz datele, care reprezint informaii. Programele PHP folosesc
doua categorii principale de date: numere i iruri. Numerele sunt compuse mai ales din cifre, n timp ce
un sir poate conine orice caracter, inclusiv cifre, litere i simboluri speciale.
Decizia privind modul de stocare a datelor este importanta, n mod caracteristic, datele se
stocheaz sub forma de numere atunci cnd se dorete executarea unor operaii matematice asupra
datelor, deoarece numerele sunt stocate ntr-un mod care permite efectuarea de calcule. Pe de alta
parte, irurile sunt stocate folosind o modalitate care faciliteaz nelegerea lor de ctre operatorul uman.
Datele trebuie stocate sub forma de iruri dacformatul acestora nu este numeric sau dacdorii ca
operatorul uman s fie capabil de a introduce sau de a vizualiza datele. Practic, putei asimila numerele
cu un mod de stocare a datelor n interiorul calculatorului. irurile se pot asimila unui mod de stocare a
datelor n afara calculatorului.
Aceste doua mari categorii de date: numere i iruri, formeaz opt tipuri principale de variabile :
1. Boolean
2. Integer
3. Float
4. String
5. Array
6. Object
7. Resource
8. Null
In mod normal tipul variabilelor nu este specificat explicit; acesta va fi evaluat de ctre
interpretorul PHP la momentul run-time (in momentul executrii scriptului).
1. Tipul boolean
Variabilele de tipul boolean pot lua doar doua valori : FALSE sau TRUE
Variabilele de alt tip dect boolean pot fi convertite la tipul boolean prin operatorul cast (bool)
sau (boolean), plasate naintea valorilor, dei n general nu e nevoie de aceasta convertire, valoarea fiind
automat recunoscuta de PHP.
2. Tipul integer
PHP folosete doua categorii de numere: ntregi (tipul integer) i reale, cu virgula (tipul float).
Variabilele integer reprezint numerele ntregi, ele pot fi specificate n format zecimal, hexazecimal sau
octal.
Numerele ntregi reprezint numerele fr parte fracionar folosite la numrare, plus zero i
numerele negative. Cu alte cuvinte, n PHP termenul de ntreg are aceeai semnificaie ca i n
matematica. De exemplu, numrul 100 poate fi reprezentat n PHP sub forma de ntreg.
Scrierea numerelor PHP este simpla. Un ntreg PHP se obine prin scrierea cifrelor care i
alctuiesc valoarea. Dacvaloarea este negativa, scriei un semn minus imediat la stnga numrului.
Evitai s scriei spatii sau virgule ca parte a unui ntreg PHP.
Iat cteva exemple de numere PHP ntregi :
215678 - Numr n reprezentare zecimala
0x1A8; - Numr n reprezentare hexazecimala (reprezint: 1*16*16 + 10*16 + 8 = 424 (in
zecimal))
67- Reprezint: 6*8 + 7 = 55 (in zecimal)
Valorile minime, respectiv maxime pe care le poate lua o variabila de tip integer depind de
sistemul de operare pe care ruleaz modulul PHP. De exemplu, pentru un sistem Windows valoarea unui

200

integer se memoreaz pe 32 de bii: 31 bit pentru numr i un bit pentru semn. n acest caz valorile unui
ntreg se afla n intervalul :-2
13
respectiv: 2
13
. Dacncercm s folosim un integer cu valori care ies din
acest interval vor avea de-a face cu un fenomen de depire : integer overflow. n acest caz interpretorul
PHP convertete acesta valoare ntr-o valoare de tip float (care are un interval mai extins de valori).
In PHP simpla mprire a doua valori ntregi va produce ca rezultat o variabila de tip float. Pentru
a obine doar partea ntreaga acestui rezultat putem folosi operatorul cast (int) n fata rezultatului.
Ex.: echo (int)8.7; (va returna 8)
Pentru a rotunji rezultatul la ntregul cel mai apropiat de valoarea reala se poate folosi funcia
round(), unde intre paranteze se adaug valoarea.
Ex.: echo round(8.7); (va returna 9)
3. Tipul float
Reprezint variabile de tip real [numerele cu virgula], (n lb. engleza se folosete punctul zecimal
n loc de virgula). De exemplu 2.5
In general, numerele reale (tipul float) sunt stocate folosindu-se formatul standard IEEE-64, care
furnizeaz 64 de bii. Acest format va permite s stocai valori care pot merge pn la 1,8 x 10 la puterea
308 sub forma de numere reale i furnizeaz aproximativ 14 cifre dup punctul zecimal (sau cifre
semnificative) de precizie.
Iat cteva exemple de numere reale (tipul float)
123.4567 - Numr de tip float
1.2e3; - Reprezint: 1.2 * 10
3

4. Tipul string
Reprezint o niruire de caractere, fiecare caracter este memorat pe 1 byte; setul de caractere
este limitat la 256 valori distincte. Dimensiunea irurilor poate fi orict de mare n PHP, nu exista
specificaii care s limiteze numrul maxim de caractere dintr-un sir.
Spre deosebire de ntregi i de numere float, care conin cifre, irurile pot conine orice caracter.
Ca atare, irurile sunt utile pentru stocarea datelor care nu pot fi calculate, precum nume, fraze i adrese.
In PHP, un sir poate fi declarat n mai multe feluri:
1) Un mod simplu de a declara un sir este prin delimitarea cu ghilimele simple (' ')
Dacdorim ca irul s conin caracterul ' va trebui s inseram naintea lui caracterul escape \.
Dacdorim ca irul s conin caracterul \ va trebui s dublam acest caracter. Acest comportament este
exemplificat n exemplul urmtor:
<?php
$var1 = 'Acesta este un sir de test';
echo 'Curs \'PHP\'';
echo '<br />Vrei s tergi C:\\*.* ?';
echo '<br />Variabila var1=$var1';
echo "<br />Variabila var1=$var1";
?>
In browser va aprea:
Curs 'PHP'
Vrei s tergi C:\*.* ?
Variabila var1=$var1
Variabila var1=Acesta este un sir de test
Observai diferena dintre ultimele doua linii!
In penultima linie, unde s-a folosit ghilimele simple pentru delimitarea irului, variabila $var1 nu
este expandata adic nu este afiat valoarea variabilei var1. Acesta este un sir de test ci exact textul
scris (numele ei). Pentru a realiza afiarea valorii variabilei i nu numele acesteia, se folosesc ghilimelele
duble, precum n ultima linie a exemplului de mai sus.
2) O alta metoda pentru a specifica un sir n PHP este prin folosirea ghilimelelor duble
(" ").
Dacintr-un sir delimitat prin ghilimele duble vrem ca acesta s afieze numele unei variabile, nu
valoarea acesteia, adugam un caracter backslash (\) naintea numelui variabilei.
Exemplu
echo "Numele variabilei este \$var";
Acest cod va afia Numele variabilei este $var, oricare ar fi valoarea variabilei "$var".
Caracterele care alctuiesc irul sunt incluse ntre ghilimele duble (" ");
De exemplu, irul reprezentnd numele fizicianului care a formulat teoria relativitii este "Albert
Einstein". Aa cum s-a explicat, un sir poate conine date numerice; de exemplu, "3.14159".

201

Dacse dorete adugarea de ghilimele duble ntr-un sir delimitat de ghilimele duble, se adaug
caracterul \ n fata acestora.
Exemplu
echo "Numele programului este \"PHP\".";
Prin delimitarea cu ghilimele duble PHP faciliteaz includerea n iruri a unor caractere speciale,
precum caracterele de salt la linie noua sau rnd nou, prin furnizarea de secvene escape care reprezint
caractere speciale.
Iat secvenele escape folosite n PHP:
\n - salt la linie noua
\r - rnd nou
\t - caracter de tabulare pe orizontala
\\ - backslash
\$ - simbolul dolarului
\ - ghilimele duble
Ca exemplu, iat un sir care include un rnd nou, urmat de un salt la linie noua: "Salut,
lume!\r\n".
Reinei c fiecare secvena escape ncepe cu un backslash (\). Pentru a include un backslash
ntr-un sir, trebuie s folosii doua caractere backslash.
Pe lng imbricarea variabilelor n cadrul irurilor delimitate prin ghilimele duble, PHP pune la
dispoziie operatorul de concatenare a irurilor: . (punct) . Acest operator adaug un sir la sfritul altui
sir. De exemplu:
<?php
$nume = 'Popescu';
$prenume='Costel';
echo 'Numele de familie este '.$nume. 'iar prenumele este '.$prenume;
?>
In browser va aprea:
Numele de familie este Popescu iar prenumele este Costel
In anumite situaii este necesar s accesam unul dintre caracterele unui sir. Pentru aceasta
putem folosi parantezele{} ca n exemplul de mai jos:
<?php
$var1 = 'Acesta este un sir de test';
echo $var1{0}; // Afieaz A (primul caracter din sir)
echo $var1{2}; // Afieaz e (al treilea caracter din sir)
?>
Rezultatul afiat va fi
Ae
3) Sintaxa heredoc este o alta modalitate de a delimita iruri
In acest caz delimitatorul este ("<<<"); acesta trebuie urmat de un identificator unic, dup care
urmeaz irul de caractere, iar secvena se ncheie din nou cu identificatorul menionat. Identificatorul de
ncheiere trebuie s se afle n prima coloana a liniei, acesta poate conine caractere alfanumerice dar
neaprat trebuie s nceap cu o litera, nu cu o cifra sau alt semn.
Vei nelege mai bine studiind exemplu de mai jos:
<?php
$var1 = <<< EOT
Exemplu de sir care folosete delimitatorul heredoc.
EOT;
echo $var1;
?>
Rezultatul afiat va fi:
Exemplu de sir care folosete delimitatorul heredoc.
5. Tipul array
Reprezint un vector de valori fiecare element al matricei are asociat o cheie. Aceasta cheie va fi
folosita ulterior la identificarea unui element specific at matricei. n PHP tipul array se mai numete i tip
map ordonat, deoarece elemente vectorului sunt ordonate dup cmpul cheie. Iat un exemplu simplu de
variabile array:
<?php
$fructe[0] = 'mere';
$fructe[1] = 'caise';

202

$fructe[2] = 'piersici';
?>
6. Tipul object
Reprezint de fapt instana unei clase declarate n PHP. O clasa este o structura care conine
variabile membru i funcii membru.
7. Tipul resource
Este un tip special de variabila care pstreaz o legtura spre resurse externe. Exemple de
resurse externe: manipulatori pentru deschidere de fiiere, conectare la baze de date, compresia
fiierelor, resurse COM, etc...
8. Tipul NULL
Reprezint variabilele care nu au nc atribuita o valoare.
O variabila se considera a avea valoarea Null daca:
- este setata explicit prin atribuirea valorii NULL
- nu a fost asignata nc o valoare acestei variabile
- variabila a fost tears prin funcia unset();
Putem afla tipul unei variabile folosind funcia gettype() care returneaz un string (sir)
coninnd tipul variabilei cercetate.
Observai i studiai exemplul de mai jos
<?php
$var1 = TRUE;
$var2 = 100;
$var3 = 23.88;
$var4 = "Nume";
$var[5] = "fructe";
echo gettype($var1);
echo '<br />'.gettype($var2);
echo '<br />'.gettype($var3);
echo '<br />'.gettype($var4);
echo '<br />'.gettype($var[5]);
echo '<br />'.gettype($var6);
?>
In browser va aprea:
boolean
integer
double
string
string
NULL
Observai ca ultima linie afiat este NULL, asta deoarece $var6 nu are nici o valoare determinata
4.1. Tipuri de date. Conversii de tip
Limbajul PHP suporta urmtoarele tipuri de date:
Integer - utilizat pentru numere ntregi
Double - utilizat pentru numere reale
String - utilizat pentru iruri de caractere
Array - utilizat pentru a stoca date multiple de acelai tip
Object - utilizat pentru a retine obiecte - instane ale claselor
In plus, PHP suporta i tipurile pdfdoc respectiv pdfinfo pentru a asigura suport pentru PDF
(standardul Portable Document Format).
PHP este un limbaj slab tipizat. n limbajele puternic tipizate, o variabila poate retine un singur tip
de date pe toata durata s de via, tip asignat la declararea acelei variabile. n PHP variabilele nu trebuie
declarate explicit (ele sunt considerate ca fiind declarate implicit la prima lor utilizare n cod), iar tipul de
date asignat este determinat de valoarea reinut n acel moment. Urmtoarele linii de cod sunt corecte
n PHP (numele variabilelor PHP sunt prefixate de semnul $):
$var1 = 1;
$var1 = "irul 1";
Tipul datelor extrase din variabile poate fi schimbat forat (casting sau conversie de tip) n
expresiile unde acestea intervin. Acest lucru se face prin precizarea noului tip intre paranteze rotunde n
fata variabilei respective:
$var1 = 1;

203

$var2 = (double)$var1 + 3.52;


Conversia de tip nu afecteaz tipul real al variabilei.
4.2. Identificatori. Constante
Identificatorii sunt cuvinte care denota entiti ntr-un program. Exemple de identificatori sunt:
numele de variabile, de funcii sau de clase. n PHP identificatorii trebuie s respecte urmtoarele reguli:
Identificatorii pot fi de orice lungime i pot fi formai din litere, cifre, liniua de subliniere sau
semnul dolar.
Identificatorii nu pot ncepe cu o cifra.
Identificatorii sunt de tip "case sensitive" (in cont de litere mici-mari). Spre exemplu, $numepers
este diferit de $numePers. Singurii identificatori care nu respecta aceasta regula sunt cei care denota
nume de funcii PHP predefinite.
PHP permite folosirea a doua tipuri de constante.
Constantele de tip valoare sunt precizate direct n expresii dependent de tipul lor:
constantele ntregi: 0, 100, -1320
constantele de tip double: 0.00, 3.1523, -4.5
constantele de tip sir de caractere: "sir1", 'sir2', 'sir cu "ghilimele"! ', "sir cu 'apostrof'! "
Constantele cu nume se aseamn cu variabilele, dar valoarea lor nu poate fi schimbata de-a
lungul programului. Pentru a face codul scris mai lizibil se obinuiete ca numele variabilelor s fie scrise
n ntregime cu litere mari. O diferena notabila fata de variabile este aceia ca numele acestora nu sunt
precedate de semnul $. Declararea constantelor se face cu ajutorul cuvntului cheie define.
...
define("PI",3.14);
$unUnghi = PI;
$altUnghi = 2*PI;
4.3. Variabile utilizator. Variabile referin. Domeniu de valabilitate
Variabilele sunt locaii de memorie desemnate printr-un identificator care ncepe cu semnul $. Ele
permit memorarea valorilor de diverse tipuri. Tipul unei variabile PHP poate fi modificat n momentul cnd
i se asigneaz o valoare. Declararea variabilelor utilizator nu trebuie fcut explicit. O variabila se
considera declarata implicit prima data cnd este folosita.
Pentru a asigna o valoare unei variabile se va folosi operatorul = sub forma $variabila = expresie.
Dac$variabila nu exista ea va fi creata n prealabil apoi i se va asigna valoarea expresiei.
Variabilele referin permit schimbarea numelui unei variabile n mod dinamic. Acest lucru se face prin
utilizarea valorii unei variabile pe post de nume de variabila. Indirectarea se realizeaz prin utilizarea
marcajului dolar '$' n fata numelui variabilei referin, ca i n exemplul urmtor:
$var1 = 5;
$var2 = "var1";
echo "Valoarea din var1 este ";
echo $var1;
echo " sau ";
echo $$var2;
In acest exemplu notaia $$var2 a fost folosita pentru a desemna valoarea reinut de variabila
$var1. Atenie: PHP face distincie intre literele mari i mici.
Astfel, cele 3 variabile de mai jos sunt TOTAL diferite:
$variabila = "negru";
$vaRiabila = "alb";
$Variabila = 1;
4.3.1.Atribuirea de valori
Se realizeaz la fel ca i declararea prin intermediul instruciunii de atribuire.
atribuirea unei valori anume
$variabila = 2;
copierea valorii de la o alta variabila
$text = $variabila;
Copierea valorii funcioneaz i n cazul vectorilor. n urma copierii cei 2 vectori vor fi identici
$vectorS = $vectorS2; # toate componentele lui $vectorS2 sunt copiate n $vectorS
n cazul vectorilor se pot atribui valori separat fiecrei componente
$vectorS[ 0 ] = 100;
$vectorS[ 3 ] = 10;
$vector[ 'luni' ] = 'Lundi';
$vector[ 'joi' ] = 'Jeudi';

204

4.3.2. tergerea variabilelor


De obicei nu e nevoie ca variabilele s fie terse dup ce au fost folosite. Totui, lucrul aceste se
poate face n urmtoarele moduri:
unset( $variabila );
$variabila = null;
4.3.3. Afiarea variabilelor
Afiarea se realizeaz utiliznd oricare din instruciunile de afiare:
$variabila = "Text";
$randNou = "<br>";
print $variabila; print $randNou;
echo $variabila, $randNou;
Diferena dintre ghilimele simple i duble la declararea variabilelor
Ghilimelele duble permit compilatorului s "citeasc" variabilele ce apar n interiorul textului.
$today = date( 'd-m-Y' );
$text1 = "Azi e $today";
print $text1; // Azi e 17-07-2008
Astfel, textul cuprins intre ghilimele duble este procesat nainte de afiare: variabilele sunt
cutate iar valoarea lor este afiat n locul numelui.
In cazul apostrofului, textul este afiat neschimbat, iar variabilele nu sunt interpretate.
$today = date( 'd-m-Y' );
$text2 = 'Azi e $today';
print $text2; // Azi e $today
4.3.4. Verificarea daco variabila e definita
Se pot folosi 2 funcii: isset i empty .
// definim o variabila, cealalt definire nu se executa
$var = 0;
// $var2 = 1;
var_dump( isset($var) ); // bool(true)
var_dump( isset($var2) ); // bool(false)
var_dump( empty($var1) ); // bool(true), pentru ca 0 este considerat nul
var_dump( empty($var2) ); // bool(true)
Atenie, isset verifica dacvariabila a fost definita, pe cnd empty verifica daca fost definita i
dacare o valoare considerata vida. O variabila este vida dacare
urmtoarele valori:
"" (text de lungime 0)
0 (cifra 0)
"0" (textul "0")
null
false
array() (vector gol)
Pentru valorile de mai sus, empty returneaz false
4.3.5. Operatorul {}
Pot exista situaii cnd anumite variabile trebuie procesate mai nainte dect altele, sau mai
nainte de procesarea ntregii instruciuni. De exemplu:
$salut = array(
'dimineaa' => 'Buna dimineaa',
'prnz' => 'Buna ziua',
'seara' => 'Noapte buna'
);
print "$salut[ 'prnz' ], vizitatorule"; // eroare
Modul n care am scris variabila ($salut[ 'prnz' ]) este corect. Doar ca PHP-ul nu "tie" s vad
variabila ca pe un element din vector, sa-i ia valoarea i apoi s afieze tot textul. Pentru a rezolva
aceasta problema folosim acoladele:
print "{$salut[ 'prnz' ]}, vizitatorule"; // "Buna ziua, vizitatorule"
In acest caz spunem compilatorului s interpreteze mai nti ce este intre acolade (elementul
$salut[ 'prnz' ] din vector) i apoi s afieze tot textul.
Ori de cate ori e nevoie ca o variabila s fie interpretata cu prioritate, ea trebuie pusa intre
acolade.
Dublu-dolar ($$nume)

205

$obiect = 'masina';
$masina = "Chevrolet";
$avion = "Boeing";
$tren = "TGV";
print $$obiect; // Chevrolet
Pentru a nelege ce se ntmpla, trebuie menionat ca ultima linie poate fi scrisa astfel:
print ${$obiect}; // Chevrolet
In virtutea explicaiei de mai sus a operatorului {}, putem vedea uor ca PHP mai nti extrage
valoarea variabilei $obiect ( care este: "masina" ) i apoi afieaz variabila $masina (care are valoarea
"Chevrolet".
Prin domeniul de valabilitate a unei variabile se nelege locurile n care o variabila poate fi
folosita (este vizibila) dup ce a fost creata. Domeniile definite de PHP sunt urmtoarele:
Global - variabilele globale, definite n afara funciilor sunt vizibile n tot fiierul curent, mai puin
n interiorul funciilor.
Locale unei funcii - variabilele create n funcii sunt vizibile doar n interiorul acestora.
Globale n interiorul unei funcii - acest tip de variabile sunt folosite pentru a accesa
variabilele globale cu acelai nume.
5. PHP i formularele HTML
Principalul mecanism de colectare a datelor de la utilizatori prin intermediul unui site Web l
reprezint formularele HTML (HTML forms). Din acest motiv, limbajul PHP pune accent pe facilitarea
accesului la aceste date.
Formularele sunt elementele prin intermediul crora utilizatorii trimit date ctre server.
Formularele sunt ntlnite n orice aplicaie web, cele mai uzuale sunt paginile de login, contact sau
nregistrare. Un formular HTML cuprinde cmpuri n care utilizatorul (cel care acceseaz pagina) poate
introduce date. Pentru procesarea acestor date formularul definete o aciune numita submit (trimitere),
care corespunde de obicei apsrii unui buton cu acelai titlu. Rezultatul acestei aciuni este accesarea
unei alte pagini (pagina int - target) care va primi automat valorile completate n cmpurile formularului
i le va prelucra. n cadrul subiectului prezentat, paginile int ale formularelor vor fi fiiere PHP, paginile
cuprinznd formularele putnd fi fiiere PHP sau HTML.
In PHP datele dintr-un formular HTML pot fi accesate prin doua metode.
Prima metoda, mai simpla dar mai nceat i mai nesigura, consta n folosirea variabilelor
nregistrate global. n acest fel numele cmpurilor dintr-un formular HTML devin automat variabile PHP,
cu valori setate corespunztor, n pagina int a formularului. Transmiterea se face asemntor cu
transmiterea parametrilor spre funcii. Pentru a putea folosi aceasta metoda trebuie ca fiierul de
configurare php.ini s aib setarea register_globals pe valoarea "On".
A doua metoda presupune obinerea valorilor din doua tablouri create automat i
denumite $HTTP_POST_VARS, respectiv $HTTP_GET_VARS corespunztor metodei de trimitere din
formular spre server (post sau get). Indicele de acces n tablou va fi chiar numele cmpului dorit din
formular.
Din motive de claritate n general se utilizeaz prima metoda. n schimb, n scripturile
profesionale, unde viteza i securitatea sunt determinante, a doua metoda este de preferat.
Un formular trebuie s aib specificate 2 atribute: "action" i "method". Action reprezint calea
ctre fiierul ce va prelucra requestul clientului (de regula un fiier PHP). Acest atribut poate fi gol,
specificnd ca prelucrrile vor fi fcute de acelai script ce afieaz formularul (fiierul curent). Method
specifica metoda de acces.
Formularele sunt strns legate de conceptul de "Metoda de acces" (Request Method). De fapt, n
funcie de modul n care se face cerina ctre server se clasifica i formularele: formulare GET i POST.
5.1. Metode de access: GET, POST i altele
Metodele de acces reprezint modul n care cerinele pentru o pagina web i alte informaii
aferente sunt transmise de la browser la serverul web. Exista 8 metode definite, n schimb doar 2 dintre
ele sunt cel mai des folosite n dezvoltarea paginilor web.
GET
Este cea mai uzuala metoda, folosita implicit de browsere pentru a trimite cereri ctre servere.
Aceasta metoda a fost proiectata pentru a transmite pagina de la server la client, dei se pot transmite
mici buci de informaii i n sens invers (de la client la server) odat cu cererea pentru o pagina. Aceste
informaii adiionale (date introduse de utilizatori) sunt adugate la finalul URL-ului sub forma
"?parametru=valoare".

206

Aadar GET este standardul pentru a "cere" informaii de la server (in engleza "get data"). Prin
urmare toate scrierea unui URL n bara de adrese a browserului sau accesarea unui link sunt request-uri
de tip GET.
POST
Opus metodei GET, POST este folosita pentru a transmite informaii ctre server (in engleza "post
data"). Spre deosebire de GET care permite doar o cantitate limitata de date s fie transmisa de la client
(browser) la serverul web, POST dispune de limite mai generoase, fiind standardul de transmitere a
datelor. Astfel, upload-ul unui fiier pe server, salvarea unui post pe blog, etc - toate sunt requesturi de
tip POST.
Pentru a face un request POST este necesara folosirea unui formular.
5.2. Formulare de tip GET
Acest tip de formulare permite utilizatorilor s transmit informaii adiionale atunci cnd cer o
pagina web. Aciunea unui formular GET poate fi uor reprodusa specificnd URL-ul i parametrii direct n
browser.
Datele transmise de utilizatori la un request de tip GET sunt disponibile pentru prelucrare n PHP
folosind variabila globala $_GET. Fiecare parametru al requestului reprezint o componenta a variabilei
$_GET.
5.3. Formulare de tip POST
Un alt tip de request folosit n practica este POST. Acesta permite transferul unei cantiti mult
mai mari de date (de ordinul gigaocteilor), n timp de metoda GET este limitata la civa octei. Astfel,
prin POST se pot transfera fiiere ctre web-servere i se pot transmite texte foarte lungi, fr a ne face
griji de formatul datelor transmise (care pot conine caractere speciale, pot fi n format binar).
Datele transmise de utilizator sunt disponibile n PHP prin intermediul variabilei globale $_POST.
Astfel, dacformularul conine 2 cmpuri numite "numele" i "textfl", variabila $_POST va avea doua
componente ce pot fi accesate prin $_POST[ 'numele'] i $_POST[ 'textfl' ].
5.4. Formular de login n PHP
Mai jos este un exemplu de formular ce poate fi folosit pentru autentificarea (logarea)
utilizatorilor. Deocamdat nu conine dect elementele de baza i verificri simple, tocmai pentru a
evidenia modul de lucru cu formulare n PHP. Codul conine comentarii n care sunt explicai paii
urmrii.
Ar putea fi puin derutant faptul ca poriunea de cod PHP se afla n acelai fiier cu formularul
HTML. ntrebarea fireasca ar fi: "nu se executa prelucrarea datelor cnd de fapt trebuie doar s afieze
formularul?" sau altfel spus "cum tie serverul cnd s prelucreze datele din formular?".
Ideea este ca acea poriune de cod PHP se executa la fiecare afiare a paginii. De fapt nu toata,
ci doar prima parte. Cnd se ncarc pagina (in urma unui click sau refresh), pe lng codul HTML static
se returneaz i rezultatul codului PHP. n cazul nostru, codul PHP consta n 2 atribuiri de variabile i un if
mare. Atribuirile se executa mereu (la fiecare afiare), la fel i if-ul, doar ca rezultatul comparaiilor este
adevrat doar atunci cnd datele din formular au fost trimise.
Cu alte cuvinte, acel if va fi evaluat true doar cnd utilizatorul da submit la formular - deci
prelucrarea datelor se va face doar dup ce utilizatorul face click pe "Login". Dacnu a fost fcut submit,
e simplu: pur i simplu afieaz codul HTML static i ce mai este prin script (rezultatul va fi un
formular).Dup ce s-a ncrcat pagina, utilizatorul va putea introduce datele n formular i va putea da
submit.
Atunci cnd se da submit, se face un request POST ctre aceeai pagina i se executa nc o data
codul PHP din cadrul fiierului, de aceasta data ns cu informaiile actualizate cnd se face submit, se
intra pe ramura lui if unde se executa mai multe operaii (in cazul nostru doar 2).
Este foarte important s se neleag mersul lucrurilor, cum este tratata pagina n fiecare situaie
i cum se ajunge s se execute fiecare poriune de cod.
Dacaceste aspecte nu sunt clare nu vei putea scrie formulare de unii singuri. Continund cu
explicarea codului, iat care sunt operaiile care se executa:se valideaz datele (se verifica dacau fost
introduse valori): if( !isset( $_POST[ 'user' ]) .se verifica dacnumele de utilizator i parola sunt corecte:
if( $erori == 0 ) ...
Dacsunt corecte, atunci se face o redirecionare ctre o pagina ce poate fi accesata dup
autentificare. Redirecionarea se realizeaz folosind etichete HTML, dei exista o modalitate mai eleganta
de a o realiza
Codul este expus mai jos:
<?php
# username i parola
$user_corect = 'admin';

207

$parola_corecta = 'ghiceste-Ma';
# verific dacse acceseaz pagina ca urmare a unui request POST
$mesaj = '';
if( isset( $_POST ) && !empty( $_POST[ 'trimite' ] ) ) {
# nota: se va intra pe ramura aceasta a lui if atunci cnd utilizatorul
# face click pe butonul "Login"
# Atunci cnd pagina este accesata normal (scriind adresa n browser)
# variabila $_POST este goala
$erori = 0;
# validam datele, presupunem ca nu sunt erori i verificam valorile introduse
if( !isset( $_POST[ 'user' ] ) || strlen( $_POST['user' ] ) == 0 ) {
$mesaj = 'Numele de utilizator nu a fost specificat';
$erori = 1;
} elseif( !isset( $_POST[ 'pass' ] ) || strlen( $_POST[ 'pass' ] ) == 0 ) {
$mesaj = 'Parola nu a fost specificata';
$erori = 1;
}
# dacnu au fost erori, atunci fac prelucrrile
if( $erori == 0 ) {
# pentru acum, vom face o verificare simpla
if( $_POST[ 'user' ] === $user_corect &&
$_POST[ 'pass' ] ===$parola_corecta )
{
# login realizat, redirecionez
echo 'Ati fost autentificat. Vei fi redirecionat...';
exit; # nu mai afiez nimic altceva
} else {
# nu s-a fcut login
$mesaj = 'Username-ul sau parola sunt gresite';
}
}
}
?>
<html>
<head>
<title>Aplicatie formular: pagina de login - Invata PHP</title>
</head>
<body style="font-family: verdana,sans-serif; font-size: small;">
<form action="" method="post" style="width: 30%">
<fieldset>
<legend>Date de autentificare</legend>
<input type="text" name="user" /> User<br />
<input type="password" name="pass" /> Pass<br />
</fieldset>
<fieldset>
<legend>Actiuni</legend>
<input type="submit" value="Login" name="trimite" value="1" />
<input type="reset" value="Curata formular" />
</fieldset>
</form>
<?php
# aici afim mesajul de eroare, dacavem
if( strlen( $mesaj ) > 0 ) {
echo '<p style="color: red">', $mesaj, '</p>';
}
?>
</body>
</html>
5.5. Formulare "in real life" - exemple de site-uri care folosesc formulare

208

Mai jos sunt incluse o serie de formulare folosite n site-uri live. Vei fi surprini poate s observai
ca majoritatea site-urilor folosesc formulare i ca o mare parte din activitatea de navigare pe internet
presupune folosirea formularelor.
La rndul vostru, ca dezvoltatori web, voi niv vei construi foarte des formulare i vei scrie
codul de prelucrare/manipulare a datelor provenite din formulare.
Exemplele de mai jos nu prezint dect partea formala, codul HTML al formularelor. Partea de
programare (codul efectiv care face prelucrarea) nu este disponibila, fiind gazduit de fiecare site n
parte. Rolul acestor exemple este de a va da o idee despre cum sunt folosite formularele i cu ce ocazii,
ce elemente sunt ntrebuinate i care este comportamentul browserului pentru fiecare tip de formular
(GET/POST).
5.5.1. Formular de cutare folosind motorul Bing
<form id="form_bing" action="http://www.bing.com/search" method="get">
Expresie de cutat:<br />
<input type="text" name="q" value="" /> <input type="submit" value="Cauta pe Bing" />
</form>
Analog se poate construi un formular pentru Google. Practic, trebuie schimbat dect atributul
action din formular (pus URL-ul specific Google: http://www.google.com/search), ntruct cele doua
motoare de cutare accepta acelai parametru GET (numit simplu q) pentru textul de cutat.
5.5.2. Formular de cutare n documentaia PHP
<form id="form_php" action="http://ro.php.net/manual-lookup.php" method="get">
Cauta funcia PHP sau un cuvnt:<br />
<input type="text" name="pattern" value="" /> <input type="submit" value="Cauta" />
</form>
La fel ca mai sus, formularul folosete metoda GET, ceea ce ofer o facilitate: utilizatorul poate
introduce singur, n URL, textul de cutat. Dai Cauta i verificai adresa paginii care se deschide.
5.5.3. Formular de conversie valutara din EUR n RON
<form id="form_xe" action="http://www.xe.com/ucc/convert.cgi" method="get" >
<fieldset>
<legend>Suma de convertit</legend>
<input type="text" name="Amount" value="10" style="width: 100px" />
</fieldset>
<fieldset>
<legend>Moneda</legend>
<input type="text" name="From" value="EUR" style="width: 100px" />
- moneda sursa<br />
<input type="text" name="To" value="RON"style="width: 100px" />
moneda n care se face conversia<br />
</fieldset>
<fieldset>
<input type="submit" name="image" value="Convertire" />
</fieldset>
</form>
5.5.4. Formular de cutare locuri de munca pe site-ul ejobs.ro
<form action=http://www.ejobs.ro/user/searchjobs id="searchjob" method="post" >
<input type="hidden" value="" name="refine"/>
<input type="hidden" value="" name="allof"/>
<table cellspacing="0" cellpadding="0" border="0" >
<tr>
<td valign="middle" style="padding-left: 3px;"><span>Locuri de munca:</span></td>
<td valign="middle" style="padding-left: 9px;" rowspan="5">
<input type="submit" value="Cauta Job >>" name="cauta_job" />
</td>
</tr>
<tr>
<td valign="middle" style="padding-left: 3px;">
<input onclick="if (this.value=='Cuvnt cheie') {this.value='';}"
style="width: 210px;" name="jobskeyword" value="Cuvnt cheie" />
</td>
</tr>

209

<tr>
<td valign="middle" style="padding-left: 3px;">
<select style="width: 210px;" name="oras">
<option value="">Toate oraele</option>
</select>
</td>
</tr>
<tr>
<td valign="middle" style="padding-left: 3px;">
<select style="width: 210px;" name="categ">
<option value="">Toate departamentele</option>
</select>
</td>
</tr>
<tr>
<td valign="middle" style="padding-left: 3px;">
<select style="width: 210px;" name="nivel_cariera">
<option value="">Orice nivel de cariera</option>
</select>
</td>
</tr>
</table>
</form>
Acesta este un formular puin mai cuprinztor. Conine mai multe tipuri de elemente, inclusiv de
tip ascuns (hidden). Aceste sunt folosite pentru a transmite anumite informaii care nu trebuie n mod
necesar s fie accesibile utilizatorilor. Elementele hidden sunt accesibile ca orice alt input, prin intermediul
variabilei $_POST.
Formularul de la eJobs folosete metoda POST. Ca urmare datele introduse nu apar n URL i nu
pot fi modificate imediat. Mai mult, la refresh pe pagina de rezultate o s apar acea avertizare care cere
confirmarea ca datele introduse s fie trimise nc o data la server,
Formularul folosit pentru upload este unul special, avnd un parametru obligatoriu (enc-type) i
metoda POST.
Important de verificat, pentru ca funcionalitatea de upload s fie activata: directiva file_uploads
din php.ini trebuie s fie 'on'directiva upload_tmp_dir din php.ini trebuie s se refera la o cale existenta
pe server i cu permisiuni suficiente pentru ca web-serverul s poat crea fiiere directivele
upload_max_filesize i post_max_size din php.ini specifica mrimea maxima a fiierului i respectiv a
datelor ce pot fi transmise prin intermediul formularului; este recomandat ca aceste valori s fie revizuite
atributul enctype="multipart/form-data" NU TREBUIE omis, altfel uploadul nu va funciona. Formularul
trebuie s conin un input de tip FILE, ca n exemplul de mai jos.
<!-- Encoding type, specificat de atributul enctype, TREBUIE specificat ca mai jos -->
<form enctype="multipart/form-data" action="upload.php" method="POST">
ncrca un fiier:
<input name="fiier" type="file" />
<input type="submit" value="Trimite fiier" />
</form>
Nota asupra mecanismului de upload:web serverul copiaz fiierul transmis de utilizator ntr-o
locaie temporara (specificata de directiva upload_tmp_dir) interpretorul PHP este invocat, avnd
variabila $_FILES populata cu informaii despre upload. Programatorul este responsabil cu prelucrarea
fiierului ncrcat pe server (mutare ntr-o alta locaie, citire, copiere, etc), prelucrare ce se face cu
ajutorul funciilor puse la dispoziie de PHP. Dacfiierul ncrcat nu este mutat (sau redenumit) din
locaia temporara, acesta va fi ters automat la terminarea execuiei scriptului (la finalul requestului, mai
exact).
Fiierul PHP (upload.php) ce va prelucra uploadul continu urmtoarea secven de cod (include i
validare).
<?php
# se verifica dacfiierul ncrcat a depit dimensiunea maxima acceptata
# dacacest lucru se ntmpla, variabilele $_POST i $_FILES se golesc automat
if( empty( $_POST ) && empty( $_FILES ) ) {
# a fost fcut un POST sau nu?

210

if( isset( $_SERVER['CONTENT_LENGTH'] ) ) {


# atunci cnd se trimit date prin post variabila $_SERVER['CONTENT_LENGTH']
# conine valoarea dimensiunii datelor
$POST_MAX_SIZE = ini_get('post_max_size');
if( !empty( $POST_MAX_SIZE ) ) {
# determin limita maxima (care poate fi n KB, MB sau GB
$mul = substr($POST_MAX_SIZE, -1);
$mul = ($mul == 'M' ? 1048576 :(
$mul == 'K' ? 1024 :($mul == 'G' ? 1073741824 : 1)));
if ( $_SERVER['CONTENT_LENGTH'] > $mul*(int)$POST_MAX_SIZE &&
$POST_MAX_SIZE ) {
print "Fiier prea mare! Ai depit limita maxima permisa";
}
} else {
print "Eroare nespecificata (probabil fiierul este prea mare)";
}
} else {
# nu s-a fcut nc submit la fiier, afiez un mesaj
print "Apsai pe 'Trimite fiier' pentru a face upload!";
}
} else {
# $_POST i $_FILES sunt setate; verific alte erori ce pot s apar
if( $_FILES['fiier']['error'] > 0 ) {
print "A intervenit o eroare (#{$_FILES['fiier']['error']})";
} else {
# fiierul uploadat va fi pus n subfolderul 'upload' (care trebuie s
# existe deja n aceeai locaie ca i fiierul upload.php
$uploaddir = dirname( __FILE__ ). DIRECTORY_SEPARATOR . 'upload' .
DIRECTORY_SEPARATOR;
$uploadfile = $uploaddir . basename($_FILES['fiier']['name']);
if (move_uploaded_file($_FILES['fiier']['tmp_name'], $uploadfile)) {
print "Fiier ncrcat cu succes!";
} else {
print "Nu s-a putut ncrca fiierul";
}
}
}
?>
5.6. Constante magice
Limbajul PHP dispune de o serie de "constante magice" care au valori diferite n funcie de
anumii momentul i codul n care sunt folosite. Denumirea de 'constanta' este improprie, pentru ca, aa
cum tii deja, o constanta nu-si poate schimba valoarea. Nici 'variabile' nu pot fi numite deoarece nu au
nevoie de declarare sau iniializare, aa ca s-a recurs la un compromis: denumirea 'constante magice'
(magic constants).Cele mai uzuale sunt __LINE__, __FILE__, __FUNCTION__ i __CLASS__. Mai noile
__DIR__, __METHOD__ i __NAMESPACE__ sunt mai rar folosite datorita faptului ca au nevoie de o
versiune mai noua a interpretorului PHP (cel puin versiunea 5.0 sau chiar 5.3)
Mai jos sunt explicate aceste constante.
LINE
Returneaz linia curenta a scriptului PHP.
<?php
# afieaz numrul liniei pe care este scrisa instruciunea echo
echo __LINE__; // 162
?>
FILE
Conine calea completa ctre scriptul PHP care se executa. Daceste folosita ntr-un fiier inclus
atunci numele acestui fiier este returnat.
<?php
echo __FILE__; // numescript.php
?>

211

FUNCTION
Returneaz numele funcie din interiorul creia se folosete constanta.
<?php
# declar o funcie care conine o constanta magica function spuneNumele() {
echo __FUNCTION__;
}
# apelez funcia care va afia valoarea constantei
spuneNumele(); // va afia: spuneNumele
?>
CLASS
Returneaz numele clasei curente.
DIR
Conine numele directorului n case este salvat scriptul curent. Aceasta constanta este echivalenta
cu dirname(__FILE__).
METHOD
Conine numele metodei de clasa din care se folosete constanta. Se poate folosi numai cu clase.
NAMESPACE
Conine numele spaiului de lucru curent (name-space).
5.7. Operatorul ternar
PHP ofer un operator care are 3 termeni. Sintaxa lui este urmtoarea:
(conditie ? adevrat : fals )
De remarcat ca adevrat, fals i condiie nu sunt instruciuni ci expresii (variabile, constante,
stringuri, etc) iar operatorul returneaz o valoare i nu o variabila.
print ( 1 == 2 ? 'egal' : 'ne-egal' ); // afieaz ne-egal

6. Utilizarea numerelor. Crearea i afiarea irurilor
Numerele n PHP pot fi manipulate cu uurin, principalele operaii la care sunt folosite fiind:
adunare, scdere, nmulire, mprire, mprire modulo, incrementare respectiv decrementare
Valorile de tip sir sunt secvene de caractere incluse ntre ghilimele duble sau simple
Putei include un caracter special n cadrul unui sir folosind o secven escape care reprezint
caracterul special.
Variabilele pot fi de tip string i li-se poate atribui o valoare de tip sir.
Operatorul de concatenare, punct, ( . ) se poate folosi pentru unirea irurilor.
PHP poate converti n mod automat o valoare numerica ntr-un sir, respectiv valoarea unui sir
ntr-un numr.
Secvenele escape folosite n PHP:
\n - salt la linie noua
\r - retur de car (rnd nou)
\t - caracter de tabulare pe orizontala
\\ - backslash
\$ - simbolul dolarului
\" - ghilimele duble
\xxx - caracterul asociat valorii ASCII xxx, exprimata sub forma unui numr n octal
\xnn - caracterul asociat valorii ASCII xxx, exprimata sub forma unui numr n hexazecimal
6.1. Secvene escape i cod ASCII
Ultimele doua secvene escape prezentate mai sus folosesc un cod ASCII (America Standard
Code for Information Interchange) pentru reprezentarea unui caracter.
Codurile ASCII sunt valori ntregi, care sunt cuprinse ntre 0 i 255; fiecare litera sau simbol
folosit frecvent n limbile vest-europene are asociat un cod ASCII. De exemplu, codul ASCII asociat literei
A este 65, iar codul asociat cifrei l este 49.
Prima secven escape necunoscuta (\xxx) va permite s folosii reprezentarea n octal (baza 8) a
unui cod ASCII pentru specificarea caracterului corespunztor. De exemplu, valoarea zecimala 65 (care
este codul ASCII al literei A) poate fi reprezentata n octal sub forma 101. Ca atare, putei reprezenta
litera A folosind secven escape "\101".
Cea de-a doua secven escape necunoscuta (\xnn) va permite s folosii reprezentarea
hexazecimala (n baza 16) a unui cod ASCII pentru specificarea caracterului corespunztor. De exemplu,
valoarea zecimala 65 (care este codul ASCII al literei A) poate fi reprezentat sub forma hexazecimala 41.
Ca atare, putei reprezenta litera A cu ajutorul secvenei escape "\41".

212

Valoarea unui numr zecimal este suma produselor dintre fiecare cifra care l compune i o putere
a lui 10. De exemplu, numrul zecimal 123 are valoarea l x 10 la puterea 2 + 2 x 10 la puterea 1 + 3 x
10 la puterea 0 = 1x100 + 2x10 + 3x1.
Putei determina valoarea unui numr reprezentat folosind o alta baza prin nlocuirea lui 10 cu
valoarea bazei respective ntr-o expresie ca aceea prezentata anterior. De exemplu, valoarea
hexazecimala 123 este echivalenta cu valoarea zecimala l x 16 la puterea 2 + 2 x 16 la puterea 1 + 3 x
16 la puterea 0 = l x 156 + 2 x 16 + 3 x l = 291.
Similar, valoarea n octal 123 este echivalenta cu valoarea zecimala 1x8 la puterea 2 + 2x8 la
puterea 1 + 3x8 la puterea 0 = 1x64 + 2x8 + 3xl=83.
Dacvi se pare complicat s calculam astfel, nu intrai n panica; n continuare vei nva s
determinai valoarea n octal sau hexazecimal echivalenta cu orice valoare zecimala, folosind funcii PHP.
6.2. Utilizarea codurilor ASCII
Numeroase funcii PHP sunt deosebit de folositoare la utilizarea codurilor ASCII. Aceste funcii
sunt enumerate n tabelul urmtor.
Funcii folositoare n utilizarea codurilor ASCII
Funcie Descriere
chr(/n) - Returneaz caracterul avnd codul ASCII dat de "n"
dechex(n) - Returneaz valoarea hexazecimala echivalenta cu valoarea zecimala data de "n"
decoct(n) - Returneaz valoarea n octal echivalenta cu valoarea zecimala data de "n"
hexdec(n) - Returneaz valoarea zecimala echivalenta cu valoarea hexazecimala data de "n"
octdec(n) - Returneaz valoarea zecimala echivalenta cu valoarea n octal data de "n"
ord(c) - Returneaz codul ASCII echivalent caracterului "c"
Iat un exemplu de utilizare a funciei ord() pentru a determina codul ASCII corespunztor unui
anumit caracter:
<?php
$c = "A";
$n = ord($c);
echo "<br /> Valoarea ASCII a caracterului $c este $n";
?>
Scriptul va afia urmtorul rezultat:
Valoarea ASCII a caracterului A este 65
6.3. Crearea datelor de ieire formatate
PHP include doua funcii utile pentru generarea datelor de ieire formatate, n spe printf() i
sprintf().
Funcia printf() afieaz datele sale de ieire, n timp ce funcia sprintf() returneaz datele sale
de ieire sub forma unei valori sir.
n general, fiecare funcie preia doua sau mai multe argumente. Primul argument este un sir,
denumit sir de formatate, care specifica formatul datelor de ieire, iar celelalte argumente specifica
valorile care vor constitui datele de ieire.
Iat un exemplu simplu de utilizare a funciei sprintf():
<?php
$num = 8.7;
echo $num;
$num = sprintf("%05.2f", $num);
echo '<br>'. $num;
?>
Rezultatul afiat va fi:
8.7
08.70
Cu ajutorul expresiei "%05.2f", sprintf() formateaz numrul din $num astfel nct acesta s fie
format din 5 caractere dintre care unul punct (.) i 2 zecimale.
Iat i doua exemple de utilizare a funciei printf():
<?php
$n = 8;
printf("Valoarea lui n este: %d", $n);
?>
Va afia "Valoarea lui n este: 8".

213

Al doilea exemplu, puin mai complicat, prezint modul de utilizare a funciei printf() cu mai multe
argumente pentru datele de ieire:
<?php
$sir = 'Aceasta este curs %d din cursul %s';
$num = 13;
$tip = 'PHP';
printf($sir, $num, $tip);
?>
Includerea datelor formatate n sir se face n ordinea adugrii variabilelor intre parantezele
funciei "sprintf()".
Va afia "Aceasta este curs 13 din cursul PHP".
irul de formatare consta dintr-o serie de caractere i directive ordinare. Un caracter ordinar este
orice caracter, n afara caracterului "%". Caracterele ordinare sunt pur i simplu copiate la ieire.
Directivele reprezint secvene de caractere care ncep cu simbolul "%"; aceste determina modul
n care va fi formatat argumentul corespunztor.
O directiva simpla, cum este cea din exemplul precedent, poate consta dintr-un caracter "%"
urmat de un specificator de tip, precum "d", care arata ca argumentul trebuie tratat ca numr zecimal.
Cu toate acestea, o directiva mai sofisticata poate include urmtoarele componente, care trebuie s
apar n ordinea indicata:
Specificator de completare (opional): - Un specificator de completare precizeaz
caracterul care se va folosi pentru a completa rezultatul pn la dimensiunea ceruta a irului, n cazul n
care caracterul de completare este omis, rezultatul este completat cu spatii. Specificatorul de completare
poate fi un caracter spaiu sau un 0 (zero). Un specificator de completare de tip spaiu este folosit
frecvent cu irurile, iar un specificator de completare zero se folosete mai ales alturi de numere. Un alt
caracter de completare poate fi specificat prin prefixarea acestuia cu un singur semn al citarii ('). De
exemplu, pentru a completa un rezultat cu liniue de subliniere, specificai '_ drept caracter de
completare.
Specificator de aliniere (opional): - Un specificator de aliniere indica dacrezultatul
trebuie s fie aliniat la stnga sau la dreapta. Dacspecificatorul de aliniere este omis, rezultatul va fi
aliniat la dreapta; dacse indica o cratima (-) drept specificator de aliniere, rezultatul va fi aliniat la
stnga.
Specificator de lime (opional): - Un specificator de lime este un ntreg care
determina numrul minim de caractere ale rezultatului; sau, dacargumentul este de tip double, numrul
minim de caractere situate la stnga punctului zecimal. Dacrezultatul conine un numr mai redus de
caractere, atunci va conine i caractere de completare.
Specificator de precizie (opional): - Un specificator de precizie este un punct zecimal,
urmat de un ntreg care determina numrul de cifre dup punctul zecimal pe care trebuie s le conin
rezultatul. Specificatorul de precizie nu are nici un efect pentru alte tipuri dect double (float).
Specificator de tip (obligatoriu): - Specificatorul de tip determina modul de tratare i
afiare a argumentului.
Tabelul urmtor prezint specificatorii de tip disponibili.
Specificatorii de tip PHP folosii la formatarea irurilor
Specificator de tip Descriere
b - Trateaz argumentul ca pe un ntreg i l afieaz ca valoare binara
c
- Trateaz argumentul ca pe un ntreg i afieaz caracterul cu aceeai valoare
ASCII ca i argumentul
d - Trateaz argumentul ca pe un ntreg i l afieaz ca valoare zecimala
f
- Trateaz argumentul ca pe o valoare de tip double i l afieaz ca valoare cu
virgula mobila
o - Trateaz argumentul ca pe un ntreg i l afieaz ca pe o valoare scrisa n octal
s - Trateaz argumentul ca pe un sir i l afieaz
x
- Trateaz argumentul ca pe un ntreg i l afieaz ca numr hexazecimal, cu
litere scrise cu minuscule
X
- Trateaz argumentul ca pe un ntreg i l afieaz ca numr hexazecimal, cu
litere scrise cu majuscule

214

Dacdorii s inserai simbolul procentului n datele de ieire ale unui apel la funcia printf() sau
sprintf(), inserai doua caractere "%".
Tabelul urmtor prezint rezultatele aplicrii a diferite iruri de formatare valorilor selectate.
Studiai tabelul i verificai dacai neles corect modul de operare a specificatorilor din cadrul fiecrui sir
de formatare. Remarcai ca, n cazul omiterii cifrelor zecimale, se produce automat o rotunjire.
Spatiile au fost nlocuite prin accente circumflexe(^), pentru a facilita determinarea numrului de
spatii i a amplasrii acestora.
Exemple de rezultate ale utilizrii a diferite iruri de formatare
Valoare Format Rezultat
100 %d 100
100 %b 1100100
100 %o 144
100 %x 64
100 %f 100.000000
12.345 %^-10f 12.345000^^^^^^^^
12.345 %^10f ^^^^^^^^12 .345000
12.345 %^-10.2f 12.35^^^^^^^^
12.345 %10.2f ^^^^^^^^12.35
test %^-10s test^^^^^^
test %^10s *^^^^^^test
Dacutilizarea funciilor printf() i sprintf() pentru formatarea numerelor pare cam greoaie, putei
folosi funcia number_format(), care returneaz o valoare de tip sir coninnd un rezultat formatat. Putei
apela funcia cu unul, doua sau patru argumente:
number_format(numr)
number_format(numr, zecimale)
number_format(numr, zecimale, punct_zecimal, separator_mii)
Argumentul "numr" specifica valoarea numerica pe care dorii s o formatai.
Argumentul "zecimale" specifica numrul dorit de cifre zecimale.
Argumentul "punct_zecimal" precizeaz caracterul ce se va folosi drept punct
zecimal.
Argumentul "separator_mii' precizeaz caracterul care se va folosi ca separator al
miilor.
n mod prestabilit, rezultatul este formatat fr zecimale, este inserat un punct (.) naintea
cifrelor care compun partea zecimala, respectiv se folosete o virgula (,) pentru separarea miilor.
De exemplu, apelul la funcia number_format(1.234, 2) returneaz valoarea 1.23
Funcia PHP sscanf(), este complementara funciei printf(). Dacfuncia printf() genereaz date
de ieire formatate, funcia sscanf() citete un sir, l interpreteaz prin referirea la un sir de formatare i
stabilete valorile variabilelor specificate n funcie de coninutul irului.
Sa luam n considerare urmtorul exemplu:
<?php
$subiect = "08,25,2008";
$n = sscanf($subiect, "%d,%d,%d", &$luna, &$zi, &$an);
echo "Au fost gsite $n valori";
echo "<br /> luna = $luna";
echo "<br /> zi = $zi";
echo "<br /> an = $an";
?>
Datele de ieire ale acestui script sunt:
Au fost gsite 3 valori
luna = 8
zi = 25
an = 2008
6.4. Manipularea irurilor
PHP conine peste 70 de funcii care lucreaz cu iruri. Aceasta seciune descrie cteva funcii pe
care este posibil s le utilizai frecvent. Aceste funcii va permit s obinei lungimea unui sir, s eliminai

215

dintr-un sir caracterele de tip spaiu alb, s convertii caracterele unui sir n majuscule sau minuscule i
altele.
Funcia strlen() returneaz lungimea irului specificat ca argument al funciei.
Iat un exemplu simplu de utilizare a funciei strlen():
<?php
$s = "Acesta este un sir";
$n = strlen($s);
echo "<br /> Lungimea irului este: $n";
?>
Scriptul de mai sus va afia:
Lungimea irului este: 18
Numeroase funcii PHP va permit s eliminai caracterele de tip spaiu alb de la una sau ambele
extremiti ale unui sir.
Iat un exemplu; care prezint modul de operare al acestor funcii:
<?php
$s = " Acesta este un sir ";
$n = strlen($s);
echo "<br /> Lungimea irului este: $n";
$trim =chop($s); // Elimina spatiile albe din partea dreapta a irului
$n = strlen($trim);
echo "<br /> Lungimea irului este: $n";
$trim = ltrim($s); // Elimina spatiile albe din partea stnga a irului
$n = strlen($trim);
echo "<br /> Lungimea irului este: $n";
$trim = rtrim($s); // Elimina spatiile albe din partea dreapta a irului
$n = strlen($trim);
echo "<br /> Lungimea irului este: $n";
$trim = trim($s); // Elimina spatiile albe din ambele pri a irului
$n = strlen($trim);
echo "<br /> Lungimea irului este: $n";
?>
Scriptul de mai sus va afia:
Lungimea irului este: 36
Lungimea irului este: 27
Lungimea irului este: 27
Lungimea irului este: 27
Lungimea irului este: 18
Urmtorul tabel prezint Funciile PHP de eliminare a caracterelor din iruri:
Funcii PHP de eliminare a caracterelor din iruri
Funcie Descriere
chop(s)
- Returneaz valoarea lui 's', eliminnd spatiile albe de la extremitatea din dreapta a irului. Similar cu
rtrim()
ltrim(s) - Returneaz valoarea lui 's', eliminnd spatiile albe de la extremitatea din stnga a irului
rtrim(s)
- Returneaz valoarea lui 's', eliminnd spatiile albe de la extremitatea din dreapta a irului. Similar cu
chop()
trim(s) - Returneaz valoarea lui 's', eliminnd spatiile albe de la ambele extremiti
Funcia strtoupper() returneaz valoarea argumentului, convertita la majuscule.
Funcia strtolower() returneaz valoarea argumentului, convertita la minuscule.
Funcia ucfirst() returneaz valoarea argumentului, cu primul caracter din sir majuscula.
Nici una din funcii nu modifica valoarea argumentului, valoarea convertita este cea returnata ca
rezultat al funciei.
Iat un scurt exemplu, care prezint modul de operare a acestor funcii:
<?php
$s = "abcdefg";
$rezultat = strtoupper($s);
$rezultat2 = ucfirst($s);
echo "<br />strtoupper('$s'): $rezultat";

216

echo "<br />ucfirst('$s'): $rezultat2";


$s = "ABCDE";
$rezultat = strtolower($s);
echo "<br />strtolower('$s'): $rezultat";
?>
Scriptul de mai sus va afia:
strtoupper(abcdefg): ABCDEFG
ucfirst(abcdefg): Abcdefg
strtolower(ABCDE): abcde
6.5. Compararea irurilor
PHP furnizeaz patru funcii care sunt deosebit de utile pentru compararea irurilor. Aceste funcii
sunt enumerate n tabelul urmtor.
Fiecare funcie returneaz o valoare al crei semn determina rezultatul comparaiei; nu trebuie s
ncercai s interpretai valoarea returnata efectiva.
Funcii PHP de comparaie ntre iruri
Funcia Descriere
strcasecmp(s1, s2)
- Executa o comparaie fr sensibilitate la diferena ntre majuscule i
minuscule. Returneaz o valoare mai mica dect zero dac's1' este mai mic
dect 's2', o valoare mai mare dect zero dac's1' este mai mare dect 's2',
respectiv 0 n celelalte cazuri.
strcmp(s1, s2)
- Executa o comparaie cu sensibilitate la diferena ntre majuscule i minuscule.
Returneaz o valoare mai mica dect zero dac's1' este mai mic dect 's2', o
valoare mai mare dect zero dac's1' este mai mare dect 's2', respectiv 0 n
celelalte cazuri.
strncasecmp(s1, s2, n)
- Executa o comparaie fr sensibilitate la diferena ntre majuscule i
minuscule. La comparaie sunt luate n considerare un numr de 'n' caractere.
Returneaz o valoare mai mica dect zero dac's1' este mai mic dect 's2', o
valoare mai mare dect zero dac's1' este mai mare dect 's2', respectiv 0 n
celelalte cazuri.
strncmp(s1,s2, n)
- Executa o comparaie cu sensibilitate la diferena ntre majuscule i minuscule.
La comparaie sunt luate n considerare un numr de 'n' caractere. Returneaz o
valoare mai mica dect zero dac's1' este mai mic dect 's2', o valoare mai
mare dect zero dac's1' este mai mare dect 's2', respectiv 0 n celelalte
cazuri.
Iat un scurt exemplu care prezint modul de utilizare a acestor funcii:
<?php
$s1 = "abcd";
$s2 = "ABCE";
$rezultat = strcasecmp($s1, $s2);
echo "<br /> Funcia strcasecmp a returnat $rezultat";
$rezultat = strcmp($s1, $s2);
echo "<br /> Funcia strcmp a returnat $rezultat";
$rezultat = strncasecmp($s1, $s2, 3);
echo "<br /> Funcia strncasecmp returnat $rezultat";
$rezultat = strncmp($s1, $s2, 3);
echo "<br /> Funcia strncmp a returnat $rezultat";
?>
Scriptul de mai sus va afia:
Funcia strcasecmp a returnat -1
Funcia strcmp a returnat 1
Funcia strncasecmp returnat 0
Funcia strncmp a returnat 1
Datele de ieire va arata ca funcia strcasecmp() a identificat irul "abcd" ca fiind mai mic dect
"ABCE", n schimb, funcia strcmp(), la fel ca i funcia strncmp(), a identificat irul "abcd" ca fiind mai
mare dect "ABCE". Aceasta s-a ntmplat deoarece literele minuscule au n secven ASCII o poziie

217

superioara literelor scrise cu majuscule; litera 'A' are valoarea ASCII 65, iar litera 'a' are valoarea ASCII
97.
De asemenea, datele de ieire arata ca funcia strncasecmp() a identificat irul "s1" ca egal cu
"s2", deoarece au fost luate n considerare numai primele 3 caractere.
6.6. Descoperirea i extragerea subirurilor
PHP include numeroase funcii care gsesc i extrag sub-tiruri, adic pri dintr-un sir. Cele mai
importante funcii de acest gen sunt rezumate n tabelul urmtor:
Funcii PHP de extragere i cutare
Funcie Descriere
strchr(s1,s2)
Returneaz toate irurile 's1' de la prima apariie a irului 's2' i pn la sfrit.
Dac's1' nu este gsit, funcia returneaz FALSE. Funcia strstr() executa aceeai
operaie
stristr(s1,s2)
Returneaz toate irurile 's1' de la prima apariie a irului 's2' i pn la sfrit.
Dac's1' nu este gsit, funcia returneaz FALSE. irurile 's1' i 's2' sunt comparate
fr a se tine cont dacliterele sunt majuscule sau minuscule
strpos(s1,s2)
Returneaz poziia (nr. ntreg) a primei apariii a irului 's2' n 's1'.Dac's2' nu este
gsit, funcia returneaz FALSE
strrchr(s1,s2)
Returneaz toate irurile 's1' de la ultima apariie a irului 's2' i pn la sfrit.
Dac's1' nu este gsit, funcia returneaz FALSE. La comparaie este folosit numai
primul caracter al irului 's2'
strstr(s1,s2)
Returneaz toate irurile 's1' de la prima apariie a irului 's2' i pn la sfrit.
Dac's1' nu este gsit, funcia returneaz FALSE. Funcia strchr() executa aceeai
operaie
substr(s, starf)
substr(s, start,
lung)
Returneaz poriunea irului 's' specificata de indexul ntreg 'start' respectiv de
indexurile 'start' i 'lung'. Prima poziie a irului este poziia 0.
Iat un exemplu simplu, care prezint modalitile de utilizare a mai multor funcii de extragere i
cutare:
<?php
$s = "the cat on the mat near the bat";
$b = "at";
$n = strpos($s, $b);
echo "<br /> strpos(\"$s\", \"$b\"): $n";
$s = "the cat on the mat near the bat";
$b = "at";
$n = strchr($s, $b);
echo "<br /> strchr(\"$s\", \"$b\"): $n";
$s = "the cat on the mat near the bat";
$b = "at";
$n = strrchr($s, $b);
echo "<br /> strrchr(\"$s\", \"$b\"): $n";
$s = "the cat on the mat near the bat";
$rezultat = substr($s, 4, 3);
echo "<br /> substr(\"$s\", 4, 3): $rezultat";
?>
Studiai cu atenie scriptul i tabelul de mai sus pentru a nelege datele de ieire. Iat i datele
de ieire:
strpos("the cat on the mat near the bat", "at"): 5
strchr("the cat on the mat near the bat", "at"): at on the mat near the bat
strrchr("the cat on the mat near the bat", "at"): at
substr("the cat on the mat near the bat", 4, 3): cat
O potenial dificultate n utilizarea funciei strpos() consta n aceea ca poate fi greu de sesizat
diferena dintre valoarea returnat 0, care arata ca subirul a fost gsit n poziia iniial a irului, i
valoarea returnat FALSE, care arata ca subirul nu a fost gsit.

218

Iat un scurt exemplu care indica un mod adecvat de testare a valorii returnate de funcia
strpos(), astfel nct s se poat face diferena ntre cele doua rezultate:
<?php
$poz = strpos($s1, $s2);
if ($poz == FALSE) {
echo "<br /> subiirul nu a fost gsit";
}
?>
Procedeul prezentat folosete operatorul de identitate (==) pentru a determina dacvaloarea
returnata este identica - nu doar aritmetic egala - cu valoarea FALSE.
6.7. nlocuirea unui subir
O operaie frecvent folosita n programare consta n gsirea unui subir i nlocuirea s cu o
valoare noua. PHP are doua funcii deosebit de utile pentru asemenea operaii, i anume str_replace() i
substr_replace().
Mai jos sunt prezentate pe scurt aceste funcii.
Remarcai ca funcia str_replace() noteaz subirul prin valoarea sa, n timp ce funcia
substr_replace() noteaz subirul prin poziia s n interiorul irului subiect.
str_replace(cauta, nlocuire, subiect) - Se cauta n irul 'subiect' subirul 'cauta';
dacsubirul este gsit, returneaz valoarea 'subiect', nlocuindu-se prima apariie a irului 'cauta'
cu 'nlocuire'.
substr_replace(subiect, nlocuire, start, lungime) - Returneaz valoarea 'subiect', nlocuind
subirul care ncepe de la 'start' i avnd lungimea 'lungime' cu irul 'nlocuire'.
Iat un exemplu care prezint modul de utilizare a acestor funcii:
<?php
$subiect = "the cat on the mat near the bat";
echo "<br /> Subiect : $subiect";
$cauta = "cat";
$inlocuire = "DOG";
$rezultat = str_replace($cauta, $inlocuire, $subiect);
echo "<br /> str_replace : $rezultat";
$inlocuire = "CAT";
$rezultat = substr_replace($subiect, $inlocuire, 4, 3);
echo "<br /> substr_replace : $rezultat";
?>
Iat i rezultatul exemplului :
Subiect : the cat on the mat near the bat
str_replace : the DOG on the mat near the bat
substr_replace : the CAT on the mat near the bat
6.8. Operatori
Operatorii sunt simboluri care pot fi utilizate pentru a efectua operaii asupra unor variabile i
constante de diverse tipuri. Entitile asupra crora se aplica un operator se numesc operanzi. Un
operator poate avea unul, doi sau chiar trei operanzi. Majoritatea operatorilor sunt binari (au doi
operanzi). n general operatorii sunt clasificai funcie de tipul datelor asupra crora acioneaz.
6.8.1. Operatori aritmetici
Operatorii aritmetici provin din matematica i acioneaz asupra datelor de tip numeric.
Acetia sunt:
Operator Denumire Exemplu
+ adunare $a + $b
- scdere $a - $b
* nmulire $a * $b
/ mprire $a / $b
% modulo $a % $b
++ incrementare - post $a++
++ incrementare - pre ++$a
-- decrementare - post $a--

219

-- decrementare - pre --$a


Operatorul % (modulo) are ca i rezultat restul mpririi numerelor transmise.
Operatorii de incrementare/decrementare sunt operatori unari care au ca rezultat
creterea/descreterea cu o unitate a variabilei operand asupra creia se aplica. Operatorii post se aplica
dup ce valoarea este evaluata n expresia din care face parte iar operatorii pre se aplica nainte de
evaluarea expresiei.
Exemple:
$a = 5;
$b = $a++; // b = 5, a = 6
$c = ++$a; // c = 7, a = 7
$d = 4 + --$a; // d = 10, a = 6
$e = 4 + --$c; // e = 11, c = 6
Dacoperatorii aritmetici se aplica asupra unor valori de tip string, PHP va ncerca conversia
acestora n numere. Dacconversia nu reuete, irurile sunt convertite la valoarea 0.
6.8.2. Operatori pe iruri de caractere
In PHP exista un singur operator pe iruri de caractere, restul operaiilor fiind efectuate prin
intermediul unor funcii din biblioteca standard a limbajului. Acest operator este operatorul de
concatenare - punct '.'.
$s1 = "irul 1";
$s2 = "irul 2";
$s3 = $s1."-".$s2; // s3 = "irul 1-Sirul 2"
6.8.3. Operatori de asignare
Operatorii de asignare permit atribuirea de valori variabilelor. Cel mai simplu operator este
operatorul '='. El are doi operanzi: o variabila n partea stnga i o expresie n partea dreapta. Valoarea
expresiei este evaluata apoi atribuita variabilei din partea stnga si, n final, returnata de operator.
Deoarece = nu este o intruciune PHP ci un operator, el poate intra n expresii complexe de genul:
$a = $b = 4 + ($c = 3); // a = 7, b = 7, c=3
In plus fata de operatorul de asignare simplu, PHP pune la dispoziia programatorilor i operatori
de asignare combinai:
Operator Utilizare Echivalent cu
+= $a += $b $a = $a + $b
-= $a -= $b $a = $a - $b
*= $a *= $b $a = $a * $b
/= $a /= $b $a = $a / $b
%= $a %= $b $a = $a % $b
.= $s1 .= $s2 $s1 = $s1 . $s2
6.8.4. Operatori de referire
Versiunea PHP 4 a introdus un nou operator i anume operatorul de referire '&'. El este un
operator unar, avnd ca operand o variabila i permite legarea unui nume de variabila de zona de
memorie a variabilei operand. Spre exemplu se considera secven:
$a = 3;
$b = $a; // a = 3, b = 3
$b = 5; // a = 3, b = 5
In urma acestei secvene vor exista doua variabile independente $a i $b. Modificarea ulterioara a
valorii lui $b nu afecteaz valoarea reinut de $a. Daca, n schimb, consideram secven:
$a = 3;
$b = &$a; // a = 3, b = 3
$b = 5; // a = 5, b = 5
Se va observa ca $b nu este o variabila independenta ci este un nou nume pentru variabila $a
(ambele vor indica spre aceiai zona de memorie). Orice modificare a valorii lui $b va afecta n aceiai
msur i valoarea lui $a.
6.8.5. Operatori de comparare
Operatorii de comparare sunt operatori binari care au ca i scop compararea valorilor operanzilor.
Rezultatul acestor operatori este unul logic, avnd valoarea true (adevrat) sau flase (fals).
Acetia sunt:

220

Operator Denumire Exemplu


== egalitate $a == $b
=== test de identitate $a === $b
!= inegalitate $a != $b
<> inegalitate $a <> $b
< mai mic $a < $b
> mai mare $a > $b
<= mai mic egal $a <= $b
>= mai mare egal $a >= $b
Dacoperanzii nu sunt de acelai tip se va ncerca conversia operanzilor pentru a deveni
compatibili i apoi se va face comparaia. n cazul operatorului test de identitate '===' operanzii nu sunt
considerai egali dacnu au acelai tip.
Exemple:
<?php
$a = 4; # iniializm $a cu numrul 4
$b = "4"; # iniializm $b cu string-ul "4"
if( $a == 4 ) print "\$a este 4"; # va afia "$a este 4"
else print "\$a nu este 4";
if( $a == $b ) print "Sunt egale"; # va afia "Sunt egale"
else print "Nu sunt egale";
if( $a === $b ) print "Sunt identice"; # va afia "Nu sunt identice"
else print "Nu sunt identice";
# Nota: deoarece $a este numr iar $b string, ele nu sunt identice
if( $a > 4 ) print "\$a este mai mare dect 4";
?>
Atenie! Dacse compara un string (text) cu un numr, stringul este convertit la un numr.
Exemplu:
"text" == 0 // echivalent 0 == 0, evalueaz la true
Dacse compara 2 stringuri ce conin numere, acestea sunt mai nti convertite la numerele pe
care le reprezint i apoi are loc comparaia. Astfel, 2 texte care sunt diferite ar putea fi considerate
egale.
Exemplu:
"1" == "01" // echivalent 1 == 1, evalueaz la true
"1" == "1e0" // echivalent 1 == 1, evalueaz la true
Nota: "01" i "1e0" sunt notaii matematice diferite pentru numrul 1.
6.8.5.1. Diferena intre operatorii == i =
Operatorul == este diferit de operatorul de atribuire = i nu trebuie confundai. Dublu-egal (==)
este folosit pentru comparare iar egal simplu (=) - pentru atribuirea de valori unei variabile.
$a = 5 este o atribuire.
print $a = 5; // 5
Instruciunea print afieaz rezultatul atribuirii ( rezultatul unei atribuiri este ntotdeauna egal cu
valoarea atribuita
$a == 1 este o verificare. Instruciunea afieaz rezultatul verificrii.
print $a == 1; // false
In timp ce atribuirile se pot folosi att de sine statator ($a = 1;), cat i ca expresii n cadrul
instruciunilor (print $a = 1; return $a = 1;) operatorii == sau === sunt folosii doar n cadrul
instruciunilor.
corect
$a = 10; atribuire de sine stttoare
print $a = 10; atribuire + afiarea rezultatului atribuirii
incorect - nu genereaz erori dar aceasta construcie este inutila.
$a == 1; nu se face nimic cu rezultatul comparaiei
corect
print $a == 1; # se afieaz rezultatul comparaiei
print $a === '1'; # se afieaz rezultatul comparaiei exacte

221

if( $a == 1 ) echo 'egal'; # se face o verificare


6.8.6. Operatori logici
Operatorii logici sunt utilizai pentru a combina valori logici n expresii.
Acetia sunt:
Operator Denumire Rezultat
! negare !$a neaga valoarea logica a lui $a
&& si logic $a && $b ntoarce adevrat doar dacambele valori $a i $b sunt adevrate
and si logic $a and $b ntoarce adevrat doar dacambele valori $a i $b sunt adevrate
|| sau logic
$a || $b ntoarce adevrat daccel puin una dintre valorile lui $a sau $b este
adevrata
or sau logic
$a or $b ntoarce adevrat daccel puin una dintre valorile lui $a sau $b este
adevrata
xor
sau
exclusiv
$a xor $b ntoarce adevrat dac$a i $b au valori logice diferite
6.8.7. Operatori pe bii
Operatorii pe bii ajuta la prelucrarea numerelor ntregi considerate ca iruri de bii.
Acetia sunt:
Operator Denumire Rezultat
~ negare pe bii ~$a inverseaz valorilor tuturor biilor lui $a
& si pe bii $a &$b doar bii pe 1 n $a i $b simultan sunt setai pe 1 n rezultat
| sau pe bii $a | $b bii pe 1 n $a sau $b sunt setai pe 1 n rezultat
^
sau exclusiv pe
bii
$a ^ $b biii setai n $a sau $b dar nu n ambele sunt setai pe 1 n
rezultat
<< deplasare stnga $a << $b deplaseaz biii din $a la stnga cu $b poziii
>> deplasare dreapta $a >>$b deplaseaz biii din $a la dreapta cu $b poziii
6.8.8. Operatori adiionali
Operatorii prezentai n acest subcapitol sunt: operatorul condiional, operatorul de suprimare a
erorilor i operatorul de execuie.
Operatorul condiional are sintaxa:
condiie ? valoare_adevrata : valoare_falsa
Operatorul evalueaz mai nti expresia logica din condiie. Daccondiia este adevrata va
ntoarce expresia valoare_adevrata iar n caz contrar valoare_falsa.
Exemplu:
echo ($varsta < 18) ? "adolescent" : "matur";
Operatorul de suprimare a erorilor '@' are sintaxa:
@(expresie)
El are rolul de a suprima erorile i avertismentele generate de expresia operand.
Exemplu:
$a = ($b / 0); // genereaz avertisment de mprire la zero
$a = @($b / 0 ); // nu genereaz avertisment
In cel de al doilea caz, valoarea lui $a va fi setata pe valoare vida ( convertita la 0 ca ntreg).
Operatorul de execuie poate fi folosit pentru a executa o comanda pe interpretorul de comenzi al
serverului.
El consta n dou apostroafe inverse '`'ntre care este plasat comanda de executat. Exemplu `ls
-al`.
Operatorul de execuie acioneaz doar dacopiunea safe_mode din php.ini este dezactivata
(Off). n general acest operator nu se folosete datorita breelor de securitate pe care le deschide pe
server.
6.9. Expresii
O definiie simpla a expresiilor PHP este urmtoarea: "expresie = orice are o valoare". Cea mai mare
parte a unui program PHP consta n expresii. Expresiile combina operanzi i operatori de diverse tipuri:
constante, variabile sau nume de funcii.

222

La evaluarea expresiilor operatorii se vor aplica ntr-o ordine prestabilita, data de "precedenta" lor.
Tabelul urmtor prezint operatorii n ordinea inversa a precedenei lor (in fata sunt cei mai puin
prioritari).
Precedenta Asociativitate Operator
1 stnga ,
2 stnga or
3 stnga xor
4 stnga and
5 stnga = += -= *= /= .= %=
6 stnga ? :
7 stnga ||
8 stnga &&
9 stnga |
10 stnga ^
11 stnga &
12 - == != ===
13 - < > <= >=
14 stnga << >>
15 stnga + - .
16 stnga * / %
17 dreapta ! ~ ++ -- @
18 dreapta []
19 - new
20 - ( )
O atenie deosebita trebuie acordata irurilor de caractere intre ghilimele " ". La evaluarea
expresiei n care acestea apar, toate numele de variabile care apar n interiorul lor sunt nlocuite cu
valorile corespunztoare.
Exemplu:
$nume = "Vasile";
$sir1 = "Domnul $nume are masina roie!";
$sir2 = 'Domnul $nume are masina roie!';
echo $sir1; // afieaz Domnul Vasile are masina roie!
echo $sir2; // afieaz Domnul $nume are masina roie!
7. Structuri de control
7.1. Instruciuni condiionale
Instruciunile condiionale permit execuia condiionat a secvenelor de program. n lipsa unor
astfel de instruciuni ar fi practic imposibil de implementat o mare parte dintre problemele din lumea
reala.
7.1.1. Instruciunea if
Instruciunea if permite luarea de decizii privind execuia unei alte instruciuni sau a unui bloc de
instruciuni inclus intre acolade ('{' i '}').
Cea mai simpla sintaxa a instruciunii if este:
if (expr) instruciune
Expresia expr este o expresie (condiie) logica ce se evalueaz la true sau false. Dacevaluarea
condiiei are ca rezultat o valoare adevrata se va executa instruciunea specificata, dacnu, instruciunea
va fi ignorata i se va trece mai departe.
Exemplu:
if ($nota < 5)
echo 'Examenul trebuie repetat!';

223

Dacexpresia condiional nu este una logica, se va face o conversie automata la o valoare


logica. Valorile numerice 0 sau 0.0, irurile vide (""), tablourile fr nici un element sau variabilele
neiniializate vor fi evaluate la fals, restul fiind evaluate la true.
Dacse dorete execuia condiional a mai mult de o instruciune se va utiliza construcia de
bloc, ca n exemplul urmtor:
if ($nota < 5)
{
echo 'Examenul trebuie repetat!';
$bursa = 0;
}
In multe cazuri, pentru condiie neadevrat se dorete execuia altei instruciuni sau a unu bloc
de instruciuni. n acest caz se va folosi clauza opional else. Exemplu:
if ($nota < 5)
{
echo 'Examenul trebuie repetat!';
$bursa = 0;
}
else
{
echo 'Felicitri pentru trecerea examenului!';
$bursa = 1000000;
}
In unele situaii, la luarea unei decizii exista mai multe opiuni. n acest caz ar trebui testate mai
multe condiii. Pentru aceasta, limbajul PHP pune la dispoziia programatorilor clauza elseif. n acest caz
sintaxa instruciunii este:
if (expr1)
instructiune1
elseif (expr2)
instructiune2
...
elseif (expr3)
instruciune
Exemplu:
if ($nota < 5)
{
echo 'Insuficient';
$bursa = 0;
}
elseif ($nota<7)
{
echo 'Suficient';
$bursa = 500000;
}
elseif ($nota<9)
{
echo 'Bine';
$bursa = 1000000;
}
else
{
echo 'Bine';
$bursa = 1500000;
}

7.1.2. Instruciunea switch
Instruciunea switch este similara cu o serie de instruciuni if care testeaz mai multe valori
posibile pentru o anumita expresie. Avantajul sau este o scriere mai concisa i mai simplu de neles i
depanat. Sintaxa acestei instruciuni este:
switch (expr) {

224

case valoare_1:
instruciune_1;
break;
case valoare_2:
instruciune_2;
break;
...
case valoare_n:
instruciune_n;
break;
default:
instruciune_default;
}
Dup evaluarea expresiei, valoarea obinut este comparata cu valorile din clauzele case. Dacse
intlnete o potrivire se va continua cu execuia instruciunilor din clauzele case urmtoare, pana la
ntlnirea instruciunii break. Consecina este ca, dacinstruciunile dintr-o clauza case nu se termina cu
break, se va continua execuia cu instruciunile clauzei urmtoare. Acest lucru se poate utiliza pentru a
executa o secven de instruciuni comuna pentru mai multe valori, ca i n exemplu urmtor:
switch ($nota) {
case 1: case 2: case 3: case 4:
echo ' nu are bursa!';
break;
case 5: case 6:
echo ' bursa este 500000.';
break;
case 7:
echo ' bursa este 700000.';
break;
case 8: case 9:
echo ' bursa este 1000000.';
break;
case 10:
echo ' bursa este 1500000.';
break;
default:
echo 'nota nu este corecta!';
}
7.2. Instruciuni repetitive
Instruciunile repetitive permit implementarea algoritmilor care necesita repetarea unei secvene
de calcul.
7.2.1. Instruciunea while
Instruciunea while se folosete pentru a implementa o bucla repetitiva cu test iniial. Ea permite
execuia unei instruciuni sau a unui bloc de instruciuni inclus intre acolade ('{' i '}') i are sintaxa:
while (expr) instruciune
Expresia expr este o expresie (condiie) logica ce se evalueaz nainte de fiecare repetiie.
Dacrezultatul evalurii condiiei este adevrat, se va executa instruciunea specificata apoi secven se
va relua. Dacrezultatul evalurii este fals, instruciunea va fi ignorata i se va trece la intruciunea de
dup while.
Exemplu:
$i = 1;
while ($i< 5)
echo 'Numrul '.$i++."<BR>";
7.2.2. Instruciunea do-while
Instruciunea do-while este asemntoare cu instruciunea while dar se folosete pentru a
implementa o bucla repetitiva cu test final. Ca i while, ea permite execuia unei instruciuni sau a unui
bloc de instruciuni inclus intre acolade ('{' i '}') i are sintaxa:
do
instruciune
while (expr);

225

Expresia expr este o expresie (condiie) logica ce se evalueaz dup fiecare repetiie. Daca, dup
executarea instruciunii condiia este adevrata se va relua secven de la nceput. n cazul n care
condiia devine falsa, repetiia se va ncheia i se va trece la intruciunea de dup do-while.
Exemplu:
echo "Se genereaz un sir de numere aleatoare n intervalul 0-100.<BR>";
echo "Generarea se oprete la primului numr mai mare de 90 sau cnd s-au depit 20 de
numere.<BR>";
$i = 1;
do
{
$n = rnd(0,100);
echo 'Numrul '.$i++." = ".$n."<BR>";
} while ($n<=90 and $i<21);
In cazul buclei do-while, instruciunea din bucla se va executa cel puin o data chiar i n cazul n
care condiia nu este adevrata de la nceput.
7.2.3. Instruciunea for
Instruciunea for este inspirata din limbajul C. Ca i while, ea permite execuia unei instruciuni
sau a unui bloc de instruciuni inclus intre acolade ('{' i '}') i are sintaxa:
for (expr1; expr2; expr3) instruciune
Prima expresie (expr1) este numita expresie de iniializare i se executa o singura data,
necondiionat, la nceputul ciclului. De obicei aceasta expresie conine atribuiri. Expr2 este o condiie
logica ce se evalueaz la nceputul fiecrei iteraii. Pentru condiie adevrata se va executa instruciunea
din bucla, daceste falsa, repetiia se va ncheia i se va trece la instruciunea de dup for. Expr3 se
numete expresie de iterare i se evalueaz la sfritul fiecrei repetri. Ea are rolul de a asigura trecerea
la pasul urmtor (incrementarea contoarelor, citirea datelor urmtoare etc.).
Oricare dintre cele trei expresii pot fi vide. Dacexpr3 este vida PHP o va considera adevrata i
va cicla la infinit. n acest caz trebuie asigurata o ieire forat din bucla utiliznd una dintre instruciunile
de control pentru.
Exemplu de folosire a instruciunii for:
echo "Tabloul factorialelor primelor 10 numere naturale.<BR>";
echo "Definiia factorialului unui numr n este n!=1*2*3*...*n.<BR>";
echo "<TABLE border=1>";
for ($n = 1, $factorial = 1; $n <= 10; $n++)
{
echo "<TR> <TD>";
echo $n;
echo "</TD> <TD>";
$factorial *= $n;
echo $factorial;
echo "</TD> </TR>";
}
8. Tablouri PHP. Instruciunea foreach
Un tablou este un tip de date ce poate retine un set de valori. n PHP tabloul va asocia fiecrei
intrri o cheie prin care aceasta poate fi regsit. Cheile pot fi numerice (in acest caz indicii creai implicit
vor fi 0,1,2 ...) sau pot fi iruri de caractere (caz n care tabloul se numete asociativ). Valorile reinute
pot avea orice tip dar sunt de acelai fel pentru un tablou dat.
O variabila de tip tablou poate fi creata prin constructorul array().
Sintaxa pentru crearea unui tablou indexat numeric este:
$tablou = array (el0, el1, ... el_n);
Exemplu:
$culori= array ("alb", "albastru", "verde", "rou", "galben");
Accesul la elementele tabloului se face prin indeci numerici (cu semnificaia de numere de ordine
n tablou). Spre exemplu $culori[0] are valoarea "alb", $culori[4] are valoarea "galben" etc.
In PHP dimensiunea unui tablou este variabila. Pentru a aduga un nou element se va atribui pur
i simplu variabilei cu urmtorul indice o anumita valoare. Spre exemplu $culori[5]="negru" va aduga un
nou element ("negru") la sfritul tabloului $culori.
Numrul curent de elemente ale unui tablou se poate afla n orice moment cu ajutorul funciei
count($tablou).

226

Tablourile asociative sunt tablouri n care valorilor coninute le sunt asociate chei prin care
acestea pot fi regsite. Sintaxa pentru crearea unui astfel de tablou este:
$tablou = array( "cheie1" => el1, "cheie2" => el2, ... "cheie_n" => el_n);
Exemplu:
$pret = array ("pine alba" => 7000, "ou" => 3000, "zahar" => 24000);
Accesul la un element se face prin cheia asociata. Spre exemplu $pret["pine alba"] are valoarea
7000. i n acest caz tabloul poate i extins dinamic prin adugarea unui nou element a crei cheie nu
exista n tablou. Spre exemplu $pret["miere 500g"] = 30000 va aduga elementul 30000 cu cheia "miere
500g" la tabloul $pret, acesta avnd acum patru elemente.
Ambele tipuri de tablouri rein intern o referina (pointer) ctre elementul curent de prelucrat.
Acest lucru permite scrierea secvenelor pentru parcurgerea i prelucrarea elementelor lor.
Instruciunea foreach este asemntoare cu instruciunea for dar este destinata exclusiv parcurgerii de
tablouri, n special a celor asociative. Sintaxa acestei instruciuni are doua forme alternative:
foreach (tablou as valoare_element_curent)
instruciune
foreach (tablou as cheie => valoare_element_curent)
instruciune
Prima forma permite extragerea tuturor valorilor din tablou i prelucrarea lor individual, pe cnd
cea de a doua forma permite i extragerea i prelucrarea cheilor asociate.
La prelucrarea tablourilor numerice se prefera folosirea iteraiei dup index n genul:
echo "<UL>";
for ($i = 0; $i < count($culori); $i++)
echo "<LI>".$culori[$i]."</LI>";
echo "</UL>";
8.1. Utilizarea matricelor
Deseori este convenabila stocarea mai multor valori ntr-o variabila. O asemenea variabila se
numete matrice sau "tablou", iar valorile individuale se numesc elementele matricei. Aici, ambele
denumiri: "matrice" sau "tablou" reprezint acelai lucru (in varianta engleza: Array), fapt pentru care
vom folosi oricare dintre aceste denumiri.
Fiecare element al unei matrici are doua elemente importante: cheia i valoarea elementului.
Matricele pot fi create folosind doua metode principale:
1. utiliznd direct instruciunile de atribuire
2. folosind sintaxa array()
8.1.1. Crearea de matrice folosind funcia de atribuire
Pentru a crea o matrice, atribuii unui element al matricei o valoare i o cheie. De exemplu,
urmtoarea instruciunea de atribuire:
$clasa[1] = "geometrie";
creeaz un tablou denumit "$clasa" i un element cu valoarea "geometrie" identificat prin cheia "1".
Pentru a stoca n matrice o a doua valoare, putei folosi urmtoarea instruciune de atribuire:
$clasa[2] = "algebra";
Pentru a obine acces la un element al matricei, specificai numele matricei i valoarea cheii. De
exemplu, instruciunea de atribuire
$clasa_mate = $clasa[1];
Atribuie valoarea "geometrie" variabilei $clasa_mate.
Cheile folosite pentru identificarea elementelor unei matrice nu trebuie s fie obligatoriu numere
consecutive; nici mcar nu trebuie s fie numere. De exemplu, iat instruciuni de atribuire care creeaz
o matrice ce stocheaz preferine n materie de fructe:
$preferinte[Nelu] = "ciree";
$preferinte[Radu] = "mere";
$preferinte[Gabi] = "pere";
8.1.2. Crearea de matrice folosind sintaxa array()
Dincolo de utilizarea instruciunilor de atribuire, cealalt modalitate principala de creare a unui
tablou PHP consta n utilizarea funciei array(). Iat un exemplu simplu, care creeaz un tablou avnd
drept chei valori ntregi consecutive:
$limbaje = array("Perl", "PHP", "Python");
Deoarece valoarea cheilor nu a fost specificata, acestea vor fi automat trecute de program ca
numere ntregi consecutive, ncepnd de la "0" (prima cheie va avea valoarea '0', a doua cheie va avea
valoarea '1', ...)
Aceasta instruciune creeaz o matrice care conine urmtoarele asocieri:

227

0 => Perl
1 => PHP
2 => Python
Dacdorii s asociai unei valori o anumita cheie, putei folosi operatorul =>, astfel:
$limbaje = array(10=>"Perl", "PHP", "Python");
Aceasta instruciune creeaz urmtoarea matrice:
10 => Perl
11 => PHP
12 => Python
Ca i n cazul utilizrii unei instruciuni de atribuire pentru crearea unei matrice valorile cheilor nu
trebuie s fie consecutive i nici mcar ntregi:
$limbaje = array("PHP"=>"Ridicat", "Python"=>"Mediu", "Perl"=>"Redus");
Aceasta instruciune creeaz urmtoarea matrice:
PHP => Ridicat
Python => Mediu
Perl => Redus
8.2. Matrici multi-dimensionale
Este posibil ca un element al matricei s fie de asemenea o matrice. n acest caz avem de-a face
cu o matrice multi-dimensional.
Sa luam un exemplu practic :
<?php
$multiDimArray[firstLine] = array(1=>10, 2=>20, "a"=>"alpha");
$multiDimArray["nextLine"] = array(1=>20, 2=>40, "b"=>"beta");
echo "<br />".$multiDimArray["firstLine"][1];
echo "<br />".$multiDimArray["nextLine"][1];
echo "<br />".$multiDimArray["firstLine"][2];
echo "<br />".$multiDimArray["firstLine"]["a"];
echo "<br />".$multiDimArray["nextLine"]["b"];
?>
Sau putem scrie acelai script i astfel (rezultatul e acelai) :
<?php
$multiDimArray=array("firstLine"=>array(1=>10,2=>20,"a"=>"alpha"),"nextLine"=>array(1=>20,
2=>40, "b"=>"beta"));
echo "<br />".$multiDimArray["firstLine"][1];
echo "<br />".$multiDimArray["nextLine"][1];
echo "<br />".$multiDimArray["firstLine"][2];
echo "<br />".$multiDimArray["firstLine"]["a"];
echo "<br />".$multiDimArray["nextLine"]["b"];
?>
Rezultatul afiat va fi urmtorul :
10
20
20
alpha
beta
In exemplul de mai sus am declarat un array cu 2 linii i 3 coloane. Prima linie este identificata de
array-ul cu numele "fisrtLine", iar ce-a de-a doua linie este identificata de "nextLine".
Observai de asemenea folosirea n funcia "echo" a operatorului de concatenare "." mpreun cu
"<br />" (care este un element din XHTML), pentru ca la afiarea n browser fiecare rezultat al funciei
"echo" s fie trecut pe o linie noua. n caz contrar rezultatele ar fi fost pe aceeai linie : 10 20 20 alfa
beta
8.3. Accesul la datele unui tablou
Cnd ai stocat date ntr-un tablou, putei obine acces la valoarea unui element al tabloului sau i
putei modifica valoarea prin intermediul cheii asociate elementului.
De exemplu, s presupunem ca folosii urmtoarele instruciuni pentru a crea un tablou:
$x = array(1=>10, 2=>100, 3=>1000);
Putei obine acces la valoarea asociata cheii 2 prin intermediul unei instruciuni ca aceasta:
$y = 3*$x[2];
Similar, putei modifica valoarea asociata cheii 3 prin intermediul unei instruciuni ca aceasta:

228

$x[3] = 101;
8.4. Parcurgerea iterativa a unui tablou
Uneori, n loc de a obine accesul la un singur element al unui tablou sau de a-l modifica, dorii s
obinei accesul la mai multe elemente ale tabloului. De exemplu, s presupunem ca dorii s determinai
dacn tablou exista o anumita cheie sau valoare. Sau s presupunem ca tabloul reprezint preturi i
dorii s micorai fiecare valoare cu 10 procente. Operaii de acest gen implica parcurgerea iterativa a
tabloului sau, altfel spus, accesul la fiecare element al tabloului.
Un tablou ale crui chei sunt valori ntregi consecutive se numete "tablou secvenial".
n general, valoarea cea mai mica a unei chei dintr-un tablou secvenial este zero; totui, putei
crea un tablou secvenial folosind valoarea 1 sau orice alta valoare ntreaga ca valoare minima a cheii.
n cazul n care cunoatei valoarea minima a cheii unui tablou secvenial, putei parcurge iterativ
tabloul folosind o bucla for. Pentru aceasta, iniializai variabila de bucla la valoarea cea mai redusa a
cheii. Folosii funcia count() pentru a forma expresia de test (condiia) a buclei. Funcia count()
returneaz numrul elementelor dintr-un tablou.
Iat un exemplu simplu
<?php
$limbaje = array(0=>"Perl", 1=>"PHP", 2 =>"Python");
$limita = count($limbaje);
for ($i = 0; $i < $limita; $i++) {
echo "<br />$i => $limbaje[$i]";
}
?>
Prima variabila $limbaje creeaz tabloul.
Cea de-a doua variabila $limita folosete instruciunea count() pentru a obine numrul
elementelor din tablou.
Instruciunea for folosete variabila bucla $i pentru a parcurge iterativ (element cu element)
tabloul; corpul instruciunii include o instruciune echo care afieaz cheia i valoarea fiecrui element din
tablou.
Datele de ieire vor fi astfel:
0 => Perl
1 => PHP
2 => Python
Sa ne concentram asupra problemei de a determina dacun tablou conine o anumita valoare.
Iat un exemplu:
<?php
$limbaje = array(0=>"Perl", 1=>"PHP", 2 =>"Python");
$cauta = PHP; // se cauta n tabloul $limbaje valoarea $cauta
$limita = count($limbaje);
for ($i = 0; $i < $limita; $i++) {
echo "<br />Determinarea unei identitati cu $limbaje[$i]";
if ($cauta == $limbaje[$i]) {
echo "<br />$cauta este un limbaj excelent.";
}
}
?>
Prima variabila $limbaje creeaz tabloul n care se va cauta.
Cea de-a doua instruciune atribuie valoarea "PHP" variabilei $cauta; (n exemplu, se cauta n
tablou valoarea stocata n variabila $cauta).
Dup comentariu (care ncepe cu //), urmtoarea instruciune obine numrul elementelor din
tablou i stocheaz aceasta valoare n variabila $limita.
Instruciunea for funcioneaz ca mai nainte; de data aceasta nsa, corpul sau conine alte
instruciuni i se executa o alta operaie. O instruciune echo afieaz valoarea fiecrui element al
tabloului pe msur ce iteraia (parcurgerea tabloului) avanseaz. Instruciunea if testeaz fiecare
element i afieaz un mesaj dacvaloarea elementului este una i aceeai cu valoarea variabilei $cauta.
Iat rezultatul rulrii exemplului:
Determinarea unei identitati cu Perl
Determinarea unei identiti cu PHP
PHP este un limbaj excelent.
Determinarea unei identiti cu Python

229

8.6. Instruciunea break


Observai ca iteraia continua chiar i dup gsirea valorii cutate.
Cnd se cauta ntr-un tablou, execuia cutrii poate fi oprita dup gsirea elementului dorit;
continuarea iteraiei n tablou nu face dect s iroseasc resursele calculatorului, fr a afecta rezultatele
operaiei.
Pentru a opri execuia unei iteraii, putei folosi instruciunea break, care determina ncheierea
imediata a buclei care o conine.
Iat cum se poate revizui exemplul anterior, astfel nct s includ o instruciune break:
<?php
$limbaje = array(0=>"Perl", 1=>"PHP", 2 =>"Python");
$cauta = PHP; // se cauta n tabloul $limbaje valoarea $cauta
$limita = count($limbaje);
for ($i = 0; $i < $limita; $i++) {
echo "<br />Determinarea unei identiti cu $limbaje[$i]";
if ($cauta == $limbaje[$i]) {
echo "<br />$cauta este un limbaj excelent.";
break;
}
}
?>
Acum, dup stabilirea unei identiti, instruciunea break provoac sistarea buclei for.
Iat datele de ieire rezultate, care acum omit examinarea inutila a elementului tabloului asociat
cu limbajul "Python":
Determinarea unei identiti cu Perl
Determinarea unei identiti cu PHP
PHP este un limbaj excelent.
8.7. Instruciunea continue
O instruciune corelata cu instruciunea break este continue.
Instruciunea continue oprete secven curenta a buclei, determinnd evaluarea imediata a
expresiilor de incrementare i de test.
Ca un exemplu, s presupunem ca dorii s cutai n tabloul $limbaje pentru a determina
numrul limbajelor care au nume scurte, adic nume alctuite din maximum 4 caractere. Iat un exemplu
care executa aceasta prelucrare a datelor:
<?php
$limbaje = array(0=>"Perl", 1=>"PHP", 2 =>"Python");
$scurt = 0;
$limita = count($limbaje);
for ($i = 0; $i < $limita; $i++) {
$n = strlen($limbaje[$i]);
echo "<br />$limbaje[$i] are $n caractere lungime";
if ($n > 4) continue;
$scurt++;
}
echo "<br />Au fost gsite $scurt limbaje cu nume scurte.";
?>
O instruciune de atribuire stabilete valoarea iniial a variabilei $scurt la zero, folosita pentru a
numra numele scurte gsite.
Instruciunea for se aseamn celor folosite anterior. Corpul acestei instruciuni difer, desigur,
de cele folosite anterior. Valoarea variabilei $n este stabilita ca fiind egala cu numrul caracterelor care
compun numele limbajului, folosind funcia strlen(), care calculeaz lungimea unui sir.
Dacinstruciunea if stabilete ca elementul curent al tabloului face referire la un limbaj cu nume
lung, se executa instruciunea continue.
Instruciunea continue determina trecerea iteraiei la urmtorul element din tablou, fr a mai executa
expresia "$scurt++"; dacnu au mai rmas elemente n tablou, bucla for i ncheie execuia.
La finalizarea iteraiei, o instruciune echo afieaz numrul numelor scurte de limbaje gsite n
tablou. Iat rezultatul:
Perl are 4 caractere lungime
PHP are 3 caractere lungime
Python are 6 caractere lungime

230

Au fost gsite 2 limbaje cu nume scurte.


8.8. Instruciunea return permite terminarea forat a funciei sau programului curent. Ea
poate fi folosita n instruciunile for, foreach, while sau do..while unde, prin terminarea scriptului, termina
n mod evident i bucla curenta. Dacse dorete generarea unui mesaj n pagina nainte de ncheierea
scriptului, n loc de return se pot folosi funciile exit(mesaj) sau die(mesaj) - die fiind un alias al funciei
exit. Exemplu - n exemplul anterior, la generarea lui 0 se termina forat pagina:
for ($i=1; $i <= 20; $i++)
{
$a = rnd(0,50);
if ($a == 0)
{
echo "Eroare: S-a generat 0.";
return;
}
/* alternativ se poate folosi secven
if ($a == 0)
die("Eroare: S-a generat 0.");
*/
echo "Pasul $i: 1000 / $a = ".(1000/$a)."<BR>";
}
echo "Generare terminata !";
8.9. Lucrul cu funcii lista
n afara de modalitile de parcurgere iterativa a tablourilor, PHP ofer numeroase funcii care va
permit traversarea tablourilor, deplasndu-va nainte sau napoi prin elementele acestuia.
Prima dintre aceste funcii este current(), care returneaz valoarea curenta a tabloului. Funcia
current() folosete un pointer intern de tablou, pe care PHP l creeaz pentru fiecare tablou. (Cnd creai
un tablou, pointerul intern de tablou este configurat astfel nct s fac referire la primul element al
tabloului).
Funciile next() i prev() modifica pointerul intern al tabloului i se pot folosi alturi de funcia
current() pentru a parcurge un tablou.
Funcia next(), aa cum i arata i numele, modifica pointerul intern al tabloului astfel nct acesta
s fac referire la urmtorul element, n timp ce funcia prev() modifica pointerul intern al tabloului astfel
nct acesta s fac referire la elementul anterior.
Iat un exemplu care prezint modul de operare al funciilor menionate:
<?php
$limbaje = array(10=>"Perl", 20=>"PHP", 21=>"Python");
$curent = current($limbaje);
echo "<br />funcia current() a returnat $curent";
$urmator = next($limbaje);
echo "<br />funcia next() a returnat $urmator";
$urmator = next($limbaje);
echo "<br />funcia next() a returnat $urmator";
$anterior = prev($limbaje);
echo "<br />funcia prev() a returnat $anterior";
?>
Iat datele de ieire ale exemplului:
funcia current() a returnat Perl
funcia next() a returnat PHP
funcia next() a returnat Python
funcia prev() a returnat PHP
Observai modul n care sunt utilizate funciile prev() i next() pentru deplasarea napoi, respectiv
nainte, n interiorul tabloului.
8.9.1. Funcia key()
Funcia key() este corelata cu funcia current(). Dacfuncia current() returneaz valoarea
asociata elementului curent, funcia key() returneaz cheia asociata elementului curent.
Iat un exemplu care ilustreaz modul de operare al acestei funcii:
<?php
$limbaje = array(10=>"Perl", 20=>"PHP", 21=>"Python");
$curent = current($limbaje);

231

$cheie = key($limbaje);
echo "<br />funcia current() a returnat $curent";
echo "<br />funcia key() a returnat $cheie";
?>
Iat datele de ieire ale exemplului:
funcia key() a returnat 10
8.9.2. Funcia each()
O alta funcie utila n parcurgerea tablourilor este each().
Funcia each() returneaz perechea "cheie-valoare" care se afla la poziia curenta din tabloul
specificat. Perechea "cheie-valoare" este returnata sub forma unui tablou asociativ cu patru elemente,
dup cum urmeaz:
Cheie Valoare
0 - Componenta cheie a perechii cheie-valoare curenta
1 - Componenta valoare a perechii cheie-valoare curenta
key - Componenta cheie a perechii cheie-valoare curenta
value - Componenta valoare a perechii cheie-valoare curenta
Observai ca putei folosi valoarea cheie "0" sau "key" pentru a obine accesul la componenta
cheie a perechii "cheie-valoare"; similar, putei folosi valoarea cheie "1" sau "value" pentru a obine
accesul la componenta valoare a perechii "cheie-valoare".
Pentru a nelege mai bine cum se folosete funcia each(), studiai exemplul urmtor:
<?php
$limbaje = array(10=>"Perl", 20=>"PHP", 21=>"Python");
$fiecare = each($limbaje);
$zero = $fiecare[0];
$unu = $fiecare[1];
$cheie = $fiecare['key];
$valoare = $fiecare['value];
echo "<br />zero=$zero";
echo "<br />unu=$unu";
echo "<br />cheie=$cheie";
echo "<br />valoare=$valoare";
?>
Iat datele de ieire ale exemplului:
zero=10
unu=Perl
cheie=10
valoare=Perl
8.9.3. Funcia list()
O alta funcie utila n lucrul cu tablouri este funcia list(), aceasta va permite s atribuii valori la
numeroase variabile n cadrul unei instruciuni.
Funcia list() este deseori folosita cu funcia each(), deoarece funcia list() faciliteaz accesul
separat la cheia i la valoarea returnate de funcia each().
Forma generala de utilizare a funciei list() este urmtoarea:
list($var1, $var2, .., $varn) = valoare_tablou;
Fiecare dintre variabilele specificate, de la $var1 la $varn, primete o valoare din tabloul
"valoare_tablou".
ntr-un fel, funcia list() este opusa funciei array(), deoarece funcia list() mparte un tablou ntr-
o serie de valori scalare, n timp ce funcia array() construiete un tablou dintr-o serie de valori scalare.
Iat un exemplu care ilustreaz modul de utilizare a funciei list():
<?php
$limbaje = array(10=>"Perl", 20=>"PHP", 21=>"Python");
list($cheie, $valoare) = each($limbaje);
echo "<br />cheie = $cheie, valoare = $valoare";
$urmator = next($limbaje);
echo "<br />urmtor = $urmator";
?>
Iat datele de ieire ale exemplului:
cheie = 10, valoare = Perl

232

urmtor = Python
PHP conine peste 40 de funcii pentru lucrul cu tablourile. De exemplu, funcia array_search()
faciliteaz cutarea ntr-un tablou.
Pentru informaii despre aceasta funcie i despre alte funcii utilizate n lucrul cu tablouri, vizitai
site-ulwww.php.net.
8.10. Sortarea tablourilor
Sortarea reprezint o alta operaie frecvent aplicata tablourilor. PHP furnizeaz o suita de funcii
care faciliteaz sortarea unui tablou.
De exemplu, un tablou poate fi creat dup cum urmeaz:
$limbaje = array(10=>"Perl", 20=>"PHP", 21=>"Python");
Apoi, dorii s sortai tabloul n ordine alfabetica, n funcie de numele limbajului de programare.
Pentru aceasta, pur i simplu invocai funcia sort():
sort($limbaje);
Dup sortare, coninutul tabloului apare n ordinea cum se poate vedea mai jos:
0 => PHP
1 => Perl
2 => Python
Observai ca secven de sortare sau secven de aranjare (cum este numita uneori) este
sensibila la diferena ntre majuscule i minuscule. Deoarece litera "H" mare este sortata naintea literei
"e" mic, PHP apare nainte de Python n datele de ieire sortate.
Iat un exemplu practic de folosire a funciei sort() :
<?php
$arr = array(0=>'Popescu', 1=>'Avram', 5=>'Cristian',3=>'Dan');
sort($arr);
foreach($arr as $key=>$nume) {
echo "<br />Cheie=$key Valoare=$nume";
}
?>
Rezultatul afiat este urmtorul :
Cheie=0 Valoare=Avram
Cheie=1 Valoare=Cristian
Cheie=2 Valoare=Dan
Cheie=3 Valoare=Popescu
Se observa ca instruciunea sort($arr) sorteaz matricea $arr dup cmpul valoare (ordine
alfabetica).
Observam de asemenea ca valorile cmpului cheie a fost alterata, fr s conteze valoarea sau
ordinea cheilor.
Dacdorim s sortam n ordine inversa alfabetic, folosim funcia rsort()
Iat acelai exemplu, da cu funcia rsort()
<?php
$arr = array(0=>'Popescu', 1=>'Avram', 5=>'Cristian',3=>'Dan');
rsort($arr);
foreach($arr as $key=>$nume) {
echo "<br />Cheie=$key Valoare=$nume";
}
?>
Acum rezultatul afiat este urmtorul :
Cheie=0 Valoare=Popescu
Cheie=1 Valoare=Dan
Cheie=2 Valoare=Cristian
Cheie=3 Valoare=Avram
Se observa ca i n acest caz au fost alterate valorile iniiale ale cheilor.
Pentru a sorta matricea "$arr" pstrnd corelarea iniial dintre valori i cheile corespunztoare se
folosesc funciile asort(), respectiv arsort(). .
In afara de acestea mai sunt i alte funcii utile pentru sortarea tablourilor.
Iat un tabel care prezint funciile folositoare pentru sortarea unui tablou, mpreun cu
rezultatul aplicrii fiecrei funcii.
Vom lua ca model pentru exemplificare urmtoarea matrice:
$limbaje = array(10=>"Perl", 20=>"PHP", 21=>"Python");

233

Funcie Operaia efectuata Rezultat


sort()
- Sortarea unui tablou n funcie de valoare, n ordine
alfabetica, fr s se tina cont de cheile iniiale
0 => PHP
1 => Perl
2 => Python
asort()
- Sortarea unui tablou n funcie de valoare, n ordine
alfabetica, pstrnd corelarea iniial dintre valori i cheile
corespunztoare
20 => PHP
10 => Perl
21 => Python
rsort
- Sortarea unui tablou n funcie de valoare, n ordine invers
alfabetica, fr s se tina cont de cheile iniiale
0 => Python
1 => Perl
2 => PHP
arsort
- Sortarea unui tablou n funcie de valoare, n ordine invers
alfabetica, pstrnd corelarea iniial dintre valori i cheile
corespunztoare
21 => Python
10 => Perl
20 => PHP
ksort - Sortarea unui tablou n funcie de cheie, n ordine ascendenta
10 => Perl
20 => PHP
21 => Python
krsort
- Sortarea unui tablou n funcie de cheie, n ordine
descendenta
21 => Python
20 => PHP
10 => Perl
O modalitate de a executa o cutare fr sensibilitate la diferena ntre majuscule i minuscule ar
fi utilizarea funciei natcasesort(), care sorteaz un tablou folosind o ordine care nu este sensibila la
diferena ntre majuscule i minuscule.
O alta modalitate consta n a utiliza funcia usort() sau una dintre funciile sale conexe, n spe
uksort() i uasort().
Funcia usort() sorteaz valorile din tablou i returneaz un tablou secvenial; funcia uksort()
sorteaz cheile tabloului, iar funcia uasort() sorteaz un tablou asociativ.
De exemplu, urmtoarele instruciuni creeaz un tablou i l sorteaz ntr-o maniera insensibila la
diferena ntre majuscule i minuscule:
$limbaje = array("Perl", "PHP", "Python");
usort($limbaje, "strcmpcase");
foreach($limbaje as $key=>$nume) {
echo "<br />$key => $nume";
}
Funcia strcmpcase() este o funcie din biblioteca PHP care compara doua iruri fr a tine cont
de majuscule sau minuscule. Funcia returneaz o valoare negativa dacprimul sir este mai mic dect al
doilea, zero dacirurile sunt identice, respectiv o valoare pozitiva dacprimul sir este mai mare dect al
doilea.
Rezultatul va fi :
0 => Perl
1 => PHP
2 => Python
8.11. Transformarea irurilor n matrice i invers
PHP pune la dispoziia utilizatorilor funcii pentru conversia intre iruri i matrice. Acestea pot fi
utile n situaii n care valoarea matricelor trebuie memorate n baza de date.
Pentru a transforma un sir ntr-o matrice folosim funcia explode(). Sintaxa aceste funcii este:
$matrice = explode(" ", $sir);
In loc de spaiul dintre (" "), ca indiciu de separare, poate fi scris orice caracter; dup cum se
dorete mprirea irului.
Iat un exemplu:
<?php
$sir = "Popescu Avram Cristian Dan";
$matrice = explode(" ",$sir);
foreach($matrice as $key=>$nume) {
echo "<br />Cheie = $key Valoare = $nume";
}
?>
Acest cod va produce urmtorul rezultat:

234

Cheie = 0 Valoare = Popescu


Cheie = 1 Valoare = Avram
Cheie = 2 Valoare = Cristian
Cheie = 3 Valoare = Dan
Pentru a transforma o matrice ntr-un sir, folosim funcia implode(). Sintaxa aceste funcii este:
$sir = implode(" ", $matrice);
In loc de spaiul dintre (" "), ca semn de separare a elementelor n sir, poate fi scris orice
caracter; dup cum se dorete crearea irului.
In continuare, pentru exemplificare, folosind exemplul de mai sus, sortam matricea "$matrice"
alfabetic i apoi transferam matricea ntr-un alt sir , de aceasta data sortat (Observai folosirea
caracterelor ( \" ) n expresia echo, pentru ca la ieire rezultatul s conin ghilimele):
<?php
$matrice = array("Popescu", "Avram", "Cristian", "Dan");
sort($matrice);
$sir = implode(" - ",$matrice);
echo "<br />irul rezultat : \"$sir\"";
?>
Acest cod va produce urmtorul rezultat:
irul rezultat : "Avram - Cristian - Dan - Popescu"
PHP dispune de cteva variabile "built-in". Acestea sunt pre-populate de PHP n momentul
execuiei, deci nu trebuie definite sau iniializate. Sunt disponibile n orice poriune a codului i n orice
script PHP i pot fi folosite fr s fie nevoie de alte pregtiri. Anumite variabile (ca de exemplu $_POST)
au valori doar n anumite situaii (spre exemplu, doar atunci cnd sunt folosite formulare). Mai jos sunt
descrise pe scurt aceste variabile
$_GET Vector asociativ ce conine parametrii transmii prin URL. De exemplu,
dacpagina noastr PHP se numete test.php, un URL de genul
http://localhost/test.php?nume=Alex&varsta=12&ocupatie=elev ar popula variabila $_GET cu
urmtoarele valori:
print_r( $_GET );
/* afieaz:
Array
(
[nume] => Alex
[varsta] => 12
[ocupatie] => elev
)
*/
Numele parametrilor au rol de cheie n vectorul $_GET.
Vectorul $_GET este de asemenea populat la folosirea formularelor GET.
$_POST
Similar cu $_GET, doar ca parametrii sunt transmii prin formulare (forms) -
$_REQUEST
nglobeaz att $_GET cat i $_POST.
$_SESSION
Folosita pentru a defini date ce sunt disponibile atta timp cat utilizatorul acceseaz site-ul,
indiferent de paginile vizualizate. n mod normal o variabila este definita doar cnd un utilizator cere o
pagina. La finalul execuiei scriptului, valorile variabilelor se pierd (inclusiv variabile $_GET, $_POST, etc).
Dacsunt puse n vectorul $_SESSION, valorile pot persista i dup terminarea execuiei scripturilor.
$_SERVER
Furnizeaz informaii despre server, pagina ceruta i utilizatorul care acceseaz pagina.
print_r( $_SERVER );
$_ENV
Afieaz informaii despre mediul curent n care este instalat i ruleaz interpretorul PHP, despre
scriptul curent, etc
$_COOKIE
Folosita pentru a vedea elementele de tip Cookies de la site-ul/pagina curenta, disponibile pe
calculatorul utilizatorilor.
$_FILES
Folosita la ncrcarea fiierelor pe server (file uploads) -

235

Dei toate aceste variabile au i nume alternative, este recomandat s se foloseasc n forma n
care au fost prezentate mai sus.
8.12. Obinerea i utilizarea datelor de la o variabila de mediu
Variabilele de mediu sunt folosite pentru stocarea opiunilor i a parametrilor care personalizeaz
mediul de aplicaie. Aplicaiile pot obine accesul la valorile variabilelor de mediu i n funcie de acestea
i pot ajusta comportamentul.
De exemplu, calea de cutare a programelor MS-DOS este stocata ntr-o variabila de mediu
denumita PATH. n general, comenzile sistemelor de operare sunt folosite pentru a configura variabilele
de mediu i pentru a stabili valorile acestora. Cu toate acestea, unele aplicaii manipuleaz valorile
variabilelor de mediu.
Att serverul Web Apache, ct i serverul de aplicaie PHP folosesc variabile de mediu pentru a
prezenta informaii de stare. Unele dintre cele mai importante variabile de mediu folosite de Apache i
PHP sunt rezumate n tabelul de mai jos. Numeroase servere Web, altele dect Apache, furnizeaz o
parte din aceste variabile de mediu sau chiar pe toate.
Multe dintre aceste variabile reflecta caracteristicile cererii HTTP care a solicitat execuia PHP.
Putei vizualiza toate variabilele de mediu disponibile pentru programele PHP prin invocarea funciei
phpinfo() i vizualizarea datelor de ieire generate de aceasta.
Vizualizarea datelor unei variabile de mediu se poate face folosind variabila $_SERVER i o cheie
(intre paranteze ptrate) ce reprezint numele variabilei de mediu.
De exemplu, pentru afiarea domeniului serverului unde ruleaz scriptul
echo $_SERVER['SERVER_NAME'];

Variabila de mediu Descriere
CONTENT_LENGTH - Lungimea, n octei, a corpului cererii.
CONTENT_TYPE - Tipul MIME al datelor din corpul cererii.
DOCUMENT_ROOT
- Calea care constituie rdcina arborelui catalogului cu documente al
serverului Web.
GATEWAZ_INTERFACE
- Returneaz versiunea protocolului CGI (Common Gateway Interface)
folosit de serverul Web.
HTTP_ACCEPT - Coninutul antetului HTTP Accept.
HTTP_ACCEPT_CHARSET
- Coninutul antetului HTTP Accept-Charset:, care specifica seturile de
caractere nelese de client.
HTTP_ACCEPT_ENCODING
- Coninutul antetului HTTP Accept-Encoding:, care specifica tipurile de
coninuturi nelese de client.
HTTP_ACCEPT_LANGUAGE
- Coninutul antetului HTTP Accept-Language:, care specifica limbajele
preferate de client.
HTTP_CONNECTION
- Coninutul antetului HTTP Connection:, care indica opiunile solicitate
de client.
HTTP_HOST
- Coninutul antetului HTTP Host:, care indica numele de gazda, folosit
de client la prezentarea cererii.
HTTP_REFERER - Adresa URL a paginii Web care a trimis clientul la pagina curenta.
HTTP_USER_AGENT
- Coninutul antetului HTTP user-Agent, care indica tipul i versiunea
browser-ului folosit.
PATH - Calea de execuie asociata cu mediul serverului.
QUERY_STRING - irul de interogare, dacexista, prin care a fost accesata pagina.
REMOTE_ADDR - Adresa IP a clientului (vizitatorului).
REMOTE_HOST - Numele de gazda al clientului.
REMOTE_PORT - Adresa portului clientului de unde a pornit cererea.
REQUEST_METHOD
- Metoda de cerere HTTP folosita; de exemplu, GET, POST, PUT sau
HEAD.
REQUEST_URI
- URI folosit pentru accesul la pagina curenta. URI este alctuit dintr-un
URL i un sir opional de interogare.
SCRIPT_FILENAME - Numele de cale absolut al scriptului curent.

236

SCRIPT_NAME - Adresa URL a scriptului curent.


SERVER_ADMIN - Adresa de e-mail a administratorului serverului Web.
SERVER_HOST - Numele de gazda asociat serverului Web care prelucreaz cererea.
SERVER_PORT - Portul folosit de serverul Web pentru comunicaii.
SERVER_PROTOCOL
- Numele i versiunea protocolului prin intermediul cruia s-a executat
cererea.
SERVER_SIGNATURE
- irul care identifica versiunea serverului Web i numele de gazda folosit
pentru prelucrarea cererii.
SERVER_SOFTWARE - irul care identifica programul server Web i versiunea acestuia.
Putei obine accesul la variabila de mediu folosind variabila $_SERVER care este de fapt un Array
n care cheile elementelor sunt numele variabilelor de mediu
De exemplu, urmtoarea instruciune echo trimite browserului adresa IP a clientului
(vizitatorului):
<?php
$ip = $_SERVER['REMOTE_ADDR'];
echo "Adresa dv. IP este $ip";
?>
Afiarea sau nu a acestor variabile globale depinde de permisiunile fcute la configurarea
serverului PHP i de datele transmise.
8.13. Depanarea unui script
Uneori, n locul datelor de ieire ale scriptului dumneavoastr, putei vedea unul din urmtoarele:
Textul scriptului, n loc de datele de ieire ale acestuia
caseta de dialog, prin care suntei ntrebat dacdorii s descrcai fiierul care conine scriptul
Un mesaj n care se spune ca scriptul nu exista
Un mesaj n care se spune ca browserul dumneavoastr Web nu are permisiunea de a obine
accesul la script
Un mesaj n care se spune ca scriptul dumneavoastr conine o eroare
La vizualizarea rezultatelor unui script PHP se pot produce numeroase erori, chiar dacscriptul n
sine este corect.
Dacvedei textul scriptului dumneavoastr sau o caseta de dialog prin care suntei ntrebat
dacdorii s descrcai fiierul care conine scriptul, este posibil ca extensia fiierului script s fie
incorecta sau ca serverul PHP s nu funcioneze. Dei fiierele script PHP trebuie s aib, n general,
extensia .php, este posibil (dar mai rar) ca un administrator de sistem s configureze un server PHP astfel
nct acesta s impun o alta extensie de fiier. Astfel, dacscriptul dumneavoastr eueaz din unul
dintre aceste doua motive, luai legtura cu administratorul dumneavoastr de sistem.
Dacvedei un mesaj n care se spune ca scriptul nu exista, este posibil ca dumneavoastr s fi
tastat incorect adresa URL. Verificai dacai tastat corect adresa URL identificata de administratorul
dumneavoastr de sistem, precum i dacai ataat corect la aceasta numele fiierului care conine
scriptul, folosind un slash numai dacadresa URL identificata de administratorul dumneavoastr de sistem
nu se ncheie cu acest caracter.
Dacvedei un mesaj n care se arata ca browserul dumneavoastr Web nu are permisiunea de a
obine accesul la script, poate ca este necesar s modificai permisiunile fiierului script. Pentru a afla
cum trebuie procedat, consultai-va cu administratorul de sistem.
Dacvedei un mesaj n care se spune ca scriptul dumneavoastr conine o eroare, verificai
dacnu a aprut vreuna din urmtoarele probleme:
eroare de tastare, cum ar fi scrierea greit a cuvntului echo
eroare de punctuaie, cum ar fi paranteze, ghilimele sau punct i virgula, lipsa sau inserate greit
Neincluderea sau includerea eronata a liniilor de delimitare a scriptului, n spe <?php i ?>
Un marcaj de comentariu ( / / ) care lipsete sau care a fost introdus greit
De exemplu, iat un script care conine un tip de eroare frecvent ntlnit. Putei identifica eroarea?
<?php
// Acest script conine o eroare de sintaxa
echo "Salut, World Wide Web!;
?>
Din script lipsete caracterul ghilimele duble de nchidere, care trebuie s delimiteze expresia de
tip text. Dacncercai s executai acest script, putei vedea doar o pagina goala sau o eroare similara
celei prezentate n continuare.

237

Parse error. Parse error n /home/bmccarty/public_html/php/module-01/syntax-error.php On line


7
Mesajul de eroare ncearc s va indice sursa erorii, indicnd numrul liniei la care s-a produs
eroarea. Totui, remarcai ca mesajul va ndruma spre linia 7 a unui script care conine numai 4 linii. Din
moment ce ghilimelele duble de nchidere lipsesc, serverul PHP cauta dincolo de sfritul scriptului pentru
a gsi ghilimelele duble respective. Ca atare, serverul PHP este oarecum derutat cu privire la sursa erorii.
Morala este aceea ca nu putei conta n totalitate pe serverul PHP pentru a determina locaia
erorii; folosii numrul de linie furnizat de server numai ca ndrumar pentru a depista locaia probabila a
erorii.
8.14. Tratarea erorilor
Modulul PHP poate fi configurat astfel nct s afieze erorile ntlnite n codul PHP. Acest lucru
poate fi foarte util n cazul depanrii programelor. Pentru a activa afiarea erorilor exista doua metode:
- modificarea parametrului display_errors din fiierul de configurare "php.ini"
- folosirea funciei ini_set(display_errors);
In cazul primei metode trebuie s avem drepturi de administrator pentru a modifica fiierul
php.ini. Nu se recomanda setarea parametrului display_errors la valoarea 1(TRUE) n cazul site-urilor de
producie; mesajele de eroare afiate nu sunt folositoare utilizatorului. Pe de alta parte aceasta ar
contribui la mrirea riscului unui atac.
A doua metoda consta n folosirea funciei ini_set, care permite unui script s redefineasc
temporar un parametru din fiierul de configurare php.ini.
Consideram un exemplu de cod n care intenionat ncercm s citim variabile care nu exista:
<?php
ini_set('display_errors',1);
echo "Valoarea transmisa este ".$var;
?>
In exemplul de mai sus dacvariabila cu nume: "var" nu exista PHP va afia un mesaj de eroare
de genul:
Notice: Undefined variabile: var
Putem determina tipurile de erori pe care le semnaleaz PHP folosind funcia:
error_reporting(). Aceasta preia o constanta care specifica nivelul la care se afieaz erorile.
error_reporting(E_ALL) - semnaleaz toate tipurile de erori
error_reporting(E_ALL & ~E_NOTICE) - semnaleaz toate erorile n afara de anunuri
error_reporting(0) - dezactiveaz acesta caracteristica.
Exemplu :
<?php
ini_set('display_errors',1);
error_reporting(E_ALL & ~E_NOTICE);
echo "Valoarea transmisa este ".$_GET['orase'];
?>
9. Crearea aplicaiilor WEB. Crearea formularelor cu memorie
9.1. Operaii comune cu indicatori de timp
Limbajul PHP ofer soluii simple (dar puternice) pentru lucrul cu data i timpul. n versiunile mai
noi (dup 5.1) sunt introduse faciliti avansate cum ar fi DST (Daylight Saving Time), Timezones, Date
Intervals, s.a. nainte de acestea ns lucrul cu timpul se realiza folosind Unix timestamp.
Conceptul de Unix timestamp desemneaz numrul de secunde scurse de la 1 ianuarie 1970
(cnd se considera ca a nceput era Unix).
Unix Timestamp-ul curent: 1272599166
Fiind vorba de un numr pozitiv ce are mereu aceeai referina, este uor s se realizeze operaii
cum ar fi scderea, adunarea sau compararea a doua date reprezentate printr-un Unix timestamp.
Mai jos sunt cteva aplicaii menite s evidenieze cat de uor se pot manipula date i ore n PHP.
<?php
// data curenta
print date( 'd.m.Y H.i.s' ); // 30.04.2010 06.46.06
// data n format Unix (UNIX timestamp)
print time(); // 1272599166
// alegerea unui fus orar
date_default_timezone_set( 'Europe/Bucharest' );
// parsarea unei date
print strtotime("now");

238

print strtotime('1st January 2004'); //1072915200


?>
9.2. Trimitere date la o adresa de e-mail
Este util s avem pe o pagina din site un formular prin care vizitatorii s poat trimite mesaje la o
adresa de e-mail.
Am putea lsa pe pagina doar adresa de e-mail la care vizitatorii s ne poat contacta, dar
aceasta metoda (comoda pt. webmaster) nu este indicata. n primul rnd din cauza programelor bot care
circula pe net i colecteaz adresele de e-mail de pe site-uri pentru ca mai trziu s transmit mail-uri
spam. n al doilea rnd este mai simplu i mai rapid pentru vizitator s trimit mesajul direct de pe site.
Un mod simplu de utilizare a limbajului PHP pentru a expedia la o adresa de e-mail date sub
forma de text, este preluarea datelor de la un formular HTML.
Pentru a putea expedia datele la adresa de mail, scripturile PHP trebuie s fie capabile de a
obine accesul la serviciile SMTP (Simple Mail Transfer Protocol).
Dacfolosii serviciile oferite de un "web hosting", majoritatea au implementate aceste funcii.
Dacfolosii propriul sistem pentru gzduirea site-ului, sau pentru teste, este nevoie s avei
instalat i un server SMTP, acesta preia datele prelucrate de modulul PHP i le trimite la adresa de e-mail.
9.2.1. Expedierea mesajelor de e-mail
Configuraia PHP standard accepta expedierea mesajelor de e-mail prin intermediul SMTP
(abreviere de la Simple Mail Transfer Protocol). Acesta este protocolul standard folosit pentru transferul
mesajelor de e-mail, prin intermediul Internetului.
Mesajele de e-mail sunt alctuite din doua pri: o serie de antete de mesaj i un corp.
Antetele de mesaj indica adresa destinatarului i subiectul mail-ului, precum i alte informaii.
Corpul conine mesajul n sine.
Pentru a trimite datele la o adresa de e-mail, se folosete funcia mail(), care preia 3 argumente
principale, avnd urmtoarea forma:
mail($to, $subject, $message)
Unde, n ordinea argumentelor:
primul argument, aici variabila "$to", va conine adresa de e-mail a destinatarului (unde va fi
trimis mesajul)
al doilea argument, aici variabila "$subject", va conine subiect-ul mail-ului
al treilea argument, aici variabila "$message" va conine mesajul
Funcia "mail()" poate conine i alte adrese de e-mail opionale, astfel un al patrulea argument
poate fi "From", care indica adresa de e-mail a expeditorului (cel care trimite mesajul).
Funcia ar avea astfel urmtoarea forma:
mail($to, $subject, $message, $from )
Variabila "$from" trebuie s conin n sir cuvntul "From: " naintea adresei de e-mail, adic aa:
$from="From: adresa@de.mail";
Dacargumentul "$from" nu este specificat, serverul va transmite automat aceasta adresa (in
funcie de cum este configurat). Astfel, cnd primim mail-ul, pe lng subiect vom avea adresa
expeditorului, i dacnu este specificata, putem vedea ceva de genul "nobody@localhost.ro"
Datele pentru aceste argumente, n special al treilea (aici "$message"), pot fi preluate dintr-un
formular HTML, folosind funcia "$_POST".
Funcia "mail()" returneaz TRUE dacmail-ul a fost acceptat pentru expediere, n caz contrar
returneaz FALSE.
Iat un script PHP simplu care va trimite mesaje la o adresa de e-mail:
<?php
// Verifica dacau fost trimise datele de la formular
if (isset($_POST['email']) && isset($_POST['mesaj'])) {
$to = 'adresa_ta@de.mail'; // Adresa unde va fi trimis mesajul
$subiect = 'Mesaj de pe site';
$mesaj = $_POST['mesaj'];
$from = 'From: '. $_POST['email'];
// PHP trimite datele la serverul de e-mail
if (mail($to, $subiect, $mesaj, $from)) {
echo 'Mesajul a fost trimis cu succes.';
}
else {
echo 'Eroare, mesajul nu a putut fi expediat.';
}

239

}
?>
nti se verifica (cu isset()) dacau fost trimise date de la formularul HTML. Fr aceasta
verificare, s-ar expedia mesaje de e-mail ori de cate ori cineva (intenionat) acceseaz direct
fiierul php cu scriptul.
Variabilele "$mesaj" i "$from" preiau datele adugate de vizitator n cmpurile unui formular
HTML care au atributele 'name="mesaj"' i 'name="email"'.
Dacfuncia "mail()" este executata cu succes, va apare mesajul "Mesajul a fost trimis cu
succes.", n caz contrar va afia "Eroare, mesajul nu a putut fi expediat.".
Un model de cod HTML pentru crearea formularului care trimite datele la scriptul php de mai sus
este urmtorul:
<h3>Trimiteti mesaj</h3>
<form name="form" method="post" action="nume_script.php">
<label>E-mail : </label>
<input type="text" name="email" size="20" /> <br />
<label>Scrie mesajul : </label> <br />
<textarea name="mesaj" cols="35" rows="6"></textarea> <br />
<input type="submit" value="Trimite" />
</form>
"nume_script.php" este calea i numele fiierului n care se afla scriptul php de mai sus.

In browser va apare:
Tri mi tei mesaj
Top of Form
E-mail :
Scrie mesajul :

Trimite

Bottom of Form
9.3. Headere
Headerele sunt elemente prin care browser-ul i serverul web comunica n fundal pentru a afia o
pagina web n bune condiii.
Exista 2 tipuri de headere: cele emise de browser (headere de request) i cele emise de server
(headere de rspuns).
9.3.1. Request headers
De fiecare data cnd un utilizator acceseaz o pagina web, browserul trimite ctre server cantiti
mici de date, sub forma request headers (sau, ntr-o traducere
destul de rar folosita la noi, antetelor de cerere). Aceste antete cuprind detalii despre pagina care a fost
solicitata, modul de transfer a ei, precum i informaii despre capabilitile browser-ului.
De exemplu, cnd ai accesat aceasta pagina, browser-ul dumneavoastr a trimis ctre server
urmtoarele headere de request:
GET /http/ HTTP/1.1
Host: domeniu.ro
Connection: close
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ro; rv:1.9.1) Gecko/20090624 Firefox/3.5
Accept-Charset: ISO-8859-1,UTF-8;q=0.7,*;q=0.7
Cache-Control: no
Accept-Language: de,en;q=0.7,en-us;q=0.3
Headerele sunt trimise de browser n mod implicit, utilizatorul nu trebuie s fac ceva anume
pentru asta. De asemenea, headerele nu pot fi (uor) modificate nainte de a fi trimise.
9.3.2. Response headers

240

In rspuns la request headers primite de la browsere, serverele web trimit napoi 2 tipuri de
informaie: headere de rspuns (response headers) coninutul efectiv al paginii solicitate (coninut ce
poate fi construit/modificat prin intermediul PHP)
Headerele de rspuns conin informaii despre pagina solicitata (cum ar fi: dacexista sau nu,
dimensiunea ei, tipul de coninut, etc).
Headerele reprezint prima parte, separate de coninut prin 2 linii goale (reprezentate prin
caracterele \r\n\r\n). Din acest rspuns, browserul "tie" s interpreteze headerele i s afieze n pagina
doar coninutul, astfel ca antetele nu vor fi niciodat vizibile utilizatorului final.
La fel ca n cazul antetelor de cerere, cele de rspuns sunt trimise n mod automat de ctre
server, nainte de a trimite coninutul i nu este nevoie ca programatorul s intervin. Exista ns situaii
cnd trebuie ca anumite antete s fie modificate. Acest lucru este posibil cu ajutorul limbajului PHP.
PHP ofer posibilitatea modificrii headerelor de rspuns prin intermediul funciei header.
Trimiterea unui semnal (Not-Found, Status OK, etc) header( 'HTTP/1.0 404 Not Found' ); // spune
browserului s afieze un mesaj de eroare header( 'HTTP/1.0 200 OK' ); // anun ca pagina exista i va
fi trimisa ctre browser
redirecionare - "spune" browserului s "mearg" la alta adresa
header( 'Location: http:// www.domeniu.ro/' );
specificarea tipului paginii ce se va afia - n urma acestor apeluri, browser-ul va atepta alte
tipuri de coninut dect pagini HTMLheader( 'Content-type: application/pdf' );
// browserul va atepta s fie trimis un PDF
header( 'Content-type: text/css' ); // fiier css
10. Cookies
10.1. Accesul la variabilele cookie
Valorile majoritii variabilelor dispar atunci cnd scriptul PHP care le conine i ncheie execuia.
Spre deosebire de acestea, valorile variabilelor cookie se pot pstra un timp indefinit. Pentru ca valorile
lor s se poat pstra, browserul utilizatorului stocheaz variabilele cookie n unitatea de hard-disc a
utilizatorului.
Majoritatea navigatoarelor de Web au posibilitatea s activeze/dezactiveze cookie-urile. Trebuie
s inei cont de acest lucru cnd dorii s folosii cookie n scripturile dv., totui, conform statisticilor, n
jur de 1% dintre utilizatori au opiunea cookie dezactivata.
PHP pune la dispoziia utilizatorilor funcii pentru transmiterea cookie-urilor de la server la
browser, i modaliti de citire a cookie-urilor.
Pentru a citi cooki-urile putei utiliza variabila PHP de tip tablou $_COOKIE sau
$_HTTP_COOKIE_VARS, acestea conin numele i valoarea fiecrei variabile cookie curenta. Dacdorii s
obinei acces la acest tablou, putei folosi un program ca urmtorul:
foreach($_COOKIE as $nume => $valoare)
echo "<br /> $nume => $valoare";
$_COOKIE['numeCookie'] este o variabila super-globala, putnd fi accesata i n funcii fr a mai
specifica "global".
10.2. Crearea unei variabile cookie
Un lucru important de reinut este faptul ca cookie-urile trebuie s fie transmise la browser
naintea oricrei alte informaii.
Pentru a evita problemele, asigurai-v ca un script PHP care stabilete o valoare a unei variabile
cookie este plasat n partea superioara a fiierului, fr caractere de tip spaiu alb care sa-l precead. De
asemenea, stabilii valoarea variabilei cookie nainte de a executa o instruciune 'echo' sau o alta
instruciune PHP care trimite browserului date de ieire.
Pentru a crea o variabila cookie, folosii funcia setcookie(), care are urmtoarea forma:
setcookie(numeCookie, valoare, expirare)
Argumentul 'numeCookie' specifica numele variabilei cookie, iar argumentul 'valoare'
specifica valoarea variabilei.
Valoarea variabilei cookie este automat transmisa "urlencode" i cnd este primita e automat
decodata.
Argumentul 'expirare' indica momentul expirrii variabilei cookie; dup ora specificata,
variabila cookie nu mai este accesibila.
n general, este convenabil s se specifice momentul expirrii folosind funcia time(), care
returneaz intervalul de timp (exprimat n secunde) scurs de la 1 ianuarie 1970. Putei aduga o valoare
de tip decalaj (offset), care specifica intervalul de timp pe durata cruia variabila cookie trebuie s fie
accesibila.

241

Folosind aceasta funcie se pot transmite mai multe cookie-uri succesiv; protocoalele Web
limiteaz ns la maximum 20 numrul cookie-urilor ce pot fi trimise aceluiai utilizator.
De exemplu, s luam n considerare urmtoarea instruciune:
setcookie("fruct", "banana", time()+3600);
Aceasta instruciune creeaz o variabila cookie denumita 'fruct', care are valoarea 'banana'.
Variabila cookie va fi disponibila timp de o ora (3600 secunde) de la crearea sa.
Dacpreferai, putei specifica momentul expirrii folosind funcia mktime(). Aceasta funcie are
urmtoarea forma:
mktime(ore, minute, secunde, luna, zi, an)
De exemplu, urmtoarea instruciune creeaz o variabila cookie care expira la o secunda dup
miezul nopii primei zile a anului 2009:
Setcookie("fruct", "banana", mktime(0, 0, 1, 1, 1, 2009));
10.3. tergerea unei variabile cookie
Deoarece o variabila cookie are o data de expirare, aceasta va fi tears automat la un oarecare
interval de timp dup crearea sa. Totui, putei terge o variabila cookie imediat. Pentru aceasta, fixai
momentul expirrii variabilei cookie la un moment de timp n trecut.
De exemplu, pentru a terge o variabila cookie denumita 'fruct', putei folosi urmtoarea
instruciune:
setcookie("fruct", "", time()-3600);
Aceasta instruciune stabilete timpul de expirare cu o ora (3600 de secunde) n urma.
Remarcai ca valoarea variabilei cookie este exprimata sub forma unui sir vid (""); din moment ce
variabila cookie nu va mai fi disponibila, valoarea s nu mai are importanta.
10.4. Specificarea accesului la o variabila cookie i alte opiuni
Funcia setcookie() poate prelua maximum ase argumente.
Iat formatul complet al funciei setcookie():
setcookie(nume, valoare, expirare, cale, domeniu, secure)
Argumentele 'nume', 'valoare' i 'expirare' au fost descrise n seciunea precedenta.
Argumentul 'cale' va permite s specificai calea URL asociata variabilei cookie. n mod prestabilit,
variabila cookie este disponibila pentru scripturile din catalogul care conine scriptul n care a fost
configurata variabila respectiva, precum i pentru scripturile din sub-cataloagele aferente catalogului
respectiv. n particular, scripturilor din cataloagele printe ale catalogului care conine scriptul nu li se
permite accesul prestabilit la variabila cookie.
Pentru a pune variabila cookie la dispoziia scripturilor dintr-un anumit catalog i cataloagele sale,
specificai o valoare a argumentului 'cale'. De exemplu, pentru a pune variabila cookie la dispoziia
ntregului arbore de cataloage, specificai " /" ca valoare a argumentului cale; pentru a face variabila
cookie disponibila n catalogul "/test" i n sub-cataloagele sale, specificai "/test/" ca valoare a
argumentului 'cale'.
Dacnu este specificat nici un argument 'domeniu', o variabila cookie este disponibila numai
pentru scripturile din domeniul Web care a creat variabila respectiva. Argumentul 'domeniu' va permite s
specificai numele de domeniu asociat unei variabile cookie. n consecin, variabila cookie va fi
disponibila numai pentru siturile Web din cadrul domeniului specificat. De exemplu, s presupunem ca un
script din serverul Web http://www.subdomeniu.domeniu.com creeaz o variabila cookie. n mod
prestabilit, variabila cookie este disponibila numai pentru gazda respectiva. Cu toate acestea, putei face
variabila cookie disponibila pe ntreg domeniul 'subdomeniu.domeniu.com', specificnd
"subdomeniu.domeniu.com" ca valoare a argumentului 'domeniu'.
Argumentul 'secure' este o valoare ntreaga, care specifica dacvariabila cookie trebuie trimisa
prin intermediul unei conexiuni sigure (HTTPS). Specificai valoarea l pentru a mpiedica transmiterea
variabilei cookie n cazul n care conexiunea nu este sigura; pentru a permite transmiterea variabilei
cookie prin conexiuni HTTP obinuite, specificai valoarea 0.
10.5. Despre sesiuni, crearea unei sesiuni PHP
Sesiunea reprezint o modalitate prin care PHP retine informaii de la o pagina la alta.
Odat cu iniializarea unei sesiuni, utilizatorul poate pstra anumite variabile chiar dacin
continuare viziteaz i alte pagini ale site-ului. n principiu informaia se pstreaz pana la nchiderea
browser-ului, sau pana cnd utilizatorul distruge n mod intenionat sesiunea curenta.
Lucrurile se desfoar ca n felul urmtor: n momentul cnd un user s-a logat la site, PHP
atribuie acestuia un identificator unic de sesiune : SID. Acest SID este nglobat ntr-un coockie cu numele
PHPSESSID i trimis apoi ctre browserul utilizatorului. Dacbrowserul nu suporta cookie-uri sau acestea
sunt dezactivate, atunci acest SID este adugat la adresa URL. n acelai timp se creeaz pe server un

242

fiier cu numele SID. n continuare dacutilizatorul dorete s stocheze anumite informaii, acestea vor fi
practic scrise n acest fiier SID de pe server.
Sesiunile au urmtoarele avantaje:
Pot fi folosite chiar dacbrowserul utilizatorului nu suporta cookie-uri sau dacacestea sunt
dezactivate.
Permit stocarea unui volum mare de informaii, spre deosebire de cookie-uri care sunt limitate
n aceasta privin.
Sunt mai sigure n raport cu cookie-urile deoarece informaiile nu sunt transmise n mod
repetat intre client i server.
Iniializarea unei sesiuni se face cu funcia :
session_start()
Aceasta trebuie s fie printre primele linii de cod dintr-un script PHP, deoarece apelul acestei
funcii trebuie fcut nainte de trimiterii ctre browser-ul Web a vreunui cod HTML sau chiar a unui spaiu
vid.
Dacfolosim stocarea ieirii n buffer, instruciunea session_start() nu trebuie inserata neaprat la
nceputul codului.
Instruciunea session_start() nu este necesare dacin fiierul de configurare "php.ini", variabila
"session.auto_start" are valoarea TRUE.
Pentru a nelege mai bine modul de lucru cu sesiuni i funcia session_start(), folosim un
exemplu n care avem o pagina principala "a.php" unde cream o variabila cu numele "userName",
atribuindu-i valoarea "Eu", pe care o stocam ntr-o sesiune PHP, pagina conine o legtura ctre o alta
pagina "b.php", aceasta din urma va folosi funcia session_start() pentru a prelua, prin sesiune, valoarea
variabilei "user_name" din pagina "a.php", astfel putem folosi valoarea acestei variabile ntr-un script din
pagina "b.php".
Coninutul fiierului "a.php" este urmtorul:
<?php
//Fiierul a.php
session_start();
if(!isset($_SESSION['userName']))
$_SESSION['userName'] = "Eu";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
Aceasta este pagina "a.php"
<?php
echo "<br />Variabila de sesiune are valoarea: ". $_SESSION['userName'];
?>
<br />Legtura <a href="b.php">spre pagina b.php</a>
</body>
</html>
Coninutul fiierului "b.php" este urmtorul:
<?php
//Fiierul b.php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Pagina b.php</title>
</head>
<body>
Aceasta este pagina b.php
<?php
echo "<br />Variabila de sesiune are valoarea: ". $_SESSION['userName'];
?>
</body>
</html>

243

Observai ca atribuirea, respectiv citirea variabilelor se face folosind variabila super-globala :


_SESSION.
Deschiznd prima pagina, "a.php", va fi afiat urmtorul rezultat
Aceasta este pagina "a.php"
Variabila de sesiune are valoarea: Eu
Legtura spre pagina b.php
Cnd apsm click pe link-ul "spre pagina b.php", se va deschide aceasta pagina, afind
urmtorul coninut:
Aceasta este pagina "b.php"
Variabila de sesiune are valoarea: Eu
In acest exemplu se observa ca pagina "b.php" deine informaii despre variabila de sesiune
creata n pagina "a.php".
10.5.1. Manipularea variabilelor sesiunii.
In anumite momente ar putea fi util s aflam identificatorul sesiunii curente. Pentru aceasta
folosim funcia session_id(), ca n exemplul urmtor:
<?php
echo "<br /> Identificatorul sesiunii curente SID este:". session_id();
//Va afia un rezultat asemntor cu: "Identificatorul sesiunii curente SID
este:2846240682abf24a09f42664fc03bbf3"
?>
Funcia session_id() accepta un parametru. Astfel putem seta un anumit SID pentru sesiunea
curenta. n acest caz trebuie s apelam funcia session_id() nainte de funcia : session_start(), ca n
exemplul urmtor:
<?php
session_id('123abc');
session_start();
echo "<br /> Identificatorul sesiunii curente SID = ". session_id();
//Va afia rezultatul: "Identificatorul sesiunii curente SID = 123abc"
?>
Deoarece variabilele de sesiune pot fi citite de ali utilizatori neautorizai, nu este indicat s
pstrm aici informaii eseniale cum sunt parolele.
Pentru a creea un minimum de securitate putem codifica aceste informaii, folosind funciile de
codare oferite de PHP:
md5() sau crypt()
Funcia md5(sir_de_caractere) codifica irul de caractere furnizat ca parametru i returneaz
un sir de 32 charactere hexazecimale. Aceasta funcie folosete algoritmul de criptare: "RSA Data
Security, Inc. MD5 Message-Digest Algorithm".
Iat un exemplu de utilizare al acestei codificri:
<?php
$user = "Eu";
$codificat = md5($user);
echo "<br /> user codificat = $codificat";
// Va afia: "user codificat = 0a460e3d95526f05a0064154ad94a378"
?>
Consideram cazul n care avem o variabila de sesiune "$parola" care pstreaz o parola i dorim
s codificam i s transmitem aceast variabil astfel nct utilizatorii neautorizai s nu o poat folosi.
Pentru aceasta folosim funcia md5(), pentru a o cripta. Mai mult iniializm o variabila globala cu numele
"$secret", creia ii atribuim ca valoare un sir de caractere oarecare. n continuare, nainte de a introduce
parola ntr-o sesiune PHP, concatenam valorile "$secret" i "$parola" i criptam rezultatul. Astfel, chiar
daccineva reuete s decripteze variabila de sesiune, este puin probabil s poat separa irul "$secret"
creat de noi.
Este bine s pstrm acest fiier ntr-un director protejat, cum ar fi cu un nivel mai sus dect
directorul pentru pagini de Web.
Iat cum se prezint exemplul prezentat mai sus. (consideram o variabila "$passtest" care
verifica dacvaloarea acesteia este egala cu parola):
<?php
$secret = 'abcgfd43599oopjhfdxcaqq30pmnvcx';
$parola = 'mypass';
$cod = md5($secret. $parola);

244

session_start();
$_SESSION['parola'] = $cod;
// Consideram variabila "$passtest" pentru a testa dacvaloarea acesteia este egala cu parola
if (md5($secret. $passtest) == $_SESSION['parola'])
echo "Parola acceptata";
else
echo "Parola nu este valida";
?>
Astfel, dacvaloarea variabilei "$passtest", care poate fi obinut de exemplu dintr-un formular
HTML, este identica cu parola pstrat de noi, va fi afiat mesajul "Parola acceptata".
10.5.2 tergerea unei sesiuni
Pentru a putea terge o sesiune este necesar s ncepem scriptul PHP cu
instruciunea:session_start(), ca ntotdeauna cnd folosim sesiuni.
Pentru a terge toate variabilele memorate n matricea $_SESSION folosim:
unset($_SESSION);
Pentru a terge doar o variabila memorata n sesiune folosim :
unset($_SESSION['nume_variabila']);
Datele sesiunii sunt memorate n server n fiiere temporare. Pentru a terge datele sesiunii din
server folosii:
session_destroy()
Iat un exemplu care ilustreaz aceasta procedura:
<?php
// Iniializeaz datele sesiunii
session_start();
// terge tabloul $_SESSION
unset($_SESSION);
// terge datele de sesiune din server
session_destroy();
echo "<br /> Sesiunea curenta a fost nchisa";
?>
11. Funcii n PHP
Funciile sunt blocuri de cod PHP (secvene de cod) bine delimitate i identificate printr-un nume,
ce executa un set de operaii. Funciile pot fi executate de mai multe ori n cadrul unui script prin simpla
apelare a numelui lor.
11.1. Funcii predefinite
Exista funcii predefinite, specifice limbajului PHP (cum ar fi print, empty, etc) ce poi fi folosite n
orice moment, fr a fi nevoie de vreo aciune speciala; i exista funcii definite de utilizator, scrise
practic de programatori. Pentru ca acestea s poat fi folosite este nevoie s fie declarate (si
implementate).
PHP include funcii care executa operaii utile. Iat unele exemple de funcii:
abs(x) - Returneaz valoarea absoluta a lui 'x'
ceil(x) - Returneaz valoarea 'x', rotunjita la ntregul imediat superior
floor(x) - Returneaz valoarea 'x', rotunjita la ntregul imediat inferior
max(x,y,...) - Returneaz valoarea maxima a unui set de valori
min(x,y,...) - Returneaz valoarea minima a unui set de valori
pow(x,n) - Returneaz numrul 'x', ridicat la puterea specificata 'n'
strftime(f) - Returneaz data curenta, formatata conform coninutului parametrului 'f'
sqrt(x) - Returneaz rdcina ptrat a lui 'x'
n afara de acestea, PHP include multe alte funcii. Consultai site-ul www.php.net
Majoritatea funciilor necesita una sau mai multe valori de intrare, cunoscute sub numele de
argumente. De exemplu, funcia "sqrt" necesita un argument (aici este 'x') care specifica valoarea a crei
rdcina ptrat trebuie calculata.
Unele funcii, precum min i max, preiau un numr nedefinit de argumente. Alte funcii nu
necesita nici un fel de argumente. Pentru a putea folosi o funcie n mod corespunztor, trebuie s
cunoatei:
Numele funciei
Aciunea funciei i valoarea returnata de aceasta, dacexista
Numrul argumentelor preluate de funcie
Semnificaia fiecrui argument

245

Iat un exemplu simplu care folosete o funcie pentru calculul lungimii laturilor unui ptrat,
daceste cunoscuta aria ptratului:
$latura=sqrt($arie);
Reinei modul n care argumentul funciei este inclus ntre paranteze, precum i modul n care
funcia i argumentul sau sunt folosite ntr-un mod asemntor cu o valoare literala sau o variabila. Iat
un exemplu care prezint modul de utilizare a funciei "max", care preia mai multe argumente:
$punctaj_maxim=max($punctaj1, $punctaj2, $punctaj3);
Rezultatul dat variabilei "$punctaj maxim" va fi determinat de funcia "max", aceasta
determinnd valoarea cea mai mare a argumentelor din paranteza.
Observai ca fiecare argument este separat de vecinul sau printr-o virgula.
11.2. Funcii definite de utilizator
Exemplu de funcie definita de utilizator:
<?php
# funciile se declara folosind cuvntul cheie "function" urmat de numele funciei
# numele funciei trebuie s fie orice identificator valid (adic s nceap cu
# litere sau cu caracterul _ ) i s nu conin caractere speciale sau spaiu
# dup numele funciei se pun paranteze rotunde
# corpul funciei (implementarea) trebuie ncadrat n acolade
function afisLuna()
{
$luni = array( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul',
'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
echo '<select>';
for( $i = 0; $i < 12; $i++ ) {
# ntruct se cunosc nr de pai, se folosete structura repetitiva for
echo "<option>{$luni[ $i ]}</option>\n";
}
echo '</select>';
}
# mai jos vom folosi funcia pentru a afia un drop-down cu lunile anului:
echo 'Luna nceperii activitii: ';
afisLuna();
echo '<br /><br />Luna terminrii activitii: ';
afisLuna();
?>
Am scris, aadar, o singura data codul care afieaz lunile anului i l-am apelat de cate ori am
avut nevoie. Apelarea funciei se face prin specificarea numelui urmat de paranteze. Intre paranteze se
pot specifica parametrii, dup cum vom vedea mai jos. Alternativ, o funcie definita de utilizator se poate
apela folosind instruciunea call_user_func
Vom rescrie ultima parte a codului
echo 'Luna nceperii activitii: ';
call_user_func( 'afisLuna' );
echo '<br /><br />Luna terminrii activitii: ';
call_user_func( 'afisLuna' );
Instruciunea call_user_func este utila atunci cnd numele funciei este furnizat de o variabila, cu
ajutorul cruia se poate apela dinamic o funcie.
Exemplu:
<?php
# definesc 2 funcii diferite
function unu() {
print 'Azi suntem n nti!<br />';
}
function alta() {
print 'Azi e o zi obinuita<br />';
}
# declar o variabila care s aib ca valoare numele funciei
$functie = 'unu';
# variabila $functie poate s se schimbe n funcie de diferite condiii
# n cazul nostru, dacziua curenta e prima zi din luna, valoarea va fi 'unu'

246

if( date( 'd' ) == 1 ) $functie = 'unu';


else $functie = 'alta';
# la final apelez dinamic funcia data de variabila
# Interpretorul nu tie exact care funcie va fi el doar executa ce-i transmite variabila
# eventual pot face nite validri:
# - function_exists verifica dacfuncia transmisa a fost definita
# - is_callable verifica dacvariabila transmisa poate fi apelata ca funcie
if( function_exists( $functie ) && is_callable( $functie
) ) {
call_user_func( $functie );
} else {
echo "Nu pot apela funcia $functie";
}
// Rezultat (live): Azi e o zi obinuita
?>
Foarte important de tiut este faptul ca variabilele definite n afara funciilor nu sunt disponibile n
interiorul lor. Astfel, codul de mai jos nu va funciona aa cum ne ateptm:
<?php
# declar o variabila
$a = "Afara e frumos";
# definesc o funcie
function afisMesaj() {
echo $a;
}
# apelez funcia
afisMesaj(); // nu va afia nimic!!
?>
Funcia nu va afia mesajul, aa cum v-ai fi gndit la prima vedere. Aceasta pentru ca ce este
definit n afara funciei nu este recunoscut n interior. n mod similar, variabilele definite n interiorul unei
funcii se pierd i NU sunt disponibile n afara acesteia.
Exista totui o modalitate prin care variabilele definite n afara unei funcii s fie 'aduse' n
interiorul ei: folosind instruciunea global.
<?php
# declar o variabila
$a = "Afara e frumos";
# definesc o funcie
function afisMesaj() {
# folosind cuvntul 'global' ii spun interpretorului PHP ca
# vreau s folosesc o variabila din afara funciei
global $a;
echo $a;
}
# apelez funcia
afisMesaj(); // va afia Afara e frumos
?>
Dace nevoie s se foloseasc mai multe variabile globale n cadrul unei funcii, acestea se pot
specifica toate ntr-o singura instruciune global:
global $a, $b, $Vector;
11.3. De ce sunt folosite funciile?
Printre avantajele folosirii funciilor, se numra:reutilizarea codului. Spre exemplu, daceste
nevoie s se execute aceeai secven de cod n mai multe pri ale unui program sau script, pentru a nu
se rescrie codul de fiecare data, se definete o funcie care este apelata de mai multe ori,
Odat cu apariia funciilor (a subprogramelor, n general) s-a introdus i conceptul de
modularizare care presupune mprirea (spargerea) problemei ce trebuie rezolvata n probleme mai mici.
Fiecare modul problema mai mica reprezint un subprogram, implementat ntr-o funcie care contribuie la
rezultatul final.
Spre exemplu, avem o operaie (relativ) complexa: afiarea inbox-ului unui utilizator. Aceasta
problema poate fi mprit n pri mai mici/simple. Pentru fiecare parte s-ar defini cate o funcie n loc
s se scrie un singur script foarte mare, iar la final codul va arata cam n felul urmtor:

247

preluareDateAutentificare();
verificareDate();
preluareMesajeInbox();
afisareInbox();
Observam meninerea uoar a codului i nelegerea mai uoar a logicii aplicaiei sau a
scriptului
Acestea sunt urmri imediate ale primelor 2 puncte. Dacscriptul este structurat, mprit n
buci mai mici, n care aceleai secvene de cod nu se repeta atunci va fi mai uor i de neles i de
modificat sau ntreinut.
11.4. Valori returnate. Parametrii
De multe ori este nevoie ca o funcie s returneze o valoare. Majoritatea funciilor predefinite fac
lucrul aceasta; spre exemplu empty returneaz TRUE sau FALSE n funcie de starea i coninutul unei
variabile transmise ca parametru.
Si funciile definite de utilizator pot returna o valoare, cu ajutorul instruciunii return. Exemplu:
<?php
function formatareData() {
$rezultat = date( 'd-m-Y' );
return $rezultat;
}
# rezultatul returnat de funcie poate fi folosit n diferite moduri:
$azi = formatareData(); // atribuirea rezultatului
print formatareData(); // afiarea rezultatului
formatareData(); // rezultatul nu este folosit - dac funcia nu printeaz ceva
// atunci apelul nu are nici un efect vizibil
?>
De asemenea, funciile pot primi date ce pot fi folosite n interiorul lor pentru diverse prelucrri.
Aceste date de intrare sunt transmise sub forma de parametrii.
Pentru ca o funcie s poat primi parametrii, aceasta trebuie s ii declare intre parantezele
rotunde, ca n exemplul de mai jos
<?php
# funcia este declarata s primeasc 2 parametrii ce vor fi prelucrai
# funcia returneaz i o valoare, n funcie de datele de intrare
function minim($a, $b) {
if( $a < $b ) return $a;
else return $b;
}
# la apelul funciei, este obligatoriu s se transmit 2 parametrii
# parametrii pot fi orice expresie (variabile, constante, rezultatul altor funcii, etc)
print minim( 3, 4 ); // parametrii sunt 2 valori numerice
$x = 1; $y = 4;
print minim( $x, $y ); // parametrii sunt 2 variabile
$x = 4; $a = 3; $b = 5;
print minim( $x, minim( $a, $b ) ); // parametrii primului apel sunt: variabila $x
// i rezultatul unui alt apel cu 2 parametrii diferii
?>
ntruct funcia minim() returneaz o valoare, ea poate fi folosita ca i cum ar fi un numr
normal. De aceea apelul de mai sus este valid. Alte exemple valide sunt mai jos:
<?php
$a = 1 + minim( 4, 3 );
if( minim( $a, 4 ) > 5 ) { echo "If-ul este True"; }
else { echo "If-ul este False"; }
?>
O facilitate avansata oferita de limbajul PHP este folosirea valorilor predefinite pentru parametrii
funciilor. Aceasta permite ca o funcie s nu fie apelata cu toi parametrii ei, urmnd ca pentru valorile
care lipsesc s fie folosite valorile predefinite. Funcia minim() definita mai sus poate fi rescrisa n felul
urmtor:
<?php
function minim($a = 1, $b = 2) {
if( $a < $b ) return $a;

248

else return $b;


}
?>
Declararea funciei de mai sus se traduce n felul urmtor: dacfuncia minim() nu este apelata
cu toi parametrii, atunci folosete valoarea 1 pentru $a i valoarea 2 pentru $b n calculele din interiorul
funciei. n acest caz, funcia se poate apela n felul urmtor:
<?php
echo minim(); // echivalent cu echo minim(1,2);
echo minim(7); // echivalent cu echo minim(7,2);
echo minim(7,8); // apel normal cu toi parametrii
?>
12. Operaii cu fiiere i directoare
12.1. Obinerea atributelor unui fiier
Privilegiile asociate unui fiier sau unui catalog determina operaiile pe care le poate executa un
utilizator cu fiierul sau catalogul respectiv.
Pentru a aduga un fiier ntr-un director, folosind PHP, trebuie s avei permisiunea de scriere n
acel director, de asemenea, pentru a aduga date ntr-un fiier, trebuie s avei permisiunea de scriere n
fiierul respectiv.
Aceste permisiuni sunt date (configurate) de administratorul sistemului respectiv.
PHP furnizeaz numeroase funcii care va permit s obinei informaii care descriu un fiier. Tabelul
urmtor rezuma cele mai cunoscute dintre aceste funcii.
Funcii PHP pentru obinerea atributelor unui fiier
Funcie Descriere
file_exists() - Returneaz TRUE dacfiierul specificat exista, respectiv FALSE n caz contrar
fileatime() - Returneaz timpul de acces la fiier sub forma de amprenta de timp UNIX.
filectime()
- Returneaz timpul de modificare al i-nodului (structura de date care conine
informaii despre fiiere UNIX - N. T.) sub forma de amprenta de timp UNIX.
filegroup() - Returneaz identificatorul numeric al grupului care deine fiierul
filemtime()
- Returneaz momentul de timp al modificrii fiierului sub forma de amprenta de
timp UNIX
fileowner() - Returneaz identificatorul numeric de utilizator al fiierului
fileperms() - Returneaz permisiunile fiierului
filesize() - Returneaz dimensiunea fiierului, n octei
filetype()
- Returneaz tipul fiierului, n spe "fifo", "char", "dir", "block", "link", "file" sau
"unknown"
is_dir()
- Returneaz TRUE dacdirectorul specificat exista; n caz contrar, returneaz
FALSE
is_file() - Returneaz TRUE dacfiierul specificat exista; n caz contrar, returneaz FALSE
is_readable()
- Returneaz TRUE dacfiierul specificat exista i poate fi citit; n caz contrar,
returneaz FALSE
is_writable()
- Returneaz TRUE dacfiierul specificat exista i se poate scrie n acel fiier; n
caz contrar, returneaz FALSE
Funciile fileowner() i filegroup() returneaz fiecare un identificator numeric; putei converti
identificatorul numeric ntr-un sir prin invocarea funciei posix_getpwuid() cu un identificator de utilizator,
respectiv a funciei posix_getgrgid() cu un identificat de grup. Acestea returneaz informaii despre
identificatorul precizat.
Iat un exemplu n care putei vedea, i nelege mai bine, cum sunt folosite funciile prezentate
n tabelul anterior (fiierul 'test.txt' care va fi folosit de funcii se afla n acelai director cu scriptul php):
<?php
$filename = "test.txt";
$result = file_exists($filename);
echo "<br /> file_exists(): $result";
$result = fileowner($filename);

249

echo "<br /> fileowner(): $result";


$result = filegroup($filename);
echo "<br /> filegroup(): $result";
$result = filetype($filename);
echo "<br /> filetype(): $result";
$result = filesize($filename);
echo "<br /> filesize(): $result";
$result = fileatime($filename);
$result = date("m/d/Y H:i", $result);
echo "<br /> fileatime(): $result";
$result = filectime($filename);
$result = date("m/d/Y H:i", $result);
echo "<br /> filectime(): $result";
$result = filemtime($filename);
$result = date("m/d/Y H:i", $result);
echo "<br /> filemtime(): $result";
$result = fileperms($filename);
$result = decoct($result);
echo "<br /> fileperms(): $result";
$result = is_file($filename);
echo "<br /> is_file(): $result";
$result = is_dir($filename);
echo "<br /> is_dir(): $result";
$result = is_readable($filename);
echo "<br /> is_readable(): $result";
$result = is_writable($filename);
echo "<br /> is_writable(): $result";
?>
Datele de ieire ale exemplului sunt urmtoarele
file_exists(): 1
fileowner(): 0
filegroup(): 0
filetype(): file
filesize(): 5
fileatime(): 08/28/2008 00:00
filectime(): 08/28/2008 10:49
filemtime(): 08/28/2008 11:32
fileperms(): 100666
is_file(): 1
is_dir():
is_readable(): 1
is_writable(): 1
12.2. Privilegii de fiier
Privilegiile asociate unui fiier (sau director) determina operaiile pe care utilizatorii le pot efectua
cu fiierul (sau directorul) respectiv.
Privilegiile sunt date sub forma a trei grupuri alctuite din cte trei caractere fiecare; cu alte
cuvinte, trei triade. Prima triada indica privilegiile acordate posesorului fiierului. Cea de-a doua triada
indica privilegiile acordate membrilor grupului posesor al fiierului. Cea de-a treia triada indica privilegiile
acordate altor utilizatori.
Cele 3 caractere care alctuiesc un grup sunt reprezentate, n sistemele UNIX, prin urmtoarele
trei litere: 'r', 'w' i 'x'; acestea reprezint:
r - fiierul poate fi citit
w - se poate scrie n fiier
x - coninutul fiierului poate fi executat
Caracterele unei triade apar ntotdeauna n secven 'rwx'. Daco anumita litera este nlocuita de
o cratima (-), privilegiul asociat nu este accesibil.
De exemplu, s examinam privilegiile specificate n urmtorul exemplu:
rwxr-xr--
Aceste caractere au urmtoarea semnificaie:

250

"rwx", posesorul fiierului poate citi, scrie sau executa fiierul


"r-x", membrii grupului posesor al fiierului pot citi sau executa fiierul, dar nu pot scrie n fiier
"r--", ali utilizatori pot citi fiierul, dar nu pot scrie n fiier sau executa coninutul fiierului
Privilegiul 'x' este semnificativ numai pentru fiierele care includ un coninut executabil, cum sunt
fiierele binare executabile (.exe) sau anumite categorii de scripturi. Posesorul unui fiier poate modifica
privilegiile asociate fiierului emind comanda chmod (aceasta funcioneaz n sistemele de operare
UNIX).
Aceasta comanda are doua forme. O forma va permite s specificai privilegiile folosind cifre
scrise n octal; cealalt va permite s le specificai folosind litere.
Pentru a specifica privilegiile folosind cifre n octal, calculai valoarea numerica a fiecrei triade.
Pentru aceasta, nsumai numerele corespunztoare fiecrui privilegiu disponibil din cadrul triadei.
Numerele asociate privilegiilor sunt urmtoarele:
r - 4
w - 2
x - 1
De exemplu, privilegiul "rwx" are valoarea 4 + 2 + 1 = 7. Similar, privilegiul "r-x" are valoarea 4
+ l = 5, iar privilegiul "r--" are valoarea 4.
Dup ce ai calculat valoarea numerica a fiecrei triade, formai un numr din trei cifre scris n
octal, care este alctuit din valoarea numerica a privilegiilor utilizatorilor, valoarea numerica a privilegiilor
membrilor grupului, i valoarea numerica a privilegiilor altor utilizatori. Astfel, privilegiile "rwxr-xr--"
corespund valorii n octal 754.
12.2.1. Modificarea privilegiilor unui fiier
Pentru a modifica privilegiile unui fiier, folosii funcia chmod(), care are urmtoarea forma:
chmod(nume_fiier, mod)
Argumentul 'nume_fiier' specifica numele i calea de acces a fiierului ale crui privilegii urmeaz
a fi modificate, iar argumentul 'mod' specifica privilegiile dorite, n general, se prefera exprimarea
privilegiilor sub forma unui numr scris n octal. Pentru aceasta, prefixai valoarea folosind cifra 0.
De exemplu, putei atribui unui fiier "text.txt" privilegiile "rwxr-xr--" specificnd pentru 'mod'
valoarea 0754, funcia "chmod" va fi chmod("text.txt", 0754)
Pentru ca funcia chmod() s se execute cu succes, PHP trebuie s ruleze sub contul utilizatorului
posesor al fiierului. Funcia returneaz TRUE n caz de reuit, respectiv FALSE n caz contrar.
Pentru a modifica grupul posesor al unui fiier, invocai funcia chgrp(), care are forma:
chgrp("nume_fifier", grup)
Unde "grup" este un nume sau numr care desemneaz grupul respectiv.
Funciile chmod() i chgrp() nu funcioneaz sub Microsoft Windows.
12.3. Deschiderea unui fiier
nainte de a putea citi sau scrie ntr-un fiier, trebuie s deschidei fiierul folosind funcia
fopen().
fopen("nume_fiier", "mod")
Unde 'nume_fiier' specifica numele i calea spre fiierul care urmeaz a fi deschis, iar 'mod'
indica tipul de acces dorit.
Modurile de deschidere a unui fiier sunt urmtoarele:
r - Permite doar citirea fiierului
r+ - Citire sau scriere de la nceputul fiierului
w - Creaz fiierul dacnu exista i suprascrie datele existente
w+ - Citire sau scriere; la scriere , creeaz fiierul dacnu exista i suprascrie datele existente
a - Adugare; Creeaz fiierul dacnu exista i aduga datele noi la sfritul fiierului existent
a+ - Citire sau scriere; la scriere, creaz fiierul dacnu exista i aduga datele noi la sfritul
fiierului existent
x - Doar scriere; Creeaz fiierul dacnu exista i genereaz un avertisment dacacesta exista
x+ - Citire sau scriere; Creeaz fiierul dacnu exista i genereaz un avertisment dacacesta
exista
b - Deschide fiierul n mod binar
Funcia fopen() returneaz FALSE dacPHP nu a reuit s deschid fiierul, n caz contrar,
returneaz o valoare care conine un ntreg, numit "identificator de fiier", care se folosete pentru
identificarea unui fiier de ctre funciile care executa operaii cu fiiere.
De exemplu, instruciunea urmtoare deschide fiierul 'carte.txt' pentru citire:
$fh = fopen("carte.txt", "r");

251

Sub Microsoft Windows, fiierele ASCII i fiierele binare sunt tratate n mod diferit. Cnd
deschidei un fiier binar sub Windows, specificai "b" ca al doilea caracter al modului; de exemplu, "rb"
pentru citire, "wb" pentru scriere, "a+b" pentru citire i adugare. Dacnu procedai astfel, citirile din
fiier i alte operaii se vor ncheia prematur sau vor eua.
12.4. Verificarea finalizrii unei operaii cu un fiier
Operaiile cu fiiere (inclusiv cele legate de deschiderea, citirea unui fiier i scrierea ntr-un fiier)
pot eua dintr-o varietate de motive. Deci, este important s verificai dacfiecare operaie s-a ncheiat cu
succes.
Iat o modalitate n care putei proceda:
<?php
$fh = fopen("carte.txt", "rb");
if (!$fh) {
echo "Nu a fost deschis fiierul carte.txt.";
}
?>
Funcia fopen() returneaz FALSE dacnu reuete s deschid fiierul. n acest caz, scriptul
executa instruciunea echo care afieaz un mesaj.
O forma alternativa mai simpla folosete operatorul OR (SAU):
<?php
($fh = fopen("carte.txt", "rb"))
OR die("Nu a fost deschis fiierul carte.txt.");
?>
12.5. nchiderea unui fiier
Un fiier deschis consuma resursele sistemului. Cnd un script a terminat de utilizat un fiier,
scriptul trebuie s nchid fiierul, elibernd aceste resurse.
La sfritul unui script, PHP nchide n mod automat fiierele deschise. Totui, la programare se
recomanda s nchidei fiierele mai rapid, ori de cte ori este posibil.
Pentru a nchide un fiier, folosii funcia fclose():
fclose(identificator_fiier)
Unde 'identificator_fiier' este identificatorul fiierului, returnat la deschiderea acestuia cu funcia
fopen()
Iat un exemplu caracteristic de deschidere, utilizare i nchidere a unui fiier:
<?php
$fh = fopen("carte.txt", "rb");
if (!$fh) {
echo "Nu a fost deschis fiierul carte.txt.";
}
// Aici se insereaz instruciunile care folosesc fiierul deschis
fclose($fh);
?>
Funcia fclose() returneaz valoarea TRUE dacfiierul a fost nchis cu succes. Testarea acestei
valori este rareori necesara, deoarece nu se mai pot face prea multe dup ce s-a ratat o ncercare de a
nchide un fiier.
12.6. Citirea dintr-un fiier
PHP furnizeaz o varietate de funcii pentru citirea fiierelor. Una dintre acestea este fread(), care
are urmtoarea forma:
fread(identificator_fiier, lungime)
Argumentul 'identificator_fiier' este valoarea returnata de funcia fopen(), iar argumentul
'lungime' specifica numrul maxim de octei care vor fi citii. Octeii citii din fiier sunt returnai sub
forma de valoare de tip sir. Dacoperaia de citire ntlnete sfritul fiierului, PHP va returna mai puin
de lungime octei data.
Iat un exemplu de citire i de afiare a unui text dintr-un fiier, folosind funcia fopen() (Fiierul
"carte.txt" folosit ca test n exemplele de mai jos trebuie s se afle n acelai director n care este i
scriptul php):
<?php
$fh = @fopen("carte.txt", "rb");
if (!$fh) {
echo "Nu a fost deschis fiierul carte.txt.";
}

252

else {
$s = fread($fh, 256);
echo "<br /> Citete: $s";
fclose($fh);
}
?>
Exemplul citete maximum 256 de octei din fiier dacfiierul a fost deschis.
Am folosit caracterul @ n fata funciei "fopen()" pentru a mpiedica afiarea erorilor de la server
n cazul cnd fiierul nu poate fi deschis. Este deja funcia "if()" care verifica i afieaz mesaj n caz de
nedeschidere a fiierului.
Pentru a citi un numr mai mare sau mai mic de octei, modificai valoarea argumentului lungime
al funciei fread().
PHP include o funcie conexa, denumita fgetc(), care citete un octet din fiierul specificat.
Pentru a citi i a afia ntregul coninut al fiierului, putei folosi funcia filesize() pentru a furniza
valoarea argumentului lungime, astfel:
<?php
$nume = "carte.txt";
$fh = @fopen($nume, "rb");
if (!$fh) {
echo "Nu a fost deschis fiierul carte.txt.";
}
else {
$l = filesize($nume);
$s = fread($fh, $l);
echo "<br /> Citete: $s";
fclose($fh);
}
?>
12.7. Citirea unei linii de text
Se obinuiete frecvent citirea linie cu linie a unui text dintr-un fiier.
Funcia fgets() citete o linie dintr-un fiier; funcia are urmtoarea forma:
fgets(identificator_fiier, lungime)
Argumentul 'identificator_fiier' este o valoare returnata de funcia fopen(); aici, argumentul
'lungime' specifica numrul maxim de octei dintr-o linie care vor fi citii, minus o unitate, pentru a
permite includerea caracterului de terminare a liniei (acesta poate fi omis i va citi toata linia). Octeii
citii din fiier sunt returnai ca valoare de tip sir.
Iat un exemplu care prezint modul de citire i de afiare a primilor 125 octei din prima linii a
unui fiier :
<?php
$nume = "carte.txt";
$fh = @fopen($nume, "rb");
if (!$fh) {
echo "Nu a fost deschis fiierul carte.txt.";
}
else {
$s = fgets($fh, 126);
echo "<br /> Citete: $s";
fclose($fh);
}
?>
In exemplul de mai sus, dacprima linie din fiierul "carte.txt" are mai mult de 125 de caractere,
va afia doar primele 125, dacare mai puin de 125 de caractere, va afia doar caracterele care sunt
incluse n prima linie.
12.8. Citirea linie cu linie a unui ntreg fiier
n general, dintr-un fiier trebuie citit mai mult dect prima linie a acestuia. Pentru aceasta, un
script trebuie s dispun de o modalitate de a determina momentul cnd fiierul a fost citit n totalitate.
Funcia feof() are chiar acest scop, returnnd o valoare care arata dacs-a ajuns sau nu la
sfritul fiierului. Funcia are urmtoarea forma:
feof(identificator_fiier)

253

Argumentul 'identificator_fiier' este valoarea returnata de funcia fopen().


Funcia feof() returneaz TRUE dacfiierul specificat este la sfrit; n caz contrar, returneaz
FALSE.
Iat cum se poate folosi funcia feof() pentru a controla procesul de citire a unui ntreg fiier, linie
cu linie:
<?php
$nume = "carte.txt";
$fh = @fopen($nume, "rb");
if (!$fh) {
echo "Fiierul carte.txt nu a putut fi deschis";
}
while (!feof($fh)) {
$s = fgets($fh, 256);
echo "<br /> Citete : $s";
}
fclose($fh);
?>
Instruciunea "while" asigura faptul ca funcia fgets() este apelata n mod repetat, pn la citirea
tuturor liniilor.
O alta modalitate simpla de a citi linie cu linie un ntreg fiier consta n a folosi funcia file().
Aceasta funcie returneaz un tablou n care fiecare element conine o linie a fiierului specificat.
Iat un exemplu care folosete funcia file() pentru a citi i pentru a afia coninutul unui fiier:
<?php
$tablou = file("carte.txt");
foreach ($tablou as $s) {
echo "<br /> Citete : $s";
}
?>
Aceasta metoda nu este adecvata pentru fiiere de foarte mari dimensiuni, deoarece n tablou
este ncrcat ntregul coninut al fiierului, ceea ce poate necesita o cantitate de memorie superioara celei
disponibile.
12.9. Afiarea coninutului unui fiier
PHP furnizeaz doua funcii care faciliteaz afiarea coninutului unui fiier.
Una dintre funcii, fpassthru(), necesita un argument care specifica identificatorul fiierului care
urmeaz s fie afiat:
$fh = fopen("carte.txt", "rb");
fpassthru($fh);
Dup ce a afiat fiierul, funcia l nchide automat.
Cealalt funcie, readfile(), necesita numai numele sau calea fiierului:
readfile("carte.txt");
12.10. Navigarea printr-un fiier
Fiecare fiier are un pointer asociat care indica poziia octetului unde se va produce urmtoarea
operaie.
Putei folosi funcia rewind() pentru a readuce pointerul la nceputul fiierului. Funcia are
urmtoarea forma ('identificator_fiier' este identificatorul de fiier returnat de funcia fopen()):
rewind(identificator_fiier)
Nu putei readuce pointerul unui fiier la nceputul propriu-zis al unui fiier dacfiierul a fost
deschis pentru un acces de tip ataare, adic ntr-unul din modurile 'a' sau 'a+'.
Iat un exemplu care prezint modul de utilizare a funciei rewind() pentru a afia de doua ori
coninutul unui fiier:
<?php
$nume = "carte.txt";
$fh = @fopen($nume, "rb");
if (!$fh) {
echo "Fiierul carte.txt nu a putut fi deschis";
}
while (!feof($fh)) {
$s = fgets($fh, 256);
echo "<br /> Citete : $s";

254

}
// Deruleaz la nceputul fiierului i reia redarea acestuia
rewind($fh);
while (!feof($fh)) {
$s = fgets($fh, 256);
echo "<br /> Citete \$s : $s";
}
fclose($fh);
?>
Dacse produce vreo eroare, funcia rewind() returneaz zero.
Dei funcia rewind() este utila n caz de nevoie, necesitatea de a readuce un pointer de fiier la
nceputul fiierului nu este chiar att de frecventa.
Funcia fseek() furnizeaz o mai mare flexibilitate, permindu-va s poziionri pointerul de
fiier astfel nct s putei citi sau scrie n orice punct al fiierului.
Funcia are doua forme, cea mai simpla fiind urmtoarea:
fseek(identificator_fiier, offset)
unde 'identificator_fiier' este identificatorul de fiier returnat de funcia fopen(), iar 'offset' este poziia
dorita a pointerului de fiier, specificata n octei, n raport cu nceputul fiierului.
In caz de reuit, funcia fseek() returneaz 0; n caz contrar, returneaz -l .
O forma alternativa a funciei asigura un grad superior de flexibilitate, avnd urmtoarea forma:
fseek(identificator_fiier, offset, baza)
unde 'identificator_fiier' i 'offset' au semnificaiile definite anterior, iar 'baza' ia una ; dintre urmtoarele
valori:
SEEK_SET, care stabilete poziia pointerului de fiier n raport cu nceputul fiierului
SEEK_CUR, care stabilete poziia pointerului de fiier n raport cu valoarea curenta a pointerului
SEEK_END, care stabilete poziia pointerului de fiier relativ la sfritul fiierului
Valoarea argumentului 'offset' poate fi pozitiva, negativa sau zero.
De exemplu, pentru a poziiona pointerul cu 1000 de octei nainte de sfritul fiierului, emitei
urmtorul apel de funcie:
fseek($fh, -1000, SEEK_END)
Pentru a obine valoarea curenta a pointerului de fiier, folosii funcia ftell(), care are urmtoarea
forma:
ftell(identificator_fiier)
Funcia returneaz valoarea curenta a identificatorului de fiier, respectiv valoarea zero
dacfuncia eueaz.
12.11. Scrierea ntr-un fiier
Pentru a scrie ntr-un fiier se folosete funcia fwrite(), aceasta are urmtoarea forma:
fwrite(identificator_fiier, date);
Unde 'identificator_fiier' este identificatorul de fiier returnat de funcia fopen(), iar 'date' este o
valoare sir care determina datele care urmeaz a fi scrise.
Dacexecuia funciei reuete, returneaz numrul octeilor scrii; n caz contrar, returneaz
valoarea -l.
Iat un exemplu care prezint modul de scriere a datelor ntr-un fiier:
<?php
$nume = "carte.txt";
$fh = @fopen($nume, "ab");
if (!$fh) {
echo "Nu a fost deschis fiierul carte.txt.";
}
else {
$ok = fwrite($fh, "Acestea sunt datele adugate \n");
echo "<br /> Rezultatul scris este: $ok";
fclose($fh);
}
?>
Acest script va avea urmtoarele date de ieire:
Rezultatul scris este: 30

255

Programul prezentat n exemplul anterior scrie n fiierul "carte.txt" o linie de text. Deoarece
fiierul a fost deschis folosind modul "a", datele sunt ataate la fiier; cu alte cuvinte, datele sunt scrise la
sfrit, dup toate datele existente n fiier.
Observai ca a fost scris i un caracter de terminare a liniei ("\n"), astfel nct fiierul s poat fi
citit linie cu linie la un moment de timp ulterior. Daclucrai cu un fiier text, n general e util s includei
un caracter de terminare a liniei la sfritul fiecrei linii scrise n fiier.
Programul din exemplu scrie n fiier o singura linie de text. Totui, putei scrie mai multe linii, dacdorii.
Dacapelai funcia fwrite() din interiorul unei bucle, avei posibilitatea de a scrie mai multe linii. Dup ce
ai scris toate liniile de care avei nevoie, nchidei fiierul prin apelarea funciei fclose().
PHP mai furnizeaz i o forma alternativa a funciei fwrite():
fwrite(identificator_fiier, date, lungime);
Aceasta forma include un al treilea argument, i anume "lungime", care va permite s specificai
numrul maxim de octei care vor fi scrii.
Argumentul "lungime" al funciei fwrite() trebuie utilizat atunci cnd se scrie n fiiere binare sub
Microsoft Windows.
Windows prefera secven de terminare a liniei "\r\n". Atunci cnd scriei programe PHP pentru
sisteme Windows, este de preferat s folosii secven "\r\n" de terminare a liniei.
PHP dispune de o alta funcie pentru scrierea fiierelor, fputs(). Totui, n afara de nume, fputs()
este similara cu funcia fwrite().
12.12. Obinerea accesului exclusiv la un fiier
Web-ul ridica o problema speciala pentru dezvoltatorii de programe, deoarece mai muli utilizatori
pot avea acces simultan la un singur script PHP. Uneori, accesul simultan poate avea ca rezultat date
incorecte. Pentru a vedea cum se poate produce aceasta, s luam n considerare urmtorul script, care
reprezint un contor pentru numrul de deschideri a unei pagini.
<?php
$contor = "ctr.txt";
$fh = @fopen($contor, "r+b");
if (!$fh) {
echo "Nu a fost deschis fiierul ctr.txt.";
}
else {
$s = fgets($fh, 7);
$count = (int) $s;
$count = $count + 1;
rewind($fh);
fwrite($fh, $count);
echo "<br /> Nr. vizitri: $count";
fclose($fh);
}
?>
Remarcai funciile pe care le folosete scriptul pentru a executa operaiile cu fiiere. Programul
deschide fiierul "ctr.txt" pentru citire i scriere, preia datele din acesta, care sunt un numr ntreg,
mrete acel numr cu o unitate, ntoarce pointerul la nceputul fiierului "rewind" dup care rescrie noul
numr, afieaz numrul i nchide fiierul.
Secven de cod descrisa mai sus poate creea probleme n cazul n care, de exemplu doi
utilizatori diferii acceseaz acelai fiier, n acelai timp, cnd contoarul este, de exemplu, la numrul
100. Amndoi vor incrementa numrul 100 cu o unitate i va rescrie n fiierul "ctr.txt" 101; n final,
contoarul va arata 101, n loc de 102 cum ar fi trebuit (deoarece au fost 2 vizitatori).
Pentru a evita astfel de conflicte PHP pune la dispoziia utilizatorilor o metoda prin care se poate bloca
accesul temporar la un fiier. Pe durata blocrii, un alt utilizator nu va mai putea scrie/citi din acest fiier.
De aceea durata blocrii trebuie s fie limitata.
Funcia care realizeaz blocarea este flock(), care are urmtoarea forma:
flock(identificator_fiier, operaie)
Unde "identificator_fiier" este identificatorul de fiier returnat de funcia fopen(). Argumentul
"operaie" este o constanta sau o expresie care poate avea urmtoarele valori:
LOCK_SH - Blocare partajata n scopuri de citire
LOCK_EX - Blocare exclusiva n scopuri de scriere
LOCK_NB - Blocare fr fixare
LOCK_UN - Eliminarea blocrii

256

Iat cum se folosete procesul de blocare, vom folosi acelai exemplu, contoarul de mai sus, de
data aceasta mbuntit.
- <?php
$contor = "ctr.txt";
$fh = @fopen($contor, "r+b");
if (!$fh) {
echo "Nu a fost deschis fiierul ctr.txt.";
}
else {
flock($fh, LOCK_EX);
$s = fgets($fh, 7);
$count = (int) $s;
$count = $count + 1;
rewind($fh);
fwrite($fh, $count);
flock($fh, LOCK_UN);
echo "<br /> Nr. vizitri: $count"
fclose($fh);
}
?>
De data aceasta scriptul blocheaz fiierul "ctr.txt" pe timpul citirii i scrierii acestuia, astfel nct
accesul simultan s nu cauzeze o numrare eronata.
Blocare se face imediat dup ce a fost deschis fiierul, cu "LOCK_EX", i se ncheie imediat dup
rescrierea n fiier, prin deblocare acestuia "LOCK_UN".
12.13. Copierea unui fiier
O funcie care faciliteaz copierea fiierelor, este copy(). Funcia copy() are urmtoarea forma:
copy (sursa, destinatia)
Unde "sursa" este numele i calea fiierului care urmeaz a fi copiat, iar "destinaie" este numele
sau calea copiei.
Funcia returneaz TRUE dacoperaia de copiere reuete; n caz contrar, returneaz FALSE.
Iat un exemplu n care este prezentat modul de utilizare a funciei copy():
<?php
$ok = copy("test.txt", "test.txt.bak");
if (!$ok) {
echo "Copierea nu a reuit.";
}
?>
Exemplul creeaz o copie a fiierului "test.txt", cu numele "test.txt.bak", n acelai director.
Funcia copy() va suprascrie fiierul destinaie, dacacesta exista.
12.14. Modificarea numelui unui fiier
Funcia care va permite s modificai numele unui fiier este rename(), aceasta care are
urmtoarea forma:
rename(nume_vechi, nume_nou)
Unde "nume_vechi" este numele i calea originala a fiierului, iar "nume_nou" este numele dorit.
Funcia returneaz TRUE dacoperaia de modificare a numelui a reuit; n caz contrar,
returneaz FALSE.
Iat un exemplu de utilizare a funciei rename():
<?php
$ok = rename("test.txt", "teste.dat");
if (!$ok) {
echo "Modificarea numelui nu a reuit.";
}
?>
Exemplu modifica numele fiierului "test.txt" n "teste.dat".
12.15. tergerea unui fiier
Funcia care va permite s tergei un fiier este unlink(), aceasta care are urmtoarea forma:
unlink(nume_fiier)
Unde "nume_fiier" este numele i calea fiierului care va fi ters.
Funcia returneaz TRUE dacoperaia de tergere a reuit; n caz contrar, returneaz FALSE.

257

Iat un exemplu de utilizare a funciei unlink():


<?php
$ok = unlink("test.txt");
if (!$ok) {
echo "tergerea fiierului nu a reuit.";
}
?>
Exemplu terge fiierului "test.txt".
Reinei ca PHP trebuie s aib acces de scriere la catalogul n care se vor executa operaiile de
copiere, redenumire sau tergere; n caz contrar, PHP nu va putea executa aceste operaii.
12.16. ncrcarea unui fiier n server
Pentru ncrcarea unui fiier n server, se folosesc formulare HTML mpreun cu un script PHP de
ncrcare care folosete funcia move_uploaded_file() pentru operaia de upload.
Pentru a crea un formular de ncrcare, specificai ENCTYPE="multipart/form-data" n eticheta
FORM i includei un control de introducere a datelor cu atributul TYPE="FILE".
Iat un exemplu de script PHP i formular HTML care ncrca fiierele n server:
<?php
if(isset($_POST['submit'])) {
$uploadpath = "upload/"; // Modifica aici directorul de upload
$uploadpath = $uploadpath . basename( $_FILES['fiier']['name']);
if(move_uploaded_file($_FILES['fiier']['tmp_name'], $uploadpath)) {
echo"Fiier: ". basename( $_FILES['fiier']['name']). " a fost ncrcat";
}
else {
echo "Eroare la urcarea fiierului pe server, mai ncerca o data!";
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-
data">
Alege fiierul:
<input type="file" name="fiier" /> <br />
<input type="submit" name='submit' value="Trimite" />
</form>
Cnd utilizatorul apsa pe butonul de "Trimite", scriptul PHP preia datele i va ncrca fiierul
dorit n server
12.17. Utilizarea cataloagelor (Directoare)
Cele mai importante funcii pentru utilizarea cataloagelor va permit s obinei catalogul de lucru
i s lucrai cu acesta, s manipulai cai de acces, s citii coninutul unui director, s vizualizai i s
modificai privilegiile unui director, precum i s creai i s tergei cataloage.
In acest context, numele "catalog" i "director" reprezint acelai lucru.
12.18. Obinerea i modificarea directorului de lucru
Funcia getcwd() returneaz numele catalogului curent de lucru. Funcia nu necesita argumente
i poate fi utilizata astfel:
$cdir = getcwd();
Pentru a schimba catalogul curent de lucru, putei folosi funcia chdir(), care are urmtoarea forma:
chdir(nume_director)
Unde "nume_director" este calea sau numele catalogului de lucru dorit.
Funcia returneaz TRUE dacoperaia reuete; n caz contrar, returneaz FALSE.
De exemplu, dacin directorul curent se afla alt director "temp", pentru a face din "temp"
catalogul curent de lucru, folosii funcia chdir() dup cum urmeaz:
<?php
$ndir = chdir("temp/");
?>
12.19. Manipularea cailor de acces
PHP include numeroase funcii utile pentru manipularea cailor de acces.
Funcia dirname() preia calea de acces la un fiier i returneaz toata calea, mai puin
componenta finala a caii specificate, n cazul n care componenta finala este un fiier, funcia va ajuta s
izolai numele fiierului de restul caii.

258

De exemplu, dacse da calea "utilizator/curs-php/curs/curs1.php", funcia va returna


"utilizator/curs-php/curs".
Funcia are urmtoarea forma:
dirname(cale_fiier)
Funcia basename() executa operaia complementara, returnnd numai componenta finala a caii
specificate.
De exemplu, daceste data calea "utilizator/curs-php/curs/curs1.php", funcia "basename()" va
returna "curs1.php".
Funcia are urmtoarea forma:
basename(cale_fiier)
Dacdorii s executai mai multe operaii cu o cale, funcia pathinfo() va poate fi de folos.
Aceasta funcie returneaz un tablou care include patru elemente (al patrule ncepnd de la versiunea
PHP 5.2.0):
1. dirname - rezultatul invocrii funciei dirname() avnd ca argument calea respectiva
2. basename - rezultatul invocrii funciei basename() avnd ca argument calea respectiva
3. extension - extensia fiierului (dacexista) dat de rezultatului funciei basename()
4. filename - numele fiierului dat de rezultatului funciei basename(), dar fr extensie
Iat un exemplu care prezint modul de utilizare a funciei pathlnfo() :
<?php
$path_parts = pathinfo('utilizator/curs-php/curs/curs1.php');
foreach ($path_parts as $num => $val) {
echo "<br /> $num => $val";
}
?>
Datele de ieire ale scriptului de mai sunt urmtoarele :
dirname => utilizator/curs-php/curs
basename => curs1.php
extension => php
filename => curs1
Un alt mod n care putei utiliza i afla valorile returnate de funcia pathinfo() este urmtorul:
<?php
$path_parts = pathinfo('utilizator/curs-php/curs/curs1.php');
echo "<br />". $path_parts['dirname'], "\r\n";
echo "<br />". $path_parts['basename'], "\r\n";
echo "<br />". $path_parts['extension'], "\r\n";
echo "<br />". $path_parts['filename'], "\r\n";
?>
Acest exemplu va returna urmtoarele date de ieire :
utilizator/curs-php/curs
curs1.php
php
curs1
12.20. Vizualizarea i modificarea privilegiilor directoarelor
Pentru a vizualiza privilegiile unui director, putei folosi aceleai funcii utilizate pentru vizualizarea
privilegiilor fiierelor, prezentate n tabelul "Funcii PHP pentru obinerea atributelor unui fiier". folosind
ca argument numele sau calea directorului. Aceste funcii va permit s vizualizai o varietate de
caracteristici ale directoarelor, inclusiv privilegiile de catalog, care sunt returnate de funcia fileperms().
Pentru a modifica privilegiile unui director, folosii funcia chmod() care a fost descrisa la
seciunea "Modificarea privilegiilor unui fiier". Utilizai aceasta funcie exact aa cum ai folosi-o pentru a
stabili privilegiile de fiier, folosind ca argument un director.
Pentru a putea atribui sau schimba privilegiile unui director sau fiier, modulul PHP instalat
trebuie s aib drepturi de modificare a directoarelor /fiierelor specificate.
12.21. Citirea coninutului unui director
PHP furnizeaz trei funcii care va permit s citii coninutul unui catalog, ca i cum catalogul ar fi
un fiier. Aceste funcii sunt:
1. opendir() - deschide directorul pentru citire
2. readdir () - citete o intrare dintr-un catalog
3. closedir() - nchide catalogul, elibernd resursele alocate de funcia opendir()

259

Rezultatul apelrii funciei readdir() este un sir care conine numele urmtorului fiier sau sub-
director din catalogul deschis. Funcia returneaz FALSE atunci cnd au fost citite toate intrrile din
catalog.
Iat un exemplu care prezint modul de utilizare a acestor funcii pentru citirea coninutului unui
catalog:
<?php
$dc = @opendir("home/utilizator/curs-php");
if (!$dc) {
echo "Directorul nu a putut fi deschis";
}
else {
while ($ok = readdir($dc)) {
echo "<br /> $ok";
}
closedir($dc);
}
?>
Datele de ieire ale exemplului pot fi similare cu cele prezentate mai jos :
style
imgs
curs
scripts
index.php
sau putei folosi funcia scandir($dir). Aceasta preia ntr-un Array numele tuturor directoarelor i
fiierelor din directorul "$dir". n caz de nereuit returneaz False.
12.22. Crearea unui director
Pentru a crea un director, utilizai funcia mkdir(), care are urmtoarea forma:
mkdir(nume_dir, mod)
Unde "nume_dir" este calea sau numele directorului care va fi creat, iar "mod" reprezint
privilegiile care trebuie acordate noului catalog.
In mod normal, prima cifra a argumentului mod trebuie s fie 0, astfel nct PHP sa-l perceap ca
pe o valoare scrisa n octal. Funcia returneaz TRUE daccreeaz catalogul; n caz contrar, returneaz
FALSE.
De exemplu, pentru a crea un catalog denumit "lucru" i pentru a-i atribui privilegiile "rwxr-x--x",
utilizai funcia mkdir() dup cum urmeaz:
<?php
$cd = mkdir("lucru", 0751);
if ($cd)
echo "Directorul a fost creat";
else
echo "Directorul nu a putut fi creat";
?>
Pentru a modifica numele unui director, putei folosi funcia rename(), care are urmtoarea
forma:
rename(nume_vechi, nume_nou)
Unde "nume_vechi" este numele i calea originala a directorului, iar "nume_nou" este numele
nou dorit
13. Noiuni fundamentale despre bazele de date i SQL
Spre deosebire de fiiere, bazele de date prezint multe avantaje, inclusiv o mai mare protecie a
integritii datelor i asigurarea partajrii datelor.
SQL este limbajul standard pentru crearea, accesul i manipularea bazelor de date relaionale.
Detaliile (cu precdere sintaxa SQL sunt cele referitoare la MySQL, cel mai popular limbaj de baze de date
folosit cu PHP.
13.1. Structura unei baze de date relaionale
O baza de date relaionale stocheaz datele n tabele, iar fiecare tabel stocheaz n coloane
informaii despre un anumit tip de element.
In continuare putei vedea un tabel caracteristic dintr-o baza de date relaional care prezint
personalitai istorice ale Americii.
PersoanaID Nume AnNastere

260

001 George Washington 1732


002 John Adams 1735
003 Thomas Jefferson 1743
Primul rnd al tabelului atribuie nume pentru fiecare coloana.
Fiecare rnd al tabelului, altul dect primul rnd, descrie o singura personalitate. De exemplu, al
doilea rnd descrie o personaliti pe nume George Washington.
Fiecare coloana, descrie un anumit atribut al personalitii De exemplu, a doua coloana conine
numele personalitilor, iar a treia coloana conine anii n care s-au nscut acetia.
Pentru a se putea face referire, mai uor, la un anumit rnd al tabelului, se obinuiete ca fiecare
tabel s conin o coloana care identifica n mod unic fiecare rnd. Aceasta coloana se numete "cheia
primara" a tabelului. n exemplul prezentat, coloana numita "PersoanaID" servete drept cheie primara.
Dacnici o coloana nu conine o valoare unica pentru fiecare rnd, se pot combina valorile mai
multor coloane pentru a crea o "cheie primara compusa".
O baza de date relaional se numete astfel datorita capacitii sale de a stabili relaii ntre date
din mai multe tabele.
Urmtorul exemplu prezint doua tabele i o relaie ntre acestea.
PersoanaID Nume AnNastere
001 George Washington 1732
002 John Adams 1735
003 Thomas Jefferson 1743
Meserie PersoanaID
Arhitect 003
General 001
Filozof 002
Al doilea tabel conine informaii despre meseriile caracteristice ale persoanelor prezentate n
exemplul anterior. Mai precis, tabelul identifica persoana cu o anumita meserie. Numele meseriei servete
drept cheie primara a tabelului, care mai conine, n afara de aceasta, o singura coloana.
Coloana respectiva stocheaz atributul "PersoanaID" din primul tabel, al persoanei care cunoate
meseria descrisa de un anumit rnd. De exemplu, angajatul cu numrul 003 este arhitect.
Reinei ca "PersoanaID" este att cheia primara a tabelului original, dar i o coloana din noul
tabel. Coloana "PersoanaID" a noului tabel se numete "cheie externa"; dei nu este cheia primara a
noului tabel, este cheia primara a unui alt tabel.
Aplicaia software care gzduiete o baza de date se numete "sistem de gestiune a bazelor de
date" (SGBD). Exista multe sisteme de gestiune a bazelor de date, printre cele mai populare asemenea
sisteme se numra: DB2 , Interbase , MySQL , Oracle , Postgresql , SQL Server , Sybase.
MySQL este cel mai popular sistem de gestiune a bazelor de date destinat utilizrii cu PHP, n
mare msur deoarece este gratuit. Totui, prin intermediul PHP este posibil accesul la aproape orice
SGBD modern.
Bazele de date relaionale neleg SQL (Structured Query Language), un limbaj relativ simplu,
folosit pentru solicitarea datelor. n ciuda simplitii sale, SQL este un limbaj foarte puternic, care poate
obine accesul la date stocate n mai multe tabele, poate filtra datele dorite i poate sorta, rezuma i afia
rezultatele.
n general, bazele de date relaionale i stocheaz datele ntr-un singur fiier sau catalog.
Aceasta caracteristica de organizare faciliteaz administrarea datelor, deoarece executarea copiei de
siguran, respectiv restaurarea unui singur fiier sau catalog se realizeaz mai uor.
Sistemele de gestiune a bazelor de date relaionale necesita mai multe cicluri de procesor pentru
a satisface o cerere de date dect cele necesare pentru accesul la un fiier normal, dar ofer protecie
sporita a datelor, iar pentru accesul la distanta uureaz traficul deoarece majoritatea operaiilor sunt
efectuate de programul SQL, astfel singurele date transmise n reea ar fi rezultatul cerut.
13.2. Proiectarea unei baze de date
Cnd creai un tabel ntr-o baza de date, este important s inei cont de "cheia primara" i s va
bazai pe aceasta. Coloanele dintr-un tabel trebuie s se bazeze pe cheia primara n totalitatea sa.
O alta operaie importanta este specificarea unui tip de date pentru fiecare coloana. Majoritatea
bazelor de date relaionale accepta urmtoarele tipuri de date generale:
Caracter
ntreg
Zecimal
Data i ora
Binar

261

Tabelul urmtor rezuma tipurile de date cele mai frecvent utilizate, acceptate de MySQL i de
majoritatea bazelor de date relaionale. MySQL accepta multe alte tipuri de date, dar acestea sunt cele
mai folosite.
Principalele tipuri de date din MySQL
Tip de date Descriere
BLOB - Date binare arbitrare, cu o lungime maxima de 65535 octei
CHAR(m)
- Un sir de caractere de lungime fixa, cu un maxim de m caractere, unde
m este mai mic dect 256. Pentru obinerea lungimii dorite, se insereaz
spatii finale
DATE - O data n format an-luna-zi; de exemplu 2008-10-15
DECIMAL
DECIMAL(m,d)
- Un numr zecimal, reprezentat sub forma de sir cu "m" cifre, din care
"d" se afla la dreapta punctului zecimal. Dac"m" i "d" sunt omise, n
mod prestabilit se vor utiliza valorile 10 i 0
DOUBLE
DOUBLE (m, d)
- Un numr cu virgula mobila, cu dubla precizie, avnd o lime de afiare
egala cu "m" i un numr de "d" cifre dup virgula.
FLOAT(m,d)
- Un numr cu virgula mobila, cu simpla precizie, avnd o lime de
afiare egala cu "m" i un numr de "d" cifre dup virgula
INTEGER
INTEGER UNSIGNED
- Un ntreg pe 32 de bii. Dacse specifica atributul UNSIGNED, domeniul
de valori este cuprins ntre 0 i 4294967295; n caz contrar, domeniul este
cuprins ntre valorile -2147483648 i 2147483647
NUMERIC
NUMERIC (m, d)
- Similar cu DECIMAL
REAL
REAL(m, d)
- Similar cu DOUBLE
SMALLINT
SMALLINT UNSIGNED
- Un ntreg pe 16 bii. Dacse specifica atributul UNSIGNED, domeniul de
valori este cuprins ntre 0 i 65535; n caz contrar, domeniul este cuprins
ntre valorile 32768 i 32767
TIME
TIMESTAMP
TIMESTAMP(m)
- Ora n format ora-minut-secunda; de exemplu, 08-20-00. O valoare de
tip data i ora, n format an-luna-zi ora-minut-secunda; de exemplu,
1976-01-05 00:00:00. Aceasta reprezentare este similara celei returnate
de funciile UNIX. Pt. stocare valoarea este transformata din timpul curent
n UTC i transformata invers la solicitarea datei.
VARCHAR(m)
- Un sir caracter de lungime variabila, cu un maximum de "m" caractere,
unde m este mai mic dect 256 pentru versiuni MySQL anterioare 5.0.3,
iar pt. cele mai noi limita este 65 535 bytes. Spatiile finale au fost
eliminate
Iat cteva indicaii pentru selectarea tipurilor de date:
Alegei BLOB ca tip pentru datele pe care nu trebuie s le manipulai i la care nu vei obine
acces prin intermediul limbajului SQL.
Alegei un tip data sau ora adecvat pentru coloanele care conin date calendaristice sau ore.
Alegei un tip numeric pentru coloanele folosite pentru numere sau n calcule.
Pentru cantiti foarte mari sau foarte mici, alegei DOUBLE ca tip de date.
Pentru coloane care conin numere fr parte zecimala de dimensiuni medii, alegei SMALLINT
sau INTEGER ca tip de date.
Pentru alte coloane care conin date numerice, alegei DECIMAL ca tip de date.
Alegei CHAR sau VARCHAR ca tip pentru celelalte coloane, chiar i pentru cele care conin
cifre, cum ar fi un cod potal.
13.3. Crearea unei baze de date MySQL i a unui tabel
La nceput, o baza de date nu conine tabele. Pentru a crea o baza de date i apoi un tabel ntr-o
baza de date, folosii un sub-limbaj SQL special, cunoscut sub numele de Data Definition Language
(DDL).
Putei emite comenzi DDL i alte comenzi SQL prin intermediul unui interpretor SQL sau prin
intermediul PHP. Pentru nceput va fi prezentat modul de emitere a comenzilor SQL folosind un
interpretor SQL.

262

Dup ce avei instalat MySQL, deschidei interpretorul "MySQL Command Line Client"
(asemntor cu, "Command Promt") n care scriei comenzile SQL (n general, SQL nu este sensibil la
diferena ntre majuscule i minuscule. Deci, putei scrie comenzile cum preferai, cu majuscule sau
minuscule).
Ca regula, dup scrierea comenzilor, la sfrit trebuie s fie caracterul "punct i virgula" (;)
Pentru a crea o baza de date, folosii urmtoarea comanda:
CREATE DATABASE nume_db;
Unde "nume_db" este numele bazei de date care va fi creata.
nainte de a crea un tabel sau a lucra cu alte comenzi ntr-o baza de date, trebuie s intrai n
baza de date existenta, acest lucru se face folosind comanda:
USE nume_db;
Unde "nume_db" este numele bazei de date. Cu aceeai comanda "USE nume_db" se schimba i baza de
date n care vrem s lucram.
Pentru a crea un tabel ntr-o baza de date, emitei comanda "CREATE TABLE", care are
urmtoarea forma:
CREATE TABLE tabel (coloana tip, coloana tip, );
Unde "tabel" este numele tabelului, "coloana" este numele unei coloane, "tip" este tipul datelor incluse n
coloana, se poate specifica un numr nedefinit de coloane.
De exemplu, comanda urmtoare creeaz un tabel numit "carte", care conine coloanele
"carteid", "titlu" i "pret":
CREATE TABLE carte (carteid CHAR(10), titlu VARCHAR(255), pret decimal(5,2));
n afara tipului de date, intre paranteze, putei specifica i alte atribute opionale ale unei
coloane:
NOT NULL - Fiecare rnd trebuie s conin o valoare a coloanei asociate; valorile nule nu sunt
permise.
DEFAULT valoare - Dacnu este data o valoare a coloanei asociate, se va presupune valoarea
specificata.
AUTO INCREMENT - MySQL va repartiza n mod automat un numr de serie ca valoare a coloanei
asociate.
PRIMARY KEY - Coloana asociata este cheia primara a tabelului care o conine.
Iat un exemplu ceva mai complicat de creare a unui tabel, care folosete unele din aceste
atribute opionale:
CREATE TABLE carte (carteid CHAR(10) PRIMARY KEY,titlu VARCHAR(255) NOT NULL,pret DECIMAL(5,2)
DEFAULT 50.00);
13.4. tergerea i modificarea unui tabel
tergerea unui tabel sau a unei coloane este un act irevocabil, datele fiind definitiv terse.
Pentru a terge un tabel, scriei urmtoarea comanda:
DROP TABLE tabel;
Unde "tabel" este numele tabelului care va fi ters.
Dup crearea unui tabel, l putei modifica prin emiterea unei comenzi "ALTER TABLE", care are
mai multe forme.
Urmtoarea forma a comenzii va permite s tergei o coloana din tabel:
ALTER TABLE tabel DROP coloana;
Unde "tabel" este numele tabelului care va fi modificat, iar "coloana" este numele coloanei care va fi
tears.
O alta forma a comenzii va permite s adugai o noua coloana n tabel:
ALTER TABLE tabel ADD coloana tip [opiuni];
Unde "tabel" este numele tabelului care va fi modificat, "coloana" este numele coloanei care va fi
adugat, "tip" este tipul noii coloane, iar "[opiuni]" constituie toate opiunile dorite, precum PRIMARY
KEY.
De exemplu, pentru a aduga coloana "pretnou" la tabelul "carte", scriei comanda:
ALTER TABLE carte ADD pretnou DECIMAL(5,2) DEFAULT 50.00;
Pentru a vedea toate bazele de date create n MySQL, folosii urmtoarea comanda:
SHOW DATABASES;
Pentru a vedea toate tabelele dintr-o baza de date din MySQL, folosii urmtoarea comanda:
SHOW TABLES;
Pentru a vedea toate coloanele dintr-un tabel, i atributele acestora, folosii urmtoarea
comanda:
SHOW COLUMNS FROM tabel;

263

13.5. Acordarea i revocarea privilegiilor de acces


Cnd un utilizator ncearc s obin acces la o baza de date relaional, aplicaia care gazduiete
baza de date (in cazul nostru MySQL) verifica dacutilizatorul are permisiunea de a executa operaia.
Administratorul de sistem poate folosi comanda MySQL "GRANT" pentru a autoriza un utilizator s obin
accesul la un tabel din baza de date. Comanda are urmtoarea forma:
GRANT ALL ON tabel TO utilizator IDENTIFIED BY parola;
Unde "tabel" este numele tabelului, "utilizator" este numele contului de utilizator, iar "parola" este parola
pe care o va furniza utilizatorul pentru a-si proba identitatea.
Alternativ, administratorul de sistem poate autoriza un utilizator s obin acces la orice tabel
dintr-o baza de date specificata, folosind urmtoarea forma a comenzii "GRANT":
GRANT ALL ON baza_de_date.* TO utilizator IDENTIFIED BY parola;
De exemplu, comanda urmtoare autorizeaz pe utilizatorul "Ana" s obin acces la toate
tabelele din baza de date numita "testdb", ori de cte ori utilizatorul furnizeaz parola "mypassword":
GRANT ALL ON testdb.* TO Ana IDENTIFIED BY mypassword;
Comanda "REVOKE" se poate folosi pentru retragerea privilegiilor acordate anterior, interzicerea
accesului.
Comanda are urmtoarele forme:
REVOKE ALL ON tabel FROM utilizator;
REVOKE ALL ON baza_de_date.* FROM utilizator;
De exemplu, pentru a revoca toate privilegiile (din toate bazele de date) utilizatorului "tip_rau",
scriei comanda:
REVOKE ALL ON *.* FROM tip_rau;
Comanda "GRANT" are i o forma mai complexa pentru a autoriza accesul numai la anumite
coloane specificate. Forma avansata a acestei comenzi este:
GRANT privilegiu (coloane) ON tabel TO utilizator IDENTIFIED BY 'parola; sau
GRANT privilegiu (coloane) ON baza_de_date.* TO utilizator IDENTIFIED BY 'parola;
Unde "privilegiu" este privilegiul care urmeaz a fi extins, "coloane" sunt coloanele crora li se aplica
privilegiul, iar "tabel", "baza_de_date", "utilizator" i "parola" au semnificaiile cunoscute.
Sunt permise i forme similare ale comenzii REVOKE:
REVOKE privilegiu (coloane) ON tabel FROM utilizator; sau
REVOKE privilegiu (coloane) ON baza_de_date.* FROM utilizator;
ntre privilegiile posibile se numra urmtoarele:
INSERT - care permite adugarea de date n coloana specificata
SELECT - care permite accesul de citire la rndurile care conin coloana specificata
UPDATE - care permite actualizarea rndurilor care conin coloana specificata
De exemplu, pentru a permite unui utilizator s obin accesul la o coloana, fr a o modifica,
putei folosi o secven de comenzi similara cu urmtoarea:
REVOKE ALL ON carte FROM Ana;
GRANT
SELECT(carteid, titlu, pret),
INSERT(carteid, titlu, pret),
UPDATE(carteid, titlu, pret)
ON carte TO php IDENTIFIED BY 'mypassword';
REVOKE INSERT(pret) ON carte FROM Ana;
REVOKE UPDATE(pret) ON carte FROM Ana;
Prima comanda revoca toate privilegiile de la nivelul tabelului; n caz contrar, aceste privilegii le
vor elimina pe cele situate la nivel de coloana.
Pentru a vedea privilegiile acordate unui anumit utilizator, folosii urmtoarea comanda:
SHOW GRANTS FOR nume_utilizator;
Caracteristica privilegiilor furnizata de MySQL este mai sofisticata i furnizeaz mult mai multe
opiuni.
13.6. Accesul la datele dintr-o baza de date, interogrile SQL
n afara de Data Definition Language, SQL include Data Manipulation Language (DML). DML va
permite s formai interogri, care obin accesul la datele aflate ntr-o baza de date relaional i
raporteaz aceste date. De asemenea, putei folosi DML pentru a insera, actualiza i terge rndurile
dintr-un tabel.
Cea mai elementara forma de interogare este comanda "SELECT" simpla.
Cea mai simpla interogare raporteaz toate coloanele din toate rndurile unui tabel. Interogarea
are urmtoarea forma:

264

SELECT * FROM tabel;


unde "tabel" este numele tabelului la care se va obine accesul.
Aceasta comanda va afia un tabel cu fiecare rnd pe o linie separata. Datele de ieire includ
numele coloanelor i linii care separa coloanele.
Dacdorii s selectai numai anumite coloane sau s raportai coloanele ntr-o anumita ordine,
putei folosi urmtoarea forma a comenzii "SELECT":
SELECT coloana1, coloana2 FROM tabel;
unde "tabel" este numele tabelului, iar "coloana1" i "coloana2" sunt coloanele la care se va obine
accesul i al cror coninut va fi afiat.
Putei specifica mai multe coloane, separate prin virgula.
Dacvrei s fie selectate numai acele rnduri care satisfac un anumit criteriu, clauza "WHERE" va
permite s specificai o condiie; rndurile care nu satisfac condiia nu sunt raportate.
De exemplu, iat o interogare care raporteaz un singur rnd:
SELECT titlu, pret FROM carte WHERE carteid=1;
Forma condiiilor folosite n sub-limbajul DML al limbajului SQL este similara cu aceea a condiiilor
PHP. Putei folosi oricare din urmtorii operatori relaionali:
= Egalitate
<> Inegalitate
!= Inegalitate, diferit de
< Mai mic dect
> Mai mare dect
<= Mai mic sau egal cu
=> Mai mare sau egal cu
Putei compara valoarea unei coloane cu aceea a altei coloane, respectiv valoarea unei coloane
cu o valoare string. Valorile string SQL (irurile) trebuie s fie incluse ntre ghilimele simple, nu ntre
ghilimelele duble.
Cnd unei coloane nu i-a fost repartizata nici o valoare, SQL i atribuie valoarea speciala NULL. De
asemenea, programatorii pot atribui n mod explicit valoarea NULL unei coloane.
Comparaiile obinuite cu valori NULL, care folosesc operatorii de (in)egalitate, vor returna un rezultat
fals. Totui, putei folosi operatorul special "<=>". care compara valorile innd cont de valoarea NULL.
Dacfolosii acest operator pentru a compara doua valori NULL, se obine un rezultat adevrat.
SQL include i numeroi operatori de comparaie non-algebrici:
Operator Descriere
x BETWEEN y AND z Adevrat, dacvaloarea lui x este cuprinsa ntre valorile lui y i z
x LIKE y Adevrat dacvaloarea lui x este echivalenta cu modelul y
x NOT LIKE y Adevrat dacvaloarea lui x nu este echivalenta cu modelul y
x n (y1, y2)
Adevrat dacvaloarea lui x este un membru al listei y1, y2. Lista poate
conine unul, doi sau mai muli membri
x NOT n (y1, y2)
Adevrat dacvaloarea lui x nu este un membru al listei y1, y2. Lista
poate conine unul, doi sau mai muli membri
x IS NULL Adevrat dacx are valoarea NULL
x IS NOT NULL Adevrat dacx nu are valoarea NULL
Sub-limbajul folosit pentru specificarea modelelor asociate operatorului "LIKE" este diferit de cel
folosit de PHP. Meta-caracterul "%" corespunde unui numr de zero sau mai multe caractere, iar meta-
caracterul "_" corespunde unui singur caracter.
Modelele, precum irurile, sunt incluse ntre ghilimele simple.
De exemplu, modelul '%ar%' corespunde oricrui sir care conine subirul 'ar', inclusiv iruri
precum 'ar', 'arc' i 'un zar'.
Pentru a plasa un caracter "%" sau "_" ntr-un sir test, folosii secven "\%" sau "\_"; ca n PHP.
Ca i PHP, sub-limbajul DML din SQL va permite s formai expresii logice care combina expresiile
relaionale. Putei folosi oricare din urmtorii operatori logici:
AND , && - SI, adevrat dacambii operanzi sunt adevrai
OR , || - SAU, adevrat dacun operand este adevrat
NOT , ! - NU, adevrat dacoperandul este fals
De exemplu, urmtoarea interogare raporteaz rndurile care au preul de carte mai mare dect
11 sau al cror titlu include subirul 'Curs':
SELECT titlu, pret FROM carte

265

WHERE pret>11 OR titlu LIKE %Curs%;


Pentru a compara o valoare cu o expresie regulata n MySQL, folosii urmtoarea forma:
x REGEXP y, unde "x" este valoarea care va fi testata, iar "y" este o expresie regulata, delimitata prin
ghilimele simple.
13.7. Modificarea datelor dintr-o baza de date
Sub-limbajul SQL, Data Manipulation Language, include comenzi care va permit s inserai
rnduri noi ntr-un tabel, s actualizai una sau mai multe coloane ale rndurilor existente, respectiv s
tergeri rnduri dintr-un tabel.
Pentru a insera un nou rnd ntr-un tabel, folosii comanda "INSERT", care are urmtoarea
forma:
INSERT INTO tabel VALUES (valoare1, valoare2);
unde "tabel" este numele tabelului la care se va aduga rndul, "valoare1" este valoarea pentru prima
coloana din tabel, iar "valoare2" este valoarea celei de-a doua coloane din tabel. Se pot da mai mult sau
mai puin de doua valori; numrul valorilor date ar trebui s fie egal cu acela al coloanelor din tabel.
O coloana poate primi i valoarea "NULL", cu excepia situaiilor cnd definiia coloanei nu
permite.
O forma mai buna (si recomandata) a comenzii INSERT specifica numele coloanelor crora le
sunt atribuite valorile:
INSERT INTO tabel (coloana1, coloana2) VALUES (valoare1, valoare2);
unde coloana denumita "coloana1" primete valoarea "valoare1", iar coloana denumita "coloana2"
primete valoarea "valoare2".
Pot fi specificate mai mult sau mai puin de doua coloane i valori. Numrul coloanelor specificate
trebuie s fie egal cu numrul valorilor specificate.
Coloanele care nu sunt denumite n comanda "INSERT" i care nu au o valoare prestabilita
(DEFAULT) primesc valoarea NULL, cu excepia situaiilor cnd valoarea respectiva nu este permisa (n
acest caz, comanda INSERT eueaz).
Dacdorii s adugai mai multe rnduri ntr-un tabel, ntr-o singura inserare, putei folosi
urmtoarea forma a comenzii INSERT:
INSERT INTO tabel (coloana1, coloana2)
VALUES (valoare1, valoare2),
(valoare3, valoare4),
(valoare5, valoare6);
Pentru a modifica valoarea unui rnd sau mai multor rnduri existente ntr-un tabel, folosii o
comanda "UPDATE", care are urmtoarea forma:
UPDATE tabel SET coloana1=valoare1, coloana2=valoare2
WHERE condiie;
unde "tabel" este numele tabelului ale crui rnduri urmeaz s fie modificate, "coloana1" este numele
primei coloane care urmeaz a fi modificata, "valoare1" este valoarea care va fi repartizata n "coloana1",
"coloana2" este numele celei de-a doua coloane care urmeaz a fi modificata, "valoare2" este valoarea
care va fi repartizata n "coloana2", iar "condiie" identifica rndul sau rndurile care urmeaz a fi
actualizate, dup o anumita condiie.
Poate fi actualizat un numr mai mare sau mai mic de coloane. Dacse dorete ca toate rndurile
coloanei s fie actualizate, clauza "WHERE" poate fi omisa.
De exemplu, comanda urmtoare modifica din coloana "titlu" numele asociat crii n "Curs2", n
rndul unde coloana "pret" are valoarea 5.
UPDATE carte SET titlu=Curs2
WHERE pret=5;
Pentru a terge un rnd dintr-un tabel, folosii comanda "DELETE", care are urmtoarea forma:
DELETE FROM tabel WHERE condiie;
Dacse vrea a fi terse toate rndurile tabelului, clauza WHERE poate fi omisa.
De exemplu, comanda urmtoare terge rndul din tabelul "carte" asociat titlului "Curs2":
DELETE FROM carte WHERE titlu='Curs2';
13.8. Sortarea i gruparea
Deseori, este important ca datele s fie raportate ntr-o anumita secven. Putei specifica
ordinea de raportare a rezultatelor interogrii folosind clauza "ORDER BY", care are urmtoarea forma:
ORDER BY valoare
Dacse vor folosi mai multe cmpuri de sortare, acestea vor fi separate prin virgula.
Dacdorii s indicai o sortare descendenta, n locul uneia ascendente, specificai "DESC" dup
valoare.

266

De exemplu, pentru a ordona toate carile n funcie de pret, de la cel mai mare la cel mai mic,
respectiv dup titlu pentru un pret egal, putei folosi urmtoarea interogare:
SELECT pret, titlu FROM carte
ORDER BY pret DESC, titlu;
Pentru a include numai titlurile care au un pret mai mare de 50, adugai o clauza WHERE la
comanda SELECT:
SELECT pret, titlu FROM carte
WHERE pret>50
ORDER BY pret DESC, titlu;
SQL include funcii care va permit s raportai valori diferite, valori utile, precum un numr al
rndurilor tabelului. Iat cele mai importante funcii n acest sens:
Funcie Descriere
count(*) - Numrul rndurilor din tabel
count(coloana)
- Numrul rndurilor din tabel care conin o valoare
diferita de NULL n coloana specificata
count(distinct coloana)
- Numrul valorilor distincte diferite de NULL care apar n
coloana specificata
avg(coloana)
- Valoarea mijlocie (medie) a coloanei numerice
specificate
min(coloana) - Valoarea minima din coloana specificata
max(coloana) - Valoarea maxima din coloana specificata
sum(coloana) - Suma valorilor din coloana specificata
De exemplu, interogarea urmtoare raporteaz numrul crilor i preul mediu al acestora:
SELECT count(*), avg(pret) FROM carte;
Datele de ieire vor fi afiate pe o singura linie.
Clauza SQL "AS" specifica un nume nou pentru o coloana sau expresie. Numele specificat este
folosit ca titlu n rapoartele SQL. Clauza "AS" este utila n lucrul cu funciile din tabelul anterior, va ajuta
s identificai mai uor datele de ieire.
De exemplu, interogarea precedenta poate fi rescrisa pentru a include o clauza "AS", astfel:
SELECT count(*) AS Carte_Numr,
avg(pret) AS Pret_Mediu
FROM carte;
O alta clauza utila este "GROUP BY", aceasta are urmtoarea forma:
GROUP BY coloana-sortare
unde "coloana-sortare" este numele sau valoarea unei coloane, specificata ntr-o clauza "ORDER BY",
care trebuie s urmeze dup clauza "GROUP BY".
De exemplu, avem un tabel "carte" cu 4 coloane (carteid, titlu, anul i pret), interogarea
urmtoare raporteaz numrul crilor i preul mediu pentru fiecare an (anul) n parte:
SELECT count(*), avg(pret) FROM carte
GROUP BY anul
ORDER BY anul;
Pentru a include n datele de ieire numai grupurile selectate, specificai clauza "HAVING" imediat
dup clauza "GROUP BY". Clauza "HAVING" are urmtoarea forma:
HAVING condiie
De exemplu, pentru a include numai crile al cror atribut "anul" are valoare mai mare dect
1980, scriei urmtoarea interogare:
SELECT count(*), avg(pret) FROM carte
GROUP BY anul
HAVING anul>1980
ORDER BY anul;
Mai jos sunt afiai operatorii matematici folosii n SQL:
+ Adunare
- Scdere
* nmulire
/ mprire
| SAU, la nivel de bit
& i la nivel de bit

267

>> Deplasare la dreapta


<< Deplasare la stnga
_ Complement la nivel de bit
13.9. Expresii i funcii
SQL va permite s formai expresii folosind valori din coloane, valori literale i funcii. Ca i n
PHP, putei controla ordinea de evaluare a expresiilor SQL folosind paranteze pentru a delimita sub-
expresiile care trebuie evaluate mai nti.
Tabelele urmtoare rezuma funciile MySQL frecvent folosite
Funcii matematice frecvent folosite n MySQL
Funcie Descriere
abs(x) - Valoarea absoluta a lui x
atan(x) - Arc tangenta lui x, unde x este dat n radiani
atan2(y,x)
- Arc tangenta lui y/x, unde semnele ambelor argumente sunt folosite
pentru a determina cadranul cercului trigonometric
ceiling(x) - Cel mai mic ntreg care nu este mai mic dect x
cos(x) - Cosinusul lui x, unde x este exprimat n radiani
exp(x) - Baza logaritmilor naturali (e) ridicata la puterea x
floor(x) - Cel mai mare ntreg care nu este mai mare dect x
log (x) - Logaritmul natural al lui x
mod(x,y) - Restul mpririi x/y
power(x,y) - x la puterea y
rnd(x)
- Valoare aleatoare cu virgula, mai mare sau egala cu zero i mai mica
dect unu
sign(x)
- Valoarea -1, 0 sau 1, dup cum valoarea lui x este negativa, zero sau
pozitiva
sin(x) - Sinusul lui x, unde x este dat n radiani
sqrt(x) - Rdcina ptrat a lui x
tan(x) - Tangenta lui x, unde x este dat n radiani

Funcii sir frecvent folosite n MySQL
Funcie Descriere
ascii(s) - Codul ASCII al octetului celui mai din stnga al irului s
char(n) - Caracter al crui cod ASCII este n
concat(s1, s2) - Concatenarea irurilor s1 i s2; cu alte cuvinte, s2 ataat la s1
lcase(s) - irul s, unde toate majusculele au fost transformate n minuscule
left(s,n) - Primii n octei ai irului s, de la stnga la dreapta
length(s) - Numrul octeilor din irul s
locate(s1, s2)
- Poziia primei apariii a lui s1 n s2, respectiv zero dacs1 nu se
gsete n s2
ltrim(s) - irul s, cu eliminarea spatiilor de nceput
right(s,n) - Primii n octei din irul s, de la dreapta la stnga
rpad(s1,n,s2)
- irul s1, completat la dreapta cu irul s2 pn cnd rezultatul are
lungimea n
rtrim(s) - irul s, cu spatiile finale eliminate
space(n) - Un sir alctuit din n spatii
substring(s,m,n) - Sub-sir al lui s, care ncepe de la poziia m i care are lungimea n
trim(s) - Sub-sir al lui s, cu spatiile iniiale i finale eliminate
ucase(s) - irul s, cu toate minusculele convertite n majuscule

Funcii MySQL de data i ora frecvent utilizate

268

Funcie Descriere
dayofmonth(d) - Ziua din luna a datei specificate (1-31)
dayofweek(d)
- Ziua din sptmna a datei specificate (1 =duminica, 2=luni,,
7=smbta)
dayofyear(d) - Ziua din an a datei specificate (1-366)
hour(t) - Partea orelor din momentul de timp menionat (0-23)
minute(t) - Partea minutelor din momentul de timp menionat (0-59)
month(d) - Luna datei specificate (1-12)
now() - Data i ora curenta
second(t) - Partea secundelor din momentul de timp menionat (0-59)
week(d) - Sptmna din an a datei specificate (0-53)
year(d) - Partea anilor din momentul de timp menionat (1000-9999)

Funcii specifice MySQL
Funcie Descriere
database() - Returneaz numele bazei de date deschise
get_lock(s,n) - Obine o blocare a bazei de date
md5(s)
- Returneaz o suma de control a irului s, calculata dup algoritmul
MD5
password(s) - Returneaz irul s, criptat folosind algoritmul aplicat de MySQL parolei
release_lock(s) - Anuleaz blocarea unei baze de date
user() - Returneaz numele utilizatorului curent
version() - Returneaz numrul versiunii MySQL
13.10. Joins
SQL va permite s obinei accesul la mai multe tabele ntr-o singura interogare, n general,
aceasta operaie se executa pentru ca datele dintr-un tabel s poat fi folosite cu date din alt tabel.
De exemplu, s presupunem ca baza de date este asemntoare celei prezentate mai jos, unde
avem doua tabele, primul numit "persoane" iar cel de-al doilea numit "meserii", i o relaie cheie externa
- cheie primara (persoanaid) asociaz cele doua tabelele.
persoanaid nume AnNastere
001 George Washington 1732
002 John Adams 1735
003 Thomas Jefferson 1743
meserie persoanaid
Arhitect 003
General 001
Filozof 002
Sa examinam urmtoarea interogare:
SELECT nume, meserie FROM persoane, meserii
WHERE persoane.persoanaid=meserii.persoanaid;
Construciile "persoane.persoanaid" i "meserii.persoanaid" se numesc "nume definite", prima se
refera la coloana "persoanaid" din tabelul "persoane", iar a doua se refera la coloana "persoanaid" a
tabelului "meserii".
Clauza WHERE asigura o echivalenta ntre valoarea cheii externe din tabelul "meserii" cu aceea a
cheii primare din tabelul "persoane", (n absenta clauzei WHERE, se va stabili o corespondenta ntre
fiecare rnd din tabelul cu meserii i fiecare rnd din tabelul cu persoane; un asemenea rezultat, numit
"produs cartezian", conine n general multe rnduri - majoritatea nedorite - i ca atare trebuie evitat).
Rezultatul interogrii de mai sus este un raport care indica numele i meseria asociata fiecrui
angajat prezentat n tabelul "meserii".
O interogare ca aceasta, care combina date din mai multe tabele, se numete "unire". Sunt
posibile i uniri mai complexe, care implica trei sau mai multe tabele.
Dacun rnd dat din tabelul principal (aici "persoane") nu are nici un rnd asociat n tabelul cu
detalii (aici "meserii"), rndul respectiv din tabelul principal nu va aprea n datele de ieire ale unei uniri.
n cazul acesta, pentru a determina apariia acestei nregistrri din tabelul principal, se poate folosi o
categorie speciala de unire, cunoscuta sub numele de "unire la stnga" sau "unire exterioara la stnga".
Iat un exemplu:

269

SELECT nume, meserie FROM persoane


LEFT JOIN meserii
ON persoane.persoanaid=meserii.persoanaid;
Aceasta interogare va afia toate persoanele, indiferent dacacestea au sau nu asociata o
meserie. Persoanele fr o meserie au specificaia NULL n coloana corespunztoare meseriei.
13.11. Executarea instruciunilor dintr-un fiier extern
Comenzile MySQL pot fi scrise i ntr-un fiier extern (editat de exemplu, n Windows, cu
Notepad), acest fiier se numete "script de shell".
Scriptul din fiierul extern poate fi executat din fereastra de comanda MySQL (MySQL Command
Line Client), utiliznd comanda:
SOURCE nume_fiier
unde "nume_fiier" este calea i numele fiierului n care se afla scriptul de shell.
De exemplu, scriem urmtoarele comenzi ntr-un fiier numit "lucru.txt" pe care-l salvam n
directorul "C:/teste".
CREATE DATABASE lucrudb;
USE lucrudb;
GRANT ALL ON lucrudb.* TO php IDENTIFIED BY 'mypass';
CREATE TABLE angajat (
angajatnr SMALLINT PRIMARY KEY,
nume VARCHAR(50),
ore SMALLINT,
departament CHAR(16),
salariu DECIMAL(8,2),
data_angajare DATE);
INSERT INTO angajat (
angajatnr,
nume,
ore,
departament,
salariu,
data_angajare)
VALUES (
1,
'George Washinton',
40,
'Contabilitate',
500.00,
'2007-10-04'),
( 2,
'John Adams',
35,
'Marketing',
1000.00,
'2007-10-11'),
( 3,
'Thomas Jefferson washinton',
20,
'Vanzari',
1300.00,
'2007-07-02');
Pentru a executa acest script, scriem n fereastra de comanda MySQL: SOURCE C:/teste/lucru.txt
MySQL va executa comenzile din script ca i cum acestea ar fi scrise direct n linia de comanda.
Exemplul de mai sus va crea o baza de date noua, numita "lucrudb", va acorda utilizatorului
"php" toate drepturile n utilizarea acestei baze de date, dup care va crea tabelul "angajat", cu 6 coloane
("angajatnr", "nume", "ore", "departament", "salariu", "data_angajare") n care vor fi adugate trei linii
13.12. Conectarea la serverul MySQL
Pentru a utiliza o baza de date MySQL, avem nevoie de o conexiune la serverul de baze de date.
Aceasta conexiune va fi utilizata ca punct de access pentru comenzi mysql.

270

Pentru a va conecta la un server MySQL, utilizai funcia mysql_connect(), a crei sintaxa este
urmtoarea:
mysql_connect(nume_gazda, nume_utilizator, parola)
unde "nume_gazda" este numele gazdei, serverul pe care ruleaz serviciul MySQL, "nume_utilizator" este
numele utilizatorului care se conecteaz la serverul MySQL, iar "parola" este parola MySQL asociata
utilizatorului.
In cazul n care serverul MySQL ruleaz pe calculatorul dv. personal, parametrul "nume gazda"
este n general "localhost". n alte cazuri, dacserverul MySQL ruleaz pe un alt computer, va trebui s
specificai adresa computerului pe care ruleaz serverul MySQL.
Funcia returneaz FALSE n caz de eec; n caz contrar, returneaz o valoare denumita
identificator de legtura, care servete ca instrument de manipulare pentru accesul la serverul MySQL.
Iat un exemplu de utilizare a funciei mysql_connect():
<?php
$conn = mysql_connect( "localhost", "Ana", "mypass")
or die("Unable to connect to MySQL");
print "Connected to MySQL <br />";
?>
In acest exemplu, serverul MySQL ruleaz pe "localhost" ca i modulul PHP, utilizatorul este "Ana"
iar parola "mypass".
Dup execuia acestui script, dacnu se reuete conectarea la MySQL, va aprea mesajul
"Unable to connect to MySQL", n caz de reuit, apare mesajul "Connected to MySQL"
n mod prestabilit, funcia mysql_connect() se conecteaz la serviciul MySQL prin intermediul
portului 3306, portul MySQL standard. Dacdorii s obinei accesul la un server MySQL care ruleaz pe
un port non-standard, putei ataa un caracter doua puncte i numrul portului dorit la argumentul care
conine numele gazdei; de exemplu, "localhost:3308".
13.13. ncheierea conexiunii la serverul MySQL
Pentru terminarea unei conexiuni la serverul MySQL se folosete instruciunea: mysql_close();.
Aceasta funcie nchide conexiunea curenta. Funcia returneaz TRUE n caz de reuit; n caz contrar,
returneaz FALSE.
n general, nu este necesara invocarea funciei mysql_close(), deoarece PHP nchide automat
conexiunile deschise cu bazele de date atunci cnd un script i ncheie execuia.
Iat un exemplu de conectare la serverul MySQL i nchidere a conexiunii folosind funcia
mysql_close():
<?php
$conn = mysql_connect( "localhost", "Ana", "mypass")
or die("Unable to connect to MySQL");
// Aici adugai datele necesare lucrului cu serverul MySQL
mysql_close();
?>
13.14. Detectarea apariiei erorilor
Biblioteca MySQL din PHP furnizeaz doua funcii de verificare a erorilor, i anume mysql_errno()
simysql_error().
Fiecare funcie returneaz un rezultat care reflecta eroarea, dacaceasta exista.
Nici una din cele doua funcii nu necesita argumente. Funcia mysql_errno() returneaz un cod
numeric de eroare, n timp ce funcia mysql_error() returneaz un sir care descrie eroarea. Dacnu s-a
produs nici o eroare, codul numeric al erorii este zero i descrierea are ca valoare un sir vid.
Informaiile de eroare sunt disponibile numai daceste activa o conexiune cu serverul MySQL. Prin
urmare, nti trebuie s se reueasc conectarea la MySQL.
Iat cum putei folosi funciile respective pentru a verifica modul de operare a funciei
mysql_select_db()(aceasta selecteaz baza de date pentru lucru):
<?php
$conn = mysql_connect( "localhost", "Ana", "mypass")
or die("Unable to connect to MySQL");
print "Connected to MySQL<br />";
mysql_select_db("lucrudb");
if (mysql_error()) {
echo "<br />". mysql_errno(). " : ". mysql_error();
}
?>

271

Dacse reuete conexiunea la serverul MySQL i baza de date cu numele "lucrudb" este
inexistenta, rezultatul afiat de exemplul de mai sus va fi urmtorul:
Connected to MySQL
1049 : Unknown database 'lucrudb'
13.15. Eliminarea mesajelor de eroare i a avertismentelor nedorite
Numeroase funcii PHP pot produce erori sau mesaje de avertizare care i pot deruta pe utilizatorii
siturilor Web sau le pot cauza neplceri.
PHP furnizeaz funcia error_reporting(), care va permite s eliminri mesajele nedorite. Funcia are
urmtoarea forma:
error_reporting(mask)
unde "mask" specifica tipul mesajelor care vor fi raportate. Dacspecificai zero ca valoare a atributului
"mask" (error_reporting(0)), nu va fi raportat nici un mesaj. Dacspecificai "E_ALL" n loc de "mask"
(error_reporting(E_ALL)), vor fi raportate toate mesajele.
Sau, o alta metoda pentru oprirea mesajelor de eroare, explicata anterior, este adugnd
@naintea funciei.
13.16. Crearea i selectarea unei baze de date.
O funcie importanta n lucrul cu bazele de date este mysql_query(), care are urmtoarea forma:
mysql_query("interogare")
sau
mysql_query("interogare", "id_con")
"interogare" este un sir ce conine comenzile SQL care urmeaz a fi executate (in PHP, comenzile SQL nu
trebuie s se ncheie cu un caracter punct i virgula);"id_con" este identificatorul de conectare returnat
de funcia mysql_connect(), dacacesta este omis se folosete ultima legtura deschisa cu aceasta
funcie.
Funcia mysql_query() returneaz TRUE dacserverul a reuit s execute interogarea; n caz
contrar, returneaz FALSE.
Pentru a crea o noua baza de date folosim comanda SQL "CREATE DATABASE
numeBazaDeDate;", pe care o putem lansa de la o consola MySQL, sau o putem apela de la un script
PHP prin intermediul funciei mysql_query(). Iat un exemplu prin care creem baza de date "lucrudb":
<?php
$conn = mysql_connect( "localhost", "Ana", "mypass")
or die("Unable to connect to MySQL");
$createdb = mysql_query("CREATE DATABASE lucrudb");
if ($createdb)
echo "Baza de date lucrudb a fost creata <br />";
else
echo "<br />". mysql_errno(). " : ". mysql_error();
mysql_close();
?>
Dup executarea acestui script, dactotul este corect, va fi creata baza de date "lucrudb" i va fi
afiat mesajul "Baza de date lucrudb a fost creata".
Dup ce programul a obinut o conexiune cu serverul MySQL, nainte de a lucra cu tabelele dintr-
o baza de date MySQL, programul trebuie s selecteze baza de date respectiva. Pentru aceasta, folosii
functiamysql_select_db(), care are urmtoarea forma:
mysql_select_db(baza_de_date) unde "baza_de_date" este numele bazei de date la care urmeaz a
se obine acces.
Funcia returneaz TRUE dacpoate obine accesul la baza de date, respectiv FALSE n caz
contrar.
Iat un exemplu de selectare a bazei de date "lucrudb":
<?php
$conn = mysql_connect( "localhost", "Ana", "mypass")
or die("Unable to connect to MySQL");
$selectdb = mysql_select_db('lucrudb');
if ($selectdb)
echo "Baza de date lucrudb a fost selectata <br />";
else
echo "<br />". mysql_errno(). " : ". mysql_error();
mysql_close();
?>

272

13.16. Crearea tabelelor


Dup conectare i selectarea bazei de date putem crea tabele n cadrul bazei de date selectate.
Pentru aceasta folosim limbajul SQL CREATE TABLE numeTabel (coloana1, coloana2, ...); mpreun cu
funcia mysql_query().
In exemplul urmtor cream tabelul cu numele "carti" care conine urmtoarele cmpuri:
Nume cmp Tip
id Identificator unic, Not Null, cheie primara
nume Char(30)
autor Char(25)
gen Char(10)
data_intrare Date
pret Decimal(12,2)
In stnga, la "Nume Cmp", sunt trecute coloanele tabelului, iar n dreapta tipul acestora,
coloana cu nume "id" fiind cheia primara.
De asemenea, folosim indicatorul "AUTO_INCREMENT" pentru a preciza faptul ca MySQL va
repartiza o valoare secvenial unica n coloana care servete drept cheie primara a tabelului.
Iat i scriptul PHP pentru crearea tabelului:
<?php
$conn = mysql_connect("localhost", "Ana", "mypass")
or die("Unable to connect to MySQL");
$selectdb = mysql_select_db('lucrudb');
if (!$selectdb)
echo "Baza de date lucrudb nu a putut fi selectata deoarece : ". mysql_errno(). " : ". mysql_error();
$sql = "CREATE TABLE `carti` (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, nume varchar(30)
NOT NULL, autor varchar(25) , gen varchar(10) NOT NULL, data_intrare date, pret decimal(12,2))";
if (mysql_query($sql, $conn))
echo "Tabelul carti a fost creat <br />";
else
echo "Tabelul carti nu a putut fi creat deoarece : ". mysql_errno(). " : ". mysql_error();
mysql_close();
?>
In exemplul de mai sus, variabila "$sql" conine comanda SQL pentru crearea acestui tabel.
Instruciunea mysql_query($sql, $conn), executa aceasta comanda i n cazul n care rezultatul
este TRUE se trimite la ieire irul: "Tabelul carti a fost creat". n cazul n care instruciunea SQL nu a
putut fi executata, funcia mysql_query($sql) ntoarce valoarea FALSE, afind eroarea din cauza creia
tabelul nu a putut fi creat.
13.17. Adugarea de date n tabel
Dup ce avei tabelul creat n baza de date MySQL putei aduga date n el, pentru aceasta se
folosete funcia mysql_query("interogare") unde "interogare" este urmtoarea comanda:
INSERT INTO `nume_tabel` (coloana1, coloana2, ...) VALUES ('date1', 'date2', ...)
unde `nume_tabel` este numele tabelului n care se aduga datele
- "coloana1, coloana2, ..." sunt numele coloanelor n care se dorete adugarea datelor
- "date1, date2, ..." sunt datele care vor fi adugate, inndu-se cont de ordinea i numrul lor cu cea a
coloanelor
Iat un exemplu, n care se folosete tabelul "carti" creat mai sus
<?php
$conn = mysql_connect("localhost", "Ana", "mypass")
or die("Unable to connect to MySQL");
$selectdb = mysql_select_db('lucrudb');
if (!$selectdb)
echo "Baza de date lucrudb nu a putut fi selectata deoarece : ". mysql_errno(). " : ". mysql_error();
$sql = "INSERT INTO `carti` (nume, autor, gen, data_intrare, pret) VALUES ('Glossa', 'Mihai Eminescu',
'poezie', '19-05-2009', '8')";
if (mysql_query($sql, $conn))
echo 'Datele au fost adugate';
else
echo "Datele nu au fost adugate deoarece : ". mysql_errno(). " : ". mysql_error();

273

mysql_close();
?>
In acest exemplu, datele "'Glossa', 'Mihai Eminescu', 'poezie', '19-05-2009', '8'" vor fi adugate n
coloanele "nume, autor, gen, data_intrare, pret" n aceeai ordine n care sunt scrise i datele i
coloanele.
Dacau fost adugate cu succes, apare mesajul "Datele au fost adugate", n caz contrar apare
mesajul de eroare.
Dacdorii s adugai mai multe linii n tabel, printr-o singura interogare, putei folosi urmtorul
model
<?php
// Aici adugai comenzile pt. conectare i selectarea bazei de date
$sql = "INSERT INTO `nume_tabel` (coloana1, coloana2, coloana3)
VALUES
('date1', 'date2', 'date3'),
('valoare1', 'valoare2', 'valoare3'),
('text1', 'text2', 'text3')";
if (mysql_query($sql))
echo 'Datele au fost adugate';
else
echo "Datele nu au fost adugate deoarece : ". mysql_errno(). " : ". mysql_error();
mysql_close();
?>
Observai sintaxa de scriere corecta a interogrilor MySQL n PHP, numele tabelului se scrie intre
caracterele ( ` ` ) i valorile intre ghilimele simple ( ' ' )
13.18. Verificarea interogrilor care nu returneaz rnduri de tabel
Din punctul de vedere al limbajului PHP, exista doua categorii de interogri SQL, ambele fiind
emise folosind funcia mysql_query().
Interogrile SELECT, care returneaz rnduri ale unui tabel
Interogrile UPDATE, INSERT i DELETE, care nu returneaz rnduri ale unui tabel
Pentru a verifica daco interogare UPDATE, INSERT sau DELETE a avut efectul dorit, putei folosi
functiamysql_affected_rows(), care returneaz numrul rndurilor afectate de interogarea cea mai
recenta.
O alta funcie utila este mysql_insert_id().
Cnd introducei un rnd ntr-un tabel a crui cheie primara este de tipul AUTO_INCREMENT,
functiamysql_insert_id() determina valoarea cheii primare atribuite de MySQL. Funcia returneaz
valoarea zero dacinterogarea precedenta nu a generat o valoare AUTO_INCREMENT. Ca atare, funcia
trebuie apelata la puin timp dup interogarea care a inserat rndul n tabel, astfel nct o alta interogare
ulterioara s nu modifice rezultatul.
Iat un exemplu de utilizare a funciilor mysql_affected_rows() i mysql_insert_id() mpreun cu
interogarea INSERT (care aduga rnduri n tabel). Folosim baza de date "lucrudb" i tabelul "carti".
<?php
$conn = mysql_connect("localhost", "Ana", "mypass")
or die("Unable to connect to MySQL");
$selectdb = mysql_select_db('lucrudb');
if (!$selectdb)
echo "Baza de date lucrudb nu a putut fi selectata deoarece : ". mysql_errno(). " : ". mysql_error();
$sql = "INSERT INTO `carti` (nume, autor, gen, data_intrare, pret) VALUE ('Carte2', 'Autor2', 'Educativ',
'2008-9-16', 11.00)";
if (mysql_query($sql))
echo "Datele au fost adugate n tabelul carti <br />";
else
echo "Datele nu au fost adugate n tabelul carti deoarece : ". mysql_errno(). " : ". mysql_error();
$nranduri = mysql_affected_rows();
$id = mysql_insert_id();
if ($nranduri == -1) {
echo "INSERT nu a putut s adauge datele";
}
else
echo "Au fost adugate $nranduri rnduri, cheia primara = $id" ;

274

mysql_close();
?>
Dup ce s-a fcut conectarea la serverul MySQL i s-a reuit selectarea bazei de date, variabila
"$sql" conine comanda SQL pentru introducerea unui nou rnd n tabelul "carti", prin intermediul
functieimysql_query($sql) se introduce datele n baza de date, variabila "$nranduri" preia de la
functiamysql_affected_rows() numrul de rnduri afectate (aici introduse) iar variabila "$id" va avea (prin
"mysql_insert_id()") valoarea cheii primare atribuite de MySQL.
Dacnu apare nici o eroare, rezultatul afiat de acest script este urmtorul:
Datele au fost adugate n tabelul carti
Au fost adugate 1 rnduri, cheia primar = 2
Funcia mysql_insert_id() poate returna un rezultat incorect pentru coloanele MySQL de tipul
BIGINT [BIGINT este un tip de valoare care suporta numere cu 20 de cifre, folosit pentru cmpurile
integer (spre deosebire de MEDIUMINT care suporta numere de la 0 la 16.777.215 (3 bytes) sau INT
care suporta numerele de la 0 la 4.294.967.295 (4 bytes)].
Dup efectuarea unei interogri INSERT, n locul funciei mysql_insert_id() se poate folosi
functiaLAST_INSERT_ID(), aceasta returneaz valoarea atribuita de MySQL unei coloane
AUTO_INCREMENT, indiferent de tipul coloanei. Mai mult, apelurile ulterioare n script la funcii MySQL nu
afecteaz rezultatul returnat de LAST_INSERT_ID(), care este afectat numai de operaiile INSERT n care
sunt implicate coloane AUTO_INCREMENT.
Totui, spre deosebire de "mysql_insert_id()", LAST_INSERT_ID() necesita o interogare
suplimentara la MySQL.
Iat un exemplu care prezint modul de obinere a valorii LAST INSERT ID():
<?php
$sql = "INSERT INTO `carti` (nume, autor, gen, data_intrare, pret) VALUE ('Carte3', 'Autor3', 'Gen3',
'2008-9-16', 8.30)";
$insert = mysql_query($sql);
if (!$insert) {
echo "<br /> Comanda INSERT a euat: ". mysql_errno(). " : ". mysql_error(). "<br />";
}
$interogare = "SELECT LAST_INSERT_ID() FROM `carti`";
$rezultat = mysql_query($interogare);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$rand = mysql_fetch_row($rezultat);
echo "<br /> Ultimul ID repartizat: $rand[0]";
mysql_close();
?>
Dup executarea acestui script, dacnu apare vreo eroare, rezultatul afiat va fi de genul:
Ultimul ID repartizat: 3
Funcia last_insert_id() returneaz rezultatul corect numai dup ce a fost efectuata o comanda
INSERT.
Funcia mysql_affected_rows() numra numai rndurile efectiv modificate de ctre o
interogare UPDATE. Rndurile n cazul crora vechea i noua valoare din coloana sunt identice nu se
numra printre rndurile afectate.
De asemenea, o interogare DELETE care nu conine o clauza WHERE va determina
functiamysql_affected_rows() s returneze valoarea zero, indiferent de numrul rndurilor terse din
tabel.
O modalitate simpla de a determina dactergerea tuturor rndurilor unui tabel a reuit consta n
a emite o interogare care returneaz numrul rndurilor existente n tabel. De exemplu:
<?php
$sql = "SELECT COUNT(*) FROM `carti`";
$result = mysql_query($sql);
$nr = mysql_fetch_row($result);
echo $nr[0];
?>
Dacinterogarea returneaz valoarea zero, demonstreaz tergerea tuturor rndurilor din tabel.
13.19. Prelucrarea rezultatelor interogrilor SELECT
Interogrile SELECT returneaz ca rezultate rnduri de tabel.

275

Rndurile unui tabel sunt incluse ntr-o structura de date numita "set de rezultate". Prelucrarea
setului de rezultate returnat de o interogare SELECT implica parcurgerea rndurilor setului de rezultate.
O modalitate de parcurgere a rndurilor unui set de rezultate este prin utilizarea unei instruciuni
"WHILE".
1. nti se verifica dacnumrul de rnduri returnat este 0 folosind funcia mysql_num_rows(),
transferndu-i ca argument valoarea returnata de funcia mysql_query()
2. Dacnumrul de rnduri este 0 nseamn ca interogarea SELECT nu a returnat nici un rnd din
tabel,
3. Dacnumrul de rnduri este diferit de 0, se executa o instruciune WHILE mpreun cu una
din funciile:
mysql_fetch_assoc() (sau mysql_fetch_array() cu parametru "MYSQL_ASSOC") sunt
similare, aduga datele ntr-o matrice asociativa unde pentru fiecare element avem chei cu
numele coloanelor iar valorile lor sunt datele din rndul respectiv.
mysql_fetch_row() aduga datele ntr-o matrice asociativa unde pentru fiecare element avem
chei cu numere consecutive (ncepnd de la 0) care reprezint ordinea coloanelor iar valorile lor
sunt datele din rndul respectiv
mysql_fetch_object()aduce rezultatele rndului sub forma de obiect cu perechile $rand-
>coloana
4. Pentru a prelucra coloanele stocate n matrice, depinde de funcia folosita.
- pentru mysql_fetch_assoc() (sau mysql_fetch_array()) putei folosi o sintaxa de
genul$rand['coloana']
- pentru mysql_fetch_row() putei folosi o instruciune "foreach", prin care parcurgei datele din
fiecare element a matricei
- pentru mysql_fetch_object() putei folosi o sintaxa de genul $rand->'coloana'
Aceste funcii returneaz FALSE dacnu mai exista rnduri n setul de rezultate
Ca s nelegei mai bine, vom arata cate un exemplu cu fiecare n parte (folosind acelai tabel,
"carti")..
Nu s-au mai introdus n aceste exemple instruciunile pentru conectarea la serverul MySQL i
pentru selectarea bazei de date, le adugai dumneavoastr.
De exemplu, dacdorii s aflai toate datele din anumite coloane putei folosi funcia
mysql_fetch_assoc() astfel:
<?php
$interogare = "SELECT `nume`, `autor` FROM `carti`";
$rezultat = mysql_query($interogare);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
if (mysql_num_rows($rezultat) == 0) {
echo '0 rezultate';
}
else {
while ($rand = mysql_fetch_assoc($rezultat)) {
echo '<br />'. $rand['nume']. ' - '. $rand['autor'];
}
}
?>
Variabila "$rand" devine o matrice ale crei chei sunt numele coloanelor iar valorile lor sunt
datele coloanelor respective din rndul curent; instruciunea WHILE parcurge fiecare rnd.
Iat acest exemplu, dar cu funcia mysql_fetch_array(). n plus, n interogare SQL vom aduga
numele coloanelor prin variabile, ca s vedei cum se lucreaz i cu variabile.
<?php
// Variabilele cu numele coloanelor
$col1 = 'nume';
$col2 = 'autor';
// Interogarea SQL folosind i variabile
$interogare = "SELECT `$col1`, `$col2` FROM `carti`";
$rezultat = mysql_query($interogare);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";

276

}
if (mysql_num_rows($rezultat) == 0) {
echo '0 rezultate';
}
else {
while ($rand = mysql_fetch_array($rezultat, MYSQL_ASSOC)) {
echo '<br />'. $rand['nume']. ' - '. $rand['autor'];
}
}
?>
Cel de-al doilea argument al funciei mysql_fetch_array() este opional. Totui, dacnu specificai
MYSQL_ASSOC ca valoare a argumentului, PHP returneaz un tablou n care valoarea cheilor vor fi
numerele i numele coloanelor.
Conform datelor adugate n tabelul "carti", aceste doua exemple vor afia urmtorul rezultat
Glossa - Mihai Eminescu
Carte2 - Autor2
Carte3 - Autor3
Dacdorii s afiai toate datele din fiecare coloana de pe fiecare rnd al tabelului, putei folosi
funcia mysql_fetch_row() astfel:
<?php
$interogare = "SELECT * FROM `carti`";
$rezultat = mysql_query($interogare);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
if (mysql_num_rows($rezultat) == 0) {
echo '0 rezultate';
}
else {
while ($rand = mysql_fetch_row($rezultat)) {
foreach ($rand as $coloana) {
echo "| $coloana |";
}
echo "<br />";
}
}
?>
Exemplul de mai sus v-a afia urmtorul rezultat, n funcie de datele din tabel:
| 1 || Glossa || Mihai Eminescu || poezie || 0000-00-00 || 8.00 |
| 2 || Carte2 || Autor2 || Educativ || 2008-09-16 || 11.00 |
| 3 || Carte3 || Autor3 || Gen3 || 2008-09-16 || 8.30 |
Dacdorii s obinei acces la valoarea unei anumite coloane, putei face referire la elementul din
tablou folosind o cheie a tabloului.
De exemplu, dacrezultatul funciei mysql_fetch_row() este stocat n variabila "$rand", putei
obine acces la prima coloana folosind sintaxa "$rand[0]", la a doua coloana folosind sintaxa "$rand[1]"
etc.
Iat un exemplu n care este utilizata funcia mysql_fetch_object(), iar n interogarea SQL este
adugat i o condiie WHERE i o variabila "$nr".
<?php
$nr = 3;
$interogare = "SELECT `nume`, `autor` FROM `carti` WHERE `id`<'$nr'";
$rezultat = mysql_query($interogare);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
if (mysql_num_rows($rezultat) == 0) {
echo '0 rezultate';
}
else {

277

while ($rand = mysql_fetch_object($rezultat)) {


echo '<br />'. $rand->nume. ' - '. $rand->autor;
}
}
?>
Precizare: - Conform sintaxei MySQL cu PHP, numele tabelelor i coloanelor se scriu intre
caracterele ` `(semnul din stnga tastei 1), dei funcioneaz i fr, aa e corect, conform standardului,
i e necesar n cazul numelor de tabele /coloane formate din mai multe cuvinte.
Variabilele, cum e aici $nr se scriu intre ghilimele simple ' '
Biblioteca de funcii MySQL a limbajului PHP include funcii care va permit s obinei informaii
despre un set de rezultate, inclusiv:
Numrul coloanelor din setul de rezultate
Numele fiecrei coloane
Lungimea fiecrei coloane
Indicatorii MySQL asociai coloanei
Tipul MySQL al fiecrei coloane
Numele tabelului MySQL care conine coloana
13.20. Obinerea numrului coloanelor dintr-un tabel MySQL
Pentru a obine numrul coloanelor dintr-un set de rezultate, utilizai funcia
mysql_num_fields()
Aceasta folosete ca argument valoarea returnata de funcia mysql_query().
Iat un exemplu n care funcia mysql_num_fields() determina numrul coloanelor dintr-o
interogare care selecteaz toate coloanele folosind specificatorul SQL pentru toate cmpurile "*", astfel
putei afla numrul de coloane dintr-un tabel:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$nr_cmpuri = mysql_num_fields($rezultat);
echo "<br /> Numr cmpuri: $nr_cmpuri";
mysql_close();
?>
13.21. Obinerea numelui unei coloane
Pentru a obine numele unei coloane dintr-un tabel MySQL, folosii funcia
mysql_field_name()
Aceasta returneaz numele coloanei din setul de rezultate. Funcia preia doua argumente:
valoarea returnata de funcia mysql_query() i indexul coloanei care va fi descrisa. Indexul asociat cu
prima coloana este 0, indexul asociat celei de-a doua coloane este l etc.
Iat un exemplu care determina numele primei coloane dintr-un tabel MySQL:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$nume = mysql_field_name($rezultat, 0);
echo "<br /> Coloana 1 : $nume";
mysql_close();
?>
13.22. Obinerea lungimii unei coloane
Pentru a obine lungimea unei coloane dintr-un tabel MySQL, folosii funcia
mysql_field_len()
Aceasta returneaz lungimea maxima a coloanei din setul de rezultate. Funcia preia doua
argumente: valoarea returnata de funcia mysql_query() i indexul coloanei care va fi descrisa. Indexul
asociat cu prima coloana este 0, indexul asociat celei de-a doua coloane este l etc.
Iat un exemplu care determina lungimea maxima a coloanei doi dintr-un tabel MySQL:
<?php

278

$sql = "SELECT * FROM `nume_tabel`";


$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$lungime = mysql_field_len($rezultat, 1);
echo "<br /> Lungime Coloana 2 - $lungime";
mysql_close();
?>
13.23. Obinerea indicatorilor MySQL asociai unei coloane
Pentru a obine indicatorii SQL asociai unei coloane dintr-un tabel MySQL, folosii funcia
mysql_field_flags()
Aceasta preia doua argumente: valoarea returnata de funcia mysql_query() i indexul coloanei
care va fi descrisa. Indexul asociat cu prima coloana este 0, indexul asociat celei de-a doua coloane este l
etc.
Funcia mysql_field_flags() raporteaz urmtorii indicatori:
AUTO_INCREMENT
BINARY
BLOB
ENUM
MULTIPLE_KEY
NOT_NULL
PRIMARY_KEY
TIMESTAMP
UNIQUE_KEY
UNSIGNED
ZEROFILL
Dacla o coloana sunt asociai mai muli indicatori, fiecare indicator este separat de vecinii si
prin intermediul unui singur spaiu.
Iat un exemplu care determina indicatorii asociai primei coloane dintr-un tabel MySQL:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$indicatori = mysql_field_flags($rezultat, 0);
echo "<br /> Indicatorii Coloanei 1 : $indicatori";
mysql_close();
?>
13.24. Obinerea tipului MySQL al unei coloane
Pentru a obine tipul MySQL al unei coloane dintr-un tabel MySQL, folosii funcia
mysql_field_type()
Aceasta preia doua argumente: valoarea returnata de funcia mysql_query() i indexul coloanei
care va fi descrisa. Indexul asociat cu prima coloana este 0, indexul asociat celei de-a doua coloane este l
etc.
Principalele tipuri MySQL returnate de funcia mysql_field_type() sunt prezentate n tabelul
"Principalele tipuri de date din MySQL".
Iat un exemplu care determina tipul primei coloane dintr-un tabel MySQL:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$tip = mysql_field_type($rezultat, 0);
echo "<br /> Tip Coloana 1 : $tip";
mysql_close();
?>

279

13.25. Determinarea tabelului MySQL asociat unei coloane


Pentru a determina tabelul MySQL (dacexista) asociat unei anumite coloane, folosii funcia
mysql_field_table()
Aceasta preia doua argumente: valoarea returnata de funcia mysql_query() i indexul coloanei
care va fi descrisa. Indexul asociat cu prima coloana este 0, indexul asociat celei de-a doua coloane este l
etc.
n cazul n care coloana conine o valoare calculata sau dacrespectiva coloana nu este asociata
n alt mod cu un tabel MySQL, funcia returneaz un sir vid.
Iat un exemplu care determina tabelul asociat primei coloane din setul de rezultate:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$tabel = mysql_field_table($rezultat, 0);
echo "<br /> Nume tabel : $tabel";
mysql_close();
?>
13.26. Obinerea structurii complete a setului de rezultate
Dacdorii obinerea mai multor caracteristici ale setului de rezultate, o funcie utila poate fi:
mysql_fetch_field()
Aceasta funcie returneaz un obiect ale crui proprieti conin o varietate de informaii cu
privire la coloana unui tabel MySQL. Proprietile sunt urmtoarele:
blob - are valoarea 1 n cazul n care coloana este de tip BLOB
max_length - lungimea maxima a coloanei;
multiple_key - are valoarea 1 n cazul n care coloana este o cheie non-unica
name - numele coloanei
not_null - are valoarea 1 n cazul n care coloana nu poate conine valoarea NULL
numeric - are valoarea 1 n cazul n care coloana este numerica
primary_key - are valoarea 1 n cazul n care coloana este o cheie primara
table - numele tabelului MySQL cruia i aparine coloana
type - tipul MySQL al coloanei
unique_key - are valoarea 1 n cazul n care coloana este o cheie unica
unsigned - are valoarea 1 n cazul n care coloana este de tip UNSIGNED
zerofill - are valoarea 1 n cazul n care coloana este completata cu zerouri
Funcia mysql_fetch_field() preia doua argumente: valoarea returnata de funcia
mysql_query() i indexul coloanei care va fi descrisa. Indexul asociat primei coloane este 0, indexul
asociat celei de-a doua coloane este l etc.
Iat un exemplu care prezint modul de obinere i descriere a structurii complete a setului de
rezultate pentru prima coloana dintr-un tabel MySQL:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$info = mysql_fetch_field($rezultat, 0);
echo "<br /> Coloana 1: ";
echo "<PRE>
blob: $info->blob
max_length: $info->max_length
multiple_key: $info->multiple_key
name: $info->name
not_null: $info->not_null
numeric: $info->numeric
primary_key: $info->primary_key
table: $info->table
type: $info->type

280

unique_key: $info->unique_key
unsigned: $info->unsigned
zerofill: $info->zerofill
</PRE>";
mysql_close();
?>
Pentru a obine aceste proprieti pentru toate coloanele din tabel, folosii o instruciune "for",
dup exemplul de mai jos, care parcurge fiecare coloana, folosind ca limita a numrului de coloane
valoarea returnata de funcia mysql_num_fields()
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
$nr_cmpuri = mysql_num_fields($rezultat);
for ($i=0; $i<$nr_cmpuri; $i++) {
echo "<br /> Coloana $i: ";
$info = mysql_fetch_field($rezultat);
if ($info) {
echo "<PRE>
blob: $info->blob
max_length: $info->max_length
multiple_key: $info->multiple_key
name: $info->name
not_null: $info->not_null
numeric: $info->numeric
primary_key: $info->primary_key
table: $info->table
type: $info->type
unique_key: $info->unique_key
unsigned: $info->unsigned
zerofill: $info->zerofill
</PRE>";
}
else {
echo "Necunoscut";
}
}
mysql_close();
?>
13.27. Accesul non-secvenial la coloanele unui set de rezultate
Funciile mysql_fetch_row() i mysql_fetch_array() returneaz, n general, rndurile dintr-
un set de rezultate n mod secvenial, ncepnd de la primul rnd al tabelului. Totui, funcia
mysql_data_seek()permite obinerea accesului la rndurile unui set de rezultate ntr-o maniera non-
secveniala, . Funcia are forma:
mysql_data_seek(rezultat, numr_rnd)
unde "rezultat" este valoarea returnata de funcia mysql_query(), iar "numr_rnd" este indexul rndului
la care dorii s obinei accesul. Primul rnd al tabelului este numerotat cu 0, al doilea cu 1 etc.
Funcia returneaz TRUE dacexecuia reuete, respectiv FALSE n caz contrar.
Apoi, o invocare ulterioara a funciei mysql_fetch_row() sau a funciei mysql_fetch_array() va
returna rndul din poziia specificata n funcia mysql_data_seek().
Studiai urmtorul exemplu, care obine accesul la al treilea rnd al setului de rezultate returnat
de o interogare anterioara:
<?php
$sql = "SELECT * FROM `nume_tabel`";
$rezultat = mysql_query($sql);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";

281

}
if (!mysql_data_seek($rezultat, 2)) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
else {
$rand = mysql_fetch_array($rezultat, MYSQL_ASSOC);
foreach ($rand as $coloana) {
echo "| $coloana |";
}
}
mysql_close();
?>
Acest exemplu afieaz datele din rndul trei pentru fiecare coloana a tabelului MySQL
13.28. Determinarea bazelor de date gzduite de un server MySQL
Pentru a determina bazele de date gzduite de un server MySQL la care avei acces, utilizai
funcia:
mysql_list_dbs()
Funcia returneaz un set de rezultate alctuit din numele bazelor de date gzduite.
nti determinai numrul rndurilor din setul de rezultate utiliznd funcia mysql_num_rows(),
aa cum procedai n cazul unui set de rezultate normal. Apoi trebuie s preluai fiecare rnd cu
functiamysql_tablename(), care preia ca argumente valoarea returnata de funcia mysql_list_dbs() i
numrul rndului care va fi citit. Rndurile sunt numerotate ncepnd de la 0.
Iat un exemplu prin care putei afia numele bazelor de date gzduite pe "localhost":
<?php
$dbh = mysql_connect( "localhost", "nume_user", "parola")
or die("Unable to connect to MySQL");
$dblist = mysql_list_dbs();
$nr = mysql_num_rows($dblist);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
for ($i=0; $i<$nr; $i++) {
echo "<br />". mysql_tablename($dblist, $i);
}
mysql_close();
?>
13.29. Determinarea tabelelor incluse ntr-o baza de date MySQL
Pentru a obine o lista a tabelelor incluse ntr-o baza de date specificata, folosii funcia
mysql_list_tables()
Aceasta folosete ca argument numele bazei de date i returneaz un set de rezultate similar
celui returnat de mysql_list_dbs().
Pentru a obine acces la lista cu tabele, parcurgei setul de rezultate cu ajutorul unei instruciuni
"for" n cadrul creia utilizai funcia mysql_tablename().
Iat un exemplu care prezint modul de obinere i afiare a listei tabelelor din baza de date
"lucrudb":
<?php
$dbh = mysql_connect( "localhost", "nume_user", "parola")
or die("Unable to connect to MySQL");
$tabele = mysql_list_tables("lucrudb");
$nr = mysql_num_rows($tabele);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
for ($i=0; $i<$nr; $i++) {
echo "<br />". mysql_tablename($tabele, $i);
}
mysql_close();
?>

282

Pentru a putea obine lista cu tabelele dintr-o baza de date, trebuie ca numele de utilizator i
parola folosite s ofere acces la baza de date respectiv, n caz contrar vei primi un mesaj de eroare.
13.30. Determinarea coloanelor incluse ntr-un tabel
Pentru a obine o lista a coloanelor incluse ntr-un tabel, putei utiliza funcia:
mysql_list_fields()
Aceasta returneaz un set de rezultate alctuit din numele coloanelor tabelului specificat,
folosete ca argumente numele bazei de date i numele tabelului.
Iat un exemplu care va prezint modul de obinere a numelui coloanelor din tabelul "carti",
folosind functiamysql_list_fields():
<?php
$dbh = mysql_connect( "localhost", "nume_user", "parola")
or die("Unable to connect to MySQL");
$coloane = mysql_list_fields("lucrudb", "carti");
$nr = mysql_num_fields($coloane);
if (mysql_errno()) {
echo "<br />". mysql_errno(). " : ". mysql_error(). "<br />";
}
for ($i=0; $i<$nr; $i++) {
echo "<br />". mysql_field_name($coloane, $i);
}
mysql_close();
?>
Dacin locul numelui coloanelor dorii s obinei alte informaii despre colanele dintr-un tabel
MySQL, folosii n locul funciei mysql_field_name() din interiorul instruciunii "for", una din
funciile:mysql_fetch_fields(), mysql_field_flags(), mysql_field_len() sau mysql_field_type().
14. Scrierea expresiilor regulate (Regex)
Expresiile regulate (regex) sunt un sir de caractere ablon care descriu mulimea cuvintelor
posibile care pot fi formate cu acele caractere, respectnd anumite reguli. Aceste expresii regulate
folosesc paranteze (rotunde, ptrate, acolade) prin care formeaz regulile de formare a cuvintelor.
Utilitatea cea mai frecventa a unei expresii regulate consta n a recunoate dacun sir conine sau nu
cuvinte sau sub-sir care pot fi formate prin expresia regulata respectiva.
De ex.: expresia m[ai]r poate forma cuvintele: mar i mir
Sa presupunem ca dorii s specificai un sir care poate include orice vocala. Putei face aceasta
folosind expresia regulata [aeiou]. Prin includerea valorilor posibile ntre paranteze, formai o expresie
regulata echivalenta cu formularea "alege oricare din aceste valori". Dacdorii s permitei i utilizarea,
majusculelor, putei scrie [aeiouAEIOU].
Sa presupunem ca dorii s specificai un sir care poate include orice caracter scris cu minuscule.
Putei scrie: [abcdefghijklmnopqrstuvwxyz]. Sau putei folosi o forma mai compacta [a-z], unde prin
cratima se nelege "o serie de caractere consecutive".
Sa presupunem ca dorii s specificai ntr-o expresie regulata irurile "sat", "mat" i "lat". Pentru
aceasta, avei nevoie de expresia regulata [sml]at. Semnificaia acestei expresii regulate este
urmtoarea: "alege oricare din literele 's', 'm' i 'l' i scrie dup litera respectiva literele 'at'".
Dacun accent circumflex (^) este primul simbol menionat ntre parantezele drepte, acesta are
ca efect inversarea semnificaiei expresiei regulate plasate ntre paranteze.
De exemplu, expresia regulata [^a-z] corespunde oricrui caracter care nu este o litera mica.
Pentru a specifica faptul ca o expresie regulata se poate repeta, expresia regulat va fi urmata de
o pereche de acolade, care includ limitele superioara i inferioara ale repetiiei.
De exemplu, expresia regulata [aeiou]{1,4} corespunde irurilor care pot conine intre 1 i 4
vocale.
Pentru a specifica repetarea mai multor pri ale unei expresii regulate, includei prile
respective ntre paranteze rotunde.
De exemplu, expresia regulata ([sml]at){1 ,2} corespunde unui numr de una sau doua repetri
ale oricruia dintre irurile "sat", "mat" sau "lat".
Pentru a simplifica scrierea de reguli ntr-o expresie regulata se folosesc anumite caractere
"speciale"
Sa presupunem ca dorii s reprezentai o nmulire intre doua numere, putei obine ceva de
genul [0-9]*[0-9]. Totui, aceasta expresie regulata nu are semnificaia dorita, deoarece '*' este un
factor de repetiie, nu un caracter dintr-un sir. Pentru a dezactiva semnificaia speciala a caracterului '*',
trebuie sa-l prefixai cu un caracter backslash: [0-9]\*[0-9].

283

Pentru a specifica faptul ca o expresie regulata corespunde numai unui sub-sir care include
anumite caractere la nceput, prefixai expresia regulata cu un accent circumflex "^". De exemplu,
expresia regulata^[sml]at corespunde subirurilor "sat", "mat" sau "lat" numai dacacestea apar la
nceputul irului subiect.
Similar, pentru a arata ca o expresie regulata corespunde numai unui sub-sir care include
anumite caractere la sfrit, anexai la expresia regulata un simbol al dolarului "$". De exemplu, expresia
regulata[sml]at$ corespunde irurilor "sat", "mat" sau "lat" numai dacacestea apar la sfritul irului
subiect.
Iat o lista cu mai multe caractere speciale i rolul lor n expresiile regulate:
^ - indica nceputul liniei
$ - indica sfritul liniei
. - (punct) orice caracter
[] - un caracter dintre cele din parenezele ptrate
[^] - orice caracter, n afara celor din parenezele ptrate
\ - scoate din contextul formari expresiei caracterul care urmeaz
+ - caracterul (expresia) anterior acestui semn se poate repeta odat i de cate ori e posibil (de
la 1 la infinit)
- caracterul (expresia) anterior acestui semn se poate repeta de cate ori e posibil sau niciodat
(de la 0 la infinit)
? - caracterul (expresia) anterior acestui semn se poate repeta cel mult odat un cuvnt ntreg
(|) - lista de opiuni SAU
{m, n} - repetarea expresiei de la "m" la "n" ori
Iat cteva exemple de expresii regulate:
(.*) - Reprezint toate caracterele (prin .) repetate de cate ori e posibil (dat de *)
<salut> - Cuvntul "salut"
(ci|co)tim - Reprezint "citim" i "cotim"
^The .* hack$ - irurile care ncep cu "the " i se sfresc cu " hack"
^www.[a-z0-9]+.ro$ - Reprezint irurile "www.---.ro" unde '---' poate fi orice litera sau cuvnt
ce conine litere mici i numere
(^-\+[0-9]*) - Orice numr care ncepe cu "-" sau "+"
^([a-zA-Z0-9]+[a-zA-Z0-9._%-]*@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4})$ - Expresie regulata
pentru adrese de e-mail
14.1. Utilizarea expresiilor regulate
PHP include numeroase funcii care lucreaz cu expresii regulate. Tabelul urmtor descrie unele
din aceste funcii.



Funcii PHP pentru expresii regulate
Funcie Descriere
ereg
- Executa o identificare cu o expresie regulata (ncepnd cu versiunea PHP 5.3
i anulata la PHP 6)
ereg_replace
- nlocuiete un subir care corespunde unei expresii regulate (depreciata
ncepnd cu versiunea PHP 5.3 i anulata la PHP 6 - n locul ei poate fi folosita
preg_replace)
eregi
- Executa o identificare cu o expresie regulata insensibila la diferena ntre
majuscule i minuscule (depreciata ncepnd cu versiunea PHP 5.3 i anulata la
PHP 6)
eregi_replace
- nlocuiete un sub-sir care corespunde unei expresii regulate insensibile la
diferena ntre majuscule i minuscule (depreciata ncepnd cu versiunea PHP
5.3 i anulata la PHP 6 - n locul ei poate fi folosita preg_replace)
preg_replace
- Cauta n sir caracterele sau ablonul care se potrivete cu expresia regulata
din funcie i o nlocuiete cu alte valori date
split
- Divide un sir ntr-un tablou folosind o expresie regulata (depreciata ncepnd
cu versiunea PHP 5.3 i anulata la PHP 6 - n locul ei poate fi folosita preg_split)

284

sql_regcase
- Creeaz o expresie regulata, insensibila la diferena ntre majuscule i
minuscule, dintr-un sir care conine o expresie regulata (depreciata ncepnd cu
versiunea PHP 5.3 i anulata la PHP 6)
In continuare este dat un exemplu cu funcia ereg().
Forma simpla a funciei ereg() preia doua argumente: un sir care conine o expresie regulata i
un sir subiect. Funcia returneaz TRUE dacexpresia regulata corespunde unui sub-sir al irului subiect;
n caz contrar, returneaz FALSE.
Iat un exemplu:
<?php
$model = "[sml]at";
$subiect = "La noi n sat";
$rezultat = ereg($model, $subiect);
if ($rezultat) {
echo 'Model inclus n subiect';
}
?>
In acest script, variabila $rezultat primete valoarea TRUE, deoarece irul 'subiect' conine
subirul "sat", care corespunde expresiei regulate.
Pentru verificare, instruciunea "if" verifica dac"$resultat" este TRUE i n caz afirmativ executa
comanda dintre acolade, "echo" care afieaz 'Model inclus n subiect'.
Pentru a verifica dacun sir conine numai litere i numere, putei folosi direct funcia
ctype_alnum()
Deoarece funciile "ereg" au fost depreciate ncepnd cu versiunea PHP 5.3 i anulate din PHP 6,
este indicat s nu le mai folosii, cunoaterea lor e necesara dacle ntlnii n scripturi mai vechi. Acestea
au fost nlocuite cu funcii "preg_" (Perl-Compatible)..
Expresiile regulate compatibile Perl se aduga intre caractere "/". De exemplu ablonul ([a-z0-
9]+) se folosete /([a-z0-9]+)/.
Iat un exemplu cu preg_grep(), aceasta returneaz un array compus din elementele unei
matrice care conin ablonul, expresia regulata cutat. Acest exemplu va returna doar acele elementele
dintr-o matrice care conin n ele subirurile "casa" sau "masa".
<?php
$matrice = array('123casa', 'abc masa', '12-xy', '$asa_0/', '123abc casa');
$filtru = preg_grep("/([cm]aa)/", $matrice);
print_r ($filtru); // Afieaz elementele matricei
?>
Variabila "$matrice" conine un Array cu mai multe elemente cu iruri.
In variabila $filtru e preluat rezultatul funciei "preg_grep()" a crei prim parametru este un
ablon de expresie regulata (adugat intre ghilimele duble), iar al doilea este matricea n care e cutat
ablonul.
Cu funcia "print_r()" se va afia elementele matricei obinute n variabila "$filtru". Rezultatul
afiat e urmtorul:
Array ( [0]=>123casa [1]=>abc masa [4]=>123abc casa )
Un ultim exemplu util, folosim funcia preg_replace() i o expresie regulata pentru a elimina
caracterelor speciale dintr-un sir
<?php
$sir = 'Sir& ce conine*a <caractere: speciale? /in co@nte>xt';
$sir = preg_replace("/([^ A-Za-z0-9_]+)/", "", $sir);
echo $sir;
?>
In acest exemplu avem un sir (stocat n variabila $sir) ce conine diferite caractere mai puin
uzuale.
Funcia "preg_replace", mpreun cu expresia regulata "/(^ A-Za-z0-9_]+)/", pstreaz n $sir
numai literele, cifrele, caracterul '_' i spaiu.
Instruciunea "echo" va afia urmtorul rezultat:
Sir ce coninea caractere speciale n context
O abordare importanta a activitii de programare, care a devenit populara dup 1990, este
orientarea spre obiecte, OOP (Object Oriented Programming).

285

Orientarea spre obiecte a fost creata ca o modalitate de organizare mai eficienta a unor
programe de simulare complexe, metoda care s-a dovedit utila n scrierea i utilizarea programelor
interactive.
Principiul de baza al programrii orientate spre obiecte l reprezint ncapsularea datelor,
gruparea lor n module.
Un program care nu este orientat spre obiecte este organizat ca un set de funcii i un set de
variabile globale utilizate de acele funcii. Orice funcie poate opera folosind orice variabila globala.
Un program orientat spre obiecte combina una sau mai multe funcii create de programator ntr-o
unitate, cunoscuta sub numele de "clasa".
Programele orientate spre obiecte pot fi mai uor de neles i modificat, deoarece interaciunile
ntre clasele unui program orientat spre obiecte sunt relativ reduse ca numr. Astfel, un programator
poate studia i nelege un program orientat spre obiecte abordnd fiecare clasa n parte, nu toate clasele
deodat.
Pe lng modalitatea de programare liniara (procedurala), nvat pana acum, PHP permite s
creai i s folosii clase i obiecte, respectiv proprietile i metodele asociate acestora.
14.2. Clasele
O clasa este de fapt o structura care conine variabile (membrii) i funcii (metode), Metodele
sunt operaiile pe care membrii clasei le pot efectua.
Membrii i metodele declarate ntr-o clasa aparin clasei respective i se acceseaz specificnd
numele clasei.
O clasa poate include o metoda speciala, numita "metoda constructor" sau "constructor". Aceasta
este o funciei din clasa care are acelai nume cu denumirea clasei.
Diferena ntre clasa i obiect este importanta. Dac o clasa poate fi asimilata unui tip de date, un
obiect poate fi echivalat cu o variabila sau cu o valoare avnd un anumit tip de date. Practic, o clasa este
o "fabrica" de obiecte, care produce obiecte cu aceeai structura, avnd proprieti i metode identice.
Pe lng ncapsularea datelor, o alta caracteristica importanta al POD este motenirea
Motenirea consta n aceea ca putem declara anumite clase ca fiind derivate din alte clase de
baza. n cele mai multe situaii clasa derivata (numita i clasa copil) extinde, primete funcionalitile
clasei de baza (numita i clasa printe). n acest fel se reduce foarte mult cantitatea de cod necesara.
14.2.1. Alctuirea i instanierea unei clase
Definirea unei clase ncepe cu un cuvntul cheie "class". Variabilele sau membrii clasei se
specifica folosind cuvntul "var". Funciile sau metodele unei clase se declara specificnd cuvntul
"function" . Structura general de alctuire a unei clase este urmtoarea:
class nume_claca {
var membru1;
var membru2;
.................
function nume_funcie(); {
function metoda1();
function metoda2();
.................
}
}
Pentru a nelege mai bine modalitatea de definire a unei clase n PHP, consideram urmtorul
exemplu n care alctuim o clasa simpla denumita "ContBanca":
<?php
// Definirea clasei
class ContBanca {
var $sold = 0; // Membru clasei
// Definirea primei metode a clasei
function c_depozit($suma) {
$this->sold = $this->sold + $suma;
}
// Definirea celei dea doua metode a clasei
function obine_sold() {
return $this->sold;
}
}
?>

286

Clasa "ContBanca" are un singur membru, "$sold" i doua metode: "c_depozit()" i


"obine_sold()".
Membru (variabila) "$sold" este definita de o instruciune "var". Clasa "ContBanca" atribuie
variabilei "$sold" valoarea iniial zero ( Nu este necesara atribuirea unei valori iniiale unei proprieti,
dar astfel programele devin mai simple i mai uor de citit).
Cele doua metodele (funcii) sunt definite folosind cuvntul cheie "function". (Diferena dintre
metode i funcii este legata de amplasarea acestora, pentru a se face deosebirea; metodele sunt definite
n interiorul claselor, n timp ce funciile sunt definite n exteriorul acestora).
Un aspect interesant al metodelor consta n modalitatea n care acestea obin accesul la variabila,
folosind sintaxa "$this->" (aceasta are o semnificaie similara cu a pronumelui posesiv din limba romna
(al meu)). Cnd o metoda face o referire de forma "$this->sold", se considera ca face trimitere la
membru "$sold" a obiectului curent, aici efectul este similar cu acela al expresiei "sold-ul mea".
Instanierea unei clase se face prin operatorul "new", avnd urmtoarea forma generala:
$nume_variabila = new nume_clasa();
Variabila "$nume_variabila" conine o referina la clasa "nume_clasa". n continuare se apeleaz
metodele clasei respective, asta se face prin operatorul de referina "->" ca mai jos:
$nume_variabila->Metoda1();
Variabila apeleaz metoda cu numele "Medoda1()", care aparine clasei "nume_clasa".
tergerea instanelor unei clase se face simplu prin apelarea funciei:
unset($nume_variabila)
Dup aceasta tergere, orice apel de genul "$nume_variabila->Metoda1();" va fi semnalat ca
eroare.
Iat un exemplu concret de instaniere n care folosim clasa "ContBanca", definita mai sus.
<?php
// Definirea clasei
class ContBanca {
var $sold = 0; // Membru clasei
// Definirea primei metode a clasei
function c_depozit($suma) {
$this->sold = $this->sold + $suma;
}
// Definirea celei dea doua metode a clasei
function obine_sold() {
return $this->sold;
}
}
// Instanierea clasei (setarea obiectului)
$cont = new ContBanca();
// Apelarea metodelor din obiectul setat
$cont->c_depozit(90);
echo "<br /> Soldul este : ". $cont->obine_sold();
?>
Prima instruciune, dup crearea clasei, seteaz (instanial) un obiect "ContBanca" folosind
operatorul "new" i stocheaz referina la acest obiect n variabila "$cont", care va fi utilizata ulterior
pentru a obine acces la metodele obiectului.
A doua instruciune folosete variabila "$cont", (care face referire la obiectul "ContBanca" creat
de prima instruciune). Operatorul "->" arata ca PHP trebuie s apeleze metoda "c_depozit()" asupra
obiectului desemnat de variabila "$cont".
Astfel, prin a doua instruciune se va executa metoda "c_depozit()", creia ii este transmis
argumentul 90. Dup cum este definita, metoda "c_depozit", aceasta incrementeaz valoarea membrului
"$sold" cu valoarea argumentului din paranteze, "$suma" (adic aici 90).
Cea de-a treia instruciune invoca metoda "obine_sold()", care returneaz valoarea membrului
"$sold". Instruciunea afieaz valoarea returnata prin intermediul unei instruciuni "echo", afind
"Soldul este : 90".
14.2.2. Definirea unei metode constructor
Metoda constructor este o funcie din interiorul clasei care are aceeai denumire cu numele
clasei.
Pentru ca o clasa s fie eficienta, ar trebui s aib mai muli membri.

287

De exemplu, clasa "ContBanca", pe lng membrul "$sold", ar necesita membrii care s


defineasc numele i id-ul posesorului.
Iat o noua versiune a clasei, care include trei membri i o metoda constructor:
<?php
// Definirea clasei
class ContBanca {
// Membri clasei
var $cont_id;
var $nume_posesor;
var $sold = 0;
// Definirea metodei constructor
function ContBanca($id, $nume, $suma) {
$this->cont_id = $id;
$this->nume_posesor = $nume;
$this->sold = $suma;
}
// Definirea celei dea doua metode a clasei
function c_depozit($suma) {
$this->sold = $this->sold + $suma;
return $this->sold;
}
}
?>
Constructorul este "function ContBanca()", aa cum se observa, are acelai nume ca al clasei.
Deosebirea fata de ceilali membri este ca la invocarea operatorului "new", pentru setarea obiectului, PHP
va apela automat i aceasta funcie din clasa.
Argumentele constructorului sunt folosite pentru a stabili valorile iniiale ale membrilor noului
obiect, "$id", "$nume" i "$suma".
Iat cum s-ar putea folosi noua clasa, adugm codul de mai jos dup datele de definire a clasei,
pe care nu le mai repetam:
<?php
// Aici sunt adugate datele pentru definirea clasei
// Setarea (instanierea) obiectului "ContBanca"
$cont = new ContBanca(8, "Plo Mar", 100);
echo "<br /> Contul $cont->cont_id aparine lui $cont->nume_posesor";
// Apelarea celei dea doua metode
$cont->c_depozit(90);
echo "<br /> Soldul este $cont->sold";
?>
Instruciunea "$cont = new ContBanca(8, "Plo Mar", 100);" obine accesul la membrii obiectului
n mod direct, prin "constructorul" care are acelai nume cu al clasei, transferndu-le valorile "8", "Plo
Mar" i "100"
Datele de ieire ale acestui exemplu sunt urmtoarele:
Contul 8 aparine lui Plo Mar
Soldul este 190
14.2.3. Utilizarea motenirii
Aa cum s-a explicat la nceput, un avantaj al programrii orientate spre obiecte este facilitatea
cunoscuta sub numele de motenire.
Pentru a nelege cum funcioneaz, iat un exemplu care prezint modul de derivare a unei clase
"ContCurent" din clasa de baza "ContBancar", definita anterior i pe care o salvam ntr-un fiier extern
"contbanca.php":
<?php
include("contbanca.php"); // Include clasa printe (sau poate fi scrisa aici)
// Definirea clasei copil
class ContCurent extends ContBanca {
var $cec_nr; // Membru clasei copil
// Metoda constructor a clasei copil
function ContCurent($id, $nume, $suma, $cecnr) {
$this->cont_id = $id;

288

$this->nume_posesor = $nume;
$this->sold = $suma;
$this->cec_nr = $cecnr;
}
// A doua metoda a clasei copil
function primire_cec($cecnr, $suma) {
$this->sold = $this->sold - $suma;
}
// A treia metoda a clasei copil
function obine_sold() {
return $this->sold;
}
}
?>
Exemplul folosete o instruciune "include" pentru a obine accesul la definiia clasei "ContBanca".
(sau putei scrie direct aceasta clasa n locul "include").
Cuvntul cheie "extends" stabilete identitatea clasei "ContCurent" ca fiind derivata (copil) a
clasei "ContBanca".
Clasa derivata definete un membru, "$cec_nr", de asemenea, definete un constructor i alte
doua metode, "primire_cec()" i "obine_sold()".
Important este faptul ca aceasta clasa mai include i membrii definii n clasa de baza (printe):
"$cont_id", "$nume_posesor" i "$sold", n plus va moteni i metoda "c_depozit()". Constructorul clasei
copil atribuie valori membrilor motenii, dar i membrilor noi definii n clasa copil.
Clasa derivata (copil) se folosete ca orice clasa.
Dup ce adugm datele de definire a claselor printe i copil prezentate mai sus, creem un
obiect "ContCurent" care face referire la aceasta clasa copil, ca n exemplul urmtor.
<?php
// Aici sunt adugate datele pentru clasa printe i clasa derivata (copil)
// Setarea (instanierea) obiectului "ContCurent"
$cont = new ContCurent(8, "Plo Mar", 100, 11);
$cont->primire_cec(11, 150); // Apeleaz metoda creata n clasa copil
$cont->c_depozit(250); // Apeleaz metoda motenit
echo "<br /> Soldul este". $cont->obine_sold();
?>
Observai ca metoda "c_depozit()", care este definita n clasa de baza, este invocata ca i cum ar
fi fost definita n clasa derivata; metodele motenite se apeleaz la fel ca cele create n clasa copil.
Dup ce vei include n acelai fiier php clasa printe, clasa copil i instanierea de mai sus,
rezultatul afiat dup execuia acestui fiier va fi: Soldul este 200".
14.2.4. Redefinirea metodelor
Uneori, o clasa printe include o metoda (funcie) care nu este adecvata pentru o clasa copil. n
loc de a re-crea noua clasa fr referire la o clasa de baza, putei anula metoda inadecvata adugnd o
metoda cu acelai nume n clasa copil (derivata). Astfel la instaniere va fi folosita metoda, cu acelai
nume, din clasa derivata.
De exemplu, s consideram urmtoarea clasa:
<?php
class ContBanca2 {
var $cont_id;
var $nume_posesor;
var $sold = 1;
function ContBanca2($id, $nume, $suma) {
$this->cont_id = $id;
$this->nume_posesor = $nume;
$this->sold = $suma;
}
function nchide_cont() {
$suma = $this->sold;
$this->sold = 1;
return $this->sold;
}

289

}
?>
Sa presupunem ca dorim s derivam din aceasta o clasa copil care reprezint un nou tip de cont
bancar, cu dobnda. La nchiderea contului, programul trebuie s calculeze dobnda pe care s o adauge
la soldul curent i s returneze suma acumulata.
Iat cum putem proceda, definim clasa derivata astfel:
<?php
class ContEco extends ContBanca2 {
function nchide_cont($zile, $rata) {
$suma = $this->sold * $rata * ($zile / 365);
$suma = $suma + $this->sold;
$this->sold = 1;
return $suma;
}
}
?>
In cadrul clasei derivate (copil) este definita o metoda numita "nchide_cont()". O metoda cu
acelai nume exista i n clasa de baza (clasa printe), dar are o alta definiie. Astfel, n clasa copil nu va
mai fi motenit metoda cu acelai nume, ci o va folosi pe cea proprie.
In continuare creem un obiect "ContEco" i apelam metoda "nchide_cont()" astfel:
<?php
// Aici sunt adugate datele pentru definirea clasei de baza, ContBanca2
// Aici sunt adugate datele pentru definirea clasei derivate, ContEco
$cont = new ContEco(8, "Didi", 100);
echo "<br /> Didi primete ". $cont->nchide_cont(22, 0.8);
// Va fi afiat irul: "Didi primete 104.82191780822"
?>
Este invocata metoda "nchide_cont" definita de clasa copil, nu cea definita n clasa printe.
Astfel, metoda definita n clasa printe a fost anulata (redefinita) de ctre metoda, cu acelai nume,
definita n clasa copil.
14.2.5. Invocarea unei metode redefinite
Dacncercai s invocai o metoda anulata (redefinita), probabil ca vei obine o eroare.
Dacin exemplul anterior, am fi scris instruciunea: "echo "<br /> Didi primete ". $cont-
>nchide_cont();", fr cele doua argumente (22, 0.8), ncercnd astfel s facem referire la metoda
anulata "nchide_cont()", am primi mesaje de eroare:
Warning: Missing argument 1 for ContEco::nchide_cont(),
Warning: Missing argument 2 for ContEco::nchide_cont(),
Cu toate acestea, este posibila invocarea metodei redefinite. Prin specificarea n clasa copil a
numelui clasei printe, urmat de o pereche de caractere doua puncte (::) i metoda redefinita. Astfel se
poate indica programului PHP s foloseasc metoda, cu acelai nume, definita n clasa printe, nu
metoda definita n clasa copil.
Invocarea unei metode redefinite este un procedeu mai complicat, pentru nceptori este mai
bine a fi evitat deoarece poate complica nelegerea scriptului.
Iat cum ar arata clasa derivata utiliznd acest procedeu:
<?php
class ContEco extends ContBanca2 {
function nchide_cont($zile, $rata) {
$suma = ContBanca2::nchide_cont();
$suma = $suma + $suma * $rata * ($zile / 365);
return $suma;
}
}
?>
14.3. Tablouri cu obiecte
Tablourile (numite i matrice) reprezint o modalitate convenabila pentru lucrul cu mai multe
valori. Valorile stocate n tablouri pot face referire la obiecte exact aa cum procedeaz n cazul
numerelor sau al irurilor.
Un tablou care face referire la obiecte se numete "tablou cu obiecte".

290

Pentru a nelege modul de utilizare a unui tablou cu obiecte, s examinam urmtoarea clasa
"ContBanca" i doua clase copil ale acesteia:
<?php
// Clasa printe
class ContBanca {
var $cont_id;
var $nume_posesor;
var $sold;
var $tip_cont;
function ContBanca($id, $nume, $suma, $tip) {
$this->cont_id = $id;
$this->nume_posesor = $nume;
$this->sold = $suma;
$this->tip_cont = $tip;
}
function dump() {
return "Cont = ". $this->cont_id.
" posesor = ". $this->nume_posesor.
" sold = ". $this->sold.
" tip = ". $this->tip_cont;
}
}
// ncepe codul pt. prima clasa copil
class ContCurent extends ContBanca {
function ContCurent ($id, $nume, $suma) {
ContBanca::ContBanca($id, $nume, $suma, "curent");
}
}
// ncepe codul pt. a doua clasa copil
class ContEco extends ContBanca {
function ContEco ($id, $nume, $suma) {
ContBanca::ContBanca($id, $nume, $suma, "economii");
}
}
?>
Remarcai faptul ca metodele constructor ale celor doua clase copil fac referire la constructorul
clasei printe (folosind perechea "::"), reutiliznd n mod eficient caracteristica furnizata de clasa printe,
reducnd astfel codul programului.
Acum, creem instane ale claselor copil i stocam referinele la aceste instane ntr-un tablou:
<?php
$cont[0] = new ContCurent(11, "Plo Mar", 100);
$cont[1] = new ContEco(12, "Didi", 140);
?>
Dup ce referinele au fost stocate n tablou, pot fi accesate n mai multe moduri,.
De exemplu, dup ce am definit clasele i am stocat instanele n tabloul "$cont[]" de mai sus,
adugm urmtorul cod:
<?php
// Aici adugm datele pt. definirea claselor
// Aici adugm codul pentru stocarea instanelor n tablou
foreach ($cont as $contul) {
echo "<br /> ". $contul->dump();
}
?>
Apelam metoda "dump()" deoarece aceasta este inclusa n clasa printe, deci motenit de
clasele copil, i are ca rol returnarea datelor.
Tabloul este simplu de parcurs, prin invocarea metodei "dump()", care doar afieaz membrii
claselor unui obiect "ContBancar" sau ale unui obiect din una din clasele sale copil.
Exemplul va afia urmtorul rezultat:
Cont = 11 posesor = Plo Mar sold = 100 tip = curent

291

Cont = 12 posesor = Didi sold = 140 tip = economii


Primul rnd reprezint datele returnate din "$cont[0]" care face referire la obiectul clasei copil
"ContCurent"
Al doilea rnd reprezint datele returnate din "$cont[1]" care face referire la obiectul clasei copil
"ContEco
15. Resurse PHP online
Developer Shed - Un site plin de informaii pentru programatori, server-side, client-side, inclusiv
PHP, MySQL, Perl etc. - http://www.devshed.com
Documentaie funcii PHP (Zend) - Cuprinde descrierea funciilor PHP realizat de Zend
Technologies. - http://www.zend.com/phpfunc
Funcii PHP nedocumentate - Manualul PHP nu documenteaz toate funciile PHP. Aici pot fi
gsite informaii detaliate despre aceste funcii nedocumentate.
http://www.zend.com/phpfunc/nodoku.php
Manualul PHP Offline - PHP ofer celor interesai posibilitatea de a descrca documentaie n
diverse formate (text, html, pdf, chm).
http://www.php.net/download-docs.php
Building a Database-Driven Web Site Using PHP and MySQL - Un tutorial scris de Kevin Yank
excelent att pentru nceptori, ct i pentru cei puintel mai avansai. De la instalare, sub
diverse sisteme de operare, pn la chestiuni complexe legate de expresii regulate sau interogri
SQL, tutorialul merit citit.
http://www.sitepoint.com/books/phpmysql1/
Cel mai tare tutorial de php - Intrai pe cel mai tare tutorial...n curnd i noi versiuni...cuprinde
totul inclusiv o serie de exerciii, sisteme de autentificare....etc.
http://oriceon.com
Ghid PHP pentru nceptori - Conine lecii PHP pentru nceptori, cu exemple practice, explicaii
i rezolvri - http://php.punctsivirgula.ro/
Internet Application Workbook - Lecii interesante publicate de unul dintre cei mai activi
universitari din SUA. Cursuri excelente att pentru nceptori, ct i pentru lefuirea cunotinelor
avansailor. - http://philip.greenspun.com/internet-application-workbook
Programare.net - O scurt introducere n PHP nsoit de cerinele de sistem i de un exemplu.
http://www.programare.net/?t=1
Redirectare - Redirectare ctre o alt pagin folosind funcia header().
http://www.programare.net/?t=5
TheScripts.com - Web Programming Resource - O colecie de tutoriale pentru PHP/PHP-MySQL
realizate de profesioniti.
http://www.thescripts.com/serversidescripting/php
Trimiterea unui formular prin email folosind PHP - Un caz des utilizat de folosire a PHP-ului este
n procesarea datelor unui formular. Adugai i funcia mail() i vei avea un sistem rudimentar
dar puternic de submitere a datelor introduse de vizitatori.
http://www.programare.net/?t=2
Tutorial Find - O list n plin dezvoltare cu diverse tutoriale dedicate limbajului PHP sau duetului
PHP-MySQL. http://www.find.com.au/tutorials/webdevelopment/php
Tutoriale diverse - Aici vei gsi o mulime de tutoriale...
http://www.devshed.com/Server_Side/PHP
Tutoriale i scripturi - Tutoriale (n limba romn)- PHP, MySQL, Java, HTML, Adobe Photoshop,
3D Studio Max. http://cata.lx.ro/tutoriale.php
web design house-php tutorial - 1.Creating my first PHP file 2. Displaying Date and Time 3.GET
and POST methods and how to get info from them 4.PHP Session 5. Learn abour your server:
php variables http://www.wdh.ro/ifphp.html
WebMonkey | Programming | PHP - O list de tutoriale (n limba englez) care acoper diverse
aspecte ale iniierii n PHP.
http://hotwired.lycos.com/webmonkey/programming/php
Zend Tutorials Aici gsii o serie de tutoriale PHP - att pentru nceptori, ct i pentru avansai.
http://www.zend.com/zend/tut/
15.1. Administratorul bazei de date
Administratorul bazei de date este un program ce asigur interfaa dintre datele nmagazinate,
aplicaiile care folosesc aceste date i ntrebrile adresate sistemului cu ajutorul crora se extrag datele
necesare. De obicei, bazele de date necesit un spaiu mare de nmagazinare pe mediul de stocare ales,
ce poate ajunge de ordinul gigabytes-ilor. Pentru a putea fi prelucrate datele se transfer din memoria

292

extern n memoria intern a sistemului. Scopul sistemului bazei de date este acela de a uura accesul la
date, iar administratorul bazei de date este rspunztor de urmtoarele:
asigur interaciunea cu administratorul de fiiere (trebuie s transfere instruciunile limbajului de
manipulare a datelor n comenzi de nivel sczut recunoscute de sistemul de fiiere);
asigur integritatea datelor prin verificrile pe care le efectueaz n momentul actualizrii datelor
astfel nct acestea s nu ncalce constrngerile impuse i s fie consistente;
asigur securitatea datelor prin accesul controlat la date pe care l ofer utilizatorilor (acetia nu
pot accesa orice fel de date dac nu le este permis acest lucru);
creeaz copiile de siguran i asigur refacerea datelor, n cazul apariiei unei erori sau
defeciuni n baza de date, la starea la care acestea se aflau nainte de apariia erorii sau
defeciunii;
asigur controlul concurenei pstrnd consistena datelor atunci cnd acestea sunt accesate n
acelai timp de mai muli utilizatori.
Resursele umane sunt reprezentate de:
1. Administratorul de date este responsabil de gestionarea resurselor de date i proiectarea
conceptual / logic a bazei de date.
2. Administratorul bazei de date este responsabil de realizarea fizic a bazei de date ce implic
proiectarea i implementarea acesteia. Administratorul bazei de date este o persoan care are n
rspundere controlul centralizat al datelor i al aplicaiilor ce folosesc aceste date. ndatoririle
administratorului bazei de date cuprind:
definete schema bazei de date, ceea ce presupune scrierea unui set de definiii n limbajul de
definire a datelor care apoi s poat fi compilate de ctre un compilator DDL i transformate ntr-
un set de tabele pstrate n catalogul sistemului;
definete structura de stocare i a metodele de acces prin scrierea unui set de definiii transferate
compilatorului;
modific schema i organizarea fizic prin scrierea unui set de definiii utilizate de ctre
compilatorul DDL pentru a face modificrile cerute n tabele;
asigur securitatea prin acordarea drepturilor de acces utilizatorilor pe baza unor conturi de
utilizator create n acest scop;
verific respectarea constrngerilor de integritate ori de cte ori se introduc date n baza de date;
monitorizeaz toate activitile utilizatorilor;
monitorizeaz creterea dimensiunilor bazei de date;
i formeaz o imagine de ansamblu asupra sistemului, urmrind prile tari i slabe ale acestuia;
asigur controlul concurenei prin alegerea tipului de blocare ce va fi folosit atunci cnd aceleai
date sunt folosite de mai muli utilizatori n acelai timp;
asigur fiabilitatea sistemului n cazul apariiei unor erori.
Proiectanii de baze de date care pot fi:
Proiectant de baze de date logice:
o identific datele (entiti i atribute);
o identific relaiile dintre date;
o identific constrngerile;
o identific regulile ce descriu principalele caracteristici ale datelor;
o implic utilizatori n realizarea modelului de date.
Proiectant de baze de date fizice:
o transpune modelul logic ntr-un set de tabele i constrngeri;
o selecteaz structuri de stocare i metode de acces specific;
o asigur securitatea datelor.
Utilizatorii finali care pot fi de urmtoarele categorii:
Programatorii de aplicaii. Acetia sunt profesionitii ce interacioneaz cu sistemul folosind
instruciuni scrise n limbajul de manipulare a datelor pe care le ncorporeaz n cadrul unor
interfee create n alte limbaje de programare. Precompilatorul DML convertete apelurile scrise
n limbajul de manipulare a datelor n proceduri specifice limbajului gazd. Compilatorul limbajului
gazd genereaz apoi codul obiect.
Utilizatori cu pregtire special. Acetia interacioneaz cu sistemul fr a scrie programe, dar ei
formuleaz cereri pentru a extrage date din baza de date cu ajutorul instruciunilor specifice
limbajului de manipulare a datelor. Aceste cereri sunt transmise procesorului de interogare care
desparte o instruciune specific limbajului de manipulare a datelor n instruciuni specifice
modulului de administrare a bazei de date.

293

Utilizatori specializai. Acetia sunt utilizatori cu pregtire special care scriu programe aplicaie
specializate pentru diverse zone de interes (sisteme CAD, sisteme expert etc.).
Utilizatori obinuii. Acetia sunt utilizatori care interacioneaz cu sistemul folosind interfeele
create de programatorii de aplicaii.

S-ar putea să vă placă și