Sunteți pe pagina 1din 49

Cuprins

Introducere..............................................................................................................................5
Capitolul I Tehnologii Web..................................................................................................7
1.1 WEB suport pentru aplicaiile distribuite...............................................................8
1.1.1 Documente statice..................................................................................................8
1.1.2 Documente active..................................................................................................9
1. 2 Limbajul HTML....................................................................................................10
1.2.1 Principalele tag-uri HTML..................................................................................10
1.2.2 Crearea formularelor HTML...............................................................................12
1.3 Limbajul JavaScript Generaliti.............................................................................15
1.3.1 Scurt caracterizare a limbajului.........................................................................15
1.4 Utilizare PHP..............................................................................................................16
1.4.1 Stocarea i regsirea datelor................................................................................17
1.4.2 Utilizarea tablourilor............................................................................................20
Capitolul II - Utilizare MySQL.......................................................................................22
2.1 Crearea bazei de date pentru Web...........................................................................22
2.2 Utilizarea bazei de date MySQL.............................................................................23
2.3 Accesarea bazei de date MySQL de pe Web prin PHP...........................................25
Capitolul III Studiu de caz Aplicaie Web pentru dezvoltarea turismului romnesc......26
3.1 Crearea bazei de date i a tabelelor.............................................................................27
3.1.1 Crearea bazei de date...........................................................................................27
3.1.2 Crearea tabelelor..................................................................................................28
3.2 Construcia paginilor WEB.........................................................................................30
3.2.1 Construcia paginii-ablon...................................................................................30
3.2.2 Construcia indexului...........................................................................................33
3.2.3 Construcia paginilor cu obiective turistice i hoteluri........................................35
3.2.4 Crearea fiierului config.php...............................................................................39
3.2.5 Construcia paginilor cu formulare de rezervri la hoteluri.................................40
3.2.6 Construcia paginilor de validare a datelor din formulare...................................44
3.2.7 Construcia paginilor de prelucrare a datelor din formulare................................44
3.2.8 Construcia paginilor de vizualizare a datelor din formulare..............................45
3.3 Construcia fiierului stiluri.css..................................................................................46
Concluzii...............................................................................................................................48
Bibliografie...........................................................................................................................49

Lista figurilor

Figura 2.1 : Arhitectura aplicaiilor Web..............................................................................15


Figura 2.2 : Documente active.............................................................................................16
Figura 2.3 : Caset text.........................................................................................................21
Figura 2.4 : Text area............................................................................................................21
Figura 2.5 : Butoane radio....................................................................................................21
Figura 2.6 : Casete de validare.............................................................................................21
Figura 2.7 : List de selecie................................................................................................21
Figura 2.8 : Butoane.............................................................................................................23
Figura 2.9 : Modul de funcionare PHP...............................................................................28
Figura 3.1 : Crearea bazei de date........................................................................................54
Figura 3.2 : Tabelele bazei de date.......................................................................................54
Figura 3.3 : Cmpurile tabelelor..........................................................................................55
Figura 3.4 : Pagina-ablon....................................................................................................56
Figura 3.5 : Modul de construcie al hrii interactive.........................................................58
Figura 3.6 : Harta interactiv...............................................................................................59
Figura 3.7 : Construcia paginii bastionul_cojocarilor.php..............................................61
Figura 3.8 : Rollover image.................................................................................................62
Figura 3.9 : Formularul de rezervare la hoteluri..................................................................66
Figura 3.10 : Cerine de validare a formularelor..................................................................67
Figura 3.11 : Coninutul unui tabel......................................................................................68
Figura 3.12 : Selectarea unei reguli CSS.............................................................................69
Figura 3.13 : Opiuni de selectare a unei reguli CSS...........................................................69
Figura 3.14 : Crearea fiiereului stiluri.css.......................................................................70

Lista tabelelor

Tabelul 2.1: Atribute asociate tag-urilor HTML.................................................................19


Tabelul 2.2 : Cmpuri din formulare....................................................................................20
Tabelul 2.3 : Evenimente gestionate cu JavaScript..............................................................27
Tabelul 2.4 : Rezumatul modurilor fiierelor pentru funcia fopen( )..............................30
Tabelul 2.5 : Operatori pentru tablouri n PHP....................................................................36
Tabelul 2.6 : Funcii de sortare a tablourilor........................................................................37
Tabelul 2.7 : Funcii de navigare n tablouri........................................................................38
Tabelul 2.8 : Privilegii pentru utilizatori..............................................................................43
Tabelul 2.9 : Privilegii pentru administratori.......................................................................43
Tabelul 2.10 : Privilegii speciale..........................................................................................44
Tabelul 2.11 : Identificatori n MySQL................................................................................45
Tabelul 2.12 : Tipuri de date numerice.................................................................................46
Tabelul 2.13 : Tipuri temporale de date................................................................................47
Tabelul 2.14 : Tipurile de date TEXT i BLOB...................................................................47
Tabelul 2.15 : Tipurle de date ENUM i SET......................................................................48

Introducere

Dezvoltarea societii informaionale s-a fcut ntr-un mod alert, acest lucru fiind
favorizat n mare msur de apariia Internetului. Acesta ofer o serie de faciliti dintre
care putem aminti: aceesarea de informaii utile ntr-un timp foarte scurt comparativ cu
cutarea clasic prin diverse surse, posibilitatea plilor facturilor on-line, cumprturi online, transferul de informaii la distan, creterea eficienei comunicrii, i altele.
Extinderea reelelor de tip Internet n toat lumea au fcut ca acesta s ajung un
serviciu necesar firmelor, dar i populaiei prin utilitatea sa. Conform unor statistici n luna
iunie 2007 aveau acces la Internet circa 1,1 miliarde de locuitori ai planetei, iar aceste cifre
sunt n continu cretere.
Internetul dispune de un domeniu vast de informaii din cele mai diverse domenii.
O dat cu dezvoltarea sa, au aprut i activiti conexe care ofer alternative sau chiar
posibiliti de a avea acces la informaii (binecunoscutele e-serivices).
Toate firmele (unde a fost posibil prin activitatea prestat) i-au putut orienta
activitatea spre aa-numita pia virtual unde au putut s se extind avnd acces pe toate
pieele la nivel internaional, aici au putut s-i expun produsele cu descrierea aferent, s
le promoveze i s le vnd reducnd semnificabil costurile.
Dup cum se tie, activitatea n cadrul Internetului nu poate exista fr prezena
on-line a utilizatorilor i fr existena unor site-uri Web.
Cum spuneam mai sus, majoritatea domeniilor de activitate i-au gsit
corespondent n lumea virtual. Nici turismul nu face excepie de la aceast afirmaie.
Exist site-uri Web care ofer informaii turistice de orice fel. De asemenea, i ageniile de
turism au nceput sa-i dezvolte activitatea n acest mod (cui nu i-ar plcea s poat face o
rezervare on-line pentru un concediu aflnd foarte rapid informaia despre destinaia
ideal?). Multe agenii de turism fac i oferte incluznd discounturi din preul biletelor sau
faciliti n plus pentru clienii care recurg la metoda rezervrilor on-line.
Facilitile pe care le ofer Internetul sunt benefice dezvoltrii turismului. S ne
gndim c prin prezentarea informaiilor turistice despre ara noastr prin intermediul siteului Web vom avea vizitatori din toate colurile lumii. Cu ct traficul pe site este mai mare,
cu att posibilitatea de a atrage turitii este mai mare.
Promovarea turismului on-line este o altrenativ exelent pentru promovarea
clasic. Este mult mai uor s construim un site n care s prezentm coerent informaiile
de care un turist are nevoie dect s participm la trguri de turism, s mprim brouri sau
s pltim diverse firme de publicitate. Aceste lucruri implic, evident, costuri mai mari i
timp mai ndelungat ceea ce duce, evident, la ncetinirea derulrii activitii.
Bineneles, este necesar i promovarea turismului on-line, ns s nu se neleag
c acest lucru este i suficient. Nu trebuie s se renune definitiv la metodele clasice de
promovare. Promovarea on-line a turismului i promovarea clasic sunt dou activiti
complementare.
Trebuie inut minte i faptul c a avea un site Web de promovare nu asigur
neaprat succes n planul turistic. Exist unele reguli care trebuie aplicate pentru
proiectarea i promovarea site-ului respectiv. Ca strategii folosite pentru proiectarea siteului amintim: accentul pe consistena i densitatea informaiilor prezentate, modelarea site-

ului n funcie de ceea ce doresc utilizatorii, navigarea facil oricrui utilizator, folosirea
unei palete de culori case s se mbine armonios, vitez de ncrcare mic.
Exist multe tehnici pentru atragerea vizitatorilor printre care: ghiduri turistice,
hri interactive, iar cel mai important ar fi traducerea n ct mai multe limbi a site-ului
pentru ca vizitatorii strini s aib acces i s neleag informaiile prezentate.
Pentru promovare exist diferite soluii cum ar fi: nscrierea site-ului n toate
cataloagele portalurilor romneti i strine, apariia numelui site-ului n toate locurile
unde apare i numele firmei care se ocup de turism, nregistrarea site-ului la motoarele de
cutare, promovarea pe forumuri, etc.

Arhitectura proiectului
Primul capitol prezint pe scurt conceptele de Intranet i Internet (insistnd mai
mult pe cel de-al doilea) punnd accent pe dou aspecte: asemnarea dintre cei doi termeni,
utilitatea lor i descrierea pe scurt a serviciilor de baz din cadrul sistemelor Internet i
Intranet.
Cel de-al doilea capitol intitlulat Tehnologii Web trece n revist cele mai
utilizate tehnologii n realizarea de site-uri Web. Pe parcursul desfurrii sale a fost
prezentat limbajul HTML (cu o scurt precizare a principalelor tag-uri folosite n realizarea
paginilor Web statice, realizarea diverselor formulare i CSS ca un ajutor venit pentru a
da un plus prezentrii documentelor), un scurt maraton prin limbajul de scripting
Javascript, generalitii depre limbajul de programare Web PHP (mod de utilizare cu accent
pus pe stocarea i regsirea datelor, utilizarea tablourilor i reutilizarea codului) i
generaliti despre modul de utilizare a MySQL (insistnd pe partea de crearea a unei baze
de date pentru Web, utilizarea unei baze de date MySQL i acesarea ei de pe Web prin
PHP). Scopul acestui capitol este de a prezenta cum se pot construi paginile dinamice.
Utilizarea limbajului PHP i a bazei de date MySQL permite ca site-urile construite s fie
dinamice. Unde a fost cazul, pentru fiecare sintax de comenzi au fost date i exemple
uzuale.
Probabil cel mai important lucru dup parcurgerea teoriei este s putem aplica ceea
ce am nvat ntr-un mod practic. Capitolul urmtor conine un studiu de caz privind un
site pentru promovarea turismului, site care conine att pagini statice ct i dinamice.
Acesta a fost creat utiliznd toate mijloacele enumerate n capitolul prezentat mai sus. Sunt
prezentate i imagini sugestive pentru exemplificare i o mai bun nelegere a mijloacelor
folosite.
Lucrarea se ncheie prin prezentarea listei de referine bibliografice folosite pentru
realizarea proiectului.

Capitolul I Tehnologii Web


Paginile Web pot fi clasificate n pagini statice i pagini dinamice. Paginile
dinamice se folosesc cnd se dorete modificarea dinamic a coninutului paginilor Web.
Paginile HTML sunt statice, coninutul lor neputnd fi modificat odat ce au fost ncrcate
pe un server dect prin editate. De asemenea, n cazul acestor tipuri de pagini, lucrul cu
baze de date nu este posibil.
Dintre caracteristicile paginilor statice putem enumera faptul c ele conin doar
elemente HTML, codul surs vizualizat n navigator este identic cu cel al fiierului stocat
pe disc i nu ofer interactivitate.
Paginile Web dinamice se caracterizeaz prin urmtoarele: coninutul lor este creat
dinamic i poate diferi la accesri diferite; de exemplu la acelai URL coninutul paginii
poate varia n funcie de anumii parametri cum ar fi locaia geografic a utilizatorului, ora,
paginile vizitate anterior, profilul utilizatorului; ofer interactivitate; posibiliti de
interaciune.1
Exist pagini dinamice pe parte de client i pagini dinamice pe parte de server iar
pentru fiecare se folosesc tehnologii diferite n realizarea lor.

www.biblioteca-digitala.ase.ro

1.1 WEB suport pentru aplicaiile distribuite

Web-ul poate fi folosit ca suport al aplicaiilor distribuite n Internet jucnd rolul


de intermediar ntre utilizator i aplicaie. Browserul are rolul de a asigura interfaa cu
utilizatorul, iar serverul Web intermediaz comunicarea cu programul de aplicaie (dup
cum se poate observa n Figura 2.1).

Figura 2.1 : Arhitectura aplicaiilor Web

Utilizarea Web implic i urmtoarele aspecte cum ar fi: posibilitatea transmiterii


informaiilor ntre programul de navigare i server n ambele sensuri (dup cum se poate
observa i n figura de mai sus); posibilitatea lansrii de ctre server a unui program de
aplicaie i apoi comunicara dintre server i programul respectiv; posibilitatea ca rezultatele
programului de aplicaie s fie transmise n formatul documentelor Web pentru a fi afiate
de browser pe ecranul utilizatorului.
Conform acestor cerine se pot utiliza cel puin dou tipuri de documente: statice i
active.

1.1.1 Documente statice


Documentul static poate fi neles ca un document cruia coninutul i este stabilit
n momentul n care acesta este creat. Astfel, de cte ori documentul este solicitat de un
client, coninutul acestuia va fi livrat fr modificri. Modul de funcionare al acestor
documente este simplu ntruct informaia este comunicat ntr-un singur sens, i anume de
la server la programul de navigare i implicit la utilizatori.

Programul de navigare cere serverului Web s transmit o pagin, interpreteaz


textul i comenzile de formatare i afieaz pagina. 2 Intervenia utilizatorului se reduce la a
activa link-urile ctre alte documente n scopul de a afia paginile de rigoare.

1.1.2 Documente active


Coninutul acestor tipuri de documente este creat i afiat la client. Ca un rspuns
la cererile programului de navigare, serverul transmite acestuia un applet (care este tot un
program) pe care l pune n execuie pe maina clientului. Pentru a nelege mai bine,
aceast procedur este prezentat n Figura 2.2.

Figura 2.2 : Documente active

Programul poate interaciona cu utilizatorul putnd chiar s modifice imaginea


maginea afiat pe tot parcursul execuiei. Programul poate juca i rolul de client pentru un
server de aplicaie cu care poate interaciona.
Datorit modului de funcionare, coninutul documentelor active sufer permanent
procese de modernizare.

Roca Ion Gh., pu Nicolae Internet i Intranet, concepte i aplicaii, ed. Economic, Bucureti, 2000,
pagina 104

1. 2 Limbajul HTML
HTML este o prescurtare a termenului Hyper Text Markup Language. Acest limbaj
este folosit n construcia paginilor Web statice. Prin existana marcatorilor (care mai poart
i denumirea de tag-uri), exist posibilitatea de a structura paginile respective. De reinut
faptul c HTML este un limbaj descriptiv, i nu unul de programare. Actualmente, limbajul
HTML este disponibil n varianta XML denumit XHTML, specificaie standardizat de
Consoriul Web.3

1.2.1 Principalele tag-uri HTML


Un document Web poate fi recunoscut cu uurin prin structur, coninut i
form. Pentru formatarea sa, exist o serie de tag-uri, dintre care cele mai importante vor fi
prezentate mai jos.
Exist dou tipuri de tag-uri: de nceput i de sfrit. Acestea au o structur
asemntoare fiind incluse ntre paranteze unghiulare (<> pentru tag-urile de nceput i
</> pentru cele de sfrit). Fiierele HTML sunt fiiere text care au extensia .html sau
.htm. Acestea includ dou pri: antet i corp (n englez: head i body).
Astfel, un document HTML are forma general descris mai jos:
<HTML>
<HEAD>
..
</HEAD>
<>
..
</BODY>
</HTML>
De obicei, n interiorul antetului apar definiii i rutine scrise n limbaje script. Tot
aici se pot insera definiii locale sau stiluri de afiare utiliznd CSS. Dac se dorete, se
poate pune i un titlu, iar pentru aceasta este necesar includerea tag-urilor:
<TITLE></TITLE>
n cadrul corpului pot fi utilizate diverse tag-uri care pot fi grupate pe mai multe
categorii:
-

definirea stilului de afiare


<B></B> - ngroat, bold
<I></I>
- italic, nclinat
<U></U>
- underline, subliniat
<STRONG></STRONG> - evideniere prin ngroare (tot un fel de bold)
<BIG></BIG> - scris mai mare

Brut Mihaela, Buraga Sabin Prezentri multimedia pe WEB, ed. Polirom, Bucureti, 2004, pagina 23

10

<SMALL></SMALL> -scris mai mic


<SUB></SUB> - indice, subscript
<SUP></SUP> - exponent, superscript
<FONT></FONT> - pentru fontul folosit la scriere
<PRE></PRE> -preformatare (nu se elimin i spaiile noi)
<CODE></CODE> - pentru listare cod surs
<EM></EM> - evideniere (de obicei aplecat)
<CENTER>...<CENTER> - centrare
<CITE><CITE> - pentru citate
<ADRESS></ADRESS> - adresa autorului

Tabelul 2.1: Atribute asociate tag-urilor HTML

Atribut
align

Opiune
right, left, center

Funcie
Aliniere orizontal

valign

top, middle, bottom

Aliniere vertical

bgcolor

numeric, hexidecimal, sau


valoare RGB

Un background n spatele elementului

background
id

URL
Definit de user

O imagine n spatele elementului


Numete un element care se va folosi cu CSS

class

Definit de user

Clasific un element care se va folosi cu CSS

width

Valoare numeric

Specific laimea unui tabel, imagine, sau


casue de tabel.

height

Valoare numeric

Specific nlimea unui tabel, imagine, sau


csue de tabel.

title

Definit de user

"Pop-up". Afieaz un titlu pentru un element


stabilit.

Sursa:www.tutorialehtml.com

1.2.2 Crearea formularelor HTML


Formularele sunt cele mai simple documente de tip HTML care circul de la
borwser la server i invers. Ele mai pot fi definite i ca o metod de interactivitate cu
utilizatorii paginii Web. Acestea includ cmpuri care permit utilizatorilor s introduc date
de tip text, s fac selecii din listele de alternative sau s comande spre Web transmiterea
informaiilor pe care acetia le-au introdus. Aceste formulare sunt extrem de utile facilitnd
multe operaiuni diverse cum ar fi: aplicaii de cutare a documentelor Web, n aplicaii
care solicit completarea de fie de nregistrare a utilizatorilor,etc.
Pentru a realiza un formular, este necesar ca acele cmpuri care-l compun s fie ncadrate
ntre dou tag-uri, i anume: <FORM>.</FORM>. Tag-ul <FORM> prezint atribute
11

foarte importante: ACTION i METHOD. Cu ajutorul atributului ACTION browser-ul va


ti ce se va ntampla cu datele introduse n formular. n acest fel, valoarea atributului
ACTION poate fi o adres URL a unui script, scris ntr-un limbaj de programare, care va
interpreta datele i le va introduce n baza de date (dac este cazul) sau poate fi o adres de
e-mail (caz n care datele introduse n formular vor fi trimise prin email la adresa
respectiv. Atributul METHOD precizeaz metoda de trimitere a datelor i poate avea dou
valori. Valoarea implicit a acestui atribut este GET, cu ajutorul acestei metode putand fi
trimise cantiti mici de date, iar de aceea metoda cea mai folosit este POST.
Formularele permit o interaciune limitat a userilor cu serverele. Ele includ
elemente de introducere a unor texte, de selecie a unor opiuni dintr-o list de alternative,
de activare a unor zone de imagine senzitive. Acesea sunt prezentate n Tabelul 2.2:
Tabelul 2.2 : Cmpuri din formulare

Element HTML

Parametri

Semnificaie

<INPUT>,TYPE=text

NAME, SIZE,
MAXLENGHT

Cmp de intrare

<TEXT AREA>

NAME, COLS, ROWS,


WRAP

Zon de editare

<INPUT>,TYPE=radio

NAME, VALUE

Buton Radio

<INPUT>,TYPE=checkbox

NAME, CHECKED

Caset de selecie

<INPUT>,TYPE=password

NAME, SIZE,
MAXLENGHT

Cmp de parol

<INPUT>,TYPE=reset,
submit]

Buton de aciune

<INPUT>,TYPE=image

NAME, ALIGN, SRC

Hart (imagine) activ

<INPUT>,TYPE=hidden

NAME

Element ascuns

<SELECT>

NAME, OPTION,
MULTIPLE

List de selecie

Sursa: Roca Ion Gh., pu Nicolae Internet i Intranet, concepte i aplicaii, ed. Economic, Bucureti,
2000, pagina 105

Primele elemente ale tabelului includ cmpuri de intrare pentru texte obinuite sau
voluminoase i parole. Pentru selecie se pot folosi butoane radio, casete de selecie, liste de
12

selecie. Majoritatea marcajelor prezint parametrul NAME. Dup completare formularul


este transmis serverului, iar datele sunt mpachetate n forma unei liste de perechi nume =
valoare. Fiecare pereche conine numele unui element de formular i valoarea pe care
utilizatorul o asociaz acestuia.
n continuare voi prezenta cteva imagini reprezentnd tipurile de elemente care
pot aprea ntr-un formular:

Figura 2.3 : Caset text

Figura 2.4 : Text area

Figura 2.5 : Butoane radio


Sursa:www.ecursuri.ro

Figura 2.6 : Casete de validare


Sursa:www.ecursuri.ro

13

Figura 2.7 : List de selecie

1.3 Limbajul JavaScript Generaliti


JavaScript este un limbaj simplu de scripting dezvoltat la origine de Netscape,
permind scrierea de secvene de program care se execut la apariia unui eveniment
utilizator. Javascript poate specifica , n mod obinuit n doar cateva rnduri, rspunsurile la
aciuni sau evenimente cum ar fi deschiderea unei pagini, deplasarea mouse-ului ntr-un
anumit punct sau tergerea unui anumit cmp dintr-un formular.

1.3.1 Scurt caracterizare a limbajului


Ca i celelalte limbaje cunoscute, JavaScript permite definirea variabilelor,
folosirea de instruciuni, utilizarea de obiecte, funcii predefinite sau descrise de
14

programatori. Pe lng aceste faciliti, JavaScript conine i o serie de clase predefinite


care pot fi folosite pentru specificarea dinamicii coninutului paginilor Web, dar i pentru
prelucrarea de coninuturi HTML, CSS, XML, etc.
n continuare voi prezenta o scurt caracterizare a limbajului de scrpting
JavaScript:
Variabilele: sunt identificatori compui din litere sau cifre i semnul de
subliniere (underline). Se pot declara att variabile globale ct i locale. De
tiut faptul c acest limbaj este case-senzitive (se face distincia ntre
majuscule i minuscule)
Tipurile de date pot fi:
- ntregi (integer) n baza 10, 8 sau 16
- raionale (float) scrise zecimal sau tiinific
- logice (boolean) stabilind valoarea de adevr prin true sau false
- iruri de caractere (string)
- obiect (object)
- nul (null)
- nedefinit (undefined)
Operatori:
- aritmetici
- raionali
- logici
- speciali (ex: typeof, operatorul condiional ?:)
- de manipulare a obiectelor
Instruciuni:
- de atribuire
- bloc ({})
- de test (if-else, switch)
- repetitive (for, while, do while)

1.4 Utilizare PHP


Cnd vine vorba de dezvoltarea aplicaiilor Web, exist o palet larg de platforme
de dezvoltare pentru care putem opta. PHP este una dintre cele mai populare i utilizate.
PHP este un produs Open Source, putnd avea acces la codul surs. Se poate
folosi, modifica i redistribui, n mod gratuit. Iniial, PHP era acronimul de la Personal
Home Page, dar a fost modificat pentru a se alinia la conversia de numire recursiv GNU
(GNU = Gnu`s Not Unix), iar acum este acronimul pentru PHP Hypertext Preprocessor.4
Iniial, serverul de aplicaii PHP a fost gndit ca o simpl apliaie CGI (Common
Gateway Interface) pentru interpretarea formularelor HTML i procesate de un program
scris ntr-un limbaj executat pe server.
PHP se bazeaz pe introducerea de cod interpretabil n cadrul documentelor
HTML, cod cuprins ntre iruri de caractere specifice limbajului (preprocesarea paginilor).
4

Thomson Laura, Welling Luke - Dezvoltarea aplicaiilor Web cu PHP i MySQL, ed. Teora, Bucureti, 2005,
pagina 2

15

Cnd preprocesorul rulat pe server gsete o succesiune de cod PHP, acesta le va interpreta
i va executa instruciunile programului respectiv.

Figura 2.8 : Modul de funcionare PHP


Sursa: Ivacu Valentin Iniiere n PHP i MySQL, art. Publicat n 1.06.2005

Sintaxa PHP este apropiat limbajelor C i Perl, iar mai nou, a mprumutat
caracteristici specifice limbajului Java. Dup cum se observ i n figura de mai sus, PHP
ofer suport pentru lucrul cu bazele de date i cu documentele XML, fie pentru generarea
de rapoarte, fie pentru realizarea de grafic de tip raster dinamic, etc.
Construciile PHP sunt delimitate ntre dou tag.uri: <?php i ?>. Aceste
construcii vor fi interpretate ignorndu-se restul coninutului documentrului n care acestea
au fost inserate.
Sintetiznd, putem afirma faptul c PHP ofer un limbaj script puternic i simplu
care ofer multiple avantaje cum ar fi:
performan ridicat
interfee de programare pentru diferite sisteme de baze de date
biblioteci ncorporate pentru realizarea celor mai frecvente operaii
cost sczut
uurin n nvare i ultilizare
portabilitate
disponibilitatea resurselor
disponibilitate a suportului
suport puternic orientat spre obiecte
vitez mare
eficien ridicat
stabilitate

1.4.1 Stocarea i regsirea datelor


Metode de stocare a datelor
16

Exis dou metode de stocare a datelor: n fiiere plate (fiiere text simple) sau n
baze de date. Pentru un volum mai mare de de informaii, majoritatea opteaz pentru bazele
de date, ns exist i situaii n care se folosesc fiiere plate care au aria lor de utilizare. n
PHP, scrierea n fiiere i citirea din acestea se realizeaz apropape ca la limbajul C.
Prelucrarea fiierelor
Pentru scrierea de date ntr-un fiier sunt necesare 3 etape:
- crearea i deschiderea fiierului
- scrierea datelor n fiier
- nchiderea fiierului
Pentru citirea datelor din fiiere sunt necesare tot 3 etape:
- deschiderea fiierului
- citirea datelor
- nchiderea fiierului
Deschiderea unui fiier
nainte de a putea citi sau scrie ntr-un fiier, trebuie s deschidem fiierul folosind
funcia fopen( ):
fopen(nume_fiier, mod)
Argumentul nume_fiier specific numele sau calea spre fiierul care urmeaz a fi
deschis, iar mod indic tipul de acces dorit.
Sistemul de operare de pe server trebuie s tie la ce operaii va fi supus fiierul
care trebuie deschis (s tie dac fiierul poate fi deschis de un alt script n timp ce este
deschis de utilizator i trebuie s afle dac utilizatorul respectiv are permisiunea s-l
foloseasc n acel mod). Modurile de acces ofer sistemului de operare posibilitatea de a
determina proprietile legate de acces sau permisiuni la fiier.
La deschiderea fiierului trebuie configurate 3 opiuni:
deschiderea fiierului se poate face fie doar pentru citiri, fie doar pentru scriere sau
att pentru citire, i pentru scriere;
dac se scrie n fiier, utilizatorul poate dorete s suprascrie sau s adauge date noi
la sfritul fiierului; sau,dac fiierul exist, exist posibilitatea de a termina rularea
programului n locul suprascrierii;
dac se dorete s se scrie ntr-un fiier de pe un sistem care face diferena ntre
fiierele binare i fiierele text, utilizatorul poate dorete s specifice acest lucru.
Funcia fopen( ) permite combinaii ntre aceste 3 opiuni menionate mai sus.
Modurile de deschidere a unui fiier sunt prezentate n Tabelul 2.4
Tabelul 2.3 : Rezumatul modurilor fiierelor pentru funcia fopen( )

Mod

Semnificaie

Permite doar citirea fiierului

17

r+

Citire sau scriere de la nceputul fiierului

Creaz fiierul dac nu exist i suprascrie datele existente

w+
a
a+
x
x+

Citire sau scriere; la scriere, creeaz fiierul dac nu exist


i suprascrie datele existente
Adugare; creaz fiierul dac nu exist i adaug datele
noi la sfritul fiierului existent
Citire sau scriere; la scriere, creaz fiierul dac nu exist
i adaug datele noi la sfaritul fiierului existent
Doar scriere; creaz fiierul dac nu exist i genereaz un
averisment dac acesta exist
Citire sau scriere; creaz fiierul dac nu exist i
genereaz un averisment dac acesta exist

Deschide fiierul n mod binar

Modul text (doar pentru Windows), cnd codul este scris


s lucreze mpreun cu opiunea b

Scrierea ntr-un fiier


Pentru a scrie ntr-un fiier se folosete funcia fwrite( ), aceasta are urmtoarea
form:
fwrite(identificator_fiier, date);
Argumentul identificator_fiier este identificatorul de fiier returnat de funcia
fopen( ), iar date este o valoare ir care determin datele care urmeaz a fi scrise.Dac
execuia funciei reuete, se returneaz numrul octeilor scrii; n caz contrar, returnnduse valoarea -l. Mai jos este prezentat un exemplu privind modul de scriere a datelor ntr-un
fiier:
<?php
$nume = carte.txt;
$fh = fopen($nume, ab);
if (!$fh) {
die (Nu s-a deschis fiierul carte.txt.);
}
$ok = fwrite($fh, Acestea sunt datele adugate \n);
echo <br /> Rezultatul scris este: $ok;
fclose($fh);
?>
Acest script va avea urmatoarele date de ieire: Rezultatul scris este: 30.
Programul prezentat scrie n fiierul carte.txt o linie de text. Deoarece fiierul a fost
deschis folosind modul a, datele sunt scrise la sfrit, dup toate datele existente n fiier.
18

Se observ ca a fost scris i un caracter de terminare a liniei (\n), astfel nct fiierul s
poat fi citit linie cu linie ulterior. Dac lucrai cu un fiier text, este util s includei un
caracter de terminare a liniei la sfritul fiecrei linii scrise n fiier.
nchiderea unui fiier
Un fiier deschis consum din resursele sistemului. Cnd un script a terminat de
utilizat un fiier, scriptul trebuie s nchid fiierul respectiv i s elibereze aceste resurse.
La sfritul unui script, PHP nchide n mod automat fiierele deschise. Totui, se
recomand s nchidei fiierele mai rapid, ori de cte ori este posibil. Pentru a nchide un
fiier, folosii funcia fclose( ):
fclose(identificator_fiier)
Citirea dintr-un fiier
PHP furnizeaz o serie de funcii pentru citirea fiierelor. Prima dintre acestea este
fread( ), care are forma:
fread(identificator_fiier, lungime)
Argumentul identificator_fiier este valoarea returnat de funcia fopen( ), iar
argumentul lungime specific numrul maxim de octei care vor fi citii. Octeii citii din
fiier sunt returnai sub forma valoarii de tip ir. Dac operaia de citire ntlnete sfritul
fiierului, PHP va returna mai puin de lungime octei. PHP include o funcie conex,
denumit fgetc( ), care citete un octet din fiierul specificat. Pentru a citi si a afia
ntregul coninut al fiierului, putei folosi funcia filesize( ) pentru a furniza valoarea
argumentului lungime.
Se obinuieste frecvent citirea linie cu linie a unui text dintr-un fiier. Funcia
fgets( ) citete o linie dintr-un fiier; funcia are forma:
fgets(identificator_fiier, lungime)
Sisteme de gestiune a bazelor de date
Fiierele plate au o serie de dezavantaje dintre care enumerm:
lucrul cu ele poate deveni lent pe msur ce acestea ajung la dimensiuni mari;
cutare dificil a nregistrrilor;
tratarea accesului concurent poate deveni problematic prin blocarea fiierelor ceea
ce poate duce la scderea traficului pe site i la reorientarea utilizatorilor spre alte
sfere;
prelucrarea fiierelor este greoaie, mai ales pentru cele de dimensiuni mari;
nu exist o metod uoar de impunere a unor niveluri diferite de acces la date.
Sistemele de gestiune a bazelor de date relaionale (cam MySQL de exemplu) pot
nltura aceste deficiene prin proprietile pe care le posed:
pot oferi acces mai rapid la date;
-

19

pot fi integrate mai uor pentru a se extrage seturi de date dup anumite criterii
stabilite;
au un mecanism pentru manevrarea accesului concurent;
ofer acces aleator la date;
au ncorporate sisteme de privilegii.

1.4.2 Utilizarea tablourilor


Tablourile sunt acceptate de majoritatea limbajelor de programare. Fiecare element
are asociat un indice (care se mai gsete i sub denumirea de cheie sau index) care este
folosit pentru accesarea elementului respectiv. Valorile stocate ntr-un tablou poart
denumirea de elemente.
Tablouri indexate numeric
n PHP, indicii ncep n mod prestabilit de la valoarea zero, ns acest lucru poate
fi modificat. Pentru a crea un tablou automobile care s conin 3 valori, se poate folosi
codul:
$automobile = array(Dacia , Renault , WW );
Pentru stocarea unei secvene cresctoare de numere, se poate folosi funcia range( )
pentru crearea automat a tabloului.
$numere = range(1 , 100 );
Tablouri asociative
PHP accept tablouri asociative, astfel c fiecrei valori i se poate asocia un
indice. Pentru iniializare putem folosi codul:
$automobile = array(Dacia=>10 , Renault=>20 , WW =>30 );
Operatori pentru tablouri
Exist o serie de operatori care se pot folosi numai la tablouri. Acetia sunt
prezentai n Tabelul 2.5:
Tabelul 2.4 : Operatori pentru tablouri n PHP

Operator

Nume

Exemplu

Reuniune

$a + $b

==

Egalitate

$a = = $b

===

Identitate

$a = = = $b

Rezultat
Tabelul $b este adugat la $a, dar cheiledubluri nu se adaug
Returneaz true dac $a i $b au aceleai
elemente
Returneaz true dac $a i $b au aceleai

20

elemente n aceeai ordine


!=

Diferit

$a ! = $b

<>

Diferit
Nu este
identic

$a <> $b

! = =

$a ! = = $b

Returneaz true dac $a i $b nu au


aceleai elemente
Identic cu ! =
Returneaz true dac $a i $b nu au
aceleai elemente tecute n aceeai ordine

Sursa: Thomson Laura, Welling Luke - Dezvoltarea aplicaiilor Web cu PHP i MySQL, ed. Teora, Bucureti,
2005, pagina 76

Capitolul II - Utilizare MySQL


MySQL este un sistem de gestiune a bazelor de date, foarte rapid i robust. O baz
de date permite stocarea, cutarea, sortarea i sa regsirea datelor n mod eficient. Serverul
MySQL controleaz accesul la date pentru a garanta c mai muli utilizatori pot lucra
simultan cu acestea. De aici rezult c MySQL este un server multi-user (mai muli
utilizatori) si multi-thread (mai multe fire de execuie). Acesta utilizeaz SQL (Structured
Query Language), limbajul standard de interogare a bazelor de date.
MySQL este disponibil n mod public din 1996, dar istoria dezvoltrii sale ncepe
n 1979. A catigat de mai multe ori Linux Journal Readers` Choice Award (Premiul
cititorilor). MySQL este disponibil sub o licena Open Source, dar dac este nevoie sunt
disponibile i licente comerciale.

2.1 Crearea bazei de date pentru Web


Fiecare comand se ncheie cu ;. n cazul n care se omite acest caracter, serverul
Web nu va executa comanda respectiv. Ca rezultat al aceste omiteri, putei avea caractere
de salt la nceput de rnd nou n mijlocul unei comenzi. MySQL ofer un simbol de
continuare care arat n felul urmtor:
mysql > grant select
->
Aceasta nseamn c MySQL ateapt introducerea de date. Aceste caractere vor aprea de
fiecare dat cnd se va apsa tasta ENTER pn la introducerea caracterului ;.
Instruciunile SQL nu sunt sensibile la tipul caracterelor, ns numele unor baze de date sau
tabele care compun bazele de date pot s fie.

21

Deschiderea sesiunii de lucru n MySQL se face prin comanda:


mysql -h numegazd -u numeutilizator - p
Comanda mysql apeleaz monitorul MySQL (un client n linie de comand care face
conexiunea la serverul MySQL).
Comutatorul -h (prescurtare de la host) este folosit pentru a specifica gazda la
care de dorete a fi fcut conexiunea (sistemul pe care ruleaz serverul MySQL).
Comutatorul -u (prescurtare de la user) este folosit pentru a specifica numele
utilizatorului cu care dorii s v conectai.
Comutatorul -p (prescurtare de la password) comunic serverului dac dorii s
v conectai utiliznd o parol. Parola nu este obligatorie.
Dup introducerea parolei, vei primi un mesaj, dup care se va activa promptul de
comenzi. Acum se poate crea baza de date.
Crearea bazei de date
Pentru crearea bazei de date, n promptul se va tasta comanda:
mysql > create database numebazadate;
Atributul numebazadate va fi nlocuit cu denumirea pe care dorii s o dai bazei de date
care urmeaz a fi creat. Dup acest pas, vei primi un mesaj care va confirma c
instruciunea a fost efectuat cu succes.
Un sistem MySQL accept mai muli utilizatori. Pentru fiecare este recomandat s
se stabilieasc parole, iar userul implicit root ar trebui folosit doar n scopuri
administrative. Pentru configurarea bazei de dateWeb este o idee bun s se stabilieasc cel
puin un utilizator pentru fiecare aplicaie Web.

2.2 Utilizarea bazei de date MySQL


n acest subcapitol vor fi prezentate pe scurt principalele comenzi SQL (Structured
Query Language) pentru interogarea bazelor de date.
Pentru inserarea datelor n baza de date se va folosi instruciunea INSERT care
are urmtoarea sintax:
INSERT INTO tabel [(coloana1, coloana2)] VALUES (valoare1, valoare2);
Astfel, pentru fiecare coloan specificat n interogare se vor ataa n ordine valorile de
dup VALUES. Se pot insera i mai multe linii deodat ntr-o tabel (pentru aceasta,
fiecare linie trebuie s fie ncadrat n propria pereche de paranteze, iar seturile de
paranteze trebuie separate prin virgul). Pentru instruciunea INSERT sunt disponibile
trei variante: LOW PRIORITY (specific faptul c sistemul poate atepta pentru a
efectua inserarea cnd nu se citesc date din tabel), DELAYED (specific faptul c datele
inserate vor fi stocate ntr-o zon temporar de memorie), IGNORE (opional, dac se

22

ncearc inserarea unor linii care ar duce la apariia unor chei-duplicat, acestea vor fi
ignorate).
Pentru regsirea datelor din baza de date se va folosi comanda SELECT care are
forma:
SELECT [opiuni] articole
[ INTO detalii_fiiere ]
FROM tabele
[ WHERE condiie ]
[ GROUP BY tip_grupare ]
[ HAVING definiie_where ]
[ ORDER BY tip_ordonare ]
[ LIMIT criteriu_limit ]
[ PROCEDURE nume_procedur (argumente) ]
[opiuni_blocare]
Tot ce se afl ntre paranteze sunt instruciuni opionale i se pot utiliza n funcie de cerina
interogrii ce urmeaz a fi executat de utilizator. Caluza WHERE specific criteriul
folosit pentru a selecta anumite linii. Pentru clauza WHERE exist o serie de operatori
utili: egalitate (=), mai mare (>), mai mic (<), mai mare sau egal (>=), mai mic sau
egal (<=), diferit (<>, !=), nul (IS NULL), nu este nul (IS NOT NULL), ntre
(BETWEEN), n (IN), nu exist n (NOT IN), pentru comparare (LIKE/NOT
LIKE), compararea expresiilor regulate (REGEXP).
De multe ori, pentru a rspunde la o ntrebare adresat bazei de date este necesar
utilizarea informaiilor din mai multe tabele. Pentru asamblarea informaiilor n SQL
trebuie realizat o operaie de asociere. Operaia respectiv se face printr-o condiie de
asociere atribuit clauzei WHERE. Un exemplu sugestiv:
SELECT achiziie.nrtitlu,achiziie.data_achiziiei
FROM client, achiziie
WHERE client.codclient = achiziie.codclient
Virgula dintre numele tabelelor este echivalet cu introducerea de la tastatur a cuvintelor
INNER JOIN i CROSS JOIN. Aceasta este o o asociere complet sau produs
cartezian. Clauza de asociere este aceea de dup WHERE care este un tip special de
instruciune condiionat care prezint acele atribute care arat relaia dintre tabele.
Aceasta comunic serverului MySQL s plaseze n tabela rezultat doar acele linii pentru
care coloana codclient din tabela client este identic cu coloana codclient din tabela
achiziie. Aceasta este o echi-asociere (equi-join). Notaia cu punct dintre cmp i tabel
este obligatorie. Pentru asocierea mai multor tabele se vor folosi mai multe clauze de
asociere n perechi.
Pentru grupare i comasarea datelor exist o serie de funcii dintre care cele mai
cunoscute sunt:
AVG pentru calculul mediei;
COUNT pentru numrare;
MIN pentru minim;
MAX pentru maxim;
STD abaterea normal a valorilor din coloana respectiv;
23

STDDEV indentic cu precedenta;


SUM suma valorilor dintr-o coloan.
Pentru grupare se pune clauza GROUP BY. Aceasta grupeaz nregistrrile dup un
anumit criteriu specificat de utilizator. n afar de grupare i comasare se poate testa
rezultatul unei comasri prin clauza HAVING (aceasta urmeaz dup clauza GROUP
BY i seamn cu o clauz WHERE aplicat doar grupurilor i comasrilor).
Clauza LIMIT se folosete pentru a specifica liniile din ieire care s fie
returnate. Aceasta preia doi paramentri: numrul liniei de la care se ncepe i numrul de
linii ce trebuie s fie returnate.

2.3 Accesarea bazei de date MySQL de pe Web prin PHP


n orice script utilizat pentru accesarea de pe Web a bazelor de date se parcurg
urmtoarele etape de baz:
verificarea i filtrarea datelor provenite de la utilizator;
configurarea unei conexiuni la baza de date;
interogarea bazei de date respective;
regsirea rezultatelor;
prezentarea rezultatelor la utilizator.
Pentru eliminarea spaiilor albe pe care este posibil s le fi introdus utilizatorul din
neatenie la nceputul sau sfritul termenului cutat de el, folosim funcia:
$searchterm = trim(searchterm);
n continuare se va verifica dac utilizatorul a introdus termenul cutat i tipul cutrii:
if (!searchtype | | !$searchterm)
{
echo Nu ai introdus datele de cutare. Mai ncercai!;
exit;
}
Mai departe trebuie filtrate datele care sunt trimise la MySQL. n acest caz s-a verificat
valoarea returnat de funcia get_magic_quotes_gpc( ). Aceasta ne spune dac marcarea
este efectuat automat. Dac marcarea nu s-a fcut automat, vom folosi funcia
addslashes( ):
if (!get_magic_quotes_gpc( ))
{
$searchtype = addslashes ($searchtype);
$searchterm = addslashes ($searchterm);
}

24

n cazul n care ghilimelele magice sunt activate, datele vor fi marcate cu slash cnd sunt
returnate n baza de date, adic trebuie eliminate. Atunci se va folosi funcia
htmlspecialchars( ) pentru a codifica acele caractere care au o semnificaie special n
limbajul HTML. Prin utilizarea acestei funcii se pot elimina unele eventuale erori.

Capitolul III Studiu de caz Aplicaie Web pentru dezvoltarea


turismului din Braov
Site-ul conine informaii despre obiectivele turistice din oraul Braov prezentate
sub forma unor liste, dar i ntr-un mod interactiv prin intermediul unei hri. Acesta este
compus din 63 pagini (o pagin index unde sunt trecute n revist informaiile necesare
pentru nceput persoanelor interesate de turismul braovean, 36 pagini reprezentnd
numrul de obiective turistice ale oraului; 5 pagini n care vizitatorii pot accesa informaii
cu privire la cele mai importante hoteluri existente n zon; 5 formulare prin care vizitatorii
pot face o cazare la unul din hotelurile respective; 5 pagini pentru prelucrarea datelor
nscrise n formulare; 5 pagini pentru validarea lor i stocarea n baza de date MySQL; alte
5 pagini pentru vizualizare i o pagin pentru configurarea conexiunii la baza de date).
nainte de crearea paginilor, din motive organizatorice, au fost create foldere n
care s se regseasc imaginile aferente fiecrei pagini (de exemplu: pentru imaginile ce
urmau a fi inserate n pagina strada_sforii.php s-a creat folderul strada sforii, pentru
pagina poarta_ecaterina.php s-a creat folderul poarta ecaterina, etc).
Pentru generarea codului HTML s-a folosit programul Adobe Dreamweaver CS3
care conine pe lng facilitile binecunoscute i funcii complexe necesare n construirea
unei aplicaii Web (acestea urmnd a fi analizate i discutate pe parcursul desfurrii
capitolului).
n ceea ce privete soluia aleas pentru instalarea pachetului ntreg PHP +
MySQL + server Apache + PhpMyAdmin s-a optat pentru EasyPHP 1.8. care poate fi
descrcat de la adresa: http://ovh.dl.sourceforge.net/sourceforge/quickeasyphp/easyphp18_setup.exe. Acesta poate fi folosit n cazul n care avei instalat unul din urmtoarele
sisteme de operare ale familiei Windows: 98/ME/XP.

25

3.1 Crearea bazei de date i a tabelelor


Pentru mai mult uurin, pentru acestea s-a folosit utilitarul PhpMyAdmin care
conine i opiuni pentru limba romn, ceea ce faciliteaz nelegerea opiunilor din
meniuri, si n puls, prezint o interfa prietenoas prin care utilizatorul poate construi
tabele i fr a poseda cunotine solide n limbajul SQL.

3.1.1 Crearea bazei de date


Se realizeaz baza de date formular avnd n componen 5 tabele (cte unul
pentru fiecare hotel). Aceste tabele poart denumiri sugestive: capitol, palace,
coroana, postavarul i sport. Tabelele sunt identice i conin urmtoarele cmpuri:
ID (ntreg), nume (text), telefon (text), email (text), data sosirii (date), data
plecrii (date) i comentariu (text).
Toate cmpurile trebuie s fie obligatorii, iar pentru comentariu nu se admit mai
mult de 255 caractere.
Voi prezenta crearea unui singur tabel. ntruct celelalte urmeaz acelai principiu.
Aadar, din phpMyAdmin se selecteaz opiunea Creaz baz de date nou, se
introduce numele bazei de date i se execut butonul Creaz.

26

Figura 3.9 : Crearea bazei de date

3.1.2 Crearea tabelelor


Se selecteaz baza de date creat dup care se vor crea tabelele.

27

Figura 3.10 : Tabelele bazei de date

Dup cum observai, tabelele sunt create. Dac totui vrei s mai adugai tabele, se pot
completa opiunile din tabelul Creaz tabel nou n baza de date formular. Se d numele
tabelei i se precizeaz numrul de cmpuri coninute n tabelul respectiv. Dup aceea, se
d click pe butonul Execut.
Dup realizarea cmpurilor, tabelul va arta n forma urmtoare:

Figura 3.11 : Cmpurile tabelelor

3.2 Construcia paginilor WEB


28

Site-ul este construit att din pagini statice ct i dinamice. Pentru a respecta
aceleai standarde, paginilor HTML le-au fost schimbate extensiile din .html n .php.

3.2.1 Construcia paginii-ablon


nainte de construcia propriu-zis a site-ului, s-a construit o pagin-ablon dup
cum se observ n Figura 3.4. Plecnd de la aceast pagin, s-au creat i celelalte
pagini,urmand a fi completat zona din dreapta-jos i salvndu-se cu denumiri diferite.
1. S-au stabilit marginile paginii i culoarea de fundal folosind CSS:
<style type="text/css">
<!-body {
background-color: #999999;
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style>

Figura 3.12 : Pagina-ablon

29

Pe fundal apare apare culoarea gri-nchis. Din motive estetice, s-au eliminat
marginile paginii.
2. S-a construit un tabel aliniat centrat unificndu-se din linii i coloane pentru a da forma
de meniu. Mai jos este prezentat o seciune de cod HTML pentru tabel
<table width="849" border="1" align="center">
3. n partea de sus a tabelului a fost inserat o imagine editat cu Adobe Photoshop CS3
pentru a respecta cromatica (se observ i tag-ul de unificare a coloanelor):
<tr>
<td colspan="2">
<img src="Pt site/poze/ggg.jpg" width="891" height="150" />
</td>
</tr>
4. Sub imaginea-banner a fost introdus titlul pe fundalul gri mai deschis:
<tr>
<td colspan="2" bgcolor="AEAEAE">
<div align="center">
<strong>Obiective turistice in oraul Braov</strong>
</div></td>
</tr>
5. Sub titlu a fost realizat un meniu pentru paginile hotelurilor pe aceeai culoare de fundal
ca i titlul:
<tr>
<td colspan="2" bgcolor="AEAEAE">
<div align="center">
<strong>
| <a href="aro_palace.php">Hotel Aro Palace</a>
| <a href="capitol.php">Hotel Capitol</a>
| <a href="postavarul.php">Hotel Postvarul</a>
| <a href="coroana.php">Hotel Coroana</a>
| <a href="aro_sport.php">Hotel Aro Sport</a>
</strong> |
</div>
</td>
</tr>
De asemenea,se observ unificarea celulelor prin colspan, culoarea de fundal, alinierea
centrat a scrisului i coninutul meniului cu legturile de rigoare ctre paginile auxiliare
prin intermediul tag-ului <a href=... </a>.
6. n partea din stng a fost inserat imaginea cu stema oraului Braov ntr-un tabel:

30

<table width="112" border="0" align="center" cellpadding="0" cellspacing="0">


<tr>
<td><img src="Pt site/poze/stema_Orasului_Brasov.jpg.png" alt="Sigla oraului
Braov" width="100" height="169" align="top" />
</td>
</tr>
</table>
7. Sub sigl s-a inserat un flash button cu link ctre index
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#versi
on=9,0,28,0" width="100" height="22" title="Harta">
<param name="BGCOLOR" value="" />
<param name="movie" value="button1.swf" />
<param name="quality" value="high" />
<embed src="button1.swf" quality="high"
pluginspage="http://www.adobe.com/shockwave/download/download.cgi?
P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="100"
height="22"></embed>
</object>
8. Sub buton a fost creat o list neordonat care conine obiectivele turistice, dar i linkurile ctre paginile aferente fiecrui obiectiv. Pentru simplificare, voi prezenta doar o
secven de cod:
<ul>
<li><u align="justify"><a href="bis_adormirea.php">Biserica Sf. Adormire</a></u></li>
<li><u align="justify"><a href="bis_bartolomeu.php">Biserica
Sf.Bartolomeu</a></u></li>
<li><u align="justify"><a href="bis_catolica.php">Biserica Catolic</a></u></li>
<li><u align="justify"><a href="bis_groaveri.php">Biserica Groaveri</a></u></li>
<li><u align="justify"><a href="bis_neagra.php">Biserica Neagr</a></u></li>
<li><u align="justify"><a href="bis_sf_ioan.php">Biserica Sf. Ioan</a></u> </li>
<li><u align="justify"><a href="bis_sf_martin.php">Biserica Sf.Martin</a></u></li>
<li><u align="justify"><a href="bis_sf_nicolae.php">Biserica Sf
Nicolae</a></u></li>
<li><u align="justify"><a href="bis_sf_treime.php">Biserica Sf Treime</a></u></li>
<li><u align="justify"><a href="casa_hirscher.php">Casa Hirscher</a></u></li>
Textul afiat oblic a fost executat prin ataarea de CSS-uri:
<link href="stiluri.css" rel="stylesheet" type="text/css" />
9. Partea rmas pentru completri a ramas goal, fcndu-se modificri doar pentru
alinierea paragrafelor vertical i setarea titlului ca heading1.
<td valign="top" width="711" bgcolor="AEAEAE">
31

<h1 align="center">&nbsp;
</h1>
</td>

3.2.2 Construcia indexului


Pentru aceasta a fost necesar adugarea unei imagini n spaiul gol al paginiiablon i formarea de hri astfel c la fiecare obiectiv turistic n miniatur, la efectuarea
unui click, utilizatorul s fie trimis ctre pagina aferent obiectivului ales. Acest lucru s-a
fcut astfel: n fereastra de proprieti s-a ales opiunea map - Rectangular Hotspoot Tool
(mai exist i opiunile oval i poligon) i fiecare obiectiv n miniatur a fost inclus ntr-un
ptrat. Dnd click n ptratul respectiv, vom avea opiunea link unde vom putea trece la
ce pagin se va face legtura. Exist 3 modaliti de a face link: fie s scriem calea (ceea ce
poate duce la eroare n cazul n care greim o liter, prin poit to file sau browse to file
(cele dou opiuni din dreapta casetei de link).

Figura 3.13 : Modul de construcie al hrii interactive

Figura 3.14 : Harta interactiv

32

Mai jos este prezentat o parte codul surs al operaiilor efectuate:


<td valign="top" width="711" bgcolor="AEAEAE"><p><img src="Pt
site/poze/harta_brasov.gif" width="708" height="933" border="0" usemap="#Map" />
<map name="Map" id="Map">
<area shape="rect" coords="393,583,426,611" href="casa_reduta.php"
alt="Casa Reduta" />
<area shape="rect" coords="324,546,362,578" href="bis_sf_treime.php"
alt="Biserica Sfnta Treime" />
<area shape="rect" coords="149,839,176,873" href="bis_sf_nicolae.php"
alt="Biserica Sfntul Nicolae" />
<area shape="rect" coords="296,777,321,812" href="bis_groaveri.php"
alt="Biserica Groaveri" />
<area shape="rect" coords="359,65,398,101" href="bis_sf_martin.php"
alt="Biserica Sfntul Martin" />
<area shape="rect" coords="469,618,499,657"
href="sinagoga_ortodoxa.php" alt="Sinagoga Ortodox" />
<area shape="rect" coords="676,344,707,381" href="teatrul_dramatic.php"
alt="Teatrul Dramatic" />
<area shape="rect" coords="553,535,588,570" href="casa_honterus.php"
alt="Casa Honterus" />
<area shape="rect" coords="347,612,382,642" href="liceul_honterus.php"
alt="Liceul Honterus" />
<area shape="rect" coords="675,507,705,531"
href="bastionul_cojocarilor.php" alt="Bastionul Cojocarilor" />
<area shape="rect" coords="673,531,692,553"
href="bastionul_postavarilor.php" alt="Bastionul Postvarilor" />
<area shape="rect" coords="500,636,536,666"
href="bastionul_funarilor.php" alt="Bastionul Funarilor" />
<area shape="rect" coords="295,580,327,611"
href="bastionul_fierarilor.php" alt="Bastionul Fierarilor" />
<area shape="rect" coords="381,764,414,795"
href="bastionul_tesatorilor.php" alt="Bastionul estorilor" />
<area shape="rect" coords="378,415,405,453" href="bis_catolica.php"
alt="Biserica Catolic" />
<area shape="rect" coords="644,417,678,445" href="palatul_justitiei.php"
alt="Palatul Justiiei" />
<area shape="rect" coords="363,496,387,529" href="casa_muresenilor.php"
alt="Casa Mureenilor" />
<area shape="rect" coords="466,197,505,232" href="cetatuia.php"
alt="Cetuia" />
<area shape="rect" coords="349,653,384,690"
href="sinagoga_neoloaga.php" alt="Sinagoga Neoloag" />
<area shape="rect" coords="309,663,341,692" href="poarta schei.php"
alt="Poarta chei" />
................................................................................................................................................
</map>
33

3.2.3 Construcia paginilor cu obiective turistice i hoteluri


Avnd n vedere faptul c toate paginile au fost contruite pe acelai principiu, voi
prezenta paii pentru dou pagini, i anume: pagina Bisericii Negre i a Bastionului
Cojocarilor.
Pentru pagina bastionul_cojocarilor.php s-a creat un tabel centrat cu dou linii i
patru coloane cu bordur zero. n interiorul celulelor au fost introduse imagini cu obiectivul
respectiv, dar i o descriere a acestuia. Scrisul a fost aezat n forma centrat prin bifarea
opiunii header din fereastra de proprieti (dup cum se poate vedea n Figura 3.7). Iat i
codul html asociat acestui tabel:
<table width="545" height="756" cellpadding="5" cellspacing="5" border="0"
align="center">
<tr>
<th width="220" height="147" scope="col"><img src="Pt site/poze/bastionul
cojocarilor/cojocarilor1.jpg" width="220" height="145" /></th>
<th width="290" scope="col"><img src="Pt site/poze/bastionul
cojocarilor/cojocarilor4.jpg" width="220" height="145" align="right" /></th>
</tr>
<tr>
<th scope="row"><img src="Pt site/poze/bastionul cojocarilor/cojocarilor2.jpg"
width="220" height="145" /></th>
<th>Bastionul Cojocarilor, sau Tbcarilor a fost construit n jurul anului 1452 i
ncredinat spre aprare breslei tbcarilor. De form semicircular, cu partea deschis
ctre Bastionul Postavrilor comunica cu acesta printr-o galerie de-a lungul zidului.
Bastionul Cojocarilor a avut goluri de tragere i guri pentru smoal topit. Arcurile de
crmid ce se vd i astzi au fost fcute mai trziu.
<p>&nbsp;</p></th>
</tr>
<tr>
<th scope="row"><img src="Pt site/poze/bastionul cojocarilor/cojocarilor3.jpg"
width="220" height="145" /></th>
<th><img src="Pt site/poze/bastionul cojocarilor/cojocarilor5.jpg" width="220"
height="145" align="right" /></th>
</tr>
<tr>
<th height="183" scope="row"><img src="Pt site/poze/bastionul
cojocarilor/cojocarilor6.jpg" width="220" height="145" /></th>
<th><img src="Pt site/poze/bastionul cojocarilor/cojocarilor7.jpg" width="220"
height="145" align="right" /></th>
</tr>
</table>

34

Figura 3.15 : Construcia paginii bastionul_cojocarilor.php

Titlul paginii a fost creat cu ajutorul codului de mai jos:


<h1 align="center">Bastionul Cojocarilor</h1>
Acelai principiu a stat i la baza construirii paginii biserica_neagra.php, numai
c din cauza faptului c n folderul de imagini asociat paginii existau multe fotografii, s-a
considerat c ar fi necesar o grupare a acestora pentru a reduce spaiul de afiare. Astfel sau creat acele rollover images din meniul Insert Image Objects Rollover Image. Dup
acest pas s-au ales imaginile pereche aftfel:

35

Figura 3.16 : Rollover image

S-a ales calea fiecrei imagini ce urma a fi ataat prin accesarea opiunii browse. Original
image este imaginea care apare n momentul rulrii paginii, iar Rollover image este
imaginea care va aprea n momentul n care se va poziiona mouse-ul pe imaginea
original. Exist i opiune pentru text alternativ i link ctre alt pagin n momentul n
care se execut click-ul, ns acest lucru nu era necesar, drept pentru care acele dou casete
au rmas necompletate. Dup terminarea acestor pai, evident a fost apsat butonul OK, iar
imaginea creat a aprut n interiorul paginii.Dup ce au fost inserate toate imaginile
necesare, pe lng codul html a fost generat i un cod javascript, dup cum urmeaz:
<script type="text/javascript">
<!-function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++)
x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array;
for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src;
x.src=a[i+2];}
}
//-->
</script>
Scriptul de mai jos reprezint modul de afiare al imaginilor
<body onload="MM_preloadImages('Pt site/poze/biserica neagra/biserica_neagra10.jpg','Pt
site/poze/biserica neagra/biserica_neagra171.jpg','Pt site/poze/biserica
neagra/biserica_neagra3.jpg','Pt site/poze/biserica neagra/biserica_neagra16.jpg','Pt
site/poze/biserica neagra/biserica_neagra26.jpg','Pt site/poze/biserica
neagra/biserica_neagra291.jpg','Pt site/poze/biserica neagra/biserica_neagra28.jpg','Pt
site/poze/biserica neagra/biserica_neagra24.jpg','Pt site/poze/biserica
36

neagra/biserica_neagra12.jpg','Pt site/poze/biserica neagra/biserica_neagra31.jpg','Pt


site/poze/biserica neagra/biserica_neagra14.jpg','Pt site/poze/biserica
neagra/biserica_neagra4.jpg','Pt site/poze/biserica neagra/biserica_neagra8.jpg','Pt
site/poze/biserica neagra/biserica_neagra22.jpg','Pt site/poze/biserica
neagra/biserica_neagra20.jpg','Pt site/poze/biserica neagra/biserica_neagra6.jpg')">
Pentru fiecare imagine inserat n tabel a fost creat scriptul:
<td width="223"><a href="#" onmouseout="MM_swapImgRestore()"
onmouseover="MM_swapImage('Image12','','Pt site/poze/biserica
neagra/biserica_neagra14.jpg',1)"><img src="Pt site/poze/biserica
neagra/biserica_neagra13.jpg" name="Image12" width="220" height="145" border="0"
id="Image12" /></a></td>
Pentru mai multe detalii, pagina biserica_neagra.php conine i o adres de mail la care
cei interesai pot cere informaii suplimentare. Aceasta a fost fcut utiliznd opiunea
mailto, astfel:
E-mail: <a
href="mailto:Schwarze.Kirche@Brasovia.ro">Schwarze.Kirche@Brasovia.ro</a>
Titlul paginii i aezarea au fost fcute la fel ca i n pagina prezentat anterior.
Restul paginilor au fost create urmrind cele dou principii expuse mai sus, cu
meniunea c numrul de linii i coloane poate diferi n funcie de informaiile asociate
fiecrei pagini. Pentru aezarea n pagin au mai fost unificate linii i coloane din motive
estetice urmrindu-se a nu se depi numrul de pixeli ai tabelului n care a fost creat
pagina-ablon.

3.2.4 Crearea albumului


Albumul este o sectiune pe care un site de prezentare a unei locatii turistice trebuie
numaidecat sa o aiba. Aici vor fi poze si filme care sa descrie cat mai bine zona, obiectivele
turistice si serviciile oferite.
In primul exemplu, imaginile vor fi de dimensiuni diferite, vor fi Incadrate de un chenar
care se va redimensiona la incrcarea fiecrei noi imagini. Imaginile vor fi numerotate
(0.jpg, 1.jpg ) pentru o incrcare consecutiv (in exemplul urmtor imaginile nu trebuie s
fie neaprat cu aceste denumiri). Dup incrcarea in intregime a unei imagini, se vor gsi
dimensiunile fotografiei, se va terge vechea imagine, se va redimensiona chenarul dup
care va fi afiat noua fotografie.
Vom schimba proprietile documentului pentru a avea dimensiunile 800x500 i o vitez de
afiare de 30 de cadre pe secund (in cazul in care imaginea este mai mare de 800x500
putei s realizai i o scalare a acesteia).
In timpul incrcrii unei imagini, imaginea precedent trebuie s fie afiat. Din acest
motiv nu trebuie s incrcm imaginea nou in acelai MovieClip ca i precedenta .

37

Fig3.15 album

Mai jos este prezentata o parte din codul sursa al albumului:


<HTML>
<HEAD>
<style>
<!-html, body
{
padding: 0px;
margin: 0px;
height: 100%;
background-color: #003300;
}
-->
</style>
<TITLE> Brasov</TITLE>
</HEAD>
<BODY scroll="no">
<table border="0" cellpadding="10" cellspacing="0" width="100%" height="100%">
<tr>
<td align="center">
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#versi
on=7,0,0,0" WIDTH="100%" HEIGHT="100%" id="greebo2" ALIGN="center">
<PARAM NAME="movie" VALUE="greebo2.swf" />
<PARAM NAME="quality" VALUE="high" />

38

<PARAM NAME="bgcolor" VALUE="#003300" />


<EMBED src="greebo2.swf" quality="high" bgcolor="#003300"
WIDTH="100%" HEIGHT="100%" NAME="greebo2" ALIGN="center"
TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer" />
</OBJECT>
</td>
</tr>
</table>
<!-- eye_test.jpg -->
</BODY>
</HTML>

3.2.5 Construcia paginilor cu formulare de rezervri la hoteluri


S-a creat un tabel aliniat centrat n interiorul ablonului. n tabel a fost inserat o
form care, de asemenea, conine un tabel aliniat centrat. n interiorul acestui tabel din
form au fost inserate 6 text field-uri astfel: pentru nume, numrul de telefon, email, data
sosirii, data plecrii i o rubric de comentarii. Sub aceste cmpuri au fost introduse dou
butoane: trimite i reseteaz. Mai jos este prezentat codul surs al formularului, precum i
partea de design:
require_once('config.php');
if(!isset($_SESSION['nume'])) $_SESSION['nume'] = '';
if(!isset($_SESSION['telefon'])) $_SESSION['telefon'] = '';
if(!isset($_SESSION['email'])) $_SESSION['email'] = '';
if(!isset($_SESSION['datas'])) $_SESSION['datas'] = '';
if(!isset($_SESSION['datap'])) $_SESSION['datap'] = '';
if(!isset($_SESSION['comentariu'])) $_SESSION['comentariu'] = '';
n aceast pagin avem formularul HTML, iar la nceput observai construcia if cu
instruciunea isset. Aceast linie se interpreteaz astfel: dac nu sunt setate sesiunile
respective, le setm ca fiind goale. Aceast operaiune este folosit pentru a evita afiarea
unei erori PHP care ne va spune c sesiunile nu exist ceea ce aa este.
<th width="562" height="683"><form action="palace_validare.php" method="post"
name="formular" id="form2"
onSubmit="MM_validateForm(\'nume\',\'\',\'R\',\'telefon\',\'\',\'RisNum\',\'email\',\'\',\'RisEm
ail\',\'datas\',\'\',\'R\',\'datap\',\'\',\'R\');return document.MM_returnValue" >
<h1>Formular de cazare:</h1>
<p>&nbsp;</p>
<table width="349" border="1" align="center" cellpadding="5" cellspacing="5">
<tr>
<td width="86">Nume:</td>
<td width="222"><input name="nume" type="text" class="textfield" id="nume"
value="'.$_SESSION['nume'].'" /></td>
39

</tr>
<tr>
<td>Telefon:</td>
<td><input name="telefon" type="text" class="textfield" id="telefon" value="'.
$_SESSION['telefon'].'" /></td>
</tr>
<tr>
<td>Email:</td>
<td><input name="email" type="text" class="textfield" id="email" value="'.
$_SESSION['email'].'" /></td>
</tr>
<tr>
<td>Data sosirii:</td>
<td><input name="datas" type="text" class="textfield" id="datas" value="'.
$_SESSION['datas'].'" />
*</td>
</tr>
<tr>
<td>Data plecrii:</td>
<td><input name="datap" type="text" class="textfield" id="datap" value="'.
$_SESSION['datap'].'" />
*</td>
</tr>
<tr>
<td>Comentariu:</td>
<td><textarea name="comentariu" cols="30" rows="5" class="textfield" value="'.
$_SESSION['comentariu'].'">'.$_SESSION['comentariu'].'</textarea></td>
</tr>
</table>
<table width="100" border="1" align="center" cellpadding="5" cellspacing="5">
<tr>
<td><input type="submit" name="Trimite" id="Trimite" value="Trimite" /></td>
<td><input type="reset" name="Reseteaza" id="Reseteaza" value="Reseteaz"
/></td>
</tr>
</table>
<p>&nbsp;</p>
<p align="center">* A se completa astfel: an/lun/zi Exemplu: 2009/4/30</p>
<p align="center">Comentariul nu trebuie s depeasc 255 caractere</p>
<p align="center">Completai toate cmpurile!</p>
<p>&nbsp;</p>
</form> </th>

40

Figura 3.17 : Formularul de rezervare la hoteluri

S-au pus condiii ca fiecare cmp s fie completat (mai puin comentariu) i n
plus, pentru cmpul telefon se poate completa doar cu cifre, pentru cmpul email s
poat fi introdus doar format de email. Pentru aceasta s-a folosit Tag Inspector pentru tabel
Add behaviors Validate form. Pentru fiecare cmp s-a bifat csua required, pentru
telefon s-a bifat suplimentar opiunea Number, iar pentru email s-a bifat opiunea
Email adress; dup care s-a apsat OK. Pentru culoarea din interiorul formularului s-au
folosit CSS-uri din stiluri.css (stiluri pentru textfield). n urma executrii acestor pai a
fost creat i codul javascript pentru cele executate mai devreme:
<script type="text/javascript">
<!-function MM_validateForm() { //v4.0
if (document.getElementById){
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2];
val=document.getElementById(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail
address.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);

41

if (num<min || max<num) errors+='- '+nm+' must contain a number


between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
} if (errors) alert('The following error(s) occurred:\n'+errors);
document.MM_returnValue = (errors == '');
}}
//-->
</script>

Figura 3.18 : Cerine de validare a formularelor

3.2.6 Construcia paginilor de validare a datelor din formulare


La nceputul paginii s-au introdus scripturile:
$_SESSION['nume'] = addentities($_POST['nume']);
$_SESSION['telefon'] = addentities($_POST['telefon']);
$_SESSION['email'] = addentities($_POST['email']);
$_SESSION['datas'] = addentities($_POST['datas']);
$_SESSION['datap'] = addentities($_POST['datap']);
$_SESSION['comentariu'] = addentities($_POST['comentariu']);
S-a creat apoi un tabel aliniat centrat n interiorul ablonului. Acest tabel a fost
completat de scripturile:
<td>
Nume: '.$_SESSION['nume'].'<br>
Telefon: '.$_SESSION['telefon'].'<br>
Email: '.$_SESSION['email'].'<br>
Data sosirii: '.$_SESSION['datas'].'<br>
Data plecrii: '.$_SESSION['datap'].'<br>

42

Comentariu: '.$_SESSION['comentariu'].'<br><br>
Dac datele sunt corecte, apsai <a href="palace_prelucrare.php">aici</a> pentru
a le valida <br>
i a le introduce n baza de date.
</td>

3.2.7 Construcia paginilor de prelucrare a datelor din formulare


S-a creat un tabel aliniat centrat n interiorul ablonului. Acest tabel a fost
completat de scripturile:
if (strlen($_SESSION['comentariu']) > 255)
{
echo 'Datele introduse nu sunt corecte. <br>
Apas <a href="palace_cazare.php">aici</a> pentru a te ntoarce la pagina anterioar.';
}
else
{
echo 'V mulumim. <br>
Datele au fost introduse cu succes n baza de date. <br>
Pentru vizualizare apsai <a href=" palace_vizualizare.php">aici</a>.';
$cerereSQL = "INSERT INTO `palace` (`nume`, `telefon`, `email`, `datas`, `datap`,
`comentariu`)
VALUES ('".$_SESSION['nume']."', '".$_SESSION['telefon']."', '".
$_SESSION['email']."', '".$_SESSION['datas']."', '".$_SESSION['datap']."', '".
$_SESSION['comentariu']."');";
mysql_query($cerereSQL);
$_SESSION['nume'] = '';
$_SESSION['telefon'] = '';
$_SESSION['email'] = '';
$_SESSION['datas'] = '';
$_SESSION['datap'] = '';
$_SESSION['comentariu'] = '';
}
Dup ce datele au fost prelucrate, au fost stocate n baza de date. Acestea pot fi verificate
din phpMyAdmin prin opiunea Navigare:

Figura 3.19 : Coninutul unui tabel

43

3.2.8 Construcia paginilor de vizualizare a datelor din formulare


S-a creat un tabel aliniat centrat n interiorul ablonului. Acest tabel a fost
completat de scripturile:
$cerereSQL = 'SELECT * FROM palace ORDER BY ID DESC LIMIT 1';
$rezultat = mysql_query($cerereSQL);
while($rand = mysql_fetch_array($rezultat))
{
echo '<b>Nume:</b> '.$rand['nume'].' <br>
<b>Telefon:</b> '.$rand['telefon'].' <br>
<b>Email:</b> '.$rand['email'].' <br>
<b>Data sosirii:</b> '.$rand['datas'].' <br>
<b>Data plecrii:</b> '.$rand['datap'].' <br>
<b>Comentariu:</b> '.$rand['comentariu'].' <br><br>';
}

3.3 Construcia fiierului stiluri.css


Stilurile au fost fcute pentru tag-ul <ul> i pentru forma TextField. Paii sunt
prezentai n imaginile de mai jos :
1.Se alege din meniul CSS opiunea New CSS Rule:

Figura 3.20 : Selectarea unei reguli CSS

44

2.Dup alegerea opiunii va aprea fereastra:

Figura 3.21 : Opiuni de selectare a unei reguli CSS

Dup cum se observ, s-a bifat opiunea tag i Define in New Style Sheet File i s-a
ales tag-ul <ul>. Pentru textfield s-a procedat la fel, cu urmtoarele modificri: s-a
selectat class n loc de tag , caseta tag a disprut aprnd caseta Name unde s-a
introdus valoarea textfield. Se d click pe butonul OK. Se selecteaz opiunile de font,
culoare, mrime,etc.
3. S-a creat fiierul stiluri.css:

45

Figura 3.22 : Crearea fiiereului stiluri.css

Mai jos este prezentat codul fiierului stiluri.css:


@charset "utf-8";
.textfield {
background-color: #CCCCCC;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none; }
ul {
font-family: "Times New Roman", Times, serif;
font-style: oblique;
color: #006699;
font-size: 14px; }

46

Asa arata in final aplicatia....

Figura 4.aplicatia

Stabilirea scopului site-ului este etapa in care trebuie sa raspundeti la intrebarea " de ce?".
De ce doriti sa creati acest site? Definitia scopului site-ului reprezinta tema conducatoare in
procesul de construire a acestuia. Un site fara un scop clar si bine definit lanseaza un mesaj
neconvingator si cetos. Vizitatorul se va intreba, fara indoiala, "La ce serveste acest site?" si
se va grabi sa-l paraseasca.
Este un site dedicat tuturor agentiilor de turism si chiar persoanelor fizice sau juridice care
ofera cazare, Site-ul este full administrabil si are elemente de optimizare prietenoase,
oferind posibilitatea de a mentiona cuvinte cheie, titlu si descriere pentru fiecare oferta in
parte. Ofertele sunt prezentate cu poze si text.Cu alte cuvinte, in vreme ce scopul site-ului
comunica ce aveti de gand sa faceti, obiectivele comunica ce informatii veti oferi pentru a
va indeplini scopul propus.
Cu toate c elementele prezentate mai sus pot prea descurajante, unele dintre ele prezint
totui i avantaje. Astfel, permeabilitatea Web-ului poate lucra n favoarea designerului, cu
condiia ca acesta s structureze atent informaiile prezentate i s ofere suficiente elemente
de navigaie. O pagin sau un grup de pagini din cadrul unui site pot fi folosite ca referine
n alte pagini sau chiar ca elemente constitutive ale unui alt site. De exemplu, un site de tip
mono-pagin care face prezentarea unui manual de HTML poate fi folosit ca pagin
individual ntr-un site de librrie electronic, sau poate constitui o legtur util din
interiorul unui site de design Web, mrind astfel ansele ca pagina respectiv s fie accesat
de vizitatori printr-unul dintre aceste puncte.
47

Concluzii

Pe parcursul desfurrii proiectului, au fost prezentate modaliti de realizare a


paginilor Web prin intermediul: HTML, JavaScript, precum i PHP cu legturi la sistemul
de gestiune al bazelor de date MySQL.
Prin parcurgerea materialului am explicat cum se pot crea att pagini statice ct i
dinamice ntr-un site. Pentru persoanele mai puin familiarizate, prin cele prezentate am
putut face astfel nct cititorii s aib ocazia s intre n contact cu principalele tag-uri
HTML necesare pentru realizarea site-urilor cu coninut static, s poat vedea cum se poate
schimba modul de prezentare prin intermediul CSS-urilor, s poat nelege conceptul de
limbaj de scripting JavaScript i s nvee cum se lucreaz cu PHP (lucrul cu stocare a
datelor n fiiere plate, comenzi utile pentru fiiere, lucrul cu tablouri, funcii de reutilizare
a codului) cum se construiesc bazele de date n MySQL (realizarea tabelelor, cum se fac
interogri, cum se acord privilegiile, cum se creeaz un cont de utilizator, sau accesarea
bazei de date MySQL de pe Web prin PHP).
Pentru ca lucrurile s fie mult mai clare, am exemplificat cele nvate printr-o aplicaie
practic privind dezvoltarea turismului romnesc (n care apare o hart interactiv,
principalele obiective turistice din oraul Braov, cele mai cunoscute hoteluri ale oraului
precum i posibilitatea de a face rezervri on-line), aplicaie care sintetizeaz principalele
aspecte enumerate mai sus. Secvenele de cod HTML prezentate i explicate, codul PHP cu
interogrile SQL pentru tabele, funciile JavaScript , precum i imagini sugestive cu paii
urmai pentru realizarea aplicaiei.
Probabil ar veni ntrebarea: De ce avem nevoie de site-uri Web pentru turism i
care sunt direciile viitoare n acest domeniu? Rspunsul este: pentru c numrul
utilizatorilor de Internet este ntr-o cretere vertiginoas, iar aceast modalitate de
prezentare a turismului ofer informaii complete despre destinaiile turistice ntr-un mod
foarte rapid. Pe lng aceste informaii, turitii pot face rezervri on-line, pot opta pentru
diverse pachete de servicii, i pot stabili singuri modul de pretrecere al concediilor n
funcie de bugetul pe care l au i pot alege care variant este mai la ndemn avnd n
vedere paleta larg de oferte care exist.
Evident, un site nu poate fi creat doar pentru a exista. Acesta este fcut cu un
anumit scop i se adreseaz unui anumit segment de pia avnd un anumit public int.
Dac utilizatorul nu va tii de la nceput care este menirea site-ului respectiv, acesta l va
prsi reorientndu-se ctre altele
Indiferent de tehnologiile folosite n realizarea site-urilor Web, acestea vor fi la fel
de necesare n viitor, iar importana lor va crete pe msur ce tendinele de automatizare a
majoritii activitilor iau amploare. Acest lucru este valabil i n sectorul turismului.

48

Importana existenei unui site Web este cu att mai mare cu ct numrul de clieni asimilai
prin aceast metod este mai mare i traficul pe site-ul respectiv este n cretere.
Exist diverse firme IT care se ocup de crearea de tehnologii noi pentru realizarea
site-urilor Web. Acest lucru este i confirmat de faptul c aceste tehnologii sunt n plin
cretere ca numr i n plin evoluie. Pentru fiecare tehnologie care s-a dovedit a fi
performant apar versiuni noi mbuntite care ncearc s uureze munca programatorului
Web.
Promovarea turismului on-line este o altrenativ exelent pentru promovarea
clasic. Este mult mai uor s construim un site n care s prezentm coerent informaiile
de care un turist are nevoie dect s participm la trguri de turism, s mprim brouri sau
s pltim diverse firme de publicitate. Aceste lucruri implic, evident, costuri mai mari i
timp mai ndelungat ceea ce duce, evident, la ncetinirea derulrii activitii.
Bineneles, este necesar i promovarea turismului on-line, ns s nu se neleag
c acest lucru este i suficient. Nu trebuie s se renune definitiv la metodele clasice de
promovare. Promovarea on-line a turismului i promovarea clasic sunt dou activiti
complementare.
Concluzia general este c, indiferent de activitatea pe care o desfoar o
companie anume, site-urile Web vor avea un rol important n atragerea clineilor i n
creterea profitului. Existena unui site este necesar, dar nu i suficient. O prezentare online cumulat cu metodele clasice pot aduce succesul n afaceri.

49

Bibliografie

1. Brut Mihaela, Buraga Sabin Prezentri multimedia pe Web, editura Polirom,


Bucureti, 2004
2. Buraga Sabin Situri Web la cheie, editura Polirom, Bucureti, 2004
3. Ivacu Valentin Iniiere n PHP i MySQL, articol publicat n 1.06.2005
4. Roca Ion Gheorghe, epu Nicolae Internet, intranet concepte i aplicaii,
editura Economic, Bucureti, 2000
5. Thomson Laura, Welling Luke Dezvoltatea aplicaiilor Web cu PHP i MySQL,
ediia a doua, editura Teora, Bucureti, 2005
6. Radu Pop Limbajul HTML pe intelesul tuturor
7. Ken Henderson proceduri stocate in SQL server
8. *** , www.afacerionline.net
9. *** , www.aro-palace.ro
10. *** , www.biblioteca-digitala.ase.ro
11. *** , www.cursurionline.info
12. *** , www.e-cursuri.ro
13. *** , www.emis.de
14. *** , www.html-tututor.net
15. *** , www.marplo.ro
16. *** , www.regielive.ro
17. *** , www.ropedia.ro
18. *** , www.tutorialehtml.ro
19. *** , www.welcometoromania.ro

50