Sunteți pe pagina 1din 90

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

STOCAREA UNOR INFORMAII REFERITOARE LA PERFORMANELE

UNEI GRUPE SPORTIVE FOLOSIND LIMBAJUL PHP I SQL

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Cuprins
INTRODUCERE ................................................................................................................................................ 4 1. Tehnologiile folosite ........................................................................................................................................ 5 1.1.1.Elemente ale limbajului HTML- HyperText Markup Language ........................................................ 5 1.1.2. Structura HTML-ului .................................................................................................................................. 5 Prima pagina html ............................................................................................................................................. 5 Structura unei pagini web ................................................................................................................................. 5 1.1.3. Atribute HTML ........................................................................................................................................... 7 1.1.4. Tagul <font> si <hx> .................................................................................................................................. 8 1.1.5. Introducerea de imagini n HTML ............................................................................................................. 8 1.1.6. Linkuri HTML ............................................................................................................................................ 9 1.1.7. Clasa de tabele n HTML ............................................................................................................................ 9 1.1.8.Crearea de liste n HTML ......................................................................................................................... 10 1.1.9. Realizarea de cadre HTML ....................................................................................................................... 11 1.1.10. Formulare n HTML ............................................................................................................................... 11 1.2. Reguli CSS .................................................................................................................................................. 13 1.2.1. Introducere ............................................................................................................................................ 13 1.2.2 Pseudoclase de stiluri CSS i modaliti de modificare a cursorului ..................................................... 16 1.3. Instalarea si configurarea PHP si MySQL cu serverele web Apache si IIS sub sistemul de operare Windows ............................................................................................................................................................. 33 1.3.1. Precizari preliminarii ............................................................................................................................ 33 1.3.2. Instalarea unui server web .................................................................................................................... 33 1.3.3. PHP scurta istorie ................................................................................................................................. 36 1.3.4. Instalarea PHP pentru Microsoft IIS (folosind PHP installer).............................................................. 36 1.3.5. Instalarea PHP pentru Apache HTTP Server........................................................................................ 36 1.3.9. Introducere n PHP , MySQL i Macromedia Dreamweaver ............................................................... 38 1.4. Limbajul PHP ........................................................................................................................................ 39 1.4.1 Introducere ............................................................................................................................................. 39 Scrierea n PHP ........................................................................................................................................... 40 Declaraia PHP............................................................................................................................................ 40 Primul script................................................................................................................................................ 41 ncheierea i testarea scriptului ................................................................................................................... 41 Scrierea unui text ........................................................................................................................................ 41 Funcia de afiare n PHP ........................................................................................................................... 42 Variabile de scoatere................................................................................................................................... 42 Formatul unui text....................................................................................................................................... 42 1.4.3. Instruciunile IF .................................................................................................................................... 44 Definiia instruciunii IF ............................................................................................................................. 44 Structura instruciunii IF ............................................................................................................................. 44 Variabilele................................................................................................................................................... 44 Construcia ramurii THEN ......................................................................................................................... 44 Construcia ramurii ELSE........................................................................................................................... 44 Alte comparaii ........................................................................................................................................... 45 1.4.4. Cicluri ................................................................................................................................................... 45 Ciclul WHILE ............................................................................................................................................. 45 Repetarea de un numr fixat de ori ............................................................................................................. 45 1

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Folosirea lui $x ........................................................................................................................................... 46 Vectori i matrici ........................................................................................................................................ 46 Definirea unui vector .................................................................................................................................. 46 Citirea unui vector ...................................................................................................................................... 47 Folosirea vectorilor i ciclurilor.................................................................................................................. 47 1.4.5. Trimiterea unui e-mail din PHP........................................................................................................... 48 Trimiterea unui mesaj E-mail ..................................................................................................................... 48 Formatul - aspectul mesajului e-mail ......................................................................................................... 48 Comanda Mail fr variabile ...................................................................................................................... 49 Erori ............................................................................................................................................................ 49 1.4.6. Construcia formularului n PHP .......................................................................................................... 49 Obinerea datelor din formular ................................................................................................................... 50 1.4.7. Comentariile in PHP ............................................................................................................................. 51 Print, Echo i HTML .................................................................................................................................. 51 One Line Prints ........................................................................................................................................... 52 1.5. PHP/MySQL .............................................................................................................................................. 53 1.5.1. Necesitatea unei baze de date ........................................................................................................... 53 Pentru a afla dac PHP i MySQL sunt instalate:...................................................................................... 54 Gestiunea Bazelor de date .......................................................................................................................... 54 1.5.2. Construirea unei Baze de Date ............................................................................................................. 54 Introducere .................................................................................................................................................. 54 Construcia Bazei de Date .......................................................................................................................... 54 Conectarea la o Baz de Date ..................................................................................................................... 54 Crearea unei Tabele .................................................................................................................................... 55 Cmpuri ...................................................................................................................................................... 55 Crearea unei Tabele cu PHP ....................................................................................................................... 55 Baza de date cu adrese de contact............................................................................................................... 55 Crearea Tabelei n PHP .............................................................................................................................. 56 1.5.3. Introducerea datelor .............................................................................................................................. 56 Conectarea la o baz de date ....................................................................................................................... 57 Selectarea bazei de date .............................................................................................................................. 57 Execuia comenzilor ................................................................................................................................... 58 Introducerea datelor .................................................................................................................................... 58 1.5.4. Afiarea rezultatelor.............................................................................................................................. 60 Introducerea datelor dintr-o pagin HTML ................................................................................................ 60 Scoaterea Datelor ........................................................................................................................................ 60 Numrarea liniilor ....................................................................................................................................... 61 Construirea ciclului ..................................................................................................................................... 61 Asocierea datelor la variabile ..................................................................................................................... 61 1.5.5. Alte rezultate ......................................................................................................................................... 63 Formatarea scoaterii.................................................................................................................................... 63 Selectarea unor date .................................................................................................................................... 64 1.5.6. nregistrri i erori ................................................................................................................................ 65 Interceptarea Erorilor .................................................................................................................................. 65 Ordonarea datelor ....................................................................................................................................... 65 Alte variante cu mysql_numrows i Sortare ............................................................................................... 65 Cmpul ID-Selecia unei singure nregistrri ............................................................................................. 66 Legturi la o singur nregistrare ................................................................................................................ 66 1.5.7. Actualizare i tergere........................................................................................................................... 67 2

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pagina de afiare a actualizrii ................................................................................................................... 67 Actualizarea bazei de date .......................................................................................................................... 68 tergerea nregistrrilor .............................................................................................................................. 69 Ciclurile ...................................................................................................................................................... 69 1.5.8. ncheierea scriptului.............................................................................................................................. 69 Cutarea n script ........................................................................................................................................ 70 Finalizarea Script-ului ................................................................................................................................ 70 1.6-Aplicaia DBMT(Database Management System Technology): ............................................................ 71 1.6.2- Baze de date: ........................................................................................................................................ 75 1.6.3- Structura fiierelor: ............................................................................................................................... 75 1.6.5- Opiunile utilizatorilor .......................................................................................................................... 78 1.6.6- Modul de utilizare al aplicaiei ............................................................................................................. 78 BIBLIOGRAFIE................................................................................................................................................. 88

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

INTRODUCERE

O component important a procesului educaional o reprezint informarea. Aceasta se face la nceputul procesului, pe parcurs i la sfrit. Evaluarea iniial este destinat crerii unei imagini despre nivelul performanelor anterioare ale cursailor, n funcie de care profesorul va planifica desfurarea procesului educaional. Evalurile de pe parcursul acestui proces nfieaz stadiul la care se afl cursanii la un moment dat, oferindu-i profesorului posibilitatea de a aduce eventuale corecii. Evaluarea final cuantific nivelul la care cursanii au ajuns la terminarea unui curs, msurnd astfel ndeplinirea obiectivelor respectivului curs. Aadar, informarea este omniprezent pe parcursul procesului educaional. De aceea, realizarea testelor de evaluare, aplicarea i corectarea lor este o activitate important, care ocup mult din timpul unui tutor, n funcie de tipul testului. Posibilitile de utilizare a calculatorului nu se reduc ns la crearea bazelor de date, acesta poate fi folosit i la aplicarea i corectarea lor. Ele pot fi afiate cursantului i tutorului, dar pot fi introduse n acelai timp automat n baza de date cu informatiile cursanilor, eliminndu-se astfel introducerea lor manual. O astfel de aplicaie, pe care o voi denumi n continuare DataBase Management System Technology, poate foarte uor s fie folosit i pentru auto-evaluare i documentare. Acestea pot fi accesate de cursani prin intermediul unei reele locale, sau chiar a Internetului. La afiare cursantul poate accesa informatii despre competentele sportive ale grupei sportive.

Sper ca lucrarea de fa s constituie un bun punct de plecare n nelegerea aplicaiei, iar aceasta din urm s fie utilizat cu succes de ct mai muli tutori.

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

1. Tehnologiile folosite
1.1.1.Elemente ale limbajului HTML- HyperText Markup Language
World Wide Webul este o reea de calculatoare capabile de a schimba informaii sub diferite forme: texte, imagini, informaii grafice i video, informaii multimedia, etc., i a fost o creaie a fizicianului Tim Bernes Lee (cel care a inventat limbajul HTML i protocolul HTTP) de la Laboratorul European pentru fizica particulelor, care n 1989 a dorit un model de comunicare ntre fizicienii din lume prin care acetia s prezinte informaii asupra muncii lor prin intermediul informaiilor stocate n reea. Informatia Web este stocat n documente numite pagini html. Paginile html sunt fiiere stocate in computere numite servere web. Computerele care citesc paginile html sunt numite clienti web. Clientii web vad paginile cu un program numit browser web. Cele mai populare browsere sunt Internet Explorer si Mozilla Firefox . Toate paginile html contin instruciuni despre cum sa fie afiate. Browser-ul afieaza pagina citind aceste instructiuni. Cele mai obinuite instruciuni de afiare sunt numite taguri HTML. Tagurile HTML arata astfel: . Standardele Web nu sunt facute de Netscape sau Microsoft. Deciziile Web sunt luate de catre W3C. W3C inseamna World Wide Web Consortium. Cele mai importante standarde web sunt HTML, CSS si XML.

1.1.2. Structura HTML-ului


Prima pagina html Pentru inceput trebuie sa corespund extensiile fiierelor afiate. Apoi pe desktop se creaza un fisier text "new text document" si i se schimba numele in index.html . Prima pagina a unui site se numeste index.html (Nu este obligatoriu ca extensia sa fie .html . De exemplu daca se folosete PHP in pagina de index pagina se va numi index.php ) . Pagina se deschide cu Notepad unde se scrie codul html (se pote copia exemplul cu structura de mai jos), se salveaza fiierul, se nchide, apoi se deschide cu internet explorer. Internet Explorer = IE (prescurtat)

Structura unei pagini web Orice pagin incepe si se sfarseste cu tagurile: O pagin trebuie sa aiba tagurile: -conine informatii despre pagina respectiv; -conine corpul paginii; 5

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

O structur a unei pagini HTML :

<html> <head> <title> </head> <body> </body> </html>

</title>

n exemplul de mai sus se observa ca pagina html deja are un titlu i ca n corpul ei apare un mesaj ca in imaginile de mai jos.

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

1.1.3. Atribute HTML

Atributele sunt ca o descriere pentru taguri, ele mereu au nume si o valoare. Un atribut se scrie sub forma: si se introduce in tag sub forma: Ex: La tagul body bgcolor="yellow"></body> putem sa adaugam atributul bgcolor cu valoarea yellow sub form <body

Dac se pune acest tag n pagina care ai creat-o vei observa ca pagina are culoarea galben. Tocmai ai schimbat culoarea de fundal. Atenie , tagul <body> se pune o singur dat intr-o pagin, nu de mai multe ori! Atributul bgcolor schimb fundalul unei pagini. Putei sa-i dati ca valoare orice culoare n limba englez. Cum se vede i mai sus culoarea yellow din exemplu, care n engleza nseamna galben. Atributul align poziioneaz un element. Ex: <h1 align="center"> - pune un text antet pe centru align="center" - aliniaza n centru align="left" - aliniaza la stanga align="right" - aliniaza la dreapta Atibutul si valoarea se adaug unde se deschide tagul. De reinut este faptul c: -un tag poate sa aib oricte atribute; -unele taguri suport doar anumite atribute; -atributele au valori standard; -exista diferene intre cum vede browserele atributele, adica Mozilla Firefox poate afisa pagina diferit de IE sau de alte browsere. 7

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

1.1.4. Tagul <font> si <hx>


Textul se poate introduce si fr taguri. Dar dac se dorete un text de o anumit form atunci se bag n taguri ca i cele de mai jos: <font> </font> -ntre ele se pune ceea ce se vrea sa scris pe pagin (acest tag nu va schimba deloc forma textului) <b> </b> -definete test ingrosat sau- <ingrosat> </ingrosat> <big> </big> -definete test mare; <mic> </mic> -definete test mic; <em> </em> -definete test accentuat; <i> </i> -definete test italic; Anteturi: HTML adaug automat o linie goal n plus nainte i dup un antet. <h1> </h1> -definete un antet de cea mai mare mrime; <h2> </h2> <h3> </h3> <h4> </h4> <h5> </h5> <h6> </h6> -definete antetul de cea mai mic marime; Tagul <br> este folosit cnd se dorete ntreruperea unui rnd/linie , dar nu i nceperea unui unui nou paragraf , foreaz o rupere de linie oriunde este aezat . Poate fi folosit pentru a lasa un rnd liber . El este nepereche , neavand nevoie de tag de nchidere . &nbsp; -este folosit ca spatiu &copy; -copyright- &reg; -marc inregistrat- <!-- This is a comment --> -cu acest tag se scrie un comentariu in html source code , comentariu este ignorat de browser , pentru a vedea html source code apasa click right pe o pagina web si selecteaza "page source" .

1.1.5. Introducerea de imagini n HTML


Cu HTML se poate afia imagini ntr-un document. n HTML, imaginile se definesc cu tagul <img>. Tagul <img> nu are tag de nchidere. Pentru a afia o imagine pe o pagina, trebuie folosit atributul src. Src inseamna "sursa". Valoarea acestui atribut este adresa imaginii care se afieaz pe pagina. URL-ul duce ctre locaia unde imaginea este stocat. <img src="adresa + imagine" alt="">

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Atributul alt i spune celui ce vede pagina ce se afla n locul imaginii dac browser-ul nu poate ncarca imagini.

1.1.6. Linkuri HTML


Semantica de legatura de alt document web folosete tagul ancora sau <a> pentru a crea un link ctre alt document . O ancora poate duce catre orice resursa de pe Web: o pagina HTML, o imagine, un fiier sunet, un film etc . Lista de etichete poate fi: <a href="url"> Textul ce va fi afisat </a> Textul ce va fi afiat Cu atributul target, se poate indica unde se deschide documentul catre care se face link-ul. Linia de mai jos va deschide documentul intr-o noua fereastr de browser: <a href= "url" target= "_self" > Textul ce va fi afiat </a > target= "_self" ncarc noul document n aceeasi fereastra cu ancora (implicit). target= "_parent" ncarc noul document in cadrul cadrul de baza . target= "_top" ncarc noul document in intreaga fereastra de browser. target= "_blank" ncarc noul document intr-o fereastra nou. Se pot combina tag-ul imagine cu cel de ancora i pune un link pe imagine i se poate face un buton. <a href= "url" target= "_self" ><img src=""> </a > Link catre o seiune: <a name= "Paragrafele"> Paragrafele </a>(se pune unde este seciunea pt a marca) >Sectiunea cu paragrafe </a> Mail link: <a href= "mailto:adresa@yahoo.com" >Send Mail <a>

1.1.7. Clasa de tabele n HTML

Cu HTML se pot crea tabele. Tabelele se definesc cu tagul <table>. Un tabel este divizat n randuri (cu ajutorul tagului <tr>) i fiecare rnd este imparit in celule de date (cu ajutorul tagului <td>). Td inseamna "table data" i este continutul unei celule de date. O celula de date poate conine text, imagini, liste, paragrafe, formulare, linii orizontale, tabele etc. <table border="1"> <tr> randul 1, celula 1 randul 1, celula 2 9

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

<td>randul 1, celula 1 </td> <td>randul 1, celula 2 </td> </tr> <tr> <td>randul 2, celula 1 </td> <td>randul 2, celula 2 </td> </tr> </table>

randul 2, celula 1 randul 2, celula 2

Daca border="0" tabelul va exista dar va avea border-ul invizibil. Si cu cat nr border-ului va creste border-ul va fi mai ingroat. <table>Definete un tabel. <th>Definete o celula cap de tabel. <tr>Definete un rand de tabel. <td>Definete o celula din tabel. <captation>Definete un camp asociat tabelului pentru introducerea unei explicaii. <colgroup>Definete grupuri de coloane ale tabelului. <col>Definete valorile atributului pentru una sau mai multe coloane dintr-un tabel. <thead>Definete un cap de tabel care nu se va derula. <tbody>Definete corpul unui tabel care se desfasoara in interiorul unui cap de tabel fixat si subsolul tabelului. <tfoot>Definete un subsol de tabel care nu se va derula.

1.1.8.Crearea de liste n HTML

Html suport liste neordonate i ordonate. Ex de lista neordonat: <ul> <li>element1 </li> <li>element2 </li> </ul> Prin <ul type=""> semnul din fat poate fi modificat. <ul type="disc"> , <ul type="circle"> , <ul type="square"> Ex de lista ordonat: <ol> <li>element1 </li> <li>element2 </li> </ol> 10

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Iniial n fa va aprea 1. , 2. .Prin type"A" se va schimba in A. , B. , C. ,etc. type"a" se va schimba in a. , b. , c. ,etc. type"I" se va schimba in I. , II. , III. ,etc. type"i" se va schimba in i. , ii. , iii. ,etc.

1.1.9. Realizarea de cadre HTML

Cu ajutorul cadrelor, se pot afia mai multe pagini web n aceeasi fereastr de browser. Fiecare document HTML poarta numele de cadru (frame) i fiecare cadru este independent de celelalte. <frameset cols="30%,70%"> <frame src="pagina1 name="left"> <frame src="pagina2 name="right"> </frameset> <frameset> Definete un set de cadre. <frame> Definete o sub-fereastra (un cadru). <noframes> Definete o sectiune noframei. <iframe> Definete o sub-fereastra inline.

1.1.10. Formulare n HTML


Formularele HTML sunt folosite pentru a selecta diferite moduri de introducere a datelor de ctre utilizator. Se pot introduce informaii ca: (cmpuri text, meniuri ce se pot derula, butoane radio, csute de validare, etc.). Un formular se definete cu tagul <form>. Text: <form> Nume: <input type="text" name="nume"> <br> Prenume: <input type="text" name="prenume"> </form> Radio buton: <form> <input type="radio" name="sex" value="male"> Male <br> <input type="radio" name="sex" value="female"> Female 11

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

</form> Checkbox: <form> Am un caine: <input type="checkbox" name="animal" value="caine"> <br> Am o pisica: <input type="checkbox" name="animal" value="pisica"> </form> Formular cu actiune: <form name="input" action="html.php" method="get"> Username: <input type="text" name="user"> <input type="submit" value="Submit"> </form>

12

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

1.2.

Reguli CSS

1.2.1. Introducere
CSS este un acronim provenind din Cascading Style Sheets, care nseamn "foi de stil n cascad". n documentele W3C, CSS nu e definit ca un nou limbaj, ci ca un mecanism care permite formatarea documentului HTML. CSS-ul nu exclude HTML-ul din pagina web. Nu se poate realiza o pagin web folosind numai CSS, care a fost proiectat astfel nct s conlucreze cu HTML-ul. Tagurile HTML au fost iniial destinate pentru a defini coninutul unui document. Pentru a afia "Acesta este un antet", "Acesta este un paragraf" sau "Acesta este un tabel", trebuiau folosite taguri ca <h1>,<p>,<table> etc. Modul de aranjare al documentului era sarcina browser-ului, far a fi folosite taguri de structur. Pe masur ce Netscape i IE continuau s adauge noi taguri HTML i atribute (ca tagul <font> i atributul color) sintaxei HTML originale, devenea din ce n ce mai greu s creezi site-uri web n care coninutul documentelor HTML s fie separat clar de aranjamentul documentului. Stilurile definesc cum s fie afiate elementele HTML 4.0, aa cum face tagul font sau atributul color n HTML 3.2. Stilurile sunt salvate n mod normal n fiiere diferite de cele cu extensia html. Foile de stil externe permit s schimbarea apariiei i aranjarii tuturor paginilor n site-ul web, doar prin editarea unui singur document CSS. Pentru ncercarea de schimbare a fontului sau a culoarii tuturor anteturilor din paginile web creata, CSS poate scuti de mult munc inutil. Proiectanii CSS-ului au urmrit ndeosebi separarea ntre coninutul paginii (textul destinat vizitatorului i imaginile din pagin) i codul-surs. Folosind CSS, se ajunge la un control mai fin asupra paginii web, la scderea dimensiunii n octeti a paginii web, atunci cnd codul CSS e coninut ntr-un fiier extern. Modificnd fiierul CSS extern, modificm simultan toate paginile web n care acesta e inclus. Se pot crea efecte mai sofisticate dect cele produse de codul HTML: suprapunerea unei imagini peste alt imagine, a unui text peste alt text, impresia de relief, efectul hover, afiarea unor fonturi mai mari dect h1 etc. CSS este foarte util n Web design, deoarece le permite developerilor s controleze stilul i chenarul mai multor pagini web n acelai timp. Ca web developer se poate defini un stil pentru fiecare element HTML i aplica orictor pagini web se dorete. Pentru a face o schimbare global, se schimb stilul i toate elementele din paginile web vor fi modificate automat. Dezavantaj lucrului cu CSS este c pagina coninnd cod CSS poate arata diferit n navigatoare diferite, deoarece nu toate browserele interpreteaz codul CSS la fel. Adugnd cod JavaScript, se obtin efecte i mai sofisticate, chiar de animatie. CSS + JavaScript = DHTML (Dynamic HTML). Aceste efecte spectaculoase justific titulatura de "artiti CSS" sau "artizani CSS" acordat unor creatori de pagini web. Foile de stil dau posibilitatea specificrii informaiei despre stil n mai multe feluri. Stilurile se pot specifica ntr-un singur element HTML, n interiorul elementului <head> al unei pagini HTML sau ntr-un fiier extern CSS. Dintr-un singur document HTML se pot face referiri ctre mai multe foi de stil externe. Deci, un stil din interiorul unui element HTML are cea mai mare prioritate, ceea ce nseamn c va suprascrie fiecare stil declarat n tagul <head>, ntr-o foaie de stil extern i n browser. n documentul HTML, codul CSS poate fi introdus n mai multe moduri: Codul CSS e prezent n pagina web, iar efectul su se aplic asupra ntregului document.
<html> <head> <style> b {color:red;} i {color:blue;} </style>

13

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

</head> <body> <p align=center><b>Introducere n CSS</b></p> <p><i>Aceast sectiune se adreseaz celor ce cunosc deja HTML-ul. </i></p> </body> </html>

Consecin: Orice text cuprins ntre <b>i </b> va fi afiat cu rou, oriunde s-ar afla n document. Orice text afiat cu italice va fi de culoare albastr. Se observ c introducerea codului CSS n head duce la mrirea dimensiunii n octeti a fiierului.

<html> <head> <style> a { text-decoration: none; } </style> </head> <body> <a href="Intro.htm">Introducere</a> <a href="A.htm">Partea I</a> <a href="B.htm">Partea a II-a</a> </body> </html>

Eticheta <style> anun browserul c urmeaz codul CSS, iar </style> c a luat sfrsit codul CSS. Efectul codului alturat este c toate link-urile din acest document vor aprea nesubliniate (text-decoration:none;). Codul e prezent n pagina web, iar efectul su se aplic elementelor izolate.
<html> <head> </head> <body> <a href="Intro.htm" style="color:red;">Introducere</a> <a href="A.htm" style="color:green;">Partea I</a> <a href="B.htm" style="color:blue;">Partea a II-a</a> </body> </html>

Efectul acestei secvene de cod este:


Introducere Partea I Partea a II-a

Se observ c nu mai este, n acest caz, o etichet <style>, ci un atribut style al etichetei <a>. Orice etichet HTML poate beneficia de acest atribut. Pentru formatarea unor poriuni mari de text, se poate folosi containerele div sau span. Totui, aceast abordare nu satisface principiul separrii codului CSS de textul afisat n browser. Codul CSS se afl ntr-un fiier extern, cu extensia css. Efectul su se aplic ntregului document.

14

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

<html> <head> <link rel=StyleSheet href="x.css" title="Setarea link-urilor" type="text/css"> </head> <body> <a href="Intro.htm">Introducere</a> <a href="A.htm">Partea I</a> <a href="B.htm">Partea a II-a</a> </body> </html>

Fiierul extern poate fi scris n Notepad i salvat cu extensia css. Includerea sa n pagina web se face folosind tag-ul <link>, care trebuie s se afle ntre <head>i </head> (n antetul paginii). Fisierul x.css poate conine urmtorul cod:
body { color: blue;} a {color: red; text-decoration: none;}

Consecina va fi afiarea cu fonturi albastre a ntregului text, exceptnd link-urile, care vor fi colorate n rosu. ntr-un fiier html, pot fi incluse astfel oricte alte fiiere cu extensia css, htm, html sau pdf. Aceast metod de includere a CSS-ului n pagina web e mai avantajoas ca primele dou. Codul CSS introdus astfel conlucreaz cu cel scris direct n pagin. Documentul CSS se poate importa n pagina web. Cod:
<html> <head> <style> @import url(http://www.cartomatica.net/fis/x.css); </style> </head> <body> </body> </html>

Importul trebuie declarat imediat dup tag-ul <style>, naintea oricrei alte linii de cod. n exemplul alturat, s-a realizat importul n pagina curent a fiierului x.css din directorul fis al siteului www.cartomatica.net. Desigur, fiierul importat poate avea i o adres relativ. Sintaxa CSS este alctuit din trei pri: un selector, o caracteristic i o valoare. Selectorul este elementul/tagul care se dorete a fi definit, caracteristica este atributul pe care dorete a fi schimbat i fiecare caracteristic poate lua o valoare. Caracteristica i valoarea sunt separate de semnul (:) i sunt ncadrate de acolade:
body {color: black}

Dac se dorete s specificarea mai mult de o caracteristic, trebuie s separat fiecare caracteristic cu semnul (;). Exemplul de mai jos arat cum sedefinete un paragraf aliniat central, cu culoarea roie a textului:
p {text-align: center; color: red}

15

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pentru a ntelege mai bine aceasta definiie de stil, se poate descrie o caracteristic pe fiecare rnd, ca n exemplul urmtor:
p{ text-align: center; color: black; font-family: arial }

Atributul class Cu acest atribut se pot defini stiluri diferite pentru acelai element. S zicem c se doresc dou tipuri de paragrafe n documentul: unul aliniat la dreapta i unul centrat. Iat cum se poate face asta cu stiluri:
p.right {text-align: right} p.center {text-align: center}

Trebuie folosit atributul class n documentul. HTML:


<p class="right"> Acest paragraf va fi aliniat la dreapta. </p> <p class="center"> Acest paragraf va fi aliniat pe centru. </p>

Atributul id Atributul id trebuie s fie unic pe pagin. Nu poate exista dect un element cu un id dat ntr-un document. El este marcat n documentul HTML cu id n loc de class:
<p id="intro"> Acest paragraf va fi aliniat la dreapta. </p>

Atributul id poate fi definit n doua moduri. Poate fi definit pentru a se potrivi tuturor elementelor cu un id specific sau s se potriveasc numai unui element cu un id specific. n exemplul urmtor, atributul id se va aplica tuturor elementelor cu id= "intro":
#intro { font-size:110%; font-weight:bold; color:#0000ff; background-color:transparent }

1.2.2 Pseudoclase de stiluri CSS i modaliti de modificare a cursorului

16

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pseudoclasele se utilizeaz pentru personalizarea legturilor web, att de tip text, ct i de tip imagine. Ele se definesc n interiorul unui bloc <style>...</style> sau ntr-un fiier extern. Exemplul de mai jos este edificator n acest sens: a: link {color: blue; font-size: 15pt;} a: hover {color: red; font-style: italic; text-decoration: none} a: visited {color: magenta; font-size: 15pt; text-decoration: none} a: active {color: cyan; font-size: 15pt; text-decoration: none} Explicaii:

a: link se refer la modul n care arat un link n mod normal; a: hover se refer la modul n care arat un link atunci cnd se trece cu mouse-ul peste el (n Netscape funcioneaz doar de la versiunea 6); a: active se refer la modul n care arat un link atunci cnd se efectueaz click pe el; a: visited se refer la modul n care arat un link deja vizitat; specificaia "text-decoration: none" elimin sublinierea implicit cu o linie albastr a link-ului.

Pentru ca numai anumite legturi s utilizeze un stil, se pot folosi urmtoarele trei metode: 1. a: link.C LASA1 {. ..} combinat cu <a class = CLASA1 href=" "> ...</a> 2. a: link#ID1 {...} combinat cu <a id = ID1 href=" "> ...</a> 3. a.C LASA1: link {...} combinat cu <a class = CLASA1 href=" "> ...</a> n browsere cursorul mouse-ului are n general o form simpl i binecunoscut, lund pe parcursul vizionrii paginii respective maximum dou infiri diferite:

Mna - atunci cnd este poziinat pe o legtur Sgeata oblic din direcia dreapta jos spre stnga sus - atunci cnd este poziionat pe alt obiect dect o legtur.

Acestea sunt ns formele implicite. Exist ns i cazuri n se dorete ca acel cursor s ia o alt form dect cele dou predefinite. La fel ca multe alte probleme care privesc modul n care arat o pagin, i aceast problem i gsete rezolvarea n folosirea CSS ca limbaj de descriere a modului de stilizare a unui document. Proprietatea care manipuleaz forma cursorului se numete simplu: "cursor" i poate fi introdus n orice element "style" al unui tag html. De exemplu, pentru obinerea unei imagini a cursorului de tipul unei sgei nsoite de un semn de ntrebare la trecerea mouse-ului peste un link, iat codul care va trebui folosit: <a href="fisier.html" style="cursor: help">Legatura</a>

Nu este ns unicul mod de stilizare a cursorului mouse-ului. n continuare sunt prezentate codurile pentru toate formele de cursor care se pot folosi: 17

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

auto crosshair default e-resize hand help move n-resize ne-resize nw-resize pointer s-resize se-resize sw-resize text w-resize wait

utilizeaza setarile implicite ale utilizatorului creeaza o cruce setarile implicite ale browserului sageata Est-Vest mana semnul intrebarii cruce cu sageti la capete sageata sud-nord sageata SudVest - NordEst sageata SudEst - NordVest mana sageata Nord - Sud sageata NordVest - SudEst sageata NordEst - SudVest bara verticala campuri de introducere a datelor sageata Est-Vest clepsidra

div, span i etichete CSS Eticheta html <div> funcioneaz asemntor cu eticheta html <p>, putnd gzdui comenzi CSS aplicabile la un bloc sau mai multe din coninutul paginii. Eticheta html <span> este similar cu eticheta html <font> (pe cale de a fi eliminat de consoriul W3C) aplicndu-se elementelor dintr-un paragraf. Etichetele CSS sunt cunoscute sub numele de elemente sau selectori avnd un layout asemntor cu etichetele HTML.
// eticheta HTML <eticheta argument="valoare"> // eticheta CSS element{argument: valoare;}

elementul poate fi o etichet HTML, un id sau un class, iar argumentul i valoarea sunt aceleai ca n HTML. Exemplu: acelai text realizat n HTML i n HTML cu CSS
// HTML <font color="#00FF00"> <p>Text verde</p> </font> // HTML cu CSS <p style="color: #00FF00;"> Text verde </p>

Comenzile de CSS pot fi plasate i n zona HEAD rezultnd o funcionare identic, chiar mai mult, aceleai comenzi putnd fi folosite n mai multe locuri n aceeai pagin. 18

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Exemplu: comenzi CSS incluse n zona HEAD


<html> <head> <title>Exemplul 1_1</title> <style type="text/css"> <!-p{color: #00FF00;}

-->
</style> </head> <body> <p>Text verde</p> Text negru <p>Text verde</p> </body> </html>

Elementele id i class id i class sunt comenzi care dau unei formatri CSS un nume. Se folosesc atunci cnd dorim s aplicm un style de formatare unei anume zone. Pentru compatibilitate cu versiunile anterioare de browsere, numele asociate zonelor nu vor conine caracterul _ Elementul id se aplic unui style de format o singur data sau la o singur etichet HTML, plasndu-se un nume acelui style. Acest element necesit existena comezilor CSS n zona HEAD sau ntr-un fiier extern. Exemplu: folosirea elementului id

<html> <head> <title>Exemplu 2_1</title> <style type="text/css"> <!-- #albastru{color: #0000FF;}--> </style> </head> <body> <p id="albastru">Text albastru introdus prin id "albastru"</p> Text negru </body> </html>

Elementul class este similar cu id dar spre deosebire de acesta poate fi folosit de mai multe ori sau pentru zone mai mari. Ca i la id necesit existena comezilor CSS n zona HEAD sau ntr-un fiier extern. Exemplu: folosirea elementului class: 19

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

<html> <head> <title>Exemplu 2_2</title> <style type="text/css"> <!-- .rosu{color: #FF0000;}--> </style> </head> <body> <p class="rosu">Primul text rosu introdus prin class "rosu"</p> Text negru <p class="rosu">Al doilea text rosu introdus prin class "rosu"</p> </body> </html>

Stiluri pentru fonturi Aceste elemente specific argumentul fontului care se asociaz unui element HTML fiind incluse ori n zona HEAD ori n interiorul etichetei dorite. n cazul de fa se remarc asemnarea cu eticheta font din HTML care accept argumentele type, style, size i weight. font-family font-family este de fapt o list de fonturi din care browserul va folosi n ordinea n care le recunoate (primul folosit va fi primul din list, dac nu este recunoscut l folosete pe al doilea i tot aa mai departe). Este recomandat ca ultima poziie din list s fie un font generic (de exemplu serif, sans-serif sau monospace). n situaia n care numele fontului este format din dou cuvinte, se ncadreaz ntre ghilimele duble pentru ca browserul s le interpreteze mpreun. Exemplu: CSS introdus n HEAD aplicat etichetei p. Browserul nu recunoate primele dou fonturi din list, folosindu-l pe al treilea:

Cod:
<html> <head> <title>Exemplu</title> <style type="text/css"> <!-- p{font-family: font1,font2,arial;}--> </style> </head> <body> <p>Text scris cu cu fontul Arial</p> Text negru <p>Text scris cu cu fontul Arial</p> </body> </html>

Exemplu: acelai exemplu dar CSS introdus n eticheta p din HTML:


<html> <head>

20

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

<title>Exemplu</title> </head> <body> <p style="font-family: font1,font2,arial;">Text scris cu cu fontul Arial</p> Text negru <p style="font-family: font1,font2,arial;">Text scris cu cu fontul Arial</p> </body> </html>

font-size Este parametrul prin care stabilim dimesiunea fontului, exprimat n pixeli (px), puncte (pt), keywords sau procente. Are o funcionare asemntoare cu eticheta <font>. Exemplu: CSS introdus n HEAD aplicat etichetei p, dimensiunea exprimat n pixeli:
<html> <head> <title>Exemplu</title> <style type="text/css"> <!-- p{font-size: 20px;}--> </style> </head> <body> <p>Text scris cu font de 20px</p> Text negru </body> </html>

Pentru dimensiunea exprimat n puncte folosim acelai exemplu nlocuind px cu pt. Dimensiunea exprimat prin keywords folosete cuvinte n loc de cifre. apte cuvinte nlocuiesc dimensiunile de la 1 la 7 de la vechea etichet FONT FACE din HTML. CSS keyword numar FONT size xx-small 1 x-small 2 Small 3 medium 4 Large 5 x-large 6 xx-large 7 Pentru verificare se poate folosi exemplul anterior n care se nlocuiete 20px cu unul din cuvintele de mai sus. Procentele sunt o alt valoare pe care o poate lua font-size. Aceast modalitate poate fi vizualizat diferit de browsere diferite. Ca verificare folositi acelasi exemplu schimbnd 20px cu 200%. font-style font-style este folosit pentru a aduga caracteristica italic fontului. Poate lua valorile normal i italic. 21

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

<style type="text/css"> <!-- p{font-style: italic;}--> </style>

font-weight font-weight este parametrul care stabilete grosimea caracterului putnd lua valorile numerice de la 100 la 900 sau BOLD, BOLDER, LIGHTER.
<style type="text/css"> <!-- p{font-weight: 700;}--> </style>

Compunerea stilurilor Stilurile prezentate anterior pot fi folosite simultan n interiorul aceeai etichete fiind desprite de caracterul ; (punct i virgul). Exemplu: folosirea unui stil compus aplicat etichetei p
<html> <head> <title>Exemplu 3_4</title> <style type="text/css"> <!-p{ font-family: arial; font-size: 20px; font-style: italic; font-weight: 800;} --> </style> </head> <body> <p>Text scris cu Arial, 20px, italic, 800</p> Text negru </body> </html>

Stiluri pentru text Aliniere text-align poziioneaz pe orizontal obiecte (de exemplu text sau imagini) i admite valorile left, right i center ca i eticheta align din HTML. n continuare este prezentat ca exemplu codul folosit n HEAD, aplicat etichetei p:
<style type="text/css"> <!-p{text-align: center;} --> </style>

Exemplu: prin intermediul lui div aplicm stilul pe centru imaginii i textului: 22

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

<html> <head> <title>Exemplu</title> <style type="text/css"> <!-p{text-align: center;} --> </style> </head> <body> <div class="pecentru"><img src="poza.jpg"></div> Text neformatat <div class="pecentru">Text formatat</div> </body> </html>

vertical-align este folosit pentru alinierea pe vertical a obiectelor dintr-un tabel i poate lua valorile: top, middle i bottom. n exemplul de mai jos este creat clasa sus care va putea fi aplicat elementelor <td> ale tabelului:
<style type="text/css"> <!-.sus{vertical-align: top;} --> </style>

float este folosit pentru alinierea textului cu imaginile i poate avea valorile: left i right. n funcie de valoarea aleas imaginea va fi aliniat n partea opus a paginii. Exemplu: se creeaza clasa auto i o aplicm inaginii
<html> <head> <title>Exemplu</title> <style type="text/css"> <!-.auto{float: left;} --> </style> </head> <body> <img src="poza.jpg" class="auto"> Textul se aliniaza la dreapta, iar poza la stanga datorita clasei "auto". </body> </html>

Tabulare - text-indent este folosit pentru alinierea textului n interior avnd valori exprimate n inci (in), centimetri (cm) sau pixeli (px). n exemplul de mai jos text-indent este aplicat etichetei p deplasnd textul cu 10 pixeli n interior:
<style type="text/css"> <!-p{text-indent: 10px;} --> </style>

23

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Decorare text-decoration adaug sublinierea sau tierea blocului text asociat i poate avea valorile underline, linethrough sau none. Exemplu: stilul asociat etichetei p este prezentat n HEAD:
<html> <head> <title>Exemplu</title> <style type="text/css"> <!-p{text-decoration: underline;} --> </style> </head> <body> Text normal <p>Text subliniat</p> </body> </html>

Culoare color definete culoarea textului dintr-o zon sau ntreaga pagin. Exemplu: stilul asociat etichetei p este prezentat n HEAD:
<html> <head> <title>Exemplu</title> <style type="text/css"> <!-p{color: #0000FF;} --> </style> </head> <body> Text normal <p>Text albastru</p> </body> </html>

Stiluri pentru legturi n HTML culoarea legturilor poate fi stabilit prin atributele LINK, ALINK i VLINK declarate n interiorul etichetei BODY. Acelai lucru i chiar mai mult poate fi realizat folosind sintaxa CSS. Exemplu: 24

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

<html> <head> <title>Exemplu</title> <style type="text/css"> <!-a{font-family: arial; font-size: 20px;} a:link {color: #0000FF;} a:visited {color: #00FF00;} a:active {color: #FF0000;} a:hover {color: #000000;} --> </style> </head> <body> Text normal <a href="exemplu.html">link</a> catre exemplu </body> </html>

a - definete stilul general pentru legtur a:link - definete stilul legturii nevizitate a:visited - definete stilul legturii vizitate a:active - definete stilul legturii active (nu prea se folosete) a:hover - definete stilul cnd mouse-ul este deasupra legturii

Stiluri pentru background Culoarea pentru fundal (background) sau imagine poate fi definit pentru ntreaga pagin, o celul a tabelului sau pentru text. Culoare de fond background-color definete culoarea de fond i poate fi asociat oricrei etichete HTML. Exemplu: se definete un stil pentru ntreg BODY i un altul pentru eticheta p
<html> <head> <title>Exemplu</title> <style type="text/css"> <!-body {background-color: #FFFF00;} p {background-color: #FF0000;} --> </style> </head> <body> Text normal <p>Text cu background rosu</p> </body> </html>

25

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Imagine de fond Imaginile pot fi folosite ca fundal n spatele ntregii pagini, a unui obiect sau a textului. background-image asociaz o imagine ca fundal unui obiect. Exemplu: un stil pentru eticheta p
<html> <head> <title>Exemplu</title> <style type="text/css"> <!-p {background-image: url(poza.jpg);} --> </style> </head> <body> Text normal <p>Text cu imagine de fond</p> </body> </html>

Repetare Funcie de dimensiunile obiectului cruia i sunt asociate imaginile de fond se repet pe orizontal i vertical. Repetarea poate fi controlat prin parametrul background-repeat care poate lua valorile: repeat-x - imaginea se repet pe orizontal repeat-y - imaginea se repet pe vertical no-repeat - imaginea nu se repet Exemplu: imaginea nu se repet sub eticheta p:
<html> <head> <title>Exemplu</title> <style type="text/css"> <!-p {background-image: url(poza.jpg); background-repeat: no-repeat;} --> </style> </head> <body> Text normal <p>Text cu imagine de fond</p> </body> </html>

Poziia n mod normal imaginea de fundal ncepe din colul stnga sus al obiectului asociat, dar acest lucru poate fi controlat prin comanda CSS background-position. Sunt acceptate dou valori: n prima poziie poate fi: top, center, bottom, percentage sau pixel n a doua poziie poate fi: right, center, left, percentage sau pixel 26

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Exemplu: imaginea de fundal este asociat etichetei BODY fiind amplasat top i center, fr repetare:
<html> <head> <title>Exemplu 5_4</title> <style type="text/css"> <!-body {background-image: url(poza.jpg); background-repeat: no-repeat; background-position: top center;} --> </style> </head> <body> Text normal </body> </html>

Stiluri pentru liste list-style-type Folosind eticheta ol din HTML cream liste ordonate sau numerotate. Adugnd comenzi CSS n zona HEAD se pot aduga pe lng numere i cifre sau alte simboluri. Browserul Netscape nu permite asocierea comenzilor CSS dect pentru eticheta li. Sintaxa este:
<style type="text/css"> <!-li {list-style-type: valoare;} --> </style>

valoarea poate fi: valoare disc Disc disc circle cerc square ptrat decimal numere ntregi lower-roman numere romane, caractere mici (i, ii, iii, iv) upper-roman numere romane, caractere mari (I, II, III, IV) upper-alpha litere mari (A, B, C, D) lower-alpha litere mici (a, b, c, d) None nimic Exemplu: lista ordonat folosind marcaje cu litere mici:
<html> <head> <title>Exemplu</title> <style type="text/css">

27

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

<!-li {list-style-type: lower-alpha;} --> </style> </head> <body> Necesar materiale: <ol> <li>caramida</li> <li>ciment</li> <li>ipsos</li> </ol> </body> </html>

list-style-image n afara simbolurilor de marcaj prestabilite cunoscute de browser pot fi folosite i imagini prin comanda CSS list-style-image. Imaginile sunt introduse prin adresa url(). Exemplu: lista ordonat folosind ca marcaj imaginea punct.gif
<html> <head> <title>Exemplu</title> <style type="text/css"> <!-li {list-style-image: url(punct.gif);} --> </style> </head> <body> Necesar materiale: <ul> <li>caramida</li> <li>ciment</li> <li>ipsos</li> </ul> </body> </html>

Chenare i margini Fiecare element HTML poate fi neles ca o caset dreptunghiulara (box), iar toate cutiile au aceeai structur: "width", "padding", "border" i "margin".

28

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

marginea (margin) este spaiul exterior chenarului pn la celelalte elemente chenarul (border) este o bordur care nconjoar elementul completarea (padding) stabilete distana dintre coninut i chenar coninutul include informaia util (text, tabele, imagini, formulare, etc.) Originea elementului este considerat colul din dreapta sus fa de care se vor raporta toate dimensiunile prezentate n continuare. Domeniul de coninut (width i height) Fiecare element are o lime (width). Dac aceasta nu a fost definit, n cazul elementelor de tip block, box-ul este att de lat ct trebuie s fie, deci ct coninutul box-ului. Limea i nlimea unui element sunt stabilite n HTML prin atributele width i height. Aceste atribute pot fi adugate sau suprascrise prin comenzi CSS. Exemplu: folosind comenzi CSS modificm dimensiunile originale ale imaginii:
<html> <head> <title>Exemplu</title> <style type="text/css"> <!-img {width: 50px; height: 100px;} --> </style> </head> <body> <img src="margini.gif"> </body> </html>

29

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Distana interioar (padding i margin) ntre coninut i marginea box-ului se afl distana interioar (padding). padding stabilete distana dintre obiect i chenar simultan pentru toate laturile. De asemenea padding preia culoarea de fundal a documentului coninut. Distantele pot fi stabilite i individual folosind padding-top, padding-bottom, padding-left sau padding-right. margin stabilete distana dintre chenar i celelalte obiecte din pagin simultan pentru toate laturile. Distanele pot fi stabilite i individual folosind margin-top, margin-bottom, margin-left sau margin-right. Valorile pentru padding i margin pot fi exprimate n: px (pixeli), in (inci), pt (puncte) sau cm (centimetri). Exemplu: folosind comenzi CSS imaginea este poziionat la 100px fa de latura stng i 25px fa de latura de sus:
<html> <head> <title>Exemplu</title> <style type="text/css"> <!-img {margin-left: 100px; margin-top: 25px;} --> </style> </head> <body> <img src="margini.gif"> </body> </html>

Marginea (border) n jurul "padding" se seteaz chenarul (border), care pentru toate patru laturile poate avea o lime (width), culoare (color) i style (tiat, punctat, liniat etc.) diferite. Netscape i Internet Explorer afieaz diferit chenarele. Comanda CSS pentru definirea chenarului este border avnd proprietile asociate width, style i color. Pentru a fi siguri c aceste proprieti funcioneaz att n Internet Explorer ct i n Netscape trebuie s declarm pentru border cel puin width i style. border-width - stabilete grosimea chenarului i poate fi exprimat n px (pixeli), pt (puncte), cm (centimetri) sau in (inci). border-style - stabilete tipul chenarului i poate fi dotted, dashed, solid, double, groove, ridge, inset i outset. border-color - stabilete culoarea chenarului i poate fi exprimat prin valoare hexazecimala sau n cuvinte. Exemplu: definim nou clase utiliznd proprietile border-width, border-style i border-color:
<html> <head> <title>Exemplu</title> <style type="text/css"> <!-.clasa1 {border-width: 2px; border-style: dotted; border-color: red;} .clasa2 {border-width: 3px; border-style: dashed; border-color: blue;} .clasa3 {border-width: 2px; border-style: solid; border-color: green;} .clasa4 {border-width: 3px; border-style: double; border-color: black;} .clasa5 {border-width: 2px; border-style: groove; border-color: silver;}

30

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

.clasa6 {border-width: 3px; border-style: ridge; border-color: lime;} .clasa7 {border-width: 2px; border-style: inset; border-color: yellow;} .clasa8 {border-width: 3px; border-style: outset; border-color: aqua;} .clasa9 {border-width: 2px; border-style: hidden; border-color: olive;} --> </style> </head> <body> <div class="clasa1">border-width: 2px; border-style: dotted; border-color: red;</div><br> <div class="clasa2">border-width: 3px; border-style: dashed; border-color: blue;</div><br> <div class="clasa3">border-width: 2px; border-style: solid; border-color: green;</div><br> <div class="clasa4">border-width: 3px; border-style: double; border-color: black;</div><br> <div class="clasa5">border-width: 2px; border-style: groove; border-color: silver;</div><br> <div class="clasa6">border-width: 3px; border-style: ridge; border-color: lime;</div><br> <div class="clasa7">border-width: 2px; border-style: inset; border-color: yellow;</div><br> <div class="clasa8">border-width: 3px; border-style: outset; border-color: aqua;</div><br> <div class="clasa9">border-width: 2px; border-style: hidden; border-color: olive;</div> </body> </html>

Marginea exterioar (margin) Fiecare box are i o distan exterioar (margin) pn la celelalte elemente, care preia culoarea de fundal a elementului nconjurtor. Modelul box servete pentru formatarea distanelor n i ntre box-urile unei pagini web i este extrem de diversificat. Poziionarea obiectelor Poziionarea permite aezarea unui obiect ntr-un anume loc folosind coordonatele. Totodat obiectele pot fi poziionate pe straturi diferite, unul deasupra celuilalt. Att poziionarea absolut (ASOLUTE) ct i cea relativ (RELATIVE) folosesc proprietile LEFT i TOP exprimate n px (pixeli), in (inci), pt (puncte), ems, procentaje sau cm (centimetri). Poziionarea absolut plaseaz obiectul n pagin exact n locaia dat de left i top. Astfel poate fi creat un element liber fa de celelalte din pagin. Obiectul poate fi orice, de exemplu text sau imagine. Exemplu: am aplicat poziionarea absolut etichetei h4:
<html> <head> <title>Exemplu 8_1</title> </head> <body> <h4 style="position: absolute; left: 50px; top: 50px">Text 1</h4> <h4 style="position: absolute; left: 100px; top: 200px">Text 2</h4> </body> </html>

Poziionarea relativ este poziia normal pe care o ocup un element, dup elementele anterioare i naintea celor urmtoare. Poate fi deplasat fa de aceast poziie folosind proprietile left i top. 31

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Exemplu: am folosit dou obiecte unul poziionat absolut celalalt relativ:


<html> <head> <title>Exemplu 8_2</title> <style type="text/css"> <!-.absolut {position: absolute; left: 200px; top: 150px;} .relativ {position: relative; left: 50px; top: 50px;} --> </style> </head> <body> <div class="absolut">Pozitionare absoluta, independent de celelate obiecte din pagina</div> Text <div class="relativ">Pozitionare relativa, dupa "Text"</div> </body> </html>

Poziionarea tridimensional Elementele sunt poziionate pe ecran pe o suprafa bidimensional dar pot fi aezate i unul deasupra celuilalt, ntr-o stiv utiliznd un indicativ (index-z) ncepnd cu 0, urmtorul 1 i tot aa n continuare. Elementul cu indexul cel mai mare este aezat deasupra. Exemplu: au fost folosite dou obiecte unul poziionat absolut celallt relativ:
<html> <head> <title>Exemplu 8_3</title> <style type="text/css"> <!-.element1 {position: absolute; left: 30px; top: 30px; z-index: 3} .element2 {position: absolute; left: 50px; top: 50px; z-index: 2} .element3 {position: absolute; left: 70px; top: 70px; z-index: 1} --> </style> </head> <body> <div class="element1"><img src="poza.jpg"></div> <div class="element2"><img src="poza.jpg"></div> <div class="element3"><img src="poza.jpg"></div> </body> </html>

32

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

1.3. Instalarea si configurarea PHP si MySQL cu serverele web Apache si IIS sub sistemul de operare Windows

1.3.1. Precizari preliminarii


Pentru aceste operaii sunt vizai utilizatorii de sisteme Windows 98/Me si NT/2000/XP/2003. Pentru instalarea PHP aveti nevoie de un server web, instalat local, cum ar fi Apache HTTP Server sau Microsoft IIS (Microsoft Internet Information Services). Este nevoie de kitul pentru serverul Apache sau CD-ul de instalare pentru Windows (in cazul in care doriti sa instalati Microsoft IIS), pachetul PHP (disponibil sub forma de installer sau arhiva), serverul MySQL si un browser web. Informaiile pentru procurarea pachetelor de instalare sunt oferite treptat.

1.3.2. Instalarea unui server web


Apache HTTP Server este o solutie open-source (sursa libera), dezvoltat de Apache Software Foundation care este folosit de peste 60% dintre siturile prezente pe web, fiind disponibil att pentru Windows, ct si pentru Linux. Se poate descrca ultima versiune de la http://httpd.apache.org/download.cgi (alegei Win32 Binary (MSI Installer)). Versiunea 2.0.x a server-ului Apache nu ofer suport complet pentru sisteme de operare Windows mai vechi ca NT 4.0, deci este recomandat sa descrcarea versiunii 1.3.x a acestui server pentru Windows 98. De asemenea, Apache 2.0.40 sau mai nou este compatibil cu versiuni mai noi decat (i incluznd) PHP 4.3.0 i respectiv PHP 5. n timpul instalarii, trebuie sa specificat Network Domain si Server Name ca fiind localhost, iar la adresa administratorului putei introduce adresa dvs. de e-mail, dei nu are vreo importana (in cazul in care ) n utilizarea ulterioara a produsului (fereastra este ilustrat mai jos). Este instalat si Apache Monitor cu care putei porni sau opri serverul web Apache.

33

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Serverul web de la Microsoft, IIS poate fi instalat doar cu CD-ul de instalare al sistemului de operare Windows, folosind funcionalitatea: Add/Remove Windows Components (Start > Settings > Control Panel > Add/Remove Programs > Add/Remove Windows Components, pe partea stanga). In Windows XP, instalarea acestuia este imediat, in sensul ca nu trebuie configurat nimic special. Pentru asigurarea ca serverul IIS este pornit, se ruleaz: Computer Management (din Start > Settings > Control Panel > Administrative Tools), se navighez pn la Services and Applications, Internet Information Services, Web Sites, Default Web Site. Daca starea acestuia este Stopped se face click dreapta si se selectez Start. Apache HTTP Server si Microsoft IIS nu pot rula in acelasi timp. Pentru a testa daca oricare dintre servere a fost instalat corect, se navighez cu browserul web la adresa http://localhost. Mai jos, sunt capturi de ecran cu pagina ncarcata n cazul n care instalarea a fost efectuat cu succes, pentru cele doua servere tratate. Pentru a ncarca pagini ce pot fi accesate local de catre serverul web, se copiaz n directorul:

c:\Inetpub\wwwroot\ pentru Microsoft IIS c:\Program Files\Apache Software Foundation\Apache2.2\htdocs\ pentru Apache

n unele versiuni mai vechi, "Apache Software Foundation" se numeste "Apache Group", de asemenea, numele directorului in care este instalat serverul web ( "Apache2.2" in acest exemplu) este denumit dupa versiunea curenta instalat.

34

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

35

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

1.3.3. PHP scurta istorie


PHP este unul dintre cele mai populare limbaje de scripting pe parte de server. Iniial a fost scris in C, de programatorul canadian Rasmus Lerdorf i lansat sub numele de Personal Home Page Tools n iunie 1995 din nevoia de a genera pagini dinamic i a-l scuti astfel de un volum de munca. Doi ani mai trziu, doi programatori israelieni, Zeev Suraski si Andi Gutmans au rescris parser-ul PHP punnd bazele PHP3, schimbnd i denumirea n "PHP: Hypertext Preprocessor". n mai 2004, este lansat PHP4, folosind un nou motor, Zend Engine 1.0, dezvoltat de programatorii amintii. Pentru a descrca PHP, se poate merge la http://www.php.net/downloads.php si alegei PHP Zip Package (pentru a instala cu Apache HTTP Web Server) sau PHP installer (pentru a instala cu Microsoft IIS) pentru oricare dintre versiunile 4 sau 5, dezvoltate concomitent de catre The PHP Group. Configurarea automat pentru serverul Apache nu a fost implementat, deci va trebui facut manual.

1.3.4. Instalarea PHP pentru Microsoft IIS (folosind PHP installer)


Momentan, doar PHP 4 beneficiaza de kit pentru instalare automat. Descarcati installer-ul, selectai optiunea Standard. Vei fi intrebat de tipul de server folosit, alegei "Microsoft IIS 4 or higher" sau "Microsoft IIS 6 or higher", dupa caz. Installer-ul va copia fiierele pe discul ce conine sistemul de operare in directorul \php. De obicei, paginile PHP vor fi servite imediat, nefiind necesara restartarea IIS. Pentru a testa daca instalarea PHP a fost realizata cu succes, se descarcarc fiierul test si copiaz n directorul c:\Inetpub\wwwroot. Daca fiierul este afiat, instalarea a fost finalizat cu succes. n alte cazuri, acesta (http://localhost/test.php) poate fi propus pentru download, ceea ce nseamna ca serverul web nu recunoaste extensia ".php". n acest moment, daca instalarile au reuit, se poate trece direct la instalarea si configurarea server-ului MySQL.

1.3.5. Instalarea PHP pentru Apache HTTP Server


n cazul in care s-a descrct arhiva ce contine fiierele PHP, se creaz un director \php pe discul pe care este instalat sistemul de operare si serverul web Apache si se dezarhivez pachetul acolo.S presupune de aici nainte ca discul respectiv este c:. Aceasta este o instalare tipic pentru PHP ca modul Apache. 1) Se navighez la c:\php\ si se redenumete fiierul php.ini-dist in php.ini. Se deschide acest fisier n Notepad 2) Se copiaz fiierele php.ini si php4ts.dll (sau php5ts.dll n caz ca s-a ales PHP 5) din c:\php\ in c:\windows\system32\ (pentru Windows 2000/XP) sau c:\windows\system\ (pentru Windows 98/Me).

36

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

3) Acum, pentru a configura i serverul web Apache sa lucreze cu PHP, se merge la c:\Program Files\Apache Software Foundation\Apache2.2\conf\ (sau locatia corespunzatoare distributiei instalate) i se deschide fisierul httpd.conf cu Notepad (sau alt editor text). Se parcurge treptat instruciunile de mai jos si adaugaug la sfaritul fiierului liniile ce corespund situaiei. Dupa ce s-a fcut acest lucru, se restarteaz serverul Apache. ncarcarea modulului PHP, pentru Apache 2 si PHP 4 LoadModule php4_module c:/php/sapi/php4apache2.dll carcarea modulului PHP, pentru Apache 2 si PHP 5. Pentru acest caz, exist o cunoscut eroare de compatibilitate intre Apache 2.0.x si Apache 2.2.x, legat de interfata API. Pentru versiunile Apache 2.0.x se pot utiliza cu succes directiva de mai jos. Pentru 2.2.x, trebuie sa se foloseasc fiierul php5apache2_2.dll, disponibil in distribuia PHP 5.2.x, aflat n stare de dezvoltare i testare, la momentu la scrierii acestui articol. Se alegei una din directivele de mai jos: #pentru Apache 2.0.x LoadModule php5_module c:/php/php5apache2.dll #pentru Apache 2.2.x LoadModule php5_module c:/php/php5apache2_2.dll Incarcarea modulului PHP, pentru Apache 1.3.x si PHP 4 LoadModule php4_module c:/php/sapi/php4apache.dll Incarcarea modulului PHP, pentru Apache 1.3.x si PHP 5 LoadModule php5_module c:/php/sapi/php5apache.dll Doar daca ati ales Apache 1.3.x, considerati si urmatoarea linie: AddModule mod_php4.c Adaugarea suportului pentru fisiere de tip .php, .php3 sau .phtml. Stergeti caracterul "#" daca doriti suport optional si pentru ultimele doua extensii. AddType application/x-httpd-php .php #AddType application/x-httpd-php .php3 #AddType application/x-httpd-php .phtml Pentru a configura calea catre fisierul de configurare PHP (php.ini), se adaugaug i urmatoarea linie (bineineles, se nlocuiete cu calea corespunzatoare instalrii dvs.) PHPIniDir c:\php\ 37

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pn acum trebuiesc avute trei linii pentru server-ele Apache 2 si respectiv patru linii pentru server-ele Apache 1.3.x, care se vor copia la sfartul fisierului httpd.conf.

1.3.9. Introducere n PHP , MySQL

i Macromedia Dreamweaver

PHP (se pronun pe-ha-pe) este un limbaj de programare ce ruleaz server, proiectat special pentru WEB. ntr-o pagin HTML putei ngloba cod PHP care va fi executat la fiecare vizitare a paginii. Codul PHP este interpretat pe serverul WEB i genereaz un cod HTML care va fi vzut de Uilizator (clientului (browserului) fiindu-i transmis numai cod interpretat ca i HTML).

PHP a fost conceput n anul 1994 i a fost iniial munca unui singur om, Rasmus Lerdorf. PHP este un produs Open Source, cu acces la codul surs. Il putei folosi, modifica i redistribui, toate acestea 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) i acum este acronimul pentru PHP Hypertext Preprocessor. Versiunea actual a PHP este 5.2.4 Pagina de baz pentru PHP este: http://www.php.net Pagina pentru Zend (compania a crei fondatori au proiectat PHP4) se afl la http://www.zend.com

38

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

(se pronunt mai-es-chiu-el) este un sistem de gestiune a bazelor de date, foarte


rapid i robust. O baz de date permite stocarea, cautarea, sortarea i s regsirea datelelor n mod eficient. Serverul MySQL controleaz accesul la date pentru a garanta c mai muli utilizatori pot lucra simultan cu acestea. Deci, MySQL este un server multi-user (mai muli utilizatori) i multi-thread (mai multe fire de execuie). Utilizeaza SQL (Structured Query Language), limbajul standard de interogare a bazelor de date din ntreaga lume. MySQL este disponibil n mod public din 1996, dar istoria dezvoltarii sale incepe in 1979. A ctigat de mai multe ori Linux Journal Readers` Choice Award (Premiul cititorilor). MySQL este disponibil sub o licen Open Source, dar dac este nevoie sunt disponibile i licene comerciale. Versiunea actual a MySQL este 5.1. Pagina de baz pentru MySQL este: http://www.mysql.com

Macromedia Dreamweaver este o unealt destinat creatorilor de pagini web. Dreamweaver a fost creat
de Macromedia (acum Adobe Systems) i momentan a ajuns la versiunea 10. Primele versiuni ale produsului serveau doar ca simple editoare HTML de tipul WYSIWYG dar n versiunile recente au fost implementate funcii de editare avansate i support pentru alte tehnologii web cum ar fi CSS, JavaScript etc.Dreamweaver sa bucurat de un larg succes nc de la sfritul anilor '90 i momentan deine aproximativ 80% din piaa editoarelor HTML. Produsul poate fi rulat pe variate platforme software: Mac, Windows, dar suport n acelai timp i platforme UNIX cu ajutorul unor emulatoare software, cum ar fi Wine.Ca orice alt editor WYSIWYG, Dreamweaver poate ascunde detaliile de implementare a paginilor HTML, fcnd astfel posibil crearea cu uurin a paginilor web de ctre utilizatorii neexperimentai.Unii creatori de pagini web critic aceste tipuri de editoare deoarece produc pagini de dimensiuni mult mai mari dect ar fi necesar, ceea ce conduce la o funcionare neperformant a browserelor web. Aceast afirmaie este n mare parte adevarat deoarece paginile web produse folosesc design-ul pe baz de tabel. n plus, produsul a mai fost criticat n trecut i pentru producerea de coduri care adesea nu erau conform standardelor W3C, dar acest aspect a fost mult mbuntit n versiunile recente. Cu toate acestea, Macromedia a crescut suportul pentru tehnologia CSS precum i alte modaliti de design fr a fi necesar folosirea design-ului pe baz de tabel.Dreamweaver permite folosirea majoritii browserelor instalate pe calculatorul utilizatorului, pentru a previzualiza websiteul creat. De asemenea conine i cteva utilitare pentru administrarea site-urilor, cum ar fi cele pentru a gsi i modifica un paragraf sau o linie de cod, n ntregul web site, pe baza oricror parametri specificai de ctre utilizator. Cu ajutorul panourilor de stare se poate crea cod JavaScript fr a avea cunotine de programare.

1.4. Limbajul PHP 1.4.1 Introducere


39

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

PHP vine de la "Hypertext Preprocessor" i este un limbaj de comenzi-script pentru server (se spune c acioneaz pe partea serverului - server-side language). Adic fiierele cu comenzi PHP ruleaz pe serverul Web, nu n navigator, pe staia client. PHP este un limbaj relativ nou (comparativ cu alte limbaje precum Perl (CGI) i Java), dar devine rapid unul dintre cele mai rspndite i mai populare din Internet. nvarea sau mcar nelegerea unui limbaj care s permit scrierea de scripturi Web, poate schimba complet viziunea lrgind grozav posibilitile de publicare i activitate pe Web. Chiar dac se pot descrca scripturi gata fcute, din centre precum Hotscripts, acestea, de regul, includ reclama pentru autorul respectiv i nu vor oferi exact ce se dorete. nelegnd limbajul se vor edita mai uor aceste scripturi, pentru ca s fac ceea ce se dorete, sau chiar se pot creea scripturi noi, proprii. Folosirea scripturilor n propriul centru Web permite adugarea multor elemente de noutate i interactivitate, precum formularele de feedback, crile de oaspei, sistemele colaborative numite message boards, contoare ale vizitelor i multe alte elemente mai avansate precum sistemele portal, cele de management al coninutului, gestionarii de reclame (advertising managers), etc. Astfel de elemente sunt necesare pentru a obine o imagine de profesionist. Mai mult, oricine vrea acum s lucreze n industria de proiectare i dezvoltare se centre Web va descoperi c este mult mai simplu s gseasc un loc de munc atunci cnd tie PHP i programarea Web. Utilizatorii nu trebuie s-i instaleze nimic n plus, ca soft, dar pe platforma unde ruleaz serverul Web (gazda Web) trebuie s fie instalat PHP. Acesta poate fi deja inclus (ncorporat) n serverul Web. Dac serverul nu suport PHP atunci va trebui apelat la administratorul su pentru a-l instala, PHP-ul fiind un produs public - putnd fi descrcat gratuit i simplu de la www.php.net. Alt cale este gsirea altei gazde Web care suport PHP. Sau instalarea propriul server Web mpreun cu PHP. Scrierea n PHP Pentru a scrie un fiier n PHP pe calculatorul propriu nu trebuie nimic alceva dect un editor de texte (precum Notepad din Windows).Se lansez i se pregtete scrierea primul script PHP. Declaraia PHP Scripturile PHP sunt ntotdeauna incluse ntre dou taguri PHP, conform aceleai scheme ca i n HTML. Astea spun serverului s preia information dintre ele i s o interpreteze ca expresie din PHP. Exist trei forme diferite de marcare a expresiilor - comenzilor PHP, i anume: <? comenzi PHP ?> <?php comenzi PHP php?> <script language="php"> comenzi PHP </script>

40

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Toate trei acioneaz - se comport exact la fel. n cele ce urmeaz se folosete doar prima variant (<? i ?>). Dar pot fi folosite, la fel de bine oricare din cele trei. Atenie, combinarea lor nu este ns permis, nu putem folosi pentru deschidere <? iar pentru nchidere </script> , spre exemplu. Primul script Primul script PHP este desigur unul banal i totui esenial. Tot ce va face este s furnizeze informaiile despre instalarea i starea PHP-ului pe server. Scriei cu editorul de texte urmtoarele: <? phpinfo(); ?> Aa cum se vede este o singur linie de cod PHP. Este o funcie standard din PHP, numit phpinfo, care va cere serverului s scrie i s transmit un tebel standard cu informaiile de configurare a serverului. O observaie important din acest exemplu: linia de cod PHP se termin cu punct i virgul (;). Asta-i foarte important ca sintax. La fel ca n multe alte limbaje de comenzi sau de programare, liniile trebuie s se termine cu un marcaj anume,adesea tot (;), iar dac acest terminator este omis rezult o eroare. ncheierea i testarea scriptului Odat scris, scriptul trebuie salvat ca fiier cu un nume. n acest caz, i se spune phpinfo.php. Apoi trebuie ncrcat fiierul pe server, n spaiul uzual al documentelor Web. Dup asta, folosind navigatorul, se apelez scriptul prin URL-ul corespunztor. Dac lucreaz (i dac PHP este instalat pe server) atunci se va obine o list ampl, plin cu detalii despre situaia PHP pe server. Dac scriptul nu lucreaz i apare o pagin alb, atunci este sau o eroare n modul n care a fost scris scriptul, sau serverul nu suport aceast funcie (situaie extrem de puin probabil). Dac, n locul afirii informaiilor apare o ofert de descrcare a fiierului (download), sau apare chiar scriptul aa cum a fost scris (sursa), nseamn c PHP nu este instalat pe server. Caz n care trebuie cutat alt server sau instalat PHP.

1.4.2. Afiarea informaiilor i Variabilele


Scrierea unui text Pentru a scoate - afia un text n scriptul PHP, sunt mai multe posibiliti. Prima, prin utilizarea comenzii print. Print permite afiarea unui text, a unor variabile sau a unor combinaii ale acestora, pe ecran. Instruciunea print este folosit n felul urmtor: print("Hello world!"); Asta s-ar scrie ca fiier PHP n forma: <? print("Hello world!"); ?> 41

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

care prin apel cu navigatorul va afia pe ecran: Hello world! Funcia de afiare n PHP Ca i n alte limbaje de programare, n PHP se pot defini variabile. Exist cteva tipuri de variabile n PHP, dar cea mai uzual este variabila ir de caractere, numit String. Poate fi folosit pentru texte sau numere. Toate irurile de caractere, toate variabilele string ncep cu semnul $ . Pentru a atribui un text unei variabile string trebuie s folosete o succesiune de forma: $text_salut = "Bun venit pe site-ul meu Web!"; Este o linie simplu de neles, tot ce se afl ntre ghilimele va fi atribuit variabilei string din membrul stng. Distincia dintre majuscule i minuscule. Astfel $Welcome_Text difer de $welcome_text Numele de iruri pot conine litere, cifre i semne de subliniere (_), dar nu pot ncepe cu o cifr sau cu semnul _ Cnd se atribuie un numr la un string nu mai e nevoie de ghilimelele. Adic este acceptat construcia: $user_id = 987 Variabile de scoatere Pentru a afia o variabil pe ecran se folosete exact aceiai comand ca i pentru a afia un text, cu o mic diferen formal. Astfel, pentru a afia stringul atribuit variabilei $text_salut scriem: <? $text_salut = "Bun venit pe site-ul meu Web!"; print($text_salut); ?> Aa cum se poate vedea, singura diferen ar fi c scriem n comanda print numele variabilei, fr ghilimele, n locul textului cu ghilimele. Formatul unui text Totul apare n navigatorul cu caracterele (fontul) predefinite. PHP fiind pe server, codul se execut nainte ca pagina s fie trimis spre navigator. Ceea ce nseamn c doar rezultatele rulrii scriptului sunt trimise, astfel c, n exemplul de mai sus spre navigator se va trimite doar textul: Bun venit pe site-ul meu Web! Iar asta permite includerea elementelor de formatare - marcare standard din HTML pentru a face ca textul s apar aa cumse dorete. Acestea pot fi plasate direct n string-ul din scriptul PHP. Multe taguri HTML pretind ghilimele n sintax. Iar asta ar provoca un conflict cu ghilimelele din irul declarat n script. Putem preciza - defini ns care semne de punctuaie au rolul ghilimelelor din script, i care sunt ghilimelele care trebuie ignorate.

42

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Sre exemplu, se afieaz textul de mai sus cu Arial scris cu rou. Asta s-ar scrie: <font face="Arial" color="#FF0000"> </font> Aici sunt 4 ghilimele care ar putea ncurca scriptul. Din cauza asta trebuie adugat un backslash (\) naintea fiecrei ghilimele pentru a face ca scriptul PHP s o ignore. Astfel vom avea: <font face=\"Arial\" color=\"#FF0000\"> </font> Iar asta poate fi deja inclus n instruciunea print: print("<font face=\"Arial\" color\"#FF0000\">Bun venit pe site-ul meu Web!</font>"); care va face ca pe navigator s apar: Bun venit pe site-ul meu Web! deoarece scriptul a transmis doar codul: <font face="Arial" color="#FF0000">Bun venit pe site-ul meu Web!</font>

43

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

1.4.3. Instruciunile IF
Definiia instruciunii IF Instruciunea condiional IF este folosit pentru a compare dou valori i a realiza aciuni diferite n baza rezultatelor testului. Instruciunea urmeaz sintaxa (are forma) IF - THEN - ELSE. Partea IF testeaz o condiie. Dac aceasta este adevrat, atunci este urmat ramura THEN. n caz contrar se merge pe ramura ELSE. Structura instruciunii IF n general este urmtoarea structur: IF ('ceva' == 'altceva') { 'Ramura THEN' } else { 'Ramura ELSE' } Variabilele Uzual, se compar o variabil cu o anumit poriune de text, cu un numr, sau cu alt variabil. Spre exemplu: if ($username == "webmaster") adic se compar valoarea pe care o ia variabila cu irul precizat de caractere. Ramura THEN a instruciunii fiind executat doar dac variabila are exact valoarea care apare ntre ghilimele, adic dac coincide cu cuvntul 'webmaster'. Dac are ns valoarea 'Webmaster' sau 'WEBMASTER' va fi urmat ramura ELSE. Construcia ramurii THEN n cazul de mai sus, se poate aduga o ramur THEN de forma: if ($username == "webmaster") { echo "Please enter your password below"; } care va afia cererea parolei dac numele utilizatorului este webmaster. n caz contrar, nu se afieaz nimic. Se poate lsa instruciunea n aceast form, pentru c nu este obligatoriu s apar o ramur ELSE. Asta-i util mai ales cnd sunt condiii multiple. Construcia ramurii ELSE Adugarea unei ramuri ELSE : if ($username == "webmaster") { echo "Please enter your password below"; } else { echo "We are sorry but you are not a recognised user"; } 44

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Dar nu suntem limitai doar la o singur linie. Putem aduga orice comand PHP ntre acoladele ramurii respective. Putem chiar include alte instruciuni IF (cuibrite). Alte comparaii Exist i alte moduri de a folosi instruciunea IF pentru a compara valori. Comparnd dou variabile diferite pentru a vedea dac valorile lor se potrivesc sau nu, spre exemplu: if ($parola_introdusa == $password) Dar compararea se poate face folosind oricare din simbolurile standard de comparaie, pentru a verifica dac o valoare este mai mic sau egal dect alta: if ($varsta < "13") Sau: if ($date > $finished) Mai mult, putem avea teste multiple ntr-o singur instruciune IF. Spre exemplu, dac este un formular i se verific dac vreun cmp a fost lsat necompletat: if ($name == "" || $email == "" || $password == "") { echo "Please fill in all the fields"; }

1.4.4. Cicluri
Ciclul WHILE Ciclul WHILE este una din comenzile cele mai utile din PHP. Fr a fi prea complicat. Un ciclu WHILE va executa, aa cum sugereaz i numele, o anumit parte de cod (un set de instruciuni), atta timp ct este ndeplinit o anumit condiie. Repetarea de un numr fixat de ori Dac este o anumit secven de instruciuni care trebuie repetate de un numr fixat de ori (fr a le rescrie), atunci se poate folosi un ciclu while. Spre exemplu, dac se vrea a scrie cuvintele "Hello World" de 5 ori, se poate face astfel: $times = 5; $x = 0; while ($x < $times) { echo "Hello World"; ++$x; } 45

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Primele dou linii sunt doar atribuiri ale variabilelor. Variabila $times capt valoarea din condiia ciclului, n acest caz - 5 . Variabila $x este contorul care va numra de cte ori se execut secvena. Dup aceste atribuiri, urmeaz linia WHILE. Acesta comand repetarea secvenei dintre acolade, ct vreme $x este mai mic dect $times (alfel spus, repetarea pn c,nd $x devine egal cu $times). Secvena care se execut repetat apare n urmtoarele 2 linii (ntre acolade). Dup linia echo care afieaz textul, apare o alt linie: ++$x; Din programare tim c asta nseamn incrementarea variabilei $x, adic acelai lucru cu: $x = $x + 1; Astfel, la fiecare repetare, variabila $x ia pe rnd valorile 1, 2, 3, 4, 5. La ultima, condiia din linia WHILE nu mai este ndeplinit i ciclul ia sfrit. Folosirea lui $x Variabila de contorizare ca ciclului (n cazul de mai sus $x ) poate fi folosit nu numai pentru numrare. Spre exemplu, dac se vrea crearea unei pagini web cu toate numerele de la 1 la 1000 n ea, se poate fie scrierea fiecarui numr n parte, fie folosirea urmtoarei secvene: $number = 1000; $current = 0; while ($current < $number) { ++$current; echo "$current<br>"; } S-a plasat comanda de incrementare ++$current; naintea instruciunii echo . Asta pentru c se dorete nceperea cu scrierea lui 1 , nu a lui 0. De fapt, linia ++$current; poate fi plasat oriunde n ciclul WHILE. Dup cum se pot efectua orice operaii aritmetice asupra numrului n cauz.

Vectori
Vectori i matrici Vectorii sunt structuri obinuite n majoritatea limbajelor de programare. Sunt variabile speciale care pot lua mai mult dect o singur valoare, toate stocate n spaiul propriu numerotat - n vector. Vectorii sunt extrem de utili mai ales la ciclurile WHILE. Definirea unui vector Definirea - iniializarea unui vector este puin diferit de cea a unei variabile normale. n exemplul urmtor se va introduce un vector cuprinznd 5 nume: $names[0] = 'John'; $names[1] = 'Paul'; 46

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

$names[2] = 'Steven'; $names[3] = 'George'; $names[4] = 'David'; Aa cum se vede, componentele unui vector sunt numerotate, pornind de la 0. Pentru a aduga o valoare unui vector trebuie specifict poziia din cadrul vectorului - prin intermediul indicelui plasat ntre parantezele drepte [ ]. Citirea unui vector Citirea unui vector se face exact la fel ca i atribuirea. Trebuie precizat numele vectorului i numrul componentei dorite. Astfel, dac se dorete a se vedea cel de al treilea nume (din vectorul $names ) se poate folosi scriptul: echo "Al treilea nume este $names[2]"; Which would output: Al treilea nume este Steven Folosirea vectorilor i ciclurilor Una din cele mai utile utilizri a ciclurilor apare pentru a extrage informaiile dintr-un vector. Spre exemplu, dac vrem s scoatem umtoarea list de nume: Numele 1 este John Numele 2 este Paul Numele 3 este Steven Numele 4 este George Numele 5 estes David Putem folosi urmtorul cod: $number = 5; $x = 0; while ($x < $number) { $namenumber = $x + 1; echo "Numele $namenumber este $names[$x]<br>"; ++$x } Aa cum se poate vedea, folosim variabila $x din acest ciclu pentru a afia numele nregistrate ntr-un vector. Iar pentru afiare am folosit variabila $namenumber care este cu o unitate mai mare dect $x. Asta deoarece numerotarea (indixarea) vectorului pornete de la 0.

47

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

1.4.5. Trimiterea unui e-mail din PHP


n PHP avem o comand mail() pentru a trimite un mesaj. Utilizat n formatul urmtor: mail($destinatar,$subiect,$corpul_mesajului,$antet); In acest exemplu variabilele indic prin numele lor sintaxa comenzii. De fapt se pot include chiar textele n comand. Mai nti variabila $destinatar. Aceasta conine adresa e-mail la care s fie transmis mesajul. Variabila $subiect trebuie s conin textul care se dorete apariia n linia Subject: a mesajului. Iar variabila $corpul_mesajului conine textul mesajului - coninutul su. Prin variablia $antet se transmit componentele suplimentare din antetul mesajului. Cel mai des e vorba despre cmpul From: , dar poate fi inclus oricare linie din antet, precum Cc:, sau Bcc: . Trimiterea unui mesaj E-mail Mai nainte de a expedia un mesaj, dac folosim variabile atunci va trebui ca, mai nti s iniializm aceste variabile. Un exemplu: $destinatar = "jalobean@relis.uvvg.ro"; $subiect = "despre PHP"; $corpul_mesajului = "PHP este unul dintre cele mai bune limbaje de comenzi pentru alctuirea scripturilor"; $antet = "From: webmaster@uvvg.ro\n"; mail($destinatar,$subiect,$corpul_mesajului,$antet); echo "Mesaj trimis la $destinatar"; Acest cod va face dou lucruri. Va trimite un mesaj la adresa jalobean@relis.uvvg.ro , cu subject: 'despre PHP' i cu textul: PHP este unul dintre cele mai bune limbaje de comenzi pentru alctuirea scripturilor iar mesajul e-mail va apare ca venind de la webmaster@uvvg.ro . Dar va mai fi transmis i textul: Mesaj trimis la jalobean@relis.uvvg.ro ctre navigator. Formatul - aspectul mesajului e-mail In exemplul de mai sus, n variabila $antet, linia From: este ncheiat cu \n. Acesta reprezint un simbol foarte important la trimiterea unui e-mail. Este codul pentru "linie nou". Cum n antetul mesajului (i deci i n variabila $antet) putem avea mai multe linii, fiecare trebuie s se ncheie cu combinaia \n . Acesta este standardul international pentru formatul mesajelor e-mail. Combinaia aceasta de trecere la linie nou ( \n ) poate fi folosit i n corpul mesajului, n variabila $corpul_mesajului . Dar nu are voie s apar nici n adresa de destinaie (n variabila $destinatar ), nici n subiectul mesajului (variabila $subiect ). 48

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Comanda Mail fr variabile In sintaxa comenzii mail() nu conteaz numele variabilelor ci doar poziia - ordinea lor. Adic, n exemplul de mai sus putem folosi alte patru variabile numite $v1 , $v2 , $v3 i $v4 . Totul se poate scrie i ntr-o singur linie, introducnd direct textul, n forma: mail("jalobean@relis.uvvg.ro","despre PHP","PHP este unul din cele mai bune limbaje","From: webmaster@uvvg.ro\n"); Erori Este foarte uor de fcut greeli ntr-un script, dup cum e foarte simplu s intervin greeli n scrierea adreselor e-mail (n mod special dac folosim scriptul pentru a construi mesajele). Din cauza asta, se adug scriptului o secven de verificare, de forma: if(mail($to,$subject,$body,$headers)) { echo "Mesajul e-mail a fost trimis la $to cu subiectul: $subject"; } else { echo "A intervenit o eroare la trimiterea mesajului. Verificai scriptul i asigurai-v c adresa e-mail $to este corect"; } Dac mesajul este expediat fr probleme, acest fapt va fi comunicat - va apare n fereastra navigatorului. Similar, n cazul unei erori, se va recepiona atenionarea cuvenit, cu sugestii de remediere.

1.4.6. Construcia formularului n PHP


Scrierea unui formular pentru a fi folosit cu un script PHP se face exact la fel ca i n HTML. Sunt trei dintre compunente: <input type="text" name="caseta" value="Numele d-voastra"> va afia o caseta pentru introducerea unui text, caset n care apar scrise (la nceput) cuvintele Numele dvoastra. De fapt atributul value n aceast linie este opional. Informaia - textul atribuit atributului name va constitui numele acestei casete text, trebuind s fie unic n formular. <textarea name="mesaj"> Scriei aici mesajul d-voastr. </textarea> va afia o caset mare de text cuprinznd ndemnul 'Scriei aici mesajul d-voastr.'. Si de data aceasta, numele casetei este definit (mesaj) i trebuie s fie unic. <input type="submit" value="Trimite"> aceast linie va crea un buton de trimitere n formularul respectiv. 49

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Toate elementele formularului trebuie s fie cuprinse ntre tagurile <form> . Adic se folosesc aa: <form action="prelucrare.php" method="post"> Elementele Formularului i comenzile de formatare, etc. </form> unde valoarea atribuit lui form action spune care este script-ul cruia i se transmit datele (n acest caz fiierul prelucrare.php). Aici se poate avea chiar un URL complet (spre exemplu http://relis.uvvg.ro/~jalobean/Cursuri/PHP-proc/prelucrare.php). Metoda method spune formularului cum s transmit datele sale. Cu opiunea POST datele vor fi trimise scriptului ntr-un pachet (stream) atunci cnd acesta le cere. O alt opiune este GET, caz n care datele din formular sunt trimise n forma unui url astfel c vor apare dup un semn ? , precum n exemplul: http://relis.uvvg.ro/~jalobean/Cursuri/PHPproc/prelucrare.php?name=Mihai Este indicat folosirea POST-ului dac-i vorba de informaii delicate (parole, etc.) pentru ca acestea s nu poat fi vzute n bara de adrese a navigatorului. Obinerea datelor din formular Exist dou procedee diferite de extragere a datelor n PHP, care depind de modul n care datele au fost trimise (cu metoda GET sau cu POST). Diferena major dintre cele dou const n faptul c, folosind GET, variabilele i datele vor fi vizibile n adresa paginii, n timp ce folosind POST acestea sunt invizibile. Cu GET, ns, putem transmite informaii ctre script fr un formular, editnd URL-ul. Asta se poate face cam la fel cu transmiterea formularului folosind GET. Avantajul ar fi c, astfel se pot crea legturi la script-uri care vor produce efecte diferite n funcie de legtura selectat. Spre exemplu, putem construi un script care s ne arate diferite pagini Web, funcie de legtura selectat: pagina.php?user=jalobean poate arta pagina mea Web (a utilizatorului jalobean, iar: pagina.php?user=djalobeanu poate arta pagina utilizatorului djalobeanu de pe serverul Relis, folosind acelai script. Ba este posibil transmiterea script-ului mai mult dect o singur valoare a unui atribut folosind schema de mai sus i separnd elementele prin simbolul & : pagina.php?user=david&referrer=gowansnet&area=6 Aceste elemente vor putea fi accesate separat folosind variabilele GET: user, referrer i area. Pentru a prelua o variabil care a fost trimis script-ului cu metoda POST trebuie folosit un apel de forma: $nume_variabila=$_POST['variabila']; care preia, n fond, variabila de la POST (numele unui cmp din formular) i o atribuie variabilei $nume_variabila. Similar, la folosirea metodei GET vom scrie: $nume_variabila=$_GET['variabila'];

50

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Iar asta se poate face i trebuie fcut pentru fiecare variabil pe care vrem s o folosim din formular (sau din URL).

1.4.7. Comentariile in PHP


Ca la orice limbaj de programare, este important s fie introdus n script-ul pe care se face i comentarii. Dac se lucreaz la un script mpreun cu altcineva, atunci trebuie s-l ajutat s neleag ce s-a vrut, cum s-a abordat problema, ce reprezint variabilele introduse... Dac punem scriptul la dispoziia celor preocupai de PHP sau de aplicaia realizat, cu att mai mult este nevoie de comentarii n script. Chiar i dac nu avem planuri att de mari, comentariile ne vor fi de folos peste un timp, atunci cnd vom dori s ne amintim cum am fcut ca s-l putem modifica adaptndu-l altor cerine. In PHP exist dou moduri de a introduce comentarii. Unul folosit pentru o singur linie de comentariu, altul folosit, mai ales, pentru comentarii mai largi, care privesc mai multe linii. Comentariul dintr-o linie se scrie n forma: // comentariul se poate scrie aici Tot ce apare n linie dup marcajul // va fi ingnorat la execuia scriptului. Marcajul i comentariul aferent poate apare oriunde pe linie (la nceput, sau dup o serie de comenzi, spre exemplu: print "Hello $name"; // Salutam vizitatorul Modul de comentariu pe mai multe linii este: /* The following piece of code will take the input the user gave and will check that it is valid before adding it to the database */ Textul este plasat deci ntre marcajele /* i */ . Tot ce se afl ntre acestea va fi ignorat la execuie. Este foarte important s nu uitm s nchidem comentariul, cu */ , altfel scriptul nu va rula deloc. Print, Echo i HTML Au fost folosite patru moduri diferite de a scoate - transmite informaiile ctre navigator: echo("textul de aici"); echo "textul de aici"; print("textul de aici"; print "textul de aici"; Fiecare din liniile de mai sus face acelai lucru, aa nct se poate folosi oricare dintre variante ntr-un script. i nu exist nici o constrngere de a utiliza o aceeai variant pe parcursul aceluai script. Singura problem este toate apariiile semnului " n codul HTML trebuie s apar (s fie nlocuite cu) \" care, la un script lung, poate s dureze. Asta conduce la o parte foarte util a PHP. Dac, spre exemplu, se creeaz dinamic un antet al unei pagini Web cu PHP, atunci va fi o succesiune de coduri cam aa: <? Prima parte a codului PHP 51

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

?> Codul HTML <? Partea final a codului PHP ?> Dac codul PHP va continua de unde a fost lsat: <? IF Statement { ?> HTML For IF Being Correct <? } else { ?> HTML For IF Being Wrong <? } ?> Trebuie, s nu fie uitat nchiderea buclelor din instruciunea IF (o eroare destul de frecvent ntlnit). One Line Prints Plasarea cod HTML n scriptul PHP, dar cnd se vrea a pune valoarea unei variabile n acea parte de cod. Spre deosebire de cazul cnd se folosete instruciunile echo sau print, nu putem se poate pune numele unei variabile ntr-o seciune care nu este cod PHP. n schimb, variabila poate fi inclus ntr-o mic secven PHP. Spre exemplu, dac se vrea scrierea numelui cuiva, dintr-un script, cu formatare HTML, se poate face astfel: <font face="Arial" size="7" color="red"><b><? echo($variablename); ?></b></font> Se adaug n secvena HTML urmtoarea secven PHP: <? echo($variablename); ?> care este totuna cu: <? echo($variablename); ?> doar c-i totul pus ntr-o singur linie.

52

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

1.5. PHP/MySQL 1.5.1. Necesitatea unei baze de date


O baz de date poate fi foarte util, mai ales atunci cnd poate fi folosit ntr-un site Web. Sunt multe lucruri care se pot face ntr-un astfel de caz, de la afiarea unor 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 se extrage aleator o imagine sau un set de imagini, pentru a-l include ntr-un set de pagini Web. Scriptul PHP va contoriza deasemeni numrul de cte ori a fost vzut banner-ul, putnd, cu modificri mici, s urmreasc chiar i numrul de click-uri. Pentru a aduga, schimba sau edita bannerele, tot ce este de fcut este schimbarea bazei 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 - ruleaz n PHP i MySQL. Acestea s-au dovedit mult mai eficiente dact 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. Spre exemplu, Script Avenue este rulat de cteva scripturi, care furnizeaz toate informaiile dintr-o baz de date ampl. Toate categoriile de scripturi diferite pot fi accesate ntr-un singur script exact prin schimbarea URL-ului pentru a accesa diferite pri ale bazei de date. Site-urile Web. Cnd avem un site de mari dimensiuni - cu multe pagini, i dorina de a modifica aspectul general sau a schimba 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. n primul rnd, este nevoie de 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. Este nevoie de MySQL. Acesta este de fapt pachetul de programe pentru gestiunea bazelor de date. Se poate folosi deasemenea multe alte sisteme de baze de date (SQL, Oracle etc.) dar aici discutm despre PHP/MySQL, deci este nevoie de MySQL (cu toate c se folosesc comenzi care in de limbajul SQL i 'merg' la oricare din sistemele de baze de date SQL). i pachetul MySQL este public - gratuit, putnd fi preluat din pagina oficial a firmei MySQL. Dar i n cazul MySQL trebuie verificat mai nti dac nu cumva este deja instalat. Dac nu se poate instala PHP i MySQL, sau dac gazda Web nu o permite, se poate apela la alt server Web, la alt gazd. Spre exemplu, Freedom2Surf este un server Web public, care acord acces liber i suport PHP, avnd MySQL instalat. HostRocket este un alt server excelent care ofer spaiu de pn la 300 MO, i include PHP, MySQL i multe altele, dar percepe o tax de abonament. 53

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pentru a afla dac PHP i MySQL sunt instalate:


Exist un test, att pentru PHP ct i pentru MySQL: Se lanseaz un editor de texte i se scrie urmtoarele: <? phpinfo(); ?> se salveaz fiierul cu un nume precum phpinfo.php Apoi se ncrc acest fiier n spaiul web, pe server, apelndu-l, dup aceea, din navigator. Dac PHP-ul este deja instalat se va cpta o pagin plin cu toate detaliile instalrii respective. Dac se gsete o seciune despre MySQL atunci nseamn c MySQL este i el deja instalat. Gestiunea Bazelor de date Chiar dac tot ce ine de administrarea bazelor de date poate fi realizat prin scripturi PHP, instalarea pe server a pachetului PHPMyAdmin poate aduce un plus de confort. Este un excelent set de scripturi care asigur o interfa administrativ pentru bazele de date MySQL. Si mai este i public-gratuit. Cu el se poate aduga, elimina, edita, salva i vizualiza bazele de date, fiind deosebit de util pentru depanare.

1.5.2. Construirea unei Baze de Date


Introducere Mai nainte de a porni construcia unor script-uri pentru baze de date, ar trebui o baz de date n care s plasm informaii i din care s citim. Creerea unei baze de date n MySQL i pregatirea pentru date. Ca un exemplu, se va crea o baz de date de tip carte de adrese de contact. Construcia Bazei de Date Bazele de date MySQL au un sistem de iniializare standard (un setup). Este vorba de o baz de date, compus din tabele, oarecum separate, coninnd diferite cmpuri, etc. chiar dac sunt parte dintr-o baz de date. Fiecare tabel conine nregistrri care sunt fcute din cmpuri. Conectarea la o Baz de Date Procesul de instalare a unei baze de date MySQL difer de la o platform la alta. n esen este vorba peste tot de un nume al bazei de date, un nume de utilizator (cont) i o parol. Aceste informaii sunt cerute pentru conectarea la baza de date. Dac avei pachetul PHPMyAdmin (sau un program similar) instalat, atunci se poate intra acolo i s v conecta introducnd contul (numele de utilizator) i parola. Dac nu, atunci trebuie fcut ntreaga administrare a bazelor de date folosind script-uri PHP . 54

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Crearea unei Tabele Mai nainte de orice altceva cu baza de date, trebuie s v creai o tabel. O tabel este o seciune a bazei de date pentru memorarea unor informaii structurate (legate). ntr-o tabel vom defini diferite cmpuri care vor fi folosite n acea tabel. Din cauza acestei construcii, aproape toate centrele cu baze de date trebuie s fie satisfcute folosind doar o baz de date. Crearea unei tabele n PHPMyAdmin se scrie numele, se selecteaz numrul de cmpuri i &Quot; se aps" butonul (click). Se ajunge atunci la un ecran setup n care trebuie create cmpurile pentru baza de date. Dac se folosete un script PHP pentru a crea propria baz de date, iar completa creere i iniializarea vor fi fcute ntr-o singur comand. Cmpuri Exist o larg varietate de cmpuri i de atribute disponibile n MySQL . De expemplu: Tipul cmpului Descriere TINYINT Numr Intreg mic SMALLINT Numr Intreg mic MEDIUMINT Numr Intreg INT Numr Intreg VARCHAR Text (maximum 256 caractere) TEXT Text Acestea sunt doar cteva dintre cmpurile disponibile. O cutare pe Internet poate furniza lista cu toate tipurile de cmpuri permise. Crearea unei Tabele cu PHP S creeaz o tabel din PHP este ceva mai dificil dect cu MySQL. Este de parcurs urmtorii pai: CREATE TABLE nume_tabel { Fields } Cmpurile sunt definite dup cum urmeaz: fieldname type(length) extra info, Ultimul cmp introdus nu poate include nici o virgul.

Baza de date cu adrese de contact Baza de date de contact va conine toate informaiile de contact ale cunoscuilor introdui n tabel. Iar informaiile vor putea fi editate i consulate n internet. Urmtoarele cmpuri vor fi folosite n baza de date: 55

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Nume Id Nume prenume telefon Mobil Fax Email Web INT

Tipul 6 VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR

Lungimea 15 15 20 20 20 30 30

Descrierea Un identificator unic pentru fiecare nregistrare Numele de familie al persoanei Numele de botez al persoanei Numrul de telefon Numrul de telefon mobil Numrul de fax Adresa e-mail Pagina Web personal

E folosit un tip de cmp VARCHAR pentru coloana mumr_telefon/fax, chiar dac acestea sunt formate din cifre. Chiar dac se putea folosi tipul INT, este preferabilp folosirea VARCHAR pentru c astfel vor fi permise spaii i cratime, precum i poriuni de text, la fel ca numerele scrise ca text (exemplu 1800COMPANY) i cum nu se vor iniia apeluri telefonice de pe Web, totul e n ordine. Exist nc ceva de care trebuie avut grij n aceast baz de date. Cmpul id va fi pus ca PRIMARY, INDEX, UNIQUE i iniializat ca auto_increment (poziie ce apare n Extra n PHPMyAdmin). Raiunea pentru asta este c acesta va fi cmpul identificator (primar sau index) i deci trebuie s fie unic. Definirea sa ca auto increment nseamn c la adugarea fiecrei nregistrri, ct vreme nu specificm acolo un id, acesta va primi ca valoare urmtorul numr. Dac se folosete PHPMyAdmin sau un program de management, se poate creea o tabel numit contacte. Crearea Tabelei n PHP Pentru a crea aceast tabel se va folosi urmtoarea secven de comenzi PHP. <? $user="username"; $password="password"; $database="database"; mysql_connect(localhost,$user,$password); @mysql_select_db($database) or die( "Baza de date nu poate fi selectata"); $query="CREATE TABLE contacts (id int(6) NOT NULL auto_increment,nume varchar(15) NOT NULL,prenume varchar(15) NOT NULL,telefon varchar(20) NOT NULL,mobil varchar(20) NOT NULL,fax varchar(20) NOT NULL,email varchar(30) NOT NULL,web varchar(30) NOT NULL,PRIMARY KEY (id),UNIQUE id (id),KEY id_2 (id))"; mysql_query($query); mysql_close(); ?>

1.5.3. Introducerea datelor


56

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Conectarea la o baz de date Primul lucru care trebuie fcut, mai nainte de a putea face ceva, este conectare la baza de date MySQL. Acesta este un pas foarte important, pentru c, dac nu exista conexiune, comenzile ctre baza de date vor eua. Practic, pentru a folosi o baz de date trebuie precizat numele de utilizator (username), parola (password) i numele bazei de date : $username="nume_utilizator"; $password="parola"; $database="numele_bazei_de_date"; Sursa PHP este prelucrat de server nainte de a fi trimis navigatorului, astfel ncrcat este imposibil pentru orice utilizator s vad scriptul. Mai apoi, avem nevoie de o comand care s lanseze conexiunea la baza de date: mysql_connect(localhost,$username,$password); Aceast linie spune PHP-ului s se conecteze la serverul de baze de date MySQL la 'localhost' (localhost se numete serverul pe care ruleaz PHP-ul. In afara cazului n care gazda Web indic altceva, vom folosi localhost) folosind numele de cont memorat n $username i parola din $password. nc o comand: mysql_close(); Aceasta este o comand foarte important care nchide conexiunea cu serverul de baze de date. Scriptul va rula nc, dac nu se include aceast comand, iar prea multe conexiuni MySQL deschise pot cauza probleme serverului web. Este un obicei bun s se includ comanda de nchidere de mai sus dup ce s-a introdus toate comenzile ctre baza de date, pentru a menine platforma n bun stare. Selectarea bazei de date Dup conectarea la severul de baze de date, trebie selectat baza de date pe care se dorete a fi folosit. Trebuie s fie o baz de date la care s fie acces, cu respectivul nume de utilizator. Se folosete urmtoarea comand: @mysql_select_db($database) or die( "Baza de date nu poate fi selectata"); Aceasta spune PHP-ului s selecteze baza de date specificat n variabila $database (pe care am definit-o mai nainte). Dac conexiunea nu se poate realiza procesul (execuia script-ului) se oprete afind textul: Baza de date nu poate fi selectata Aceast parte suplimentar 'or die' este bun pentru ieire, chiar dac nu asigur dect un minim control al erorii. 57

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Execuia comenzilor Dup conectarea la server i selecia bazei de date dorite, putem ncepe execuia comenzilor pe server. Exist dou moduri de a executa o comand. Prima revine pur i simplu la introducerea comenzii n PHP. Asta merge atunci cnd nu apar rezultate ca urmare a execuiei comenzii. Cea de a doua variant este s definim comanda ca o variabil. Asta va atribui variabilei rezultatele operaiei. Se va folosi prima cale, deoarece nu se atept rspuns de la baze de date. Comanda va arta cam aa: mysql_query($query); Folosirea acestei forme a comenzii este util pentru c se repet aceiai comand iari i iari fr a fi nevoie s se memoreze altele. Tot ce e de fcut este schimbarea variabilei. Introducerea datelor Pentru a introduce primele informaii n baza de date: Nume: Ionescu Prenume: Gheorghe Telefon: 021 3456789 Mobil: 0724 334455 Fax: 0264 567891 E-mail: ionescughe@personal.ro Web: http://www.cinestie.inext.ro Toate acestea vor fi introduse cu o singur comand: $query = "INSERT INTO contacts VALUES ('','Ionescu','Gheorghe','021 3456789','0724 334455','0264 567891','ionescughe@personal.ro','http://www.cinestie.inext.ro')"; Mai nti, apare variabila $query creia i se atribuie o comand (vezi paragraful precedent). Urmtoarea parte, adic: INSERT INTO contacts VALUES Ea spune PHP-ului s insereze n tabel numit contacts valorile care urmeaz (scrise ntre paranteze). Acolo, ntre paranteze, avem sunt toate cmpurile de adugat. Apar toate cmpurile n ordine i sunt inserate informaiile dintre ghilimele. Spre exemplu: Ionescu va fi inserat n al 2-lea cmp, care, n aceast tabel este cmpul 'nume' . Nu a inserat nimic n primul cmp din baza de date (id). Asta din cauz c acest cmp va fi un cmp index, 58

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

elementul unic de identificare. Fiecare nregistrare din baza de date va avea un unic ID. Din aceast cauz, cnd ncrcm baza de date, vom pune ID pe 'Auto Increment'. Asta nseamn c, ne-atribuindu-i nici o valoare, el va lua la fiecare nregistrare urmtoarea valoare din ir. Iar prima nregistrare va avea valoarea ID=1 .

59

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

1.5.4. Afiarea rezultatelor


Introducerea datelor dintr-o pagin HTML Introducerea datelor din paginile HTML este aproape identic cu inserarea lor din script-uri PHP. Avantajul const, ns, n faptul c nu apare nevoia schimbrii script-ului pentru fiecare cmp de introdus. In plus, putem permite "vizitatorilor" s introduc direct datele lor. Iat mai jos cum arat o pagin HTML cu celule text pentru introducerea detaliilor corespunztoare: <form action="insert.php" method="post"> Nume Familie: <input type="text" name="nume"><br> Prenume: <input type="text" name="prenume"><br> Telefon: <input type="text" name="telefon"><br> Mobil: <input type="text" name="mobil"><br> Fax: <input type="text" name="fax"><br> E-mail: <input type="text" name="email"><br> Web: <input type="text" name="web"><br> <input type="Submit"> </form> Aceast pagin poate fi, desigur, formatat i pot apare diferite schimbri - variante. Este un formular de pornire. Va trebui ns editat script-ul precedent, pentru ca, n locul introducerii informaiilor direct din script n baza de date, s fie folosite variabilele: <? $username="username"; $password="password"; $database="baza_mea_de_date"; mysql_connect(localhost,$username,$password); @mysql_select_db($database) or die( "Baza de date nu poate fi selectata"); $query = "INSERT INTO contacts VALUES ('','$nume','$prenume','$telefon','$mobil','$fax','$email','$web')"; mysql_query($query); mysql_close(); ?> Acest script trebuie salvat ca fiier cu numele insert.php, astfel ca s poat fi apelat de formularul HTML. Treaba va merge ntruct, n loc ca datele s fie introduse local, ele se introduc n formular i sunt memorate n variabilele care apar precizate acolo i care sunt transmise apoi PHP-ului. Putem s adugm script-ului un mesaj care s confirme preluarea datelor. Asta face parte din 'oferta' de baz a PHP i rmne ca exerciiu. Scoaterea Datelor In baza de date este cel puin o nregistrare, dac nu mai multe. Se pune problema cum se vizualizeaz, cum se scoate aceste date folosind PHP. Prima comand la care vom apela este comanda SELECT din SQL, folosit 60

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

ntr-o cerere MySQL n forma: SELECT * FROM contacts Aceasta este o comand de baz din MySQL, care va spune script-ului s selecteze toate nregistrrile din tabela contacts. Dar, de data aceasta, comanda furnizeaz un rezultat, ea va trebui executat atribuin rezultatele unei variabile: $query="SELECT * FROM contacts"; $rezultat=mysql_query($query); n acest caz, ntregul coninut al bazei de date va fi atribuit variabilei cu numele $rezultat (care va fi deci o matrice, un tablou). Mai nainte de a putea scoate aceste date vor trebui extrase ca variabile simple, separate. Pentru asta trebuie s tiut cte nregistrri avem n tabel (deci i n variabila $rezultat ). Numrarea liniilor O comand special n MySQL pentru calculul numrului de linii din tabel. Este important pentru c n baza de date se fac uzual numeroase actualizri, completri, tergeri. $num=mysql_numrows($rezultat); Astfel, variabila $num va cpta ca valoare numrul de linii din $rezultat (adic tocmai din baza de date). Acest numr va putea fi folosit n continuare pentru ciclul n care se vor analiza i desface n variable separate cmpurile fiecrei linii. Construirea ciclului Se va scrie un ciclu pentru a selecta din tabel (din rezultat) linie cu linie.... Se va defini un indice, o variabil $i care va parcurge (cu incrementare) valorile de la 1 la $num . $i=0; while ($i < $num) { OPERAIILE ASUPRA LINIEI ++$i; } Acesta este un ciclu tipic n PHP i va executa ansamblul numit OPERATIILE ASUPRA LINIEI de exact $num ori, adic de attea ori ct trebuie. La fiecare reluare $i fiind mrit cu o unitate. Astfel $i poate fi folosit i pentru a preciza numrul liniei care se prelucreaz. Asocierea datelor la variabile In partea pe care am numit OPERATIILE ASUPRA LINIEI trebuie s separat fiecare cmp din linia nregistrare asociindu-l unei variabile. Folosit pentru urmtoarea secven: $variable=mysql_result($rezultat,$i,"numele_campului"); 61

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Astfel, pentru a extrage fiecare component din baza noastr de date, se vor folosi urmtoarele instruciuni: $nume=mysql_result($result,$i,"nume"); $prenume=mysql_result($result,$i,"prenume"); $telefon=mysql_result($result,$i,"telefon"); $mobil=mysql_result($result,$i,"mobil"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web"); Combinarea Script-ului Se poate scrie script-ul complet pentru scoaterea datelor. In acest script datele nu sunt formatate, adic vor fi afiate toate cu acelai font, predefinit. <? $username="username"; $password="password"; $database="baza_noastra_de_date"; mysql_connect(localhost,$username,$password); @mysql_select_db($database) or die( "Baza de date nu poate fi selectata"); $query="SELECT * FROM contacts"; $rezultat=mysql_query($query); $num=mysql_numrows($rezultat); mysql_close(); echo "<b><center>Database Output</center></b><br><br>"; $i=0; while ($i < $num) { $nume=mysql_result($rezultat,$i,"nume"); $prenume=mysql_result($result,$i,"prenume"); $telefon=mysql_result($result,$i,"telefon"); $mobil=mysql_result($result,$i,"mobil"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web"); echo "<b>$nume $prenume</b><br>Telefon: $telefon<br>Mobil: $mobil<br>Fax: $fax<br>E-mail: $email<br>Web: $web<br><hr><br>"; ++$i; } 62

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

?>

1.5.5. Alte rezultate


Formatarea scoaterii Mai sus, s-a scos o list cu toate persoanele nregistrate n baza de date. De fapt s-a ajuns s fie definite variabilele care permit scoaterea sau afiarea, ncheind cu o comand destul de afiare (echo) fr a o explica. Datele din tabel ar trebui prezentate pe ecran tot n forma unui tabel. Iar asta nu-i prea complicat. In fond dac tim cum s afim (scoatem) fiecare variabil n parte, atunci tot restul privind formatarea, organizarea ca tabel, etc Tot ce este de fcut deci este s folosirea PHP-ului pentru scoaterile HTML incluznd variabilele n zonele corecte. Cel mai simplu este nchiderea tagului PHP i s introducerea liniilor normale din HTML. Oridecte ori se ajunge la o variabil se va include folosind o secven de forma: <? echo "$numele_variabilei"; ?> Se poate folosi un ciclu PHP pentru a repeta o secven de cod ca cea de mai sus, la includerea variabilelor ntr-un tablou. Spre exemplu, folosind secvena de cod precedent cu ciclul corespunztor, putem formata scoaterile pentru ca s apar ntr-o tabel mare: <table border="0" cellspacing="2" cellpadding="2"> <tr> <th><font face="Arial, Helvetica, sans-serif">Nume</font></th> <th><font face="Arial, Helvetica, sans-serif">Telefon</font></th> <th><font face="Arial, Helvetica, sans-serif">Mobil</font></th> <th><font face="Arial, Helvetica, sans-serif">Fax</font></th> <th><font face="Arial, Helvetica, sans-serif">E-mail</font></th> <th><font face="Arial, Helvetica, sans-serif">Website</font></th> </tr> $i=0; while ($i < $num) { $nume=mysql_result($rezultat,$i,"nume"); $prenume=mysql_result($result,$i,"prenume"); $telefon=mysql_result($result,$i,"telefon"); $mobil=mysql_result($result,$i,"mobil"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web"); ?> <tr> <td><font face="Arial, Helvetica, sans-serif"><? echo "$nume $prenume"; ?></font></td> 63

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

<td><font face="Arial, Helvetica, sans-serif"><? echo "$telefon"; ?></font></td> <td><font face="Arial, Helvetica, sans-serif"><? echo "$mobil"; ?></font></td> <td><font face="Arial, Helvetica, sans-serif"><? echo "$fax"; ?></font></td> <td><font face="Arial, Helvetica, sans-serif"><a href="mailto:<? echo "$email"; ?>">Email</a></font></td> <td><font face="Arial, Helvetica, sans-serif"><a href="<? echo "$web"; ?>">Website</a></font></td> </tr> <? ++$i; }

echo "</table>"; Aceast secven va afia antetul tabelului, apoi va aduga o linie suplimentar pentru fiecare nregistrare din baza de date, formatnd datele la scoatere. Se vavexplica una din liniile din tabel, spre exemplu: <a href="mailto:<? echo "$email"; ?>">E-mail</a> care construiete o legtur email la adresa transmis de variabila $email . Asta arat una dintre calitile importante i utile ale folosirii PHP pentru includerea datelor MySQL . Adic prin astfel de scoateri putem face paginile Web dinamice. Selectarea unor date La fel cu afiarea ntregii baze de date, PHP poate fi folosit pentru a selecta date individuale, doar anumite nregistrri, sau nregistrrile care verific anumite criterii. Pentru asta trebuie s folosim o variaiune a cererii SELECT . Pentru afiarea ntregii tabele am folosit cererea: SELECT * FROM contacts Dac se vrea selectarea doar pe acele persoane care au prenumele 'Mihai' se va folosi o cerere de forma: SELECT * FROM contacts WHERE prenume='mihai' Ca i la alte cereri - comenzi SQL, sunt de fapt propoziii foarte apropiate de formularea curent din limba englez. ntr-un mod asemntor se va putea selecta nregistrrile pe baza oricrui cmp din baza de date. Dar se poate selecta o nregistrare folosind mai multe cmpuri, adugnd n formularea cererii clauza: field='value' Fr a intra n prea multe detalii, se mai spune c se pot folosi variabilele pentru a transmite criteriul dorit pentru selecie. Spre exemplu, dac dintr-un formular de cutare se primete o variabil numit $nume_cautat se poate imagina urmtoarea secven: $query="SELECT * FROM contacts WHERE nume='$nume_cautat'"; 64

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

$result=mysql_query($query); .

1.5.6. nregistrri i erori


Interceptarea Erorilor Prin scoaterea tuturor informaiilor dintr-o baz de date, este puin probabil s ajungem la situaia cnd nu mai sunt date. Dar dac s-a permis ajustri i, tergeri i actualizri ale nregistrrilor, atunci se prea poate s ajungem la o eroare. Din fericire, cu PHP i MySQL, avem un mod simplu de a evita o astfel de situaie folosind: $num=mysql_numrows($rezultat); unde $rezultat conine rezultatul unei cereri - interogri a bazei de date ( precum selectarea tuturor nregistrrilor). Aceasta va atribui variabilei $num numrul de linii din rezultat (care s-a utilizat ntr-un ciclu, n lecia a 4-a). Se poate insera n ciclu o comand de captare/tratare a erorilor folosind o instruciune IF : if ($num==0) { echo "Baza de date nu conine nici o nregistrare"; } else { Output Loop } Se poate dezvolta ramura asta fcnd-o mai prietenoas. Spre exemplu, oferind o legtur la pagina Add Data, de introducere de informaii n baza de date, atunci cnd ea este vid. Ordonarea datelor Nu numai c se pot scoate datele n funcie de coninutul unui cmp, dar pot ordona aceste date pe baza unei reguli aplicat coninutului unei coloane (spre exemplu aranjnd utilizatorii n ordine alfabetic). In mod normal, afiarea n urma unei interogri se face n ordinea stabilit de identificatorul ID, pornind de la 1 n sus. Se poate ns alege modul de ordonare (sortarea) dup oricare coloan din tabel. Spre exemplu, o ordonare util ar putea fi dup numele de botez. Asta nsemnnd n ordine ascendent (cresctoare, de la A la Z i de la 1 la 10...). Pentru a obine un astfel de rezultat folosim urmtoarea cerere: SELECT * FROM contacts ORDER BY prenume ASC Putem folosi, desigur i ordonarea descendent, specificnd DESC n locul lui ASC . Alte variante cu mysql_numrows i Sortare Valoarea care i se atribuie (ca mai sus) variabilei $num este foarte important, nu numai pentru cicluri i captarea erorilor. Un exemplu poate fi scoaterea doar a ultimelor 5 nregistrri adugate bazei de date. Mai nti, este ordonarea natural, stabilit de ID, (ultima nregistrare avnd valoarea maxim a ID), dar se alege ordinea descendent. 65

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Astfel va avea nregistrrile ncepnd cu cea mai recent i terminnd cu cea mai veche. Mai trebuie doar numrat, afind doar primele 5. nainte de a ncepe ciclul de cinci, trebuie asigurat c $num este mai mare dect 5 . Este o secven de forma: if ($num<5) { $to=$num; }else{ $to=5; } $i=0; while ($i < $to) { SECVENTA DE COMENZI mysql PENTRU SCOATERE Cu alte cuvinte, dac sunt mai mult de cinci linii n tabel atunci ciclul se va face de la 0 la 5. In caz contrar, dac sunt mai puin de 5 linii, ciclul va parcurge exact numrul respectiv de linii.

Cmpul ID-Selecia unei singure nregistrri


Iat cum se pot selecta nregistrri din baza de date folosind coninutul unui cmp particular: SELECT * FROM contacts WHERE field='value' Atunci, folosind unicitatea cmpului ID se poate selecta orice nregistrare din baza de date, folosind: SELECT * FROM contacts WHERE id='$id' unde $id este o variabil coninnd numrul unei nregistrri. Spre exemplu, dac se dorete o pagin Web generat dinamic dintr-o baz de date cu un singur script PHP, se poate scrie script-ul ca s includ pagini Web distincte ca nregistrri ale bazei de date. Atunci, folosind cmpul id, se poate selecta fiecare pagin individual plasnd-o la soatere. Se poate chiar folosi chiar URL-ul paginii pentru a specifica nregistrarea dorit http://www.centrul_propriu.ro/stiri/items.php?item=5476 Iar script-ul PHP s caute nregistrarea care are numrul de ordine (id-ul) care corespunde valorii variabilei $item, care n acest caz este 5476 Legturi la o singur nregistrare Folosind aceast metod de alegere a nregistrrii folosind URL-ul, nregistrarea poate fi extins prin generarea dinamic a URL-ului.. Se va realiza o pagin de aducere la zi a bazei de date cu adresele. Cu ideea ca utilizatorul s-i poat modifica propriile detalii din nregistrare. Pentru asta, se va include o nou coloan cuprinznd o legtur Update . Aceast legtur conducnd la o pagin care s permit utilizatorului s actualizeze nregistrarea. Pentru a selecta nregistrarea din acea pagin se va pune: 66

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

?id=$id Cptnd identificatorul id al nregistrrii, secvena aceasta va crea o legtur la fiecare din nregistrri.

1.5.7. Actualizare i tergere


Se realizeaz un script de actualizare, care va avea dou pri: Pagina de afiare a actualizrii Prima parte a script-ului de actualizare folosete procedeul de selecie a unei singure nregistrri, adugnd doar cteva elemente HTML pentru a-l face mai util. Mai nti, e connectarea la baza de date i selectarea nregistrarii potrivite. $id=$_GET['id']; $username="nume_utilizator"; $password="parola"; $database="baza_de_date"; mysql_connect(localhost,$username,$password); $query=" SELECT * FROM contacts WHERE id='$id'"; $result=mysql_query($query); $num=mysql_numrows($rezultat); mysql_close(); $i=0; while ($i < $num) { $nume=mysql_result($rezultat,$i,"nume"); $prenume=mysql_result($rezultat,$i,"prenume"); $telefon=mysql_result($rezultat,$i,"telefon"); $mobil=mysql_result($rezultat,$i,"mobil"); $fax=mysql_result($rezultat,$i,"fax"); $email=mysql_result($rezultat,$i,"email"); $web=mysql_result($rezultat,$i,"web"); Zona de cod suplimentar ++$i; } Unde 'Zona de cod suplimentar' marcheaz poriunea din script unde vor apare comenzile de actualizare. Adic formatarea HTML pentru scoatere: <form action="updated.php" method="post"> <input type="hidden" name="ud_id" value="<? echo "$id"; ?>"> Numele de Familie: <input type="text" value="ud_first" value="<? echo "$nume"?>"><br> Numele de Botez: <input type="text" value="ud_last" value="<? echo "$prenume"?>"><br> 67

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Numrul de Telefon: <input type="text" value="ud_phone" value="<? echo "$telefon"?>"><br> Numrul de Mobil: <input type="text" value="ud_mobile" value="<? echo "$mobil"?>"><br> Numrul de Fax: <input type="text" value="ud_fax" value="<? echo "$fax"?>"><br> Adresa E-mail: <input type="text" value="ud_email" value="<? echo "$email"?>"><br> Adresa Web: <input type="text" value="ud_web" value="<? echo "$web"?>"><br> <input type="Submit" value="Update"> </form> Aceast secven construiete (scoate) un formular standard, dar n locul zonelor goale, aa cum apreau n formularul pentru introducerea datelor, de data asta avem coninutul cmpului respectiv din nregistrarea n cauz (care-i de actualizat). Asta l face mai adaptat scopului, mai comod de folosit. Actualizarea bazei de date Implic urmtoarea operaie: $query = "UPDATE contacts SET nume = '$ud_first',prenume = '$ud_last',telefon = '$ud_phone',mobil = '$ud_mobile',fax = '$ud_fax',email = '$ud_email',web = '$ud_web' WHERE id = '$ud_id'"; Aceast cerere spune sistemului de gestiune de baze de date s actualizeze tabela contacts n acele linii n care ID coincide cu valoarea din $ud_id (care, aa cum se poate vedea din formularul anterior, a primit valoarea id a nregistrrii pe care o actualizm), modificnd urmtoarele cmpuri cu valorile specificate (care au fost introduse cu ajutorul formularului). Aceast cerere poate fi nglobat ntr-un script simplu: $ud_id=$_POST['ud_id']; $ud_first=$_POST['ud_first']; $ud_last=$_POST['ud_last']; $ud_phone=$_POST['ud_phone']; $ud_mobile=$_POST['ud_mobile']; $ud_fax=$_POST['ud_fax']; $ud_email=$_POST['ud_email']; $ud_web=$_POST['ud_web']; $username="nume_utilizator"; $password="parola"; $database="baza_de_date"; mysql_connect(localhost,$username,$password); $query="UPDATE contacts WHERE id='$ud_id' SET first='$ud_first' last='$ud_last' phone='$ud_phone' mobile='$ud_mobile' fax='$ud_fax' email='$ud_email' web='$ud_web'"; mysql_query($query); echo "Actualizarea s-a fcut"; mysql_close(); Asta va actualiza baza de date transmind i o confirmare utilizatorului.

68

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

tergerea nregistrrilor delete.php?id=9 Scriptul care va face asta, numit delete.php, este aproape identic cu cel de actualizare a bazei de date, cu excepia comenzii MySQL (modului n care este construit cererea). In locul comenzii SQL UPDATE , se va folosi: DELETE FROM contacts WHERE id='$id' Ciclurile Se menioneaz i un alt mod de folosire a ciclurilor cu o baz de date. Se poate folosi un ciclu pentru a executa un ir de cereri. Spre exemplu, dac trebuie schimbat- se extrag toate nregistrrile dintr-o baz de date n care apare ca prenume Serban pentru a realiza un Website www.serban.ro: Partea Standard de Conectare la Baza de Date $query=" SELECT * FROM contacts WHERE prenume='Serban'"; $rezultat=mysql_query($query); $num=mysql_numrows($rezultat); $i=0; while ($i < $num) { $id=mysql_result($rezultat,$i,"id"); $query1="UPDATE contacts SET web='http://www.serban.ro' WHERE id='$id'"; mysql_query($query); ++$i; } mysql_close();

1.5.8. ncheierea scriptului


Atunci cnd se construiete un script complex folosind bazele de date, apare des secvena de conectare la baza de date. De aceea, pentru a simplifica lucrurile, se poate fie s creearea un fiier cu numele de utilizator i parola sau chiar un fiier de conectare. Spre exemplu, un fiier "username/password" poate fi construit cu numele: dbinfo.inc.php cuprinznd n el: <? $username="numele_de_utilizator_al_bazei_de_date"; $password="parola"; 69

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

$database="nume_baza_de_date"; ?> n care precizm datele concrete potrivite (numele_de_utilizator_al_bazei_de_date, parola, nume_baza_de_date). Atunci n fiierele php se va folosi, chiar la nceput, urmtoarea secven, care va include scriptul de mai sus: include("dbinfo.inc.php"); sau, atunci cnd acesta se afl n alt director: include("/[traseul complet]/dbinfo.inc.php"); Atunci, se va putea folosi n continuare variabilele $username, $password i $database n script-ul nostru, fr a avea nevoie s le definim de fiecare dat. De asemeni, dac se va modifica cndva aceste informaii, spre exemplu trecnd pe alt server web, tot ce va fi de schimbat va fi n acest unic fiier. Aceeai schem se poate folosi pentru conectarea la baza de date, plasnd i comanda de conectare n fiier. Atunci va trebui, asigurarea de nchiderea conexiunii, pentru a nu avea probleme cu serverul MySQL. Cutarea n script Se poate realiza i o cutare limitat n baza de date folosind funcia special din MySQL. Adic prin folosirea funciei LIKE , n forma: SELECT * FROM nume_tabela WHERE nume_camp LIKE '%$string%' Asta nsemn c LIKE va spune bazei de date s foloseasc posibilitile proprii de cutare. Semnele % au semnificaia c orice alte date pot s apar n poziia lor i variabila $string va conine cererea de cutare. Adic poate avea acolo un cuvnt, sau un numr, spre exemplu: LIKE '%pian%' ceea ce va conduce la scoaterea liniilor care includ cuvntul pian n cmpul specificat. Similar, se poate renuna la unul din semnele % astfel pentru a preciza poziia irului de caractere: LIKE 'pian%' Astfel se va putea selecta doar liniile n care cmpul specificat ncepe cu prefixul pian, caz n care, spre exemplu, expresia urmtoare va fi evitat: Un pian se afl pe scen. Finalizarea Script-ului Se poate descrca script-ul complet ca un fiier comprimat zip, pentru a examina ntreaga aplicaie

70

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

1.6-Aplicaia DBMT(Database Management System Technology):

1.6.1- Baza de date folosite:

71

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

72

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Tabelele folosite
Tabela informaii

73

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Tabela log_informaii

Tabela user

74

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

1.6.2- Baza de date:

Tabelele folosite

Descriere

INFORMAII

Date despre grupa de sportivi

LOG_INFORMAII Activitile desfurate n cadrul site-ului de ctre utilizatori

USERI

Utilizatorii(profesori i studeni)

1.6.3- Structura fiierelor:


check.php-verificarea logarii config.php-informaii [css] directorul cu stilurile CSSdb_connect.php- realizarea conexiuni cu baza de date db_disconnect.php-realizeaz intreruperea conexiuni cu baza de date download.php- foreaz descarcrea fiierului CSV excel.csv- fiier format CSV [images] directorul cu imagini functions.php-set de comenzi care asigur efectuarea operaiilor de pe site index.php-fiier principal login.php-autentificare logout.php-ieire

75

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

1.6.4 Prezentarea codului sursa de la fiarea bazei de date // Afisare baza de date function browseDB($tabel,$tip) { echo '<table id="prima-pagina" cellpadding="5" cellspacing="10"> <tr> <td class="prima-pagina-cell"><table border="1" cellspacing="0" style="font-size: 9pt; text-align: center">'; echo '<tr> <td rowspan="3">Nr. crt.</td> <td rowspan="3">ID</td> <td colspan="4">Date de identificare</td> <td colspan="20">Masuratori somatice</td> <td colspan="25">Calitati motrice</td> <td colspan="7">Calitati psihice</td> <td colspan="3">Teste specifice</td> <td rowspan="3"></td> </tr>'; echo '<tr> <td rowspan="2">Nume</td> <td rowspan="2">Prenume</td> <td colspan="2">Varsta</td> <td rowspan="2">Inaltime</td> <td rowspan="2">Greutate</td> <td colspan="2">Perimetru toracic</td> <td rowspan="2">Elasticitate toracica</td> <td colspan="6">Membre inferioare</td> <td colspan="7">Membre superioare</td> <td rowspan="2">Diametru biacromial</td> <td rowspan="2">Diametru bitrohan</td> <td colspan="3">Viteza</td> <td colspan="4">Indemanare</td> <td colspan="5">Forta</td> <td colspan="3">Rezistenta</td> <td colspan="5">Mobilitate</td> <td colspan="2">Orientare</td> <td rowspan="2">Vedere periferica</td> <td colspan="2">Inteligenta motrica</td> <td rowspan="2">Temperament Below</td> <td rowspan="2">Sociabilitate</td> <td rowspan="2">Curaj</td> <td rowspan="2">Echilibru emotional</td> <td rowspan="2">Disciplina</td> <td rowspan="2">Atentie</td> <td rowspan="2">Motivatie</td> <td rowspan="2">Test 1</td> <td rowspan="2">Test 2</td> 76

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

<td rowspan="2">Test 3</td> </tr>'; echo '<tr> <td>Ani</td> <td>Luni</td> <td>Inspir.</td> <td>Expir.</td> <td>L. picior dr.</td> <td>L. picior st.</td> <td>L. talpa dr.</td> <td>L. talpa st.</td> <td>Perim. glezna dr.</td> <td>Perim. glezna st.</td> <td>L. brat dr.</td> <td>L. brat st.</td> <td>Anvergura</td> <td>L. palma dr.</td> <td>L. palma st.</td> <td>Perim. pumn dr.</td> <td>Perim. pumn st.</td> <td>Reactie</td> <td>Deplasare (30m)</td> <td>Executie</td> <td>Scarita</td> <td>Naveta</td> <td>Matorini dr.</td> <td>Matorini st.</td> <td>Detenta lungime</td> <td>Detenta inaltime</td> <td>Aruncare mg. oina</td> <td>Dinamometru dr.</td> <td>Dinamometru st.</td> <td>Aerobic</td> <td>Anaerobica</td> <td>Anduranta</td> <td>Sfoara dr.</td> <td>Sfoara st.</td> <td>Sfoara lat.</td> <td>Coloana vertebrala</td> <td>Umeri</td> <td>Spatiala</td> <td>Temporala</td> <td>Precizia in miscare</td> <td>Memoria motrica</td> </tr>'; $c=0; $result=mysql_query("SELECT * FROM `$tabel` ORDER BY `nume` ASC, `PRENUME` ASC"); while ($row=mysql_fetch_row($result)) { 77

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

$c++; echo '<tr><td>'.$c.'</td>'; foreach ($row as $item) echo '<td>'.$item.'</td>'; echo '<td>'; if ($tip!= 'vizitator') echo '<span style="color: #4171FA">[<a href="index.php?section=edit&amp;field='.$row[0].'">modifica</a>] [<a href="index.php?section=delete&amp;field='.$row[0].'" onclick="if (!confirm(\'Sunteti sigur ca doriti sa stergeti aceasta inregistrare?\')) {return false;}">sterge</a>]</span>'; // daca utilizatorul nu are doar drepturi de citire afiseaza optiunile de alterare a inregistrarilor tabelei echo '</td></tr>'; } echo '<table></td></tr></table>'; }

1.6.5- Opiunile utilizatorilor


Utilizatorul ADMIN: - Administrare utilizatori Administrarea parolelor, activarea si tergerea utilizatorilor - Modificare baze de date Zona de administrare a bazelor de date pentru paginile site-ului Utilizatorul PROFESOR: - Baze de date-citire scriere modificare ncrcare, descrcare fiiere CSV - Parola cont Modificarea parolelor pentru contul tutor Utilizatorul STUDENT: - Citire i descrcare fiiere CSV

1.7- Ghid de utilizare al aplicaiei :

Pasul 1: - administratorul creaz conturi i acord permisiuni -parola este generat automat Pasul 2: - utilizatorii primesc parola pe e-mail Pasul 3: - utilizatorii se autentific cu datele primite 78

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pasul 4: - profesorii pot adauga informatii in baza de date si pot incarca fisiere CSV Pasul 5: - toti utilizatorii pot vizualiza informatii din baza de date sau le pot descarca in fisiere CSV Restricii: - incarcarea exclusiva a fisierelor de tip CSV - administratorul are drepturi de modificare, stergere a informatiilor despre useri, stergerea contului - utilizatorii nu isi pot modifica decat propriile date

1.6.7- Prezentarea aplicaiei:

Pagina principal a aplicaiei

79

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pagina de administrare utilizatori

Pagina creare cont

80

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pagina de autentificare

Pagina cu lista utilizatorilor site-ului

81

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pagina de adaugare informaii

Pagina de ncarcare fiier

82

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pagina datelor de identificare

83

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pagina de extragere informatii

Pagina de descrcare a bazei de date n fiier CSV

Pagina de golire a bazei de date 84

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pagina de coninut a bazei de date

Pagina cu jurnalul activitilor utilizatorilor 85

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pagina de cont

Pagina de schimbare a parolei 86

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

Pagina de actualizare a informaiilor din cont

Pagina de deconectare

87

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

BIBLIOGRAFIE

1. Julie C. Meloni - Php, MySql i Apache Editura Corint, Bucureti, 2005 2. Robert Dolinger Baze de date i gestiunea tranzaciilor Editura Albastr, Cluj Napoca, 2000 3. Cosmin Vrlan - Macromedia Flash Concepte, exemple, studii de caz, Editura Polirom, 2004 4. Benot Marchal XML by Example 5. Jesus Castagnetto, Harish Rawat, Sascha Schumann, Chris Scollo, Deepak Veliath Profesional PHP Programing

88

UNIVERSITATEA TRANSILVANIA BRAOV FACULTATEA DE MATEMATIC-INFORMATIC

LUCRARE DE LICEN

6. Steve Suering - MySQL Bible 7. MySQL/PHP Database Aplications Jay Greespan and Brad Bulger 8. PHP.net http://www.php.net 9. Netcraft - http://news.netcraft.com

89