You are on page 1of 86

Ghidul proiectului individual la INFORMATIC

Obiective
Proiectul individual este cea mai important pies din programul de absolvire a unui curs, an de nvmnt, perioade de pregtire. Reprezint oportunitatea de a demonstra independen i originalitate, punnd n practic tehnici i cunotine acumulate ntr-un domeniu de studiu. Indiferent de nivelul academic atins, proiectul este expresia individualitii i inspiraiei n efortul de a face proba cunoaterii. Ideea proiectului poate fi o propunere a conductorului, personal sau o combinaie ntre cele dou. Proiectul trebuie s aib alura unei investigaii care se poate termina (sau nu) cu furnizarea unui produs funcional (o aplicaie program).

Consideraii generale:

Cantitatea nu asigur calitatea (mai multe pagini nu nseamn calitate mai bun) Concizia, claritatea i elegana exprimrii sunt caliti care conteaz la evaluare pe lng coninutul n sine Orizontul proiectului ales trebuie s se ncadreze perfect posibilitilor individuale Indiferent de tema proiectului, acesta va conine urmtoarele elemente constitutive (structura exact cu titlurile capitolelor si ierarhia de subcapitole fiind la latitudinea fiecruia): o Pagina de titlu Aceasta va conine titlul proiectului, numele autorului, numele instituiei, anul. o Abstractul Acesta va fi o descriere foarte scurt (pe o jumtate de pagin maxim) a coninutului proiectului, n urma citirii creia, oricine s-i poat face o idee clar asupra problematicii propuse. o Cuprinsul lucrrii (cu indicarea numrului de pagin) o Introducerea Aceast component declar natura i scopul proiectului, obiectivele principale propuse i realizrile corespunztoare acestora. o Corpul proiectului Partea central a proiectului const ntr-un numr de capitole care detaliaz tehnica muncii depuse n vederea atingerii scopului propus al proiectului. Structura acestor capitole este dependent de fiecare proiect n parte (de exemplu pot reflecta dezvoltarea cronologic a unei aplicaii: proiectare, implementare, experiment, optimizare, evaluare etc.). o Concluzii Concluziile proiectului trebuie s puncteze acele lucruri care au fost nvate i remarcate ca rezultat al muncii depuse de-a lungul realizrii proiectului. o Bibliografia Va conine lista cu crile, revistele, articolele, manualele, adresele web, folosite la realizarea proiectului.

Pagina 1 din 86

Pagina 2 din 86

CAPITOLUL I BAZELE HTML 1.1. INTRODUCERE


HTML reprezint o form de marcare orientat ctre prezentarea documentelor text pe o singur pagin, utiliznd un software de redare specializat, numit agent utilizator HTML, cel mai bun exemplu de astfel de software fiind browserul web. HTML furnizeaz mijloacele prin care coninutul unui document poate fi adnotat cu diverse tipuri de metadate si indicaii de redare. Indicaiile de redare pot varia de la decoraiuni minore ale textului, cum ar fi specificarea faptului c un anumit cuvnt trebuie subliniat sau c o imagine trebuie introdus, pn la scripturi sofisticate, hri de imagini si formulare. Metadatele pot include informaii despre titlul si autorul documentului, informaii structurale despre cum este mprit documentul n diferite segmente, paragrafe, liste, titluri etc. si informaii cruciale care permit ca documentul s poat fi legat de alte documente pentru a forma astfel hiperlinkuri.

1.2. DEFINIREA UNUI FISIER HTML


HTML nseamn Hyper Text Markup Language Un fiier HTML este un fiier text care conine tag-uri de marcare (markup tags) Tag-urile de marcare indic browser-ului cum s afieze pagina Extensia unui fiier HTML este htm sau html Un fisier HTML sunt documente n format ASCII si prin urmare pot fi create cu orice editor de texte Exemplu: Se tasteaz n Notepad: o o o o o

Se salveaz fiierul sub denumirea pagina1.html. Se deschide apoi fisierul n browser. Explicaia codului fisierului: Primul tag din fisier este <html>. Acest tag spune browser-ului c acesta este nceputul documentului HTML. Ultimul tag din fisier este </html>. Acest tag spune browser-ului c acesta este sfrsitul documentului HTML. Textul cuprins ntre tag-ul <head> si tag-ul </head> constituie informaie header care nu este afisat n fereastra browser-ului. Textul cuprins ntre tag-urile <title> este titlul documentului afisat n bara de titlu a browser-ului. Textul cuprins ntre tag-urile <body> este textul afisat n browser. Textul cuprins ntre <b> si </b> tags va fi afisat cu font ngrosat (bold).

1.3. ELEMENTE HTML


Elementele HTML sunt definite folosind tag-uri HTML. Tag-uri HTML Tag-urile HTML sunt folosite pentru a marca elementele HTML Tag-urile HTML sunt ncadrate de cele dou caractere < si > Caracterele < si > sunt numite paranteze ascuite Tag-urile HTML sunt n general perechi ca de exemplu <b> si </b>
Pagina 3 din 86

Primul tag din pereche este start tag, iar al doilea este end tag Textul cuprins ntre start si end tag constituie coninutul elementului HTML Tag-urile HTML nu sunt case sensitive, <b> fiind acelasi lucru cu <B> Atribute Tag Atributele tag-urile sunt informaii adiionale despre elementele HTML din pagin. Declararea atributelor se face n pereche nume/valoare astfel:

Atributele sunt adugate ntotdeauna n tag-ul de start al elementului HTML. Exemple: 1. Acest tag defineste elementul body al paginii HTML: <body>. Cu ajutorul unui atribut bgcolor, se poate indica browser-ului culoarea de fundal (rosu) a paginii astfel:

2. Acest tag defineste un tabel HTML: <table>. Cu ajutorul unui atribut de chenar se poate indica browser-ului c tabelul nu va fi ncadrat de chenar (border):

1.3.1 Tag-uri elementare


Cele mai importante tag-uri HTML sunt cele care definesc nceputurile de paragraf (heading-urile), paragrafele si liniile de ntrerupere.

1.3.1.1 Heading-uri
Heading-urile sunt definite cu tag-urile <h1> pn la <h6>, <h1> definindu-l pe cel mai mare, iar <h6> pe cel mai mic. HTML adaug n mod automat o extra linie blank nainte si dup heading.

1.3.1.2 Paragrafe
Paragrafele sunt definite cu tag-ul <p>. HTML adaug n mod automat o extra linie blank nainte si dup paragraf.

1.3.1.3 ntrerupere de linie


Tag-ul <br> este folosit cnd se doreste ncheierea unei linii si trecerea la una nou fr a se ncepe ns un nou paragraf. Tag-ul <br> nu are o pereche end tag.

Pagina 4 din 86

1.3.1.4 Comentarii n HTML


Tag-ul comentariu este folosit pentru a insera comentarii n codul surs HTML. Comentariul este ignorat de ctre browser, el fiind folosit pentru a explica codul.

1.3.1.5 Culoarea de fond


O culoare poate fi precizat n dou moduri: Printr-un nume de culoare: sunt disponibile cel puin 16 nume de culori: aqua, black, fuchsia, gray, green lime, maroon, navy, olive, purple, red, silver, teal, white si yellow. Prin construcia " #rrggbb " unde r (red), g (green), sau b (blue) sunt cifre hexazecimale si pot lua valorile: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, A, b, B, c, C, d, D, e, E, f, F; se pot defini astfel 65536 de culori. Culoarea unei pagini se precizeaz prin intermediul unui atribut al etichetei <body>. Urmtorul exemplu realizeaz o pagin cu fondul de culoare galben.

1.3.1.6 Culoarea textului


Atributul text al etichetei <body> stabileste culoarea <body text=culoare>. n urmtorul exemplu textul are culoarea rosie. textului dup sintaxa:

O etichet poate avea mai multe atribute. Urmtorul exemplu prezint o pagin cu fondul de culoare albastr si textul de culoare galben.

Pagina 5 din 86

Textul afisat este caracterizat de urmtoarele atribute: Mrime (size), Culoare (color), Font (style). Acestea sunt atribute ale etichetei <basefont>. Este o etichet singular (fr delimitator de sfrsit de bloc). <basefont size = numr color = culoare style = font> unde: numr poate fi 1, 2, 3, 4, 5, 6 sau 7; (1 pentru fontul cel mai mic si 7 pentru fontul cel mai mare); culoare este o culoare precizat prin nume sau printr-o construcie RGB; font poate fi un font generic ca "serif", "san serif", "cursive", "monospace", "fantasy" sau un font specific instalat pe calculatorului clientului, ca "Times New Roman", "Helvetica" sau "Arial". Se accept ca valoare si o list de fonturi separate prin virgul, de exemplu: "Times New Roman, serif, monospace". Domeniul de valabilitate al caracteristicilor precizate de aceast etichet ncepe de la locul n care apare eticheta pn la sfrsitul paginii sau pn la urmtoarea etichet <basefont>. Dac acest atribut lipseste, atunci textul din pagina Web are atribute prestabilite sau atribute precizate de browser-ul utilizat. Atributele prestabilite sunt: size = 3, color = black si style = "Times New Roman". Poziionarea coninutului paginii Web fa de marginile ferestrei browser-ului se poate face cu ajutorul a dou atribute ale etichetei <body>: leftmargin (stabileste distana dintre marginea stnga a ferestrei browser-ului si marginea stnga a coninutului paginii); topmargin (stabileste distana dintre marginea de sus a ferestrei browser-ului si marginea de sus a coninutului paginii);

1.3.1.7 Stiluri pentru afiarea textului


Pentru ca un bloc de text s apar n pagin evideniat (cu caractere aldine), trebuie inclus ntre delimitatorii <b>...</b> (b nsemnnd "bold" = ndrzne). Pentru ca un text s fie scris cu caractere mai mari cu o unitate dect cele curente, acesta trebuie inclus ntr-un bloc delimitat de etichetele <big>...</big>. Pentru ca un text s fie scris cu caractere mai mici cu o unitate dect cele curente, acesta trebuie inclus ntr-un bloc delimitat de etichetele <small>...</small>. Pentru ca un text s fie scris cu caractere cursive, acesta trebuie inclus ntr-un bloc delimitat de etichetele <i>...</i> (i nsemnnd "italic"). Pentru a insera secvene de text aliniate ca indice (sub-script) sau ca exponent (super-script), aceste fragmente trebuie delimitate de etichetele <sub>...</sub>, respectiv <sup>...</sup>. Pentru a insera un bloc de caractere subliniate se utilizeaz etichetele <u>...</u> (u nsemnnd "underline"). Pentru a insera un bloc de caractere subliniate, se utilizeaz etichetele <strike>...</strike> sau <s>...</s>.

Pagina 6 din 86

n exemplul urmtor se vor utiliza toate etichetele menionate anterior.

1.3.1.8 Stiluri fizice si logice


Stilurile de scriere a caracterelor unui bloc de text prezentate sunt numite si stiluri fizice ntruct nu s-a acordat nicio atenie semnificaiei informaiei coninute de aceste blocuri. n continuare sunt prezentate stilurile utilizate la formatarea unui bloc. Aceste stiluri in cont de semnificaia pe care o are blocul n cadrul paginii Web. Pentru a pune n eviden (prin stilul cursiv) fragmente de text se utilizeaz etichetele: <cite>...</cite> ("cite" nseamn citat); <em>...</em> ("em" vine de la "emphasize" = a evidenia). n locul lor se poate utiliza eticheta echivalent <i>...</i>. Urmtoarele etichete au efecte similare. Ele permit scrierea fragmentului de text cu caractere monospaiate (de tipul celor folosite de o masin de scris): <code>...</code> ("code" nseamn cod sau surs); <kbd>...</kbd> ("kdb" vine de la "keyboard" = tastatur); <tt>...</tt> ("tt" vine de la "teletype" = teleprinter). Eticheta de tip bloc <blink>...</blink> delimiteaz fragmente de text care clipesc.

Pagina 7 din 86

Exemplul urmtor ilustreaz faptul c etichetele pot fi imbricate. un fragment de text poate fi scris cu aldine si cursive n acelasi timp; pentru un fragment de text se pot folosi simultan stilurile subliniat, exponent, mrit si cursiv. Blocul <q>...</q> permite inserarea in-line a citatelor. Aceste citate sunt afisate de ctre browser cu caractere cursive.

1.3.2 Tag-uri specializate pe blocuri de text


Aceste etichete nu se refer la particularitile caracterelor ce compun textul, ci la funciile pe care le poate avea un bloc de text n cadrul paginii Web. Toate aceste etichete produc automat trecerea la un rnd nou i adugarea unui spaiu suplimentar.

1.3.2.1 Inserarea unei adrese


Dac ntr-o pagin web trebuie inclus o adres, se pot utiliza facilitile oferite de o etichet dedicat: <address>...</address>, ca n exemplul urmtor:

1.3.2.2 Indentarea unui bloc


Pentru ca un bloc de text s fie indentat (marginea din stnga a textului s fie deplasat la dreapta la o anumit distan fa de marginea paginii), acesta trebuie inclus ntre etichetele <blockquote>...</blockquote>.

Pagina 8 din 86

1.3.2.3 Blocul preformatat


ntr-un bloc <pre>...</pre>, semnificaia etichetelor se pstreaz. Blocul <pre>...</pre> este indicat pentru a insera rnduri vide. Caracterul "spaiu " este luat n considerare de browser doar dac este inserat explicit prin construcia &nbsp.

1.3.2.4 Inserarea caracterelor "<" i ">"


ntr-un fiier HTML, caracterele "<" i ">" au o semnificaie special pentru browser aa cum s-a artat la nceputul cursului, ele ncadrnd comenzile i atributele de afiare a elementelor ntr-o pagin. Dac dorim ca un fragment de text s conin astfel de caractere, acest fragment trebuie ncadrat de una dintre perechile de etichete: o <xmp>...</xmp> (80 de caractere pe rnd); o <listing>...</listing> (120 de caractere pe rnd). Aceste marcaje interpreteaz corect caracterele "spaiu", "etichet" i "CR/LF", iar textul afiat este monospaiat.

1.3.2.5 Linii orizontale


ntr-o pagin web pot fi inserate linii orizontale, acest lucru fcndu-se cu ajutorul etichetei <hr>. Configurarea unei linii orizontale se face cu urmtoarele atribute ale etichetei <hr>: o "align" permite alinierea liniei; valorile posibile sunt "left", "center" i "right";
Pagina 9 din 86

o o o o

"width" permite alegerea lungimii liniei; "size" permite alegerea grosimii liniei; "noshade" definete o linie fr umbr; "color" permite definirea culorii liniei.

1.3.2.6 Blocuri <nobr>


Blocul de text cuprins ntre etichetele <nobr>...</nobr> va fi afiat pe o singur linie.

1.3.2.7 Blocuri <div>


Modalitatea cea mai eficient de delimitare i de formatare a unui bloc de text este folosirea delimitatorilor <div>...</div>. Atributul pentru stabilirea caracteristicilor unui bloc <div> (diviziune) este align (aliniere ), iar valorile posibile ale acestuia sunt: o "left" (aliniere la stnga); o "center" (aliniere central); o "right" (aliniere la dreapta). Un bloc <div>...</div> poate include alte subblocuri, n acest caz, alinierea precizat de atributul "align" al blocului are efect asupra tuturor subblocurilor incluse n blocul <div>. Un bloc <div>...</div> mai admite i atributul "nowrap" care interzice ntreruperea rndurilor de ctre browser.
Pagina 10 din 86

1.3.3 Utilizarea imaginilor


Imaginile sunt fiiere cu diverse formate, iar formatele acceptate de ctre browsere sunt: o GIF (Graphics Interchange Format) cu extensia .gif; o JPEG (Joint Photographic Experts Group) cu extensia .jpeg sau .jpg; o XPM (X PixMap) cu extensia .xmp; o XBM (X BitMap) cu extensia .xbm; o BMP (BitMap) cu extensia .bmp (numai cu Internet Explorer); o TIFF (Tagged Image File Format) cu extensia .tif sau .tiff; Cele mai rspndite formate sunt GIF (8 bii pentru o culoare, 256 culori posibile) i JPEG (24 bii pentru o culoare, 16.777.216 culori posibile).

1.3.3.1 Adresa URL a unei imagini


URL ("Uniform Resourse Locator" = identificator unic al resursei) este un standard folosit n identificarea unic a unei resurse n Internet. Imaginile vor avea adresa URL exprimat n funcie de directorul ce conine documentul HTML care face referire la imaginea respectiv. Pentru a insera o imagine ntr-o pagin, se utilizeaz eticheta <img> (de la "image"=imagine), iar pentru identificarea imaginii care va fi inserat se utilizeaz atributul "src" (de la "source"=surs). Dac imaginea se afl n acelai director cu fiierul HTML care face referire la imagine, atunci adresa URL a imaginii este format numai din numele imaginii, inclusiv extensia.

Pagina 11 din 86

1.3.3.2 Alinierea unei imagini


Alinierea unei imagini se face cu atributul "align" care poate lua valorile: o "left" aliniere la stnga; celelalte componente sunt dispuse n partea dreapt; o "right" aliniere la dreapta; celelalte componente sunt dispuse n partea stng; o "top" aliniere deasupra; partea de sus a imaginii se aliniaz cu partea de sus a textului ce precede imaginea; o "middle" aliniere la mijloc; mijlocul imaginii se aliniaz cu linia de baz a textului ce precede imaginea; o "bottom" aliniere la baz; partea de jos a imaginii se aliniaz cu linia de baz a textului.

1.3.3.3 Alinierea textului n jurul imaginii


Atributele "hspace" i "vspace" precizeaz distana n pixeli pe orizontal, respectiv pe vertical, dintre imagine i restul elementelor din pagin. Atributul "alt" admite ca valoare un text care va fi afiat n locul imaginii.

1.3.3.4 Chenarul i dimensionarea unei imagini


Pagina 12 din 86

Pentru adugarea unui chenar n jurul imaginii, se folosete atributul "border" al etichetei <img>. Valorile acestuia sunt numere ntregi pozitive. O imagine are anumite dimensiuni pe orizontal i pe vertical, acestea fiind stabilite n momentul crerii ei. Dac nu se specific altfel, aceste dimensiuni sunt respectate n momentul afirii ei n pagina Web. Dimensiunile prestabilite ale unei imagini pot fi modificate ns prin intermediul atributelor "width" i "height".

1.3.3.5 Folosirea imaginilor ca i legturi


O legtur (link) introduce n pagina Web o zon activ. Pentru a utiliza imaginea "imagine1.jpg" drept legtur ctre pagina index.html se folosete sintaxa: <a href ="index.html"><img src= " imagine1.jpg "></a> n mod prestabilit, imaginea utilizat ca legtur este nconjurat de un chenar avnd culoarea unei legturi. Dac pentru atributul "border" al etichetei <img> se stabilete valoarea 0, acest chenar dispare.

1.3.3.6 Imagini de fond


O imagine poate fi utilizat pentru a stabili fondul unei pagini web. n acest scop se foloseste atributul "background" al etichetei <body>, avnd ca valoare adresa URL a imaginii. Imaginea se multiplic pe orizontal i pe vertical pn umple ntregul ecran.

1.3.4 Linkuri
Legturile (linkurile) transform un text obinuit n hipertext sau hiperlegtur, care premite trecerea nesecvenial de la o informaie aflat pe un anumit server la o alt informaie care se afl n alt loc (pe un alt server, de exemplu). ntr-o pagin web legturile sunt zone active.

1.3.4.1 O legtur ctre o pagin aflat n acelai director


O legtur ctre o pagin se formeaz cu ajutorul etichetei <a> (de la "anchor"=ancor). Pentru a preciza pagina indicat de legtur se utilizeaz atributul "href" al etichetei <a>, care ia valoarea numelui fiierului HTML aflat n acelai director. Zona activ care devine sensibil la click de mouse este format din textul cuprins ntre etichetele <a>...</a>. Prezena etichetei de sfrit n acest caz </a> este obligatorie.

Pagina 13 din 86

1.3.4.2 O legtur ctre o pagin aflat pe acelai disc local


Dac pagina referit se afl pe acelai disc local, dar ntr-un alt director, atunci precizarea poziiei sale n structura de directoare se face folosind adresarea relativ.

1.3.4.3 O legtur ctre un anumit site


n exemplul urmtor se utilizeaz adresa URL www.armyacademy.ro care ncarc pagina de start din site-ul Academiei Forelor Terestre.

1.3.4.4 Folosirea ancorelor


ntr-o pagin pot exista puncte de reper ctre care se definesc legturi. Aceste puncte sunt ancore. O ancor se definete tot prin eticheta <a>. Pentru a defini ancora se utilizeaz atributul "name" care primete ca valoare un nume atribuit ancorei (de exemplu, "reper1"). Pentru a insera o legtur ctre "reper1" definit n aceeai pagin, se utilizeaz eticheta <a> avnd atributul "href" de valoare "#reper1". Pentru a introduce o legtur ctre o ancor definit n alt document (alt pagin) aflat n acelai director de exemplu, atributul "href" primete o valoare de forma "nume_fisier.html#nume_ancora".

Pagina 14 din 86

1.3.4.5 Stabilirea culorilor pentru legturi


Pentru legturi se utilizeaz n mod prestabilit trei culori: o culoare pentru legturile nevizitate (nu s-a efectuat niciun clic pe ele) o culoare pentru legturile vizitate (s-a efectuat cel puin un clic pe ele) o culoare pentru legturile active (deasupra crora se afla mouse-ul). Aceste atribute pot fi stabilite cu ajutorul a trei atribute ale etichetei <body>: link pentru legturile nevizitate; vlink pentru legturile vizitate; alink pentru legturile active. Valorile pe care le pot lua aceste atribute sunt culori definite prin nume sau conform standardului RGB.

1.3.4.6 Legturi ctre fiiere oarecare


ntr-o pagin web pot exista legturi ctre orice tip de fiiere aflate pe orice servere din Internet. Stabilirea acestora se face cu eticheta <a> avnd valoarea atributului "href" egal cu adresa URL a fiierului-destinaie. La clic pe legtura din exemplul urmtor, browser-ul deschide o caset de dialog File download care va permite: o salvarea pe discul local a fiierului; o lansarea n execuie a aplicaiei care interpreteaz corect fiierul de tipul respective.

Pagina 15 din 86

1.3.4.7 Legturi ctre fiiere de sunet


Sunetele pot fi stocate in fiiere de formate diferite: o WAVE/WAV cu extensia .wav; o MPEG Audio cu extensia .mpeg2, sau .mp2; o MIDI cu extensia .mid sau .midi; o AU/m-law cu extensia .au; o AIFF/AIFC cu extensiile .aiff, .aif; O legtur ctre un fiier de sunet se realizeaz folosind eticheta <a> destinat legturilor ctre orice tip de fiiere, unde atributul "href" va avea valoarea egal cu adresa URL a fiierului de sunet. Exemplu:

1.3.4.8 Legturi ctre fiiere videoclipuri


Videoclipurile sunt stocate n fiiere cu diverse formate. Formatele i extensiile corespunztoare pentru fiierele utilizabile n paginile web sunt urmtoarele: o AVI cu extensia .avi. o MPEG cu extensia .mpeg sau mpg; o QuickTime cu extensia .mov; O legtur ctre un fiier videoclip se realizeaz folosind eticheta <a> destinat legturilor ctre orice tip de fiiere, unde atributul "href" va avea valoarea egal cu adresa URL a fiierului videoclip. Exemplu:

1.3.4.9 Utilizarea potei electronice


O pagin web poate conine de asemenea legturi care permit lansarea n execuie a clientului de mail (a aplicaiei de expediere a mesajelor electronice). n construcia adresei URL se va utiliza serviciul Internet mailto:, urmat de o adres e-mail valid.

1.3.5 Liste
Un set de definiii, referine sau indexuri afiate ca liste (ordonate sau nu) constituie unul din elementele des ntlnite n paginile Web. Astfel o list este inclus ntr-o pereche de marcaje de list de definiii: <dl>...</dl> ("definition list"). Caracteristicile unei liste: o un termen al listei este iniiat de eticheta <dt> ("definition term"); o definiia unui termen este iniiat de eticheta <dd> ("definition description"); o definiia unui termen ncepe pe o linie nou i este indentat.
Pagina 16 din 86

1.3.5.1 Liste neordonate


O list neordonat este un bloc de text delimitat de etichetele corespondente <ul>...</ul> ("unordered list"). Fiecare element al listei este iniiat de eticheta <li> (list item). Lista va fi indentat fa de restul paginii Web i fiecare element al listei ncepe pe un rnd nou.

Tag-urile <ul> i <li> pot avea un atribut "type" care stabilete caracterul afiat n faa fiecrui element al listei. Valorile posibile ale acestui atribut sunt: "circle" (cerc) "disc" (disc plin) (valoarea prestabilit); "square" (ptrat) Listele neordonate pot fi imbricate pe mai multe niveluri

Pagina 17 din 86

1.3.5.2 Liste ordonate


O list ordonat de elemente este un bloc de text delimitat de etichetele <ol>...</ol> ("ordered list"). Fiecare element al listei este iniiat de eticheta <li> (list item). Lista va fi indentat fa de restul paginii Web i fiecare element al listei ncepe pe un rnd nou.

Tag-urile <ol> i <li> pot avea un atribut "type" care stabilete tipul de caractere utilizate pentru ordonarea listei.Valorile posibile sunt: o "A" pentru ordonare de tipul A, B, C, D; o "a" pentru ordonare de tipul a, b, c, d; o "I" pentru ordonare de tipul I, II, III, IV; o "i" pentru ordonare de tipul i, ii, iii, iv; o "1" pentru ordonare de tipul 1, 2, 3, 4 etc. (cifre arabe opiune prestabilit);

Tag-ul <ol> are un atribut "start" care stabilete valoarea iniial a secvenei de ordonare. Valoarea acestui atribut trebuie s fie un numr ntreg pozitiv. Urmtorul exemplu este o list ordonat cu litere mici, ncepnd de la valoarea c.

Pagina 18 din 86

Tag-ul <li> poate avea un atribut "value" care stabilete valoarea pentru elementul respectiv al listei. Valoarea acestui atribut trebuie s fie un numr ntreg pozitiv (vezi urmtorul exemplu).

1.3.6 Tabele
Tabelele permit crearea unei matrici de celule, fiecare celul avnd propriile opiuni pentru culoarea fondului i a textului, alinierea textului etc. Pentru a insera un tabel se folosesc etichetele <table>...</table>. Un tabel este format din mai multe rnduri. Pentru a insera un rnd ntr-un tabel se folosesc etichetele <tr>...</tr> ("table row"). Folosirea etichetei de sfrit </tr> este opional. Un rnd este format din mai multe celule ce conin date. O celul de date se introduce cu eticheta <td>..</td>.

n mod prestabilit, un tabel nu are chenar. Pentru a aduga un chenar unui tabel, se utilizeaz un atribut al etichetei <tabel> numit border. Acest atribut poate primi ca valoare orice numr ntreg (inclusiv 0) i reprezint grosimea n pixeli a chenarului tabelului. Dac atributul "border" nu este urmat de o valoare, atunci tabelul va avea o grosime prestabilit egal cu 1 pixel, o valoare egal cu 0 a grosimii semnificnd absena chenarului.

Pagina 19 din 86

1.3.6.1 Alinierea unui tabel


Alinierea unui tabel ntr-o pagin web utilizeaz atributul "align" al etichetei <table>, cu urmtoarele valori posibile: "left" (valoarea implicit), "center" i "right". Alinierea este important pentru textul ce nconjoar tabelul. Astfel: o dac tabelul este aliniat stnga (<table align="left">), atunci textul care urmeaz dup punctul de inserare al tabelului va fi dispus n partea dreapt a tabelului. o dac tabelul este aliniat dreapta (<table align="right">), atunci textul care urmeaz dup punctul de inserare al tabelului va fi dispus n partea stng a tabelului. o dac tabelul este aliniat centrat (<table align="center">), atunci textul care urmeaz dup punctul de inserare al tabelului va fi afiat pe toat limea paginii, imediat sub tabel.

Distana dintre tabel i celelalte elemente din pagina web poate fi stabilit cu ajutorul atributelor "hspace" i "vspace" ale etichetei <table>. Valoarea atributului "hspace" poate fi orice numr pozitiv, inclusiv 0, i reprezint distana pe orizontal dintre tabel i celelalte elemente ale paginii web. Valoarea atributului "vspace" poate fi orice numr pozitiv, inclusiv 0, i reprezint distana pe vertical dintre tabel i celelalte elemente ale paginii web.

1.3.6.2 Definirea culorii de fond a tabelului


Culoarea de fond se stabilete cu ajutorul atributului "bgcolor", care poate fi ataat ntregului tabel prin intermediul etichetei <table>, unei linii prin intermediul etichetei <tr> sau unei celule de date intermediul etichetei <td>. Valorile pe care le poate lua atributul "bgcolor" sunt cele cunoscute pentru o culoare. Dac n tabel sunt definite mai multe atribute "bgcolor", atunci prioritatea este urmtoarea: <td>, <tr>, <table>.

Pagina 20 din 86

Culoarea textului din fiecare celul se poate stabili cu construcia: <font color="valoare">...</font>.

1.3.6.3 Dimensionri n interiorul tabelului


Distana dintre dou celule vecine se definete cu ajutorul atributului "cellspacing" al etichetei <table>. Valorile acestui atribut pot fi numere ntregi pozitive, inclusiv 0, i reprezint distana n pixeli dintre dou celule vecine. Valoarea prestabilit a atributului "cellspacing" este 2.

Distana dintre marginea unei celule i coninutul ei poate fi definit cu ajutorul atributului "cellpadding" al etichetei <table>. Valorile acestui atribut pot fi numere ntregi pozitive i reprezint distana n pixeli dintre celul i coninutul ei. Valoarea prestabilit a atributului "cellpadding" este 1.

1.3.6.4 Dimensionarea unui tabel


Dimensiunile unui tabel limea i nlimea pot fi stabilite exact prin intermediul celor dou atribute "width" i "height", ale etichetei <table>. Valorile acestor atribute pot fi: o numere ntregi pozitive reprezentnd limea, respectiv nlimea n pixeli a tabelului; o numere ntregi ntre 1 i 100, urmate de semnul %, reprezentnd procentul din limea i nlimea total a paginii.

Pagina 21 din 86

Exemplul urmtor permite afiarea unui text poziionat n centrul paginii web folosind facilitile oferite de crearea unui tabel.

1.3.6.5 Titlul i capul unui tabel


Unui tabel i se poate ataa un titlu cu ajutorul etichetei <caption>. Aceast etichet trebuie plasat n interiorul etichetelor <table>...</table>, dar nu n interiorul etichetelor <tr> sau <td>. Titlul unui tabel poate fi aliniat cu ajutorul atributului "align" al etichetei <caption> care poate lua una dintre valorile: o "bottom" (sub tabel); o "top" (deasupra tabelului); o "left" (la stanga tabelului); o "right" (la dreapta tabelului).

Un tabel poate avea de asemenea celule cu semnificaia de cap de tabel. Aceste celule sunt introduse cu eticheta <th> ("tabel header") n loc de <td>. Toate atributele care pot fi ataate etichetei <td> pot fi de asemenea ataate etichetei <th>. Coninutul celulelor definite cu <th> va fi scris cu caractere aldine i centrat.

Pagina 22 din 86

1.3.6.6 Alinierea coninutului unei celule


Alinierea pe orizontal a coninutului unei celule se face cu ajutorul atributului "align" care poate lua valorile: o "left" (la stnga); o "center" (centrat, valoarea prestabilit); o "right" (la dreapta); o "char" (alinierea se face fa de un caracter). Alinierea pe vertical a coninutului unei celule se face cu ajutorul atributului "valign" care poate lua valorile: o "baseline" (la baz); o "bottom" (jos); o "middle" (la mijloc, valoarea prestabilit); o "top" (sus). Aceste atribute pot fi ataate att etichetei <tr> pentru definirea tuturor elementelor celulelor unui rnd, ct i etichetelor <td> i <th> pentru a stabili alinierea textului ntr-o singur celul.

1.3.6.7 Dimensionarea exact a celulelor unui tabel


Dimensiunea unei celule de tip <td> sau de tip <th> poate fi stabilit exact cu ajutorul a dou atribute ale acestor etichete: "width" pentru lime i "height" pentru nlime. Valorile posibile ale acestor atribute sunt: o numere ntregi pozitive (inclusiv 0) reprezentnd dimensiunea n pixeli a limii, respectiv a nlimii unei celule; o procente din limea, respectiv nlimea tabelului.

Pagina 23 din 86

1.3.6.8 Unificarea mai multor celule


Cu ajutorul a dou atribute ale etichetelor <td> i <th>, o celul se poate extinde peste celule vecine astfel: o extinderea unei celule peste celulele din dreapta ei se face cu ajutorul atributului "colspan", a crui valoare determin numrul de celule care se unific. o extinderea unei celule peste celulele de dedesubt se face cu ajutorul atributului "rowspan", a crui valoare determin numrul de celule care se unific. Sunt posibile extinderi simultane ale unei celule pe orizontal i pe vertical. n acest caz, n etichetele <td> i <th> vor fi prezente ambele atribute "colspan" i "rowspan".

1.3.6.9 Folosirea atributului "nowrap"


Atributul "nowrap" aparine elementelor <td> i <th>; el interzice ntreruperea unei linii de text. Astfel n tabel pot aprea coloane cu o lime orict de mare.

Pagina 24 din 86

1.3.6.10 Tabel cu celule vide


Dac un tabel are celule vide, atunci aceste celule vor aprea n tabel fr un chenar de delimitare. n scopul afirii unui chenar pentru celule vide se utilizeaz urmtoarele trucuri: o dup <td> se utilizeaz &nbsp; o dup <td> se utilizeaz <br>. Caracterul &nbsp; (no break space) este de fapt caracterul spaiu. Un spaiu introdus prin intermediul acestui caracter nu va fi ignorat de browser.

1.3.6.11 Atributele "frame" i "rules"


Atributul "frame" al etichetei <table> permite specificarea prilor din chenarul unui tabel care vor fi afiate. Valorile posibile ale acestui atribut sunt: o "void" elimin toate muchiile exterioare ale tabelului; o "above" afieaz o muchie n partea superioar a cadrului tabelului; o "below" afieaz o muchie n partea inferioar a cadrului tabelului; o "hsides" afieaz cte o muchie n partea superioar i inferioar cadrului tabelului; o "lhs" afieaz o muchie n partea din stnga a cadrului tabelului; o "rhs" afieaz o muchie n partea din dreapta a cadrului tabelului; o "vsides" afieaz o muchie n partea din stnga i din dreapta a cadrului tabelului; o "box" afieaz o muchie pe toate laturile cadrului tabelului; o "border" afieaz o muchie pe toate laturile cadrului tabelului. Atributul "rules" al etichetei <table> permite alegerea unor delimitatori pentru celulele unui tabel. Valorile posibile sunt: o "none" elimin toate muchiile interioare ale tabelului; o "groups" afieaz muchii orizontale ntre toate grupurile din tabel. Grupurile sunt specificate prin elementele <thead>, <tbody>, <tfoot> i <colgroup>. o "rows" afieaz muchii orizontale ntre toate liniile tabelului; o "cols" afieaz muchii verticale ntre toate coloanele tabelului; o "all" afieaz muchii ntre toate liniile i coloanele.

Pagina 25 din 86

1.3.7 Cadre (ferestre) HTML


Ferestrele sau cadrele permit definirea de subferestre n fereastra browser-ului, n care s fie ncrcate documente HTML diferite. Ferestrele sunt definite ntr-un fiier HTML special, n care blocul <body>...</body> este nlocuit de blocul <frameset>...</frameset>. n interiorul acestui bloc, fiecare cadru este introdus prin eticheta <frame>. Un atribut obligatoriu al etichetei <frame> este "src", care primete ca valoare adresa URL a documentului HTML care va fi ncrcat n acel frame. Definirea cadrelor se face prin mprirea ferestrelor (i a subferestrelor) n linii i coloane: o mprirea unei ferestre ntr-un numr de subferestre de tip coloan se face cu ajutorul atributului "cols" al etichetei <frameset> ce descrie acea fereastr; o mprirea unei ferestre ntr-un numr de subferestre de tip linie se face cu ajutorul atributului "rows" al etichetei <frameset> ce descrie acea fereastr; o valoare atributelor "cols" i "rows" este o list de elemente separate prin virgul, care descriu modul n care se face mprirea. Elementele listei pot fi: 1. un numr ntreg de pixeli; 2. procente din dimensiunea ferestrei; 3. n* care nseamn n pri din spaiul rmas. Exemplu 1: cols = 200,*,50%,* nseamn o mprire n 4 subferestre, dintre care prima are 200 pixeli, a treia ocup jumtate din spaiul total disponibil, iar a doua i a patra ocup n mod egal restul de spaiu rmas disponibil. Exemplu 2: cols = 200,1*,50%,2* nseamn o mprire n 4 subferestre, dintre care prima are 200 pixeli, a treia ocup jumtate din spaiul total disponibil, iar a doua i a patra ocup restul de spaiu rmas disponibil, care se mparte n trei pri egale, a doua fereastr ocupnd o parte, iar a patra ocupnd 2 pri: o dac mai multe elemente din list sunt configurate cu *, atunci spaiul disponibil rmas pentru ele se va mpri n mod egal. o subfereastr poate fi un cadru (folosind <frame>) n care se va ncrca un document HTML sau poate fi mprit la rndul ei la alte subfereste (folosind <frameset>).

n exemplul urmtor este creat o pagin cu trei cadre mixte. Pentru a o crea se procedeaz din aproape n aproape: mai nti, pagina este mprit n dou subferestre de tip coloan, dup care a doua subfereastr este mprit n dou subferestre de tip linie.

Pagina 26 din 86

1.3.7.1 Bare de defilare


Atributul "scrolling" al etichetei <frame> este utilizat pentru a aduga unui cadru o bar de derulare care permite navigarea n interiorul documentului afiat n interiorul cadrului. Valorile posibile sunt: o "yes" barele de derulare sunt adugate ntotdeauna; o "no" barele de derulare nu sunt utilizabile; o "auto" barele de derulare sunt vizibile doar atunci cnd este necesar.

Dac este prezent atributul "noresize" al etichetei <frame>, acesta inhib posibilitatea prestabilit de redimensionare a cadrului cu ajutorul mouse-ului.

1.3.7.2 Poziionarea documentului n interiorul cadrului


Atributele "marginheight" i "marginwidth" ale etichetei <frame> permit stabilirea distanei n pixeli dintre coninutul unui cadru i marginile verticale, respectiv orizontale ale cadrului. Valorile posibile sunt exprimate n numrul de pixeli sau procentul din limea, respectiv din nlimea cadrului.

1.3.7.3 Ferestre-destinaii pentru legturi


n mod prestabilit, la efectuarea unui clic pe o legtur, noua pagin (ctre care indic legtura) o nlocuiete pe cea curent n aceeai fereastr (acelai cadru). Acest comportament se poate schimba n dou moduri: o prin plasarea n blocul <head>...</head> a unui element <base> care precizeaz prin intermediul atributului "target" numele ferestrei (cadrului) n care se vor ncrca toate paginile noi referite de legturile din pagina curent conform sintaxei: <base target="nume_frame">
Pagina 27 din 86

o prin plasarea n eticheta <a> a atributului "target", care precizeaz numele cadrului n care se va ncrca pagina nou referit de legtur, conform sintaxei: <a href="adresa" target="nume_frame">...</a> Observaie: o dac este prezent att un atribut target n <base>, ct i un atribut "target" n <a>, atunci cele precizate de atributul "target" din <a> au prioritate. Numele unui cadru este stabilit prin atributul "name" al etichetei <frame> conform sintaxei: <frame name="nume_frame"> n exemplul urmtor este prezentat o pagin cu dou cadre, unul numit "left" i cellalt numit "main". Toate legturile din cadrul "left" ncarc paginile n cadrul "main".

Atributul "target" al etichetei <frame> accept urmtoarele valori cu semnificaiile: o "_self" (ncrcarea noii pagini are loc n cadrul curent); o "_blank" (ncrcarea noii pagini are loc ntr-o fereastr nou anonim); o "_parent" (ncrcarea noii pagini are loc n cadrul printe al cadrului curent dac acesta exist, altfel are loc n fereastra browser-ului curent); o "_top" (ncrcarea noii pagini are loc n fereastra browser-ului ce conine cadrul curent).

1.3.8 Stiluri
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. Un stil reprezint un mod de a scrie un bloc de text (anumite valori pentru font: mrime, culoare, alinieri, distane fa de margini etc.). Stilurile permit personalizarea paginilor web. Exist dou modaliti de a defini un stil: o sintaxa CSS (Cascading Style Sheets="foi in stilul cascada"); o sintaxa Javascript.
Pagina 28 din 86

Tehnologia CSS permite crearea unui stil pentru fiecare tag HTML ntrebuinat la un moment dat, putnd ulterior s aplice acest stil n toate paginile site-ului pentru elementul respectiv (pentru tag-ul HTML stilizat). Standardul CSS permite informaiilor cu privire la stil s fie specificate i referite n mai multe feluri: stilurile pot fi specificate n interiorul fiecrui tag HTML n parte, n cadrul seciunii HEAD a documentelor HTML sau ntr-un fiier extern cu extensia ".CSS". n interiorul aceluiai document HTML pot fi referite mai multe fiiere CSS externe. Sintaxa CSS este alctuit din trei pri: un selector, o caracteristic i o valoare. Selectorul este elementul/tag-ul definit, caracteristica este atributul care se dorete a fi schimbat i fiecare caracteristic poate lua o valoare. Caracteristica i valoarea sunt separate de semnul (:) i sunt ncadrate de acolade:

1.3.8.1 Stiluri dedicate


Aceste stiluri se aplic blocurilor de text pentru care sunt definite. De exemplu:

Toate titlurile h1 care apar n fiier vor fi de culoare roie i centrate. Dac se dorete acelai stil pentru mai multe elemente (de exemplu: "h1", "h2" i "p"), atunci se utilizeaz o list a acestor elemente, separate prin virgul:

1.3.8.2 Clase de stiluri


Aceste stiluri permit definirea unui stil general i folosirea lui oriunde este necesar. De exemplu: se definete o clas de stiluri "ac" (albastru i centrat) n interiorul blocului <style>...</style>, aflat la rndul lui n blocul <head>...</head>:

Dac se dorete ca un titlu de tipul h2 s foloseasc clasa de stiluri "ac", atunci se specific:

Observaii: "all" aflat n faa clasei de stiluri "ac" indic faptul c aceast clas este aplicabil tuturor blocurilor de text, atunci cnd acest lucru este necesar. La utilizarea clasei de stiluri n cadrul unui element se folosete atributul "class" avnd ca valoare numele clasei de stil. Acesta este un atribut universal adic este aplicabil tuturor elementelor. n interiorul unui bloc <style>...</style>, comentariile sunt blocuri delimitate de /* i */ (ca n C, C++, Java i JavaScript).

Pagina 29 din 86

Dac se dorete ca o clas de stiluri s fie aplicabil numai pentru anumite elemente ale documentului (de exemplu: "p"), atunci n construcie va aprea specificat acest element (de exemplu: "p.rc").

1.3.8.3 Stiluri identificate


Toate elementele unui document admit un atribut universal numit "id". Atributul "id" poate identifica stilul utilizat de un element. Pentru a utiliza un stil "identificat" se procedeaz astfel: o n blocul <style>...</style> se introduce definiia stilului conform sintaxei:

o n elementul n care se dorete utilizarea local a acestui stil, se folosete atributul "id" care primete ca valoare numele stilului definit anterior. o dac se dorete ca un stil "identificat" s fie aplicabil numai pentru anumite elemente ale documentului (de exemplu: "h2"), atunci n construcia selectorului va aprea acest element (de exemplu: "h2#ac").

1.3.8.4 Stiluri in-line


Stilurile in-line sunt definite chiar n eticheta care declar blocul n care se dorete aplicarea acestor stiluri. Pentru aceasta se utilizeaz atributul universal "style" a crui valoare nu va mai fi cuprins ntre acolade {..}, ci ntre ghilimele "...". De exemplu:

Dac se dorete utilizarea unui anumit style pentru un fragment de text, atunci se include acest text ntr-un bloc cu ajutorul delimitatorilor <span>...</span>, dup care se utilizeaz atributul "style" pentru eticheta <span>.

1.3.8.5 Stiluri definite n fiiere externe


Stilurile definite n interiorul unui bloc <style>...</style> pot fi transferate ntr-un fiier extern existnd astfel posibilitatea utilizrii lor n mai multe fiiere HTML. Pentru a utiliza un stil definit ntr-un fiier extern se procedeaz astfel: 1. Se creeaz un fiier care s conin numai descrierea stilurilor i se salveaz cu extensia .css sau .html. Coninutul acestui fiier coincide cu coninutul unui bloc <style>...</style>, fr ca aceti delimitatori s fie inclui n acest caz.
Pagina 30 din 86

2. n fiierul HTML care va utiliza stilurile definite n fiierul creat la punctul 1, se include n blocul <head>...</head> o etichet <link> avnd trei atribute: atributul "rel" cu valoarea "stylesheet"; atributul "href" cu valoarea-adres URL a fiierului creat la punctul 1; atributul "type" cu valoarea "text/css". Exemplu de fiier HTML cu un CSS extern:

Pagina 31 din 86

Fiierul CSS ("stil.css") asociat, plasat n acelai director cu fiierul html, este urmtorul:

3. Documentul CSS se poate importa n pagina web.

Importul trebuie declarat imediat dup tag-ul <style>, naintea oricrei alte linii de cod. n exemplul de mai sus, s-a realizat importul n pagina curent a fiierului x.css din directorul fis al site-ului www.domeniu.net.

1.4. JAVASCRIPT
Pagina 32 din 86

JavaScript este un limbaj de scripting dezvoltat la origine de Netscape, permind scrierea de secvene de program care se execut la apariia unui eveniment utilizator. Acest limbaj de programare de tip script este utilizat pentru definirea comportamentului elementelor dintr-o pagin web. Spre deosebire de Java, unde codul este compilat i scris n fiiere separate numite appllet-uri, codul JavaScript este inclus ca parte integrant a codului-surs HTML i nu necesit compilri sau preprocesri, fiind un limbaj interpretat. O aplicaie simpl JavaScript care determin apariia i derularea unui mesaj este urmtorul exemplu:

Scriptul este ncadrat de marcajele <script>...</script> i toat construcia este nglobat ntrun comentariu astfel nct programele de navigare care nu interpreteaz JavaScript nu vor fi derulate de scriptul n sine.

1.4.1 Evenimente
n programarea JavaScript evenimentele sunt foarte importante. Evenimentele sunt de cele mai multe ori declanate de aciuni ale utilizatorului. Dac utilizatorul apas un buton, un eveniment de tip "Click" are loc. Dac mouse-ul este deasupra unei legturi, atunci un eveniment de tip "MouseOver" are loc. Pentru ca programul JavaScript s reacioneze la unele evenimente, exist manageri de evenimente sau gestionari de evenimente "event-handlers". Un buton poate crea o fereastr atunci cnd este apsat: aceasta nseamn c fereastra apare ca o reacie la evenimentul "Click". Managerul de evenimente (event-handler-ul) care trebuie utilizat este numit "onClick", iar acesta spune brwoser-ului computerului utilizator ce s fac atunci cnd evenimentul are loc. Urmtorul cod este un exemplu simplu de "event-handler onClick":

n codul JavaScript de mai sus se observ crearea unui buton cu ajutorul unui formular. Secvena de cod nou este codul JavaScript onClick="alert('Reactie la evenimentul Click')" n interiorul tag-ului <input>. Codul n cauz definete ce se ntmpl cnd butonul este apsat: atunci cnd un eveniment "Click" are loc, computerul execut alert ('Reactie la evenimentul Click'). Acesta este de fapt codul JavaScript (se observ c nu se utilizeaz tag-ul <script> n acest caz). "Alert()" permite crearea de ferestre de avertizare (de tip popup windows), n interiorul parantezelor specificndu-se un ir. n acest caz irul este 'Reactie la evenimentul Click' i este textul ce va fi afiat n fereastra de avertizare. Deci scriptul dat ca exemplu creeaz o fereastr cu coninutul 'Reactie la evenimentul Click' atunci cnd utilizatorul apas butonul. Evenimentele gestionate cu JavaScript sunt date n tabelul urmtor:

Pagina 33 din 86

Exemplul 1: n acest exemplu se folosete evenimentul click.

1.4.2 Funcii
Funciile constituie o metod profesional de a lega mai multe comenzi mpreun. Ca exemplu simplu este dat un script care furnizeaz un anumit text de dou ori consecutiv:

n scriptul din seciunea BODY a documentului HTML s-a definit i apelat o funcie. Definirea s-a realizat cu urmtoarele linii de cod:

Comenzile din interiorul {} in de implementarea funciei scrieText(). Aceasta nseamn c ambele comenzi "document.write()" vor fi executate prin apelarea funciei. n acest exemplu sunt trei apelri ale funciei, deci textul va fi scris de dou ori.
Pagina 34 din 86

Exemplul 2: acest exemplu va schimba culoarea de fond a paginii prin intermediul funciilor i evenimentului click.

Exemplul 3: n acest exemplu se va modifica o imagine atunci cnd cursorul este poziionat pe ea. Exist dou versiuni ale imaginii: imaginea "on" (1.gif corespunztoare cursorului poziionat deasupra imaginii) i (2.gif corespunztoare cursorului poziionat nimaginea "off" exteriorul imaginii). Amndou imaginile se afl n folderul /imagini. Pentru a crea efectul "mouseover", tag-ul <img> este nglobat ntr-un hyperlink care cuprinde handler-ele de eveniment onMouseOver i onMouseOut:

Pagina 35 din 86

n seciunea <head> a paginii se afl codul JavaScript care prencarc fiierele imagine 1.gif i 2.gif i definete funciile event handler:

Astfel codul-surs al fiierului html n ntregime este urmtorul:

Pagina 36 din 86

CAPITOLUL II PHP 2.1. INTRODUCERE


PHP este un limbaj de programare care ruleaz pe partea de server, proiectat special pentru WEB i destinat realizrii paginilor web dinamice care s interacioneze cu utilizatorul. PHP este un produs Open Source (cu acces la codul-surs), putnd fi folosit, modificat i redistribuit, toate acestea n mod gratuit. Iniial, PHP era acronimul de la Personal Home Page, i acum este acronimul pentru PHP Hypertext Preprocessor. Versiunea actual a PHP este 5.1 ntr-o pagin HTML se nglobeaz cod PHP care va fi executat la fiecare vizitare a paginii. Codul PHP este interpretat pe serverul WEB (Apache) care va genera un cod HTML transmis mai departe utilizatorului (browser-ului). Pagina de baz pentru PHP este: http://www.php.net Scripturile PHP se scriu n orice editor de text. Pentru o mai bun vizualizare a codului php scris este nevoie de un editor de text profesional, ca de exemplu PHPEdit 1.2, descrcabil de la adresa http://www.waterproof.fr/products/PHPEdit/download.php. Exemplele folosite pe parcursul lucrrii au fost rulate n urma instalrii unui pachet software complet care conine Apache + PHP + MySQL+phpMyAdmin,descrcabilldelaadresa http://ovh.dl.sourceforge.net/sourceforge/quickeasyphp/easyphp1-8_setup.exe.

2.2 CREAREA UNUI SCRIPT PHP


Codul php este ncadrat ntre etichetele <? i ?> sau <?php i ?> Exemplu:

Se va accesa directorul unde este instalat i server-ul web (n acest caz: C:\Program Files\EasyPHP-1.8\) i se va salva scriptul n directorul WWW, sub numele ex1.php. Directorul WWW este directorul-rdcin de unde server-ul tie s listeze paginile. Observaie: Pentru o mai bun organizare a lucrului, se poate crea n interiorul lui WWW un alt director, WORK, n care se salveaz scriptul php creat. Textul va fi afiat n pagin cu ajutorul construciei echo, care este delimitat de ghilimelele simple sau ghilimelele duble . Instruciunea echo e folosit pentru a trimite date de ieire sub form de text unui browser web. Rularea scriptului presupune urmtorii pai: 1. lansarea pachetului de programe EasyPHP-1.8

Pagina 37 din 86

2. accesarea comenzii Local Web

3. indicarea scriptului php din directorul work

4. Rezultatul va fi urmtorul:

Pagina 38 din 86

Exemplu de folosire a ghilimelelor simple, respectiv duble n construcia echo

Se observ c ghilimelele construciei echo intr n conflict cu ghilimelele care ncadreaz numele fiierului din tag-ul a href. Pentru a evita aceast situaie se procedeaz astfel: Rezolvare a.) n interiorul tag-ului a href se folosesc ghilimele duble:

Rezolvare b.) n interiorul tag-ului a href se folosesc ghilimelele simple precedate de caracterul backslash \ :

2.3. VARIABILE PHP


O valoare cu nume se numete variabil, fiind posibil modificarea valorii asociate numelui. O variabil php este precedat de simbolul dolarului ($). Asocierea unei valori unei variabile se face printr-o instruciune de atribuire, aadar construcia unei variabile este de forma: $nume_variabila = ; sau $nume_variabila = ; Caracterul punct i virgul; ncheie instruciunea de atribuire. Forma valorii unei variabile se numete tipul variabilei. Variabilele se comport n funcie de tipul de dat pe care l conin. nainte de a descrie tipurile de variabile folosite n php se dau dou exemple de folosire a variabilelor. Exemplu de folosire a unei variable de tip ir (string):

Pagina 39 din 86

Numele variablei este: a, iar valoarea ei este: Cursul de php. De observat c n construcia echo apare o concatenare de trei iruri (realizat cu operatorul punct.).

Exemplu de folosire a variabilelor de tip numeric:

2.3.1 Tipuri de variabile

Tipul unei variabile se refer la genul de date pe care aceasta le conine. PHP are opt tipuri de variabile. Patru dintre acestea sunt tipuri scalare (boolean, integer, float i string), dou sunt tipuri compuse (array i object), iar alte dou sunt tipuri speciale (resource i null). De asemenea, din motive de lizibilitate, au fost introduse trei pseudotipuri: mixed, number i callback. Mai exist i tipul double, dar semnificaia acestuia este aceeai cu cea a tipului float. Cele dou denumiri coexist doar din motive "istorice". Tipul unei variabile nu este specificat de ctre programator, ci este stabilit n timpul execuiei n funcie de contextul n care este folosit variabila. Tipul boolean: Variabilele de acest tip pot avea doar dou valori: ADEVRAT sau FALS. Aceste valori pot fi indicate prin cuvintele-cheie TRUE sau FALSE (pentru ambele nu se face distincie ntre literele mari i literele mici). Exist posibilitatea de a converti o variabil de orice tip la tipul boolean. n momentul efecturii unei conversii, sunt convertite la valoarea FALSE urmtoarele valori: numrul ntreg 0; numrul real 0.0; irul vid; irul "0"; un vector fr niciun element; un obiect fr nicio variabil membru;
Pagina 40 din 86

o variabil de tipul NULL; o variabil nedefinit. Orice alt valoare este convertit la valoarea TRUE (inclusiv resursele). Tipul integer: O variabil de tip integer reprezint o valoare din mulimea numerelor ntregi. Aceste numere pot fi specificate n baza 10, n baza 16 sau n baza 8, conveniile fiind aceleai ca i n limbajele C/C++ sau Java. Modul de reprezentare depinde de platforma utilizat; de obicei se folosete reprezentarea pe 32 de bii. Interpretorul PHP nu ofer suport pentru numerele ntregi fr semn. Trebuie remarcat faptul c n PHP nu exist niciun operator pentru efectuarea de mpriri ntregi. De exemplu, rezultatul operaiei 5/2 nu va fi numrul ntreg 2 (ca n C/C++ sau Java), ci numrul real (float) 2.5. i pentru numerele ntregi exist posibilitatea efecturii de conversii: valoarea logic TRUE este convertit la valoarea ntreag 1; valoarea logic FALSE este convertit la valoarea ntreag 0; un numr real este convertit prin "rotunjire nspre 0"; aadar, valoarea real 3.5 va fi convertit la valoarea ntreag 3, n timp ce valoarea real -3.5 va fi convertit la valoarea ntreag -3; un ir de caractere este convertit lund n considerare doar primele caractere care conin informaii numerice, aadar irul "102" va fi convertit la valoarea ntreag 102; de asemenea irul "102 pachete" va fi convertit tot la valoarea 102; dac primele caractere nu conin informaii numerice, rezultatul conversiei va fi valoarea 0. Tipul float: O variabil de tip float poate fi specificat folosind fie forma zecimal, fie cea tiinific (cu exponent). La fel ca i n cazul tipului integer, precizia variabilelor de tipul float este dependent de platforma utilizat. De obicei se folosete standardul IEEE 64. Exist posibilitatea de a converti o variabil de orice tip la tipul float. Pentru numerele reale se pot efectua urmtoarele conversii: un ir de caractere este convertit lund n considerare doar primele caractere care conin informaii numerice; n toate celelalte cazuri se realizeaz conversii la numere ntregi care apoi sunt convertite la valorile reale corespunztoare. Tipul string: O variabil de tip string reprezint un ir de caractere. Un caracter se reprezint pe un octet, deci exist 256 de caractere distincte. Acest lucru implic faptul c interpretorul PHP nu ofer suport nativ pentru setul de caractere Unicode. Lungimea variabilelor de tip string nu este limitat de ctre interpretor. Literalii de tip ir de caractere pot fi specificai n trei moduri diferite: prin folosirea ghilimelelor simple (exemplu $a='acesta este un sir de caractere'). Pentru a avea n cadrul irului simbolul "`", atunci naintea acestuia trebuie scris caracterul "\", iar pentru a putea specifica simbolul "\", acesta trebuie dublat; prin folosirea ghilimelelor duble. Folosind aceast notaie, pot fi specificate mai multe caractere speciale, pe lng caracterele de la varianta anterioar, printre care: sfrit de linie ("\r"), rnd nou ("\n"), tab orizontal ("\t"), semnul dolar ("\$"), ghilimelele duble ("\""), secvene de caractere pentru specificarea faptului c o expresie regular este n notaie octal ("\ [0-7]{1,3}") i secvenele de caractere pentru specificarea faptului c o expresie regular este n notaie hexazecimal ("\x[0-9A-Fa-f]{1,2}"). Cel mai important lucru este acela c, folosind acest mod de specificare a literalilor de acest tip, numele de variabile care apar n interior vor fi transformate n valoarea lor. De exemplu, dac $a este o variabil de tipul integer i are valoarea 45, atunci irul de caractere "Variabila a are valoarea $a." va fi transformat n irul "Variabila a are valoarea 45". notaia heredoc. Acest tip de notaie a fost introdus la versiunea 4 a interpretorului PHP. Pentru a specifica un ir de caractere folosind aceast notaie, trebuie utilizat operatorul "<<<" urmat de un identificator ales de utilizator. Toate caracterele care se afl ntre operatorul "<<<", urmat de un
Pagina 41 din 86

identificator pe o singur linie, i acelai identificator pe o alt linie, vor constitui valoarea irului de caractere. De exemplu:

Construcia va avea ca rezultat un ir de caractere format din trei linii de text. Pentru a accesa un anumit caracter din irul de caractere, dup numele variabilei de tip string se folosete indicele caracterului care trebuie accesat, scris ntre acolade. De exemplu, $my_string {3} returneaz al treilea caracter din irul de caractere $my_string. Exist posibilitatea de a converti o variabil de orice tip la tipul string. Pentru irurile de caractere, se pot efectua urmtoarele conversii: valoarea logic TRUE va fi convertit la irul "1", iar valoarea logic FALSE va fi convertit la irul vid (""); un numr ntreg va fi convertit la un ir de caractere care reprezint valoarea numrului n baza 10; un numr real va fi convertit la un ir de caractere care reprezint notaia tiinific a acestuia; obiectele sunt ntotdeauna convertite la irul "Object"; variabilele de tipul resource sunt convertite la irul "Resource id #n", unde n reprezint un numr unic ataat resursei respective de ctre interpretorul PHP; valoarea NULL este convertit la irul vid (""). Tipul array: Variabilele care au o singur valoare se numesc scalare. O variabil care stocheaz mai multe valori se numete variabil tablou (array) sau vector. Un array este o colecie de perechi cheie-valoare. Accesul individual la fiecare element al unui tablou este posibil prin intermediul cheii asociate fiecrui element. Aadar vectorii n PHP sunt mulimi formate din chei. Fiecrei chei din vector i se ataeaz o valoare. Acest tip de date este optimizat astfel nct s poat fi folosit n locul urmtoarelor structuri de date: liste, tabele de dispersie, dicionare, colecii, stive, cozi etc. Datorit faptului c o valoare poate fi reprezentat de un alt vector, se pot simula arborii n-dimensionali sau tablourile n-dimensionale. Valoarea unei variabile de tip vector se poate specifica folosind construcia: De exemplu, urmtoarea instruciune PHP va construi un vector cu dou elemente, dintre care unul este de tip string, iar cellalt de tip boolean: Variabila $a reprezint un vector, $a["ch"] are valoarea sir, iar $a[12] are valoarea TRUE. n cazul n care nu se specific o cheie pentru o valoare, atunci acea valoare va fi ataat unei chei care va fi cheia maxim de tip integer folosit anterior, la care se adaug valoarea 1. Cheile pot avea i valori negative. Dac nu exist chei de tip integer, atunci valoarea va fi ataat cheii 0. De exemplu, urmtoarele dou instruciuni sunt echivalente:

Pagina 42 din 86

Dac se folosete valoarea logic TRUE ca i cheie, atunci aceasta va fi convertit la cheia de tip intreg 1, iar valoarea FALSE va fi convertit la numrul ntreg 0. Nu se pot folosi pentru chei variabile de tipul array sau object. O variabil de tip array se poate modifica prin setarea explicit de valori. De exemplu, instruciunea $a["x"] = 42; adaug n vectorul $a valoarea 42 ataat cheii "x". Dac se folosete un vector care nu a fost definit anterior, atunci acesta este creat automat. Aadar printr-o instruciune de forma $a[7] = 50, n cazul n care vectorul $a nu exist, atunci se va crea un vector cu un singur element. Cheia acestuia va fi numrul ntreg 7, iar valoarea sa va fi 50. De asemenea, exist posibilitatea de a crea un element nou fr a-i preciza cheia. Sintaxa are forma: Aceast instruciune are ca efect adugarea unui element a crui cheie este un numr ntreg mai mare cu 1 dect cel mai mare numr ntreg care este cheie a unui alt element al vectorului. Dac nu exist nicio astfel de cheie, atunci noul element va avea cheia 0. De exemplu, urmtoarele dou secvene sunt echivalente:

Prin conversia la un vector a unei variabile de tip scalar (boolean, integer, float, string) sau resource se creeaz un vector cu un singur element; cheia acestui element este numrul ntreg 0, iar valoarea este cea a variabilei convertite. Dac se convertete un obiect (variabila de tip object), atunci vectorul rezultat va conine cte un element pentru fiecare variabil membru a obiectului. Cheile elementelor vor fi date de denumirile proprietilor obiectului (variabilele membru ale obiectului), iar valorile elementelor vor fi valorile proprietilor obiectului. Dac se realizeaz o conversie a unei variabile de tip NULL, atunci rezultatul va fi un vector vid (care nu conine niciun element). Exemplu: Se creeaz un vector ale crui elemente sunt caracteristicile cursului de PHP:

Pagina 43 din 86

Tipul object: Pentru a defini un obiect care poate fi folosit pentru afiarea mesajului Acest script folosete variabila de tip object!, se scrie urmtoarea secven php:

Este afiat textul Acest script folosete o variabila de tip object!, text ce a fost introdus n funcia AfiseazaMesaj(). Pentru a utiliza o variabil de tip obiect, se realizeaz o instaniere prin intermediul instruciunii new. Sintaxa este: Astfel, variabila $a devine un obiect ale crui metode pot fi utilizate. Deci pentru afiarea propriu-zis a mesajului se va executa metoda AfiseazaMesaj() printr-o instruciune de tipul: Tipul resource: Variabilele de tip resource sunt folosite pentru pstrarea unor referine ctre anumite resurse externe cum ar fi conexiuni la baze de date, fiiere etc. Resursele sunt create i utilizate de anumite funcii speciale. Datorit specificului acestui tip de date, valoarea nici unei variabile de alt tip nu poate fi convertit la tipul resource. Tipul NULL: Valoarea special NULL este atribuit oricrei variabile care nu a fost iniializat. Aceasta valoare este singura pe care o pot avea variabilele de tip NULL. Se consider c o variabil are tipul NULL dac: i s-a atribuit constanta NULL; nu a fost iniializat; a fost deziniializat prin intermediul funciei unset ().

Pagina 44 din 86

2.3.2 Traversarea unui array cu ajutorul construciei foreach


1. Pentru parcurgerea iterativ a unui array (tablou) exist mai multe metode, dintre care cea mai elegant este construcia n bucl foreach(). Sintaxa general a buclei este urmtoarea:

$key este opional, i atunci cnd este specificat va conine valoarea cheii iterate curent, aceasta putnd fi un ntreg sau un ir. & este opional i se specific atunci cnd se dorete modificarea $value Un exemplu simplu de folosire a buclei foreach:

Parcurgerea iterativ a unui array se mai poate face cu ajutorul unei combinaii ntre construcia list() i funcia each() ca n exemplul urmtor:

Funcia each() returneaz perechea curent key/val i mut pointer-ul intern pe urmtorul element al array-ului, iar construcia list() este destinat asignrii elementelor array-ului unor variabile, ntr-o singur declaraie. Reset() este folosit nainte de a ncepe procesul iterativ pe array-ul n cauz.

2.3.3 Variabile predefinite


$GLOBALS = pot fi accesate toate variabilele globale care sunt accesibile scriptului PHP. $_SERVER = conine o serie de variabile ale cror valori sunt setate de server-ul web; majoritatea valorilor variabilelor din acest vector depind de mediul de execuie al scriptului. $_GET i $_POST conin variabile primite de script prin intermediul unor transferuri care folosesc metodele HTTP get, respectiv post. De exemplu, prin intermediul acestor vectori pot fi accesate valorile cmpurilor dintr-un formular care a fost completat i transmis folosind una dintre cele
Pagina 45 din 86

dou metode. $_COOKIE conine valorile variabilelor care cuprind informaii referitoare la cookie-urile pstrate pe calculatorul utilizatorului ce acceseaz pagina web. $_FILES conine variabile primite de script prin intermediul ncrcrilor de fiiere prin metoda post. $_ENV conine variabile disponibile prin intermediul mediului n care este executat. $_REQUEST conine variabile disponibile prin intermediul oricrui tip de mecanism cu ajutorul cruia utilizatorul poate introduce date. $_SESSION conine variabile care corespund sesiunii curente a scriptului.

2.3.4 Constante
O constant stocheaz o valoare, la fel ca o variabil, dar aceast valoare, dup ce a fost stabilit, nu mai poate fi modificat n script. Pentru a defini o constant, se folosete funcia define(). Numele constantelor este scris cu majuscule, aceast opiune nefiind obligatorie. O constant nu are n faa ei semnul $.

2.3.5 nglobarea PHP n HTML


Modul n care codul php este nglobat n codul html este artat n urmtoarea secven:

Codul php este nglobat n codul html, fiind ncadrat ntretag-urile sale specifice <?php i ?>. Ori de cte ori interpretorul PHP ntlnete tag-ul deschis <?php, va rula codul php pn cnd va ntlni tag-ul de nchidere ?> i-l va nlocui cu output-ul su (dac exist), n timp ce orice alt text non-php (HTML n acest caz) va fi pasat mai departe aa cum este, clientului web. Se salveaz codul de mai sus sub numele embedded_php.php n directorul WORK menionat la
Pagina 46 din 86

punctul 2.2 i se ruleaz. Se va obine:

2.3.6 Comentarii
Comentariile n php pot fi scrise n trei moduri diferite: mod C /* Acesta este un comentariu ca n C * care se poate extinde pe mai multe linii * pn la tag-ul de nchidere */ mod C++ // Acesta este un comentariu ca n C++, care se ncheie la sfritul liniei. modul Shell # Acesta este un comentariu shell, care se ncheie la sfritul liniei.

2.4. OPERATORI PHP


1. Operatori aritmetici cu variabile + Adunare$a + $b Scdere$a - $b * nmulire$a * $b / mprire$a / $b % Modulo $a % $b (n PHP rezultatul este restul, nu ctul mpririi!) 2. Operatori de comparaie n PHP = Egal$a = $b = = Identic$a == $b != Diferit$a != $b <> Diferit$a <> $b < Mai mic$a < $b > Mai mare$a > $b <= Mai mic sau egal$a <= $b >= Mai mare sau egal$a >= $b 3. Operatori logici in PHP ! NOT !$b Returneaz true (adevrat) dac $b este false (fals) i viceversa. && AND $a && $b Returneaz true (adevrat) dac att $a, ct i $b sunt true (adevrate) i false (fals) n caz contrar. || OR $a || $b Returneaz true (adevrat) dac $a, $b sau ambele sunt true (adevrate) i false (fals) n caz contrar. 4. Operatorul teriar condiie?adevrat:fals Exemplu:

Pagina 47 din 86

Acest operator acioneaz similar instruciunilor if i else. Astfel codul de mai sus se interpreteaz: dac valoarea variabilei este egal cu valoarea dat, n cazul nostru curs, atunci se afieaz un text.., dac nu, se afieaz alt text cu un mesaj de eroare 5. Operatori increment/decrement Aceti operatori acioneaz doar asupra variabilelor. Sunt prezentai n urmtorul tabel:

Exemplul 1:

Exemplul 2:

Aceleai reguli se aplic i n cazul pre i post-decrementrii. 6. Operatori Cast PHP furnizeaz o cale de a fora conversia de tip a unei valori prin intermediul operatorilor cast. Operandul va aprea n partea dreapt a operatorului cast, iar rezultatul este tipul convertit conform urmtorului tabel: Operator Schimb tipul la (int), (integer) Intreg (float), (real), (double) Floating point (string) Sir (bool), (boolean) Boolean (array) Array (object) Obiect Spre exemplu: variabilei $num i se asigneaz valoarea ntreag 5, $str rmnnd de tip ir.

Pagina 48 din 86

2.5. STRUCTURI DE CONTROL


PHP suport structurile de control valabile i n alte limbaje de programare, acestea putnd fi mprite n dou grupe: structuri de control condiionale i structuri de control n bucl. Cele din prima grup afecteaz curgerea instruciunilor unui program prin executarea sau efectuarea de salturi de cod n funcie de anumite criterii, iar cele din a doua grup execut o secven de cod de un anumit numr de ori n concordan cu un criteriu specificat.

2.5.1 Structuri de control condiionale


Aceste structuri permit programului s parcurg ci diferite pe baza deciziilor fcute la runtime. PHP suport att structura if, ct i structura switch. Instruciunea IF Pentru a lua o decizie, n scriptul PHP, se folosete instruciunea if. Acestei instruciuni trebuie s i se ofere o condiie pe care s o foloseasc, iar dac acea condiie este adevrat, va fi executat blocul de cod de dup ea. Condiiile din instruciunea if, trebuie s fie trecute ntre paranteze rotunde ( ), ca n exemplul urmtor:

Instruciunea ELSE Pe lng decizia de a executa o aciune atunci cnd condiia este adevrat, se dorete executarea unei alte aciuni n caz contrar (atunci cnd condiia nu este adevrat). Exemplul urmtor are ca rezultat afiarea mesajului corespunztor executrii codului pe ramura instruciunii else.

Instruciunea ELSEIF Aceast instruciune este o combinaie ntre instruciunea if i else. Aceasta poate verifica fiecare condiie pn n momentul n care una dintre condiiile gsite returneaz o valoare adevrat, ca n exemplul urmtor:

Pagina 49 din 86

Instruciunea SWITCH Aceast instruciune funcioneaz asemntor cu if, permind ns condiiilor s aib mai mult de 2 valori. ntr-o instruciune if, condiia poate fi adevrat sau fals, iar ntr-o instruciune switch condiia poate lua un numr de valori diferite. Aceast instruciune trebuie s conin de asemenea: instruciune case necesar manevrrii fiecrei valori specificate; instruciune break necesar ncheierii execuiei i saltului la codul ce urmeaz dup construcia switch.

De reinut c opiunea default: atunci cnd este folosit trebuie s figureze ultima n list.

2.5.2 Structuri de control n bucl


Bucla WHILE Cel mai simplu tip de bucl n PHP este bucla while. Asemenea instruciunii if, ea se bazeaz pe o condiie. Diferena dintre if i while este aceea c instruciunea if, dac gsete adevrat condiia, execut o singur dat bucata de cod din ea, pe cnd n condiia while, dac rezultatul este adevrat, bucata de cod din ea se va repeta atta timp ct condiia este adevrat.

Pagina 50 din 86

Se salveaz codul de mai sus n fiierul while.php, iar rezultatul n urma rulrii este urmtorul:

Bucla FOR O alternativ cu o funcionalitate mai ridicat pentru utilizarea buclelor este structura repetitiv for. Sintaxa este asemntoare cu cea din limbajele C/C++:

Prima expresie este evaluat o singur dat, nainte de nceperea execuiei ciclului. Expresia "condiie" este testat naintea fiecrei repetri a buclei. Dac expresia returneaz fals, repetarea se oprete. Expresia 2 este executat la sfritul fiecrei repetri, iar instruciunea se execut la fiecare repetare a buclei. Oricare dintre cele trei expresii poate lipsi; n cazul n care o expresie lipsete, se consider c ea are valoarea true. n continuare este dat acelai exemplu de la bucla while, scris acum cu for:

Un alt exemplu pentru ilustrarea funcionrii buclei for:

Pagina 51 din 86

Rezultatul rulrii scriptului php va fi urmtorul:

Bucla FOREACH Aceast structur este folosit n vederea realizrii unei repetri printre toate elementele unui vector. Nu poate fi folosit dect mpreun cu vectori (array). Pentru aceast structur exist dou sintaxe acceptate:

n prima variant, la fiecare iteraie valoarea elementului curent este atribuit variabilei $valoare, i apoi se trece la elementul urmtor (a crui valoare va fi atribuit variabilei la urmtoarea iteraie). Execuia ciclului se ncheie n momentul n care nu mai exist alte elemente n vector. Diferena care apare n cazul celei de-a doua variante este faptul c la fiecare iteraie valoarea cheii elementului curent este atribuit variabilei $cheie. n continuare se d un exemplu de folosire a celor dou sintaxe ale structurii foreach.

Pagina 52 din 86

Instruciunea BREAK Aceast instruciune se folosete pentru a ntrerupe forat execuia unui ciclu sau a secvenei de instruciuni corespunztoare unei structuri switch. Instruciunea poate fi urmat de un argument care indic numrul de structuri imbricate a cror execuie se ncheie. Valoarea implicit este 1, deci se ntrerupe execuia unei singure structuri. Urmtorul exemplu de cod PHP realizeaz parcurgerea elementelor unui vector de numere ntregi, pn n momentul n care se ntlnete un numr pozitiv.

Instruciunea break poate fi utilizat pentru ntreruperea execuiei secvenelor de instruciuni corespunztoare structurilor for, foreach, while, do-while i switch. Instruciunea CONTINUE Aceast instruciune este folosit pentru a ntrerupe execuia secvenei de instruciuni din interiorul unui ciclu i a trece la urmtoarea iteraie. n cazul instruciunii for, nainte de urmtoarea iteraie se evalueaz (execut) expresia de incrementare (expresia #3 din sintaxa general). La fel ca i n cazul instruciunii break, poate aprea un argument care indic numrul structurilor imbricate asupra crora are efect. n exemplul urmtor se realizeaz afiarea elementelor unui ir de numere ntregi care sunt mai mari dect 500.

2.6. FUNCII
O funcie PHP poate fi funcie predefinit (built in) sau funcie definit de utilizator. Forma general a unui apel de funcie este urmtoarea:

func(arg1,arg2,)

Numrul de argumente variaz de la o funcie la alta, fiecare argument putnd fi o expresie valid, inclusiv alte apeluri de funcii. Un exemplu simplu de funcie predefinit:

strlen este o funcie PHP standard PHP care returneaz lungimea unui ir. Astfel variabilei $lungime i se asigneaz lungimea irului, adic 10.
Pagina 53 din 86

Un alt exemplu de apel de funcie utilizat ca argument de funcie:

Prima dat va fi executat strlen("qwertzuiop") care va da ca rezultat ntregul 10, astfel codul se va simplifica la: $lungime = strlen(10); Funcia strlen() ateapt un ir, de aceea va converti (datorit conversiei automate ntre tipuri n PHP) ntregul 10 la irul "10", i astfel valoarea rezultat a variabilei $lungime este 2, lungimea lui "10".

2.6.1. Funcii predefinite


n PHP exist peste 700 de funcii predefinite valabile. O list a acestora cu explicaii pentru fiecare n parte se gsete la adresa: http://us2.php.net/quickref.php.

2.6.2. Funcii definite de utilizator


Funcia este o secven de cod ce poate fi utilizat de mai multe ori n interiorul marilor scripturi i este prezentat n script prin declaraia ei. Funcia invocat va conine acelai numr de argumente ca n declaraie. Argumentele unei funcii trebuie separate prin virgul, i, implicit, acestea sunt transmise prin valoare. Pentru ca funcia s returneze un rezultat, se folosete construcia return care primete ca parametru o expresie care reprezint valoarea funciei. n momentul n care este ntlnit construcia return, execuia funciei se ncheie.

unde: exf este numele funciei, $arg_1, $arg_2, ... , $arg_n sunt argumentele funciei, $val este valoarea returnat de funcie. Exemplul 1: o funcie care adun 2 variabile.

Exemplul 2: o funcie care genereaz un tabel.

Pagina 54 din 86

2.7. FORMULARE HTML


Formularele HTML sunt folosite pentru a selecta diferite moduri de introducere a datelor de ctre utilizator. Un formular este delimitat de elementul FORM care conine elemente numite controale, cu o varietate de metode de a aduna informaii. Fiecare element din formular are un nume i o valoare, astfel nct datele transferate pentru procesare s fie sub forma unor perechi nume/valoare.

Tag-uri ale formularelor:

2.7.1. Tag-ul FORM


Definiie i folosire:

Atribute necesare:

Pagina 55 din 86

Atribute opionale:

Pagina 56 din 86

2.7.2 Tag-ul INPUT


Definiie i folosire:

Atribute opionale:

Pagina 57 din 86

Elementul input este cel mai important n utilizarea formularelor.

2.7.2.1. Explicarea valorilor type ale elementului INPUT prin exemple


Exemplul 1: Formular cu 2 cmpuri (type="text"), buton Trimite (type="submit") i buton terge (type="reset") Cod HTML Cum se afieaz

Exemplul 2: Formular cu caseta de fiier (type="file"): ntr-o pereche "name = value" a unui formular se poate folosi ntregul coninut al unui fiier pe post de valoare, atributul "value" primind ca valoare adresa URL a fiierului care va fi expediat odat cu formularul. Aceast valoare poate fi atribuit direct atributului "value", poate fi tastat ntr-un cmp de editare ce apare odat cu formularul sau poate fi selectat prin intermediul unei casete de tip File Upload sau Choose File care apare la apsarea butonului Browse... din formular. Atributul "enctype" precizeaz metoda utilizat la criptarea fiierului de expediat. Valoarea acestui atribut este "multipart/form-data".

Pagina 58 din 86

Efect:

Exemplul 3: Formular cu casete de validare (type="checkbox") pentru selectarea sau deselectarea unei opiuni.

Efect:

Exemplul 4: Formular cu caset password (type="password"). Dac se utilizeaz eticheta <input> avnd atributul "type" configurat la valoarea "password", atunci n formular se introduce un element asemntor cu un cmp de editare obinuit (introdus prin type="text"), toate atributele unui cmp de editare rmnnd valabile. Singura deosebire const n faptul c acest cmp de editare nu afieaz caracterele n clar, ci numai caractere * (la expedierea formularului ns valoarea tastat ntr-un cmp de tip "password" se transmite n clar).
Pagina 59 din 86

Efect:

Exemplul 5: Formular cu butoane radio (type="radio"). Butoanele radio permit alegerea, la un moment dat, a unei singure variante din mai multe posibile.

Efect:

La expedierea formularului se va transmite una dintre perechile "sex=b" sau "sex=f", n funcie de alegerea fcut de ctre utilizator.
Pagina 60 din 86

2.7.3. Liste de selecie Tag-ul <select>


Definiie i folosire:

Atribute opionale:

O list de selecie permite utilizatorului s aleag unul sau mai multe elemente dintr-o list finit. Lista de selecie este inclus n formular cu ajutorul etichetelor corespondente <select> i </select>. Elementele unei liste de selecie sunt incluse n list cu ajutorul etichetei <option>. Cele dou atribute utile ale etichetei option sunt: o atributul "value" primete ca valoare un text care va fi expediat server-ului n perechea "name=value"; dac acest atribut lipsete, atunci ctre server va fi expediat textul ce urmeaz dup <option>; o atributul "selected" (fr alte valori) permite selectarea prestabilit a unui element al listei.

Pagina 61 din 86

Efect:

O list de selecie care permite selecii multiple se creeaz ca i o list de selecie obinuit. n plus, eticheta <select> are un atribut "multiple" (fr alte valori). Cnd formularul este expediat ctre server, pentru fiecare element selectat al listei se insereaz cte o pereche "name=value" unde name este numele listei.

Efect:

Pagina 62 din 86

2.7.4. Cmpuri de editare multilinie Tag-ul <textarea>


Definiie i folosire:

ntr-un formular, cmpurile de editare multilinie pot fi incluse cu ajutorul etichetei <textarea>. Eticheta are urmtoarele atribute: o atributul "cols", care specific numrul de caractere afiate ntr-o linie; o atributul "rows", care specific numrul de linii afiate simultan; o atributul "name", care permite ataarea unui nume cmpului de editare multilinie; o atributul "wrap", (de la "word wrap"=trecerea cuvintelor pe rndul urmtor), care determin comportamentul cmpului de editare fa de sfritul de linie. Acest atribut poate primi urmtoarele valori: a) "off"; n acest caz: ntreruperea cuvintelor la marginea dreapt a editorului se produce numai cnd dorete utilizatorul; caracterul de sfrit de linie este inclus n textul transmis serverului o dat cu formularul; b) "hard "; n acest caz: se produce ntreruperea cuvintelor la marginea dreapt a editorului; caracterul de sfrit de linie este inclus n textul transmis server-ului odat cu formularul; c) "soft "; n acest caz: se produce ntreruperea cuvintelor la marginea dreapt a editorului; nu se include caracterul de sfrit de linie n textul transmis server-ului odat cu formularul.

Efect:

Pagina 63 din 86

2.7.5. Exemple de formulare complexe


Exemplul 1: n acest exemplu este prezentat un formular coninnd elementele prezentate anterior. Cmpurile formularului sunt incluse n celulele unui tabel pentru a obine o anumit aliniere dorit.

Efect:

Pagina 64 din 86

Exemplul 2: Cod HTML

Cum se afieaz

Pagina 65 din 86

2.8. PRELUCRAREA DATELOR PRINTR-UN FORMULAR


Dup crearea formularelor urmeaz firesc prelucrarea datelor trimise prin intermediul lor. n interiorul etichetei <form> exist, aa cum s-a artat deja, elementul action i method (care poate fi POST sau GET). n elementul action se va da calea ctre scriptul PHP care prelucreaz datele, iar n method se specific metoda prin care se vor prelucra datele atunci cnd butonul Trimite este acionat.

2.8.1. Algoritmul de prelucrare a datelor


n continuare se vor detalia etapele prelucrrii prin intermediul unui exemplu clasic. 1. Se consider urmtorul formular al crui cod se va salva n directorul de lucru C:\Program Files\EasyPHP-1.8\WWW\WORK, sub numele de formular.html

2. Se va vizualiza apoi fiierul creat n browser:

3. Se va crea tot n folderul WORK un fiier prelucrare.php cu urmtorul cod:

Pagina 66 din 86

4. Din fereastra aplicaiei easyPHP se lanseaz comanda LocalWeb, rezultnd fereastra browser-ului n care se va alege fiierul formular.html din folder-ul WORK.

n urma completrii formularului (afiat la punctul 2), trimiterii datelor i prelucrrii acestora de ctre scriptul prelucrare.php, va rezulta ecranul cu rezultatul obinut:

2.8.2 Verificarea datelor introduse n formular


Pentru a avea sigurana c utilizatorul a completat cmpurile, scriptul PHP va trebui s aib i o parte de verificare care poate fi simpl sau complex, n funcie de importana datelor cerute n formular. Se dau n continuare dou exemple. 1. Se va folosi acelai formular, dar se adaug verificarea introducerii numelui:

Pagina 67 din 86

2. Partea de verificare va avea n acest caz condiii legate prin operatorul OR:

Observaii: Formularul exemplu dat n acest subcapitol a folosit metoda POST (method=post); n cazul folosirii metodei GET (method=get), n scriptul prelucrare.php variabilele definite se vor modifica corespunztor n variabile $_GET. n pagina web rezultatul va fi acelai, cu specificaia c informaiile formularului sunt postate i n adresa din browser (url) sub forma:

http://localhost/prelucrare.php?nume=popescu&prenume=bogdan&varsta=peste 18&parola=yyxcv&Trimite=Trimite
Este recomandat folosirea metodei POST.

Pagina 68 din 86

CAPITOLUL III MYSQL


Una din raiunile de a nva limbajul PHP este aceea a interaciunii cu bazele de date pe care acesta o ofer. MySQL este un sistem de gestiune a bazelor de date relaional, produs de compania suedez MySQLAB i distribuit sub Licena Public General GNU. O baz de date este coloana vertebral a unui site dinamic. O baz de date permite stocarea, cutarea, sortarea i regsirea datelor ntr-un mod eficient. Ea este alctuit din tabele care, la rndul lor sunt formate din nregistrri dispuse n cmpuri. Server-ul MySQL controleaz accesul la date i garanteaz lucrul simultan al mai multor utilizatori cu acestea, fiind un server multi-user i multi-thread. El utilizeaz SQL (Structured Query Language), limbajul standard de interogare a bazelor de date. MySQL este disponibil n mod public din 1996, istoria dezvoltrii sale ncepnd n 1979. Pagina de baz pentru MySQL este: http://www.mysql.com Pachetul phpMyAdmin existent n cadrul soluiei complete instalate (easyPHP) este un pachet de scripturi php care ajut la gestionarea unei baze de date folosind o interfa web. Aceast interfa administrativ pentru bazele de date MySQL va aduce un plus de confort.

3.1. PHPMYADMIN CREAREA UNEI BAZE DE DATE


Acest instrument de lucru, constituit din scripturi php, interfaeaz web administrarea bazelor de date MySQL, putnd crea/terge baze de date, crea/terge/modifica tabele, aduga/terge/edita cmpuri, executa comenzi SQL i administra cheile cmpurilor. Tastnd n fereastra browser-ului adresa http://127.0.0.1/phpmyadmin/, se obine urmtoarea fereastr:

Observaie: nainte de a accesa http://localhost/phpmyadmin, se va pune folderul phpMyAdmin n folder-ul www. Se vor indica n continuare paii parcuri n vederea crerii unei baze de date folosind interfaa phpMyAdmin. n seciunea MySQL a ferestrei phpMyAdmin se va tasta numele noii baze de date care va fi creat, de exemplu baza cu numele academia:

Pagina 69 din 86

Pentru a aduga un tabel n baza academia, se va completa cmpul corespunztor de creare tabel nou n baza de date, i anume tabelul studenti cu 4 cmpuri, conform urmtoarei figuri:

n urma crerii, se vor completa cele patru cmpuri conform figurii urmtoare:

iar n urma salvrii se va obine: Observaie: cmpul id este cheie primar. Fiecare cmp al unei nregistrri dintr-un tabel al bazei de date are un nume i un tip. Cele mai folosite tipuri de cmpuri sunt urmtoarele: a. Tipuri numerice: INT Stocare octei 4 BIGINT 64 bii b. Tipuri de ir: CHAR Interval 1-255 caractere

Pagina 70 din 86

VARCHAR Interval 1-255 caractere c. Tipuri de text: TEXT Lungime maxim de caractere 65.535 LONGTEXT Lungime maxim de caractere 4.294.967.295 nregistrrile n tabel se vor introduce prin acionarea butonului Insert. Dup ce se introduc nregistrri, acestea pot fi vizualizate prin acionarea butonului Browse. De observat c n urma fiecrei operaiuni se afieaz rezultatul nsoit n partea superioar de sintaxa SQL. n aceast baz de date se pot crea n continuare i alte tabele.

3.2. REALIZAREA CONECTRII LA MYSQL


PHP include o bibliotec de funcii care furnizeaz o interfa cu sistemul MySQL. Prin folosirea acestor funcii, un script PHP poate obine accesul la datele rezidente ntr-o baz de date MySQL i le poate citi, cuta i modifica. Interaciunea cu o baz de date se desfoar dup un model secvenial care const n: 1. deschiderea unei conexiuni cu server-ul MySQL; 2. specificarea bazei de date la care se va obine accesul; 3. emiterea de interogri SQL, accesul la rezultatele acestora; 4. nchiderea conexiunii cu server-ul MySQL. Acest subcapitol va detalia modul de conectare la o baz de date, citire a informaiilor din tabele, tergere/modificare i adugare de noi informaii, cu ajutorul scripturilor PHP. Mai nti se va crea un fiier cu numele config.php care se va salva n directorul work al directorului www. Cu ajutorul acestui fiier de configurare se va realiza conexiunea la baza de date. Are urmtorul cod:

Explicaii: 1. n acest script se va modifica valoarea variabilei $Parola_Baza_Date cu parola setat a bazei de date (iniial, n interfaa phpMyAdmin, la linkul Privileges s-a stabilit o parol dup care ea a fost specificat i n fiierul config.inc.php, adic s-a setat parola n cmpul $ cfg ['Servers'] [$i] ['password'] = , i anume n acest caz $cfg ['Servers'] [$i] ['password'] = parola_mysql; 2. Variabila $adresa_baza_date este definit cu valoarea localhost deoarece aceasta este adresa server-ului pe care ruleaz serviciul MySQL (server-ul Apache+PHP este instalat pe acelai calculator ca i pachetul MySQL). 3. Variabila $utilizator_baza_date este definit cu valoarea root, acesta fiind utilizatorul cu
Pagina 71 din 86

toate drepturile de acces asupra bazei de date (identificatorul de utilizator MySQL). 4. Variabila $parola_baza_date este definit cu valoarea corespunztoare i este parola MySQL asociat identificatorului de utilizator. 5. Variabila $conexiune este definit prin invocarea funciei mysql_connect care realizeaz conectarea la server-ul MySQL. Aceast funcie are ca argumente variabilele definite la punctele 2, 3 i 4. Funcia returneaz o valoare identificator de legtur care servete ca instrument de manipulare pentru accesul la server-ul MySQL, iar n caz de eec valoarea false. 6. Variabila $nume_baza_date este definit cu valoarea academia, acesta fiind numele bazei de date asupra creia se va lucra. 7. Prin invocarea funciei mysql_select_db se specific baza de date la care scriptul PHP va avea acces n urma obinerii conexiunii la server. Funcia returneaz true dac poate obine accesul, respectiv false n cazul eecului.

3.3. EXECUTAREA INTEROGRILOR


Exist dou categorii de interogri SQl: 1. Interogri SELECT care returneaz rnduri de tabel; 2. Interogri UPDATE, INSERT i DELETE care nu returneaz rnduri de tabel. Ambele categorii sunt executate prin folosirea funciei mysql_query (interogare). Verificarea i prelucrarea celor dou categorii de rezultate ale interogrilor sunt procese diferite.

3.3.1. Prelucrarea rezultatelor interogrilor SELECT


Interogrile SELECT returneaz ca rezultat rnduri de tabel. Rndurile unui tabel sunt incluse ntr-o structur de date numit set de rezultate. Prelucrarea setului de rezultate returnat de o interogare SELECT implic parcurgerea iterativ a rndurilor setului de rezultate. Se va crea un fiier extragere.php care se salveaz n directorul work i are urmtorul cod:

Explicaii: 1. Prima linie din script conine funcia require_once, funcie care va include datele din config.php, o singur dat, n pagina extragere.php. 2. n linia $cerereSQL = 'SELECT * FROM `studenti`'; este definit variabila $cerereSQL cu valoarea cererii SQL pentru a extrage datele din tabela studeni. Ea se interpreteaz astfel: selecteaz tot din studenti. 3. n linia $rezultat = mysql_query($cerereSQL); este definit variabila $rezultat cu valoarea funciei mysql_query care are ca argument irul care conine interogarea care urmeaz a fi executat. 4. Rndurile setului de rezultate se obin prin folosirea funciei mysql_fetch_array care returneaz un tablou asociativ (valorile indexurilor din tablou le reprezint numele coloanelor din setul de rezultate). 5. n urma rulrii scriptului extragere.php, se va obine urmtorul rezultat (se vor afia numele
Pagina 72 din 86

i prenumele tuturor studenilor din tabelul studenti:

Sintaxa SELECT este foarte complex i se va da i un exemplu n care se va face din nou o selecie din tabelul studenti, de data aceasta cu o anumit condiie, prin intermediul clauzei WHERE, conform codului:

Setul de rezultate returnat de interogare conine doar numele i prenumele studenilor din nregistrrile care ndeplinesc condiia dat de WHERE.

2.3.2. Prelucrarea rezultatelor interogrilor INSERT


Sintaxa INSERT se folosete pentru adugarea de nregistrri n tabelele bazei de date. Se va considera urmtorul cod care se va salva ca adaugare.php:

n urma rulrii acestui script, se va verifica prin intermediul interfeei phpMyAdmin adugarea noii nregistrri (cu valorile specificate n comanda INSERT) n tabelul studenti al bazei de date academia.

3.3.3. Prelucrarea rezultatelor interogrilor UPDATE


Sintaxa UPDATE se folosete pentru a modifica datele existente din nregistrrile tabelelor bazei de date. Se va considera urmtorul cod care se va salva sub numele modificare.php n acelai director work:
Pagina 73 din 86

Se va rula acest script observndu-se apoi efectele produse, adic modificarea numelui i a prenumelui n nregistrarea cu valoarea constantin a cmpului nume, din tabelul studenti al bazei de date academia.

3.3.4. Prelucrarea rezultatelor interogrilor DELETE


Sintaxa DELETE se folosete pentru a terge datele existente din baza de date. Se va considera urmtorul cod care se va salva sub numele stergere.php:

n urma rulrii acestui script se va observa, prin verificarea n interfaa phpMyAdmin, a efectului produs, adic tergerea nregistrrii care avea n cmpul nume valoarea Ciontea.

3.3.5. Verificarea interogrilor


Pentru a verifica dac o interogare UPDATE, INSERT, DELETE a avut efectul dorit, se va folosi o funcie care returneaz numrul rndurilor afectate de ultima interogare, i anume mysql_affected_rows(). n cazul n care interogarea eueaz, funcia va returna valoarea -1. Se consider urmtorul cod care se va salva sub numele verific_adaugare.php:

Pagina 74 din 86

3.3.6. Modul de utilizare a cmpurilor auto-increment


n subcapitolul 3.1 s-a vzut cum indicatorul AUTO_INCREMENT precizeaz n MySQL repartizarea unei valori secveniale unice n coloana (cmpul) care servete drept cheie primar a tabelului. Cu ajutorul urmtorului cod (afisare_id.php) se va introduce o nregistrare nou n tabelul studenti, dup care se va folosi funcia mysql_insert_id() pentru a determina valoarea cheii primare atribuite de MySQL acestei nregistrri:

n urma rulrii scriptului afisare_id.php, n fereastra browser-ului se va obine:

3.4. REALIZAREA UNEI MINI-APLICAII PHP MYSQL


Exemplul dat n acest subcapitol se va referi la realizarea unei mini-aplicaii PHP MySQL cu ajutorul creia s se realizeze: o completarea unui formular; o verificarea/vizualizarea/introducerea datelor completate ntr-o baz de date MySQL; o vizualizarea datelor existente n baza de date.

3.4.1. Crearea bazei de date


a. Pentru crearea bazei de date se va folosi phpMyAdmin aa cum s-a artat deja. Acest exemplu va folosi baza de date cu care s-a lucrat n aproape toate exemplele acestui capitol (baza de date academia cu tabelul studenti). b. Se va crea n folderul www un folder numit academia.
Pagina 75 din 86

3.4.2. Crearea fiierului de configurare i a fiierului index


a. Se creeaz n folder-ul academia fiierul cu numele config.php care va avea urmtorul cod:

b. Tot n folder-ul academia se creeaz fiierul index.php (care se va vedea c este de fapt formularul html) cu urmtorul cod:

Observaie: La lansarea comenzii Local Web a aplicaiei easyPHP apare fereastra browser-ului conform figurii:

Pagina 76 din 86

n mod normal, fiecare folder al rdcinii www va gzdui o aplicaie distinct. Atunci cnd se indic cu ajutorul mouse-ului aplicaia (folder-ul) dorit, se realizeaz mai nti o cutare n folder-ul respectiv a unui fiier numit index.php care, dac este gsit, va fi rulat, iar dac nu este gsit se va deschide pur i simplu folder-ul respectiv, afindu-se coninutul su de subfoldere i fiiere. De aceea am denumit fiierul care conine formularul propriu-zis, cu numele index.php, pentru ca acesta s fie gsit i rulat atunci cnd se indic aplicaia academia. Adresa URL din browser va fi astfel http://127.0.0.1/academia/.

3.4.3. Prelucrarea formularului

verificarea

datelor

trimise

prin

intermediul

Datele trimise de formular prin metoda $_POST vor fi verificate i introduse n baza de date. a. Se va crea un fiier prelucrare.php cu urmtorul cod:

Observaie: Funcia require de argument nume de fiier permite obinerea accesului la programul PHP specificat cu nume fiier, existent deja. Atunci cnd este ncrcat un script PHP care conine o instruciune require, coninutul fiierului specificat este inserat n script, nlocuind instruciunea require. b. Se completeaz date n formular i se trimit prin acionarea butonului Trimite. n urma completrii i trimiterii se va obine n fereastra browser-ului urmtorul rezultat:

Pagina 77 din 86

c. Se va crea fiierul vizualizare.php care va fi rulat la activarea linkului aici. Acesta va avea urmtorul cod:

Parcurgerea pailor indicai n realizarea acestei aplicaii a condus la obinerea unui numr de patru fiiere .php care sunt localizate n folder-ul academia al folder-ului www din aplicaia EasyPHP:

Pagina 78 din 86

3.3.7. Modul de lucru cu seturi de rezultate


Biblioteca de funcii MySQL a limbajului PHP include un set de funcii care permit obinerea de informaii referitoare la un set de rezultate, reprezentative fiind: numrul coloanelor din setul de rezultate; numrul fiecrei coloane; lungimea fiecrei coloane; indicatorii MySQL asociai coloanei; tipul MySQL al fiecrei coloane; numele tabelului MySQL care conine coloana.

3.3.7.1. mysql_num_fields() obinerea numrului coloanelor din set


Funcia mysql_num_fields() determin numrul coloanelor dintr-un set de rezultate, transferndu-i ca argument valoarea returnat de funcia mysql_query(). Se consider urmtorul cod:

n urma rulrii se obine:

Pagina 79 din 86

3.3.7.2. mysql_ field_name() obinerea numelui unei coloane din set


Funcia mysql_ field_name() returneaz numele coloanei din setul de rezultate avnd ca argument valoarea indexului acesteia: indexul asociat cu prima coloan este 0, indexul asociat celei de a doua este 1 .a.m.d. Codul urmtor folosete funcia mysql_ field_name() pentru a determina numele celei de a doua coloane din setul de rezultate:

3.3.7.3. mysql_ field_len() obinerea lungimii unei coloane din set


Codul urmtor folosete funcia mysql_ field_len() pentru a determina lungimea maxim a primei coloane din setul de rezultate ale interogrii SELECT:

3.3.7.4. Obinerea indicatorilor MySQL asociai unei coloane din set


Funcia mysql_field_flags() returneaz indicatorii SQL asociai unei coloane din setul de rezultate, al crei index este dat ca argument al funciei, similar funciilor date la subpunctele 3.3.7.1, 3.3.7.2, 3.3.7.3. Aceast funcie raporteaz urmtorii indicatori: AUTO_INCREMENT, BINARY, BLOB, ENUM, MULTIPLE_KEY,NOT_NULL, PRIMATY_KEY, TIMESTAMP, UNIQUE_KEY, UNSIGNED, ZEROFILL. Codul urmtor folosete funcia mysql_ field_flags() pentru a determina lungimea indicatorilor primei coloane din setul de rezultate:
Pagina 80 din 86

n urma rulrii scriptului se va obine n fereastra browser-ului urmtorul rezultat:

3.3.7.5. mysql_field_type() - obinerea tipului MySQL al unei coloane din set


Codul urmtor folosete funcia mysql_ field_type() pentru a determina tipul celei de a treia coloane din setul de rezultate ale interogrii SELECT:

3.3.7.6. mysql_field_table() determinarea tabelului MySQL asociat unei coloane din set
Funcia mysql_field_table() returneaz tabelul MySQL, dac exist, asociat coloanei din setul de rezultate al crei index este dat de argumentul funciei. Codul urmtor folosete funcia mysql_ field_table() pentru a determina tabelul asociat celei de a patra coloane din setul de rezultate:
Pagina 81 din 86

3.3.7.7. Obinerea structurii complete a setului de rezultate


Funcia mysql_fetch_field() returneaz un obiect ale crui proprieti conin informaii referitoare la coloana unui set de rezultate. Aceste proprieti sunt urmtoarele: blob are valoarea 1 atunci cnd coloana este BLOB; max_length lungimea maxim a coloanei; multiple_key are valoarea 1 n cazul n care coloana este o cheie non-unic; name numele coloanei; not_null are valoarea 1 n cazul n care coloana nu poate conine valoarea NULL; numeric are valoarea 1 n cazul n care coloana este numeric; primary_key are valoarea 1 n cazul n care coloana este o cheie primar; table numele tabelului MySQL cruia i aparine coloana; type tipul MySQL al coloanei; unique_key are valoarea 1 n cazul n care coloana este o cheie unic; unsigned are valoarea 1 n cazul n care coloana este de tip UNSIGNED; zerofill are valoarea 1 n cazul n care coloana este completat cu zerouri. Funcia mysql_fetch_field() preia dou argumente, valoarea returnat de funcia mysql_query() i indexul coloanei din setul de rezultate. Codul urmtor prezint modul de obinere a structurii complete a setului de rezultate, inclusiv o descriere a fiecrei coloane din setul de rezultate:

Pagina 82 din 86

3.3.7.8. Obinerea accesului nesecvenial la coloanele setului de rezultate


Dac funciile mysql_fetch_row() i mysql_fetch_aray() returneaz rndurile dintr-un set de rezultate n mod secvenial, funcia mysql_data_seek() permite obinerea accesului la rndurile unui set de rezultate ntr-un mod nesecvenial. Codul urmtor prezint modul de obinere a accesului la al treilea rnd al setului de rezultate returnat de o interogare:

n urma rulrii scriptului se obine:

3.3.8. Explorarea SGBD


Structura unei baze de date se determin cu ajutorul a trei funcii din biblioteca MySQL aferent limbajului PHP, care realizeaz urmtoarele operaii: determinarea bazelor de date gzduite de server-ul MySQL; determinarea tabelelor incluse ntr-o baz de date specificat; determinarea coloanelor incluse ntr-un tabel specificat dintr-o baz de date i a caracteristicilor asociate acestor coloane.

3.3.8.1. Determinarea bazelor de date gzduite de un server


Pentru a determina bazele de date gzduite de un server MySQL de care scriptul PHP este legat printr-o conexiune activ, se va invoca funcia mysql_list_dbs(). Aceast funcie returneaz un set de rezultate constituit din numele bazelor de date gzduite. Numrul rndurilor din set se determin cu ajutorul funciei mysql_num_rows(), aa cum s-a procedat n toate exemplele de pn acum, dar preluarea propriu-zis a rndurilor din set se va face cu funcia mysql_tablename() care va avea ca argumente valoarea returnat de funcia mysql_list_dbs() i numrul rndurilor. Urmtorul cod prezint modul de afiare a numelor bazelor de date gzduite de server:

Pagina 83 din 86

n urma rulrii scriptului se obine:

3.3.8.2. Determinarea tabelelor incluse ntr-o baz de date


Lista tabelelor incluse ntr-o baz de date specificat se obine prin invocarea funciei mysql_list_tables(), creia i se transfer ca argument numele bazei de date. Funcia mysql_list_tables() returneaz un set de rezultate, similar celui returnat de mysql_list_dbs(), constituit de aceast dat din numele tabelelor. Obinerea accesului la rndurile setului de rezultate se va face parcurgnd iterativ setul prin invocarea funciei mysql_tablename(), ca n exemplul de cod dat n continuare:

Pagina 84 din 86

n urma rulrii scriptului, n fereastra browser-ului se vor afia numele tabelelor incluse n baza de date mysql specificat:

3.3.8.3 Determinarea coloanelor incluse ntr-un tabel


Obinerea listei coloanelor incluse ntr-un tabel se face prin invocarea funciei mysql_list_fields(), transferndu-i ca argument numele bazei de date i numele tabelului. Funcia mysql_list_fields() returneaz un set de rezultate, similar celui returnat de funciile mysql_list_dbs() i mysql_list_tables(). Obinerea accesului la rndurile setului de rezultate se va face parcurgnd iterativ setul prin invocarea funciei mysql_fetch_fields (), ca n exemplul de cod dat n continuare:

Pagina 85 din 86

Pagina 86 din 86

You might also like