Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Tehologii Web in domeniul recrutarii de personal

Informatica


Tehologii Web in domeniul recrutarii de personal

UNIVERSITATEA PETROL-GAZE DIN PLOIESTI

FACULTATEA DE STIINTE ECONOMICE

SPECIALIZAREA STATISTICA SI INFORMATICA

ECONOMICA

LUCRARE DE DIPLOMA

Tehologii Web in domeniul recrutarii de personal

UNIVERSITATEA PETROL-GAZE DIN PLOIESTI

Declar pe propria raspundere ca am elaborat personal

proiectul de diploma si nu am folosit alte materiale documentare in afara de cele prezentate la capitolul "Bibliografie"

Semnatura

Aprobat

Sef catedra

Tema lucrarii de diploma data studentului

1. Tema lucrarii: Tehologii Web in domeniul recrutarii de personal

2. Termenul de predare a lucrarii

3. Elementele initiale ale lucrarii

............................

4. Continutul lucrarii( cu enumerarea capitolelor):

5. Consultatii pentru lucrare (cu indicarea partilor din lucrare pentru care sunt solicitate

.......... ..... ......

.......... ..... ......

6. Data eliberarii temei......................

CONDUCATOR STIINTIFIC

Tema a fost primita pentru indeplinire

la data de . (semnatura)

CUPRINS

CAPITOLUL I - Inroducere...............5

CAPITOLUL II - Tehnologii Web............7

2.1 World Wide Web..................7

2.2 Server-ul de Web Apache...............11

2.3 Limbajul PHP...................13

2.4 Baze de date MySQL.................38

2.5 Limbajul JavaScript................40

2.6 HTML......................45

CAPITOLUL III - ProiectareaAplicatiei.61

CAPITOLUL IV - Concluzii.67

CAPITOLUL V - Bibliografie.71

ANEXA A Structura aplicatiei72

ANEXA B Relatiile intre tabele73

ABEXAC Codul PHP al proierctului74

Capitolul I . INTRODUCERE

Este astazi binecunoscuta tuturor larga raspandire a calculatoarelor electronice in aproape toate domeniile activitatii umane. Acest proces este in continua desfasurare si este foarte greu de previzionat unde se va ajunge si cat de mult se va schimba in viitor viata de zi cu zi, atat la serviciu cat si acasa, datorita calculatoarelor. Se spune, de exemplu, chiar ca analfabetul secolului al XXI-lea va fi cel care nu va sti sa lucreze cu un calculator.

Printre cele mai raspandite utilizari ale unui calculator sunt memorarea si prelucrarea informatiilor, in general, si a textelor, in particular. In plus, posibilitatile de prelucrare oferite de calculatoare permit structurarea complexa si regasirea usoara a informatiilor memorate.

In paralel cu progresele in domeniul calculatoarelor, un alt domeniu cu o dezvoltare spectaculoasa il constituie telecomunicatiile. Astazi se poate comunica rapid intre oricare doua puncte de pe glob. Posibilitatile de comunicare au fost folosite si in transferul de informatii intre calculatoare aflate chiar la distante considerabile. Din sinergia intre facilitatile de memorare structurata, de prelucrare si accesare a informatiilor oferite de calculatoare si posibilitatile crescande ale domeniului telecomunicatiilor au aparut si in prezent au o extindere exploziva, retelele internationale de calculatoare.

Pentru a pune la dispozitie serviciile calculatoarelor electronice unui spectru cat mai larg de utilizatori, au fost dezvoltate instrumente concepute astfel incat sa permita accesul la retelele de calculatoare chiar a celor care nu au nici cea mai mica idee asupra a ceea ce este si cum functioneaza un calculator. Se poate spune ca, deja de acum, calculatorul devine un 'aparat' banal chiar pentru un copil, cum ar fi, de exemplu, telefonul sau telecomanda unui televizor. Similar cu aceste aparate banale, un utilizator al lui nu trebuie sa stie nimic despre functionarea acestuia, ci numai cum se foloseste. Aceasta comparatie intre telefon, telecomanda unui televizor si calculator nu este aleasa intamplator, in viitorul nu foarte indepartat preconizandu-se ca, in fiecare casa, acestea sa fie integrate intr-un singur dispozitiv care va permite atat comunicarea prin (video) telefon, receptarea de programe interactive de televiziune, primirea acasa a unor reviste si jurnale 'electronice', accesul la banci de date aflate pe orice calculator de pe glob si, bineinteles, utilizarea programelor de pe calculatorul propriu sau de pe oricare alt calculator de pe glob. Aceste facilitati vor fi puse la dispozitie prin asa-numitele 'magistrale informationale' care vor impanzi globul.

Omenirea cunoaste in momentul de fata una din cele mai profunde transformari din intreaga ei existenta in care informatica joaca un rol determinant. Daca deceniul trecut a fost marcat de aparitia si perfectionarea calculatoarelor personale, accesibile la preturi din ce in ce mai scazute, anii '90 sunt caracterizati prin conectarea calculatorelor in retele locale si retele de arie larga.

Acestea confera informaticii un rol determinant in asigurarea legaturilor stiintifice, de afaceri, bancare sau de alta natura intre persoane si institutii. Astazi sute de milioane de calculatoare deservind utilizatori cu cerinte foarte diverse, sunt interconectate intr-o structura informatica globala numita de ziaristi "cyberspace".

O retea reprezinta un grup de calculatoare conectate intre ele astfel incat sa poata comunica. Acest calculatoare nu trebuie sa fie apropiate intre ele. Pot fi in aceeasi camera, in aceeasi cladire sau in diferite parti ale lumii.

Daca reteaua este compusa din calculatoare care se afla in aceeasi camera, cladire sau campus ea se numeste retea locala (Local Area Network - LAN). Daca reteaua se afla in acelasi oras se numeste retea metropolitana (Metropolitan Area Network - MAN). In cazul in care reteaua este raspandita pe o arie ce cuprinde mai multe tari si/sau continente, ea se numeste retea de mari dimensiuni (Wide Area Network - WAN).

Avantajele utilizarii retelelor sunt:

partajarea resurselor - toate echipamentele, programele si datele sunt disponibile pentru oricine din retea, indiferent de localizarea fizica a utilizatorului si a resursei;

asigurarea unei fiabilitatii mari prin accesul la mai multe echipamente de stocare;

economii financiare - calculatoarele mici au un raport pret/calitate mai bun decat sistemele mari. Sistemele mari sunt de zece ori mai rapide dar costa de o mie de ori mai mult;

accesul la informatii la distanta - formele pe care le are accesul la distanta sunt multiple: plata taxelor, accesul la institutii financiare, cumparaturi la domiciliu, informatii despre arte, afaceri, politica, sanatate, istorie, stiinta, sport etc.

comunicatii personale - posta electronica este deja folosita pe scara larga si poate contine secvente audio; comunicatiile in timp real permit utilizatorilor aflati la distanta sa comunice fara nici o intarziere; sunt posibile videoconferinte, intre oameni aflati in diverse locuri pe glob;

divertisment interactiv - jocuri pentru mai multe persoane cu simulare in timp real ; se poate juca la ruleta in Las Vegas sau Quake cu persoanele din toate colturile lumii.

In aceasta conjunctura s-a dezvoltat ceea ce se cunoaste sub numele de Intenet.

Capitolul II. Tehonolgii Web

2.1. World Wide Web

Scurt istoric

WORLD WIDE WEB (sau mai simplu WEB sau WWW) este un context arhitectural pentru accesul la documente raspandite pe mii de masini din Internet , intre care exista legaturi . In 5 ani a evoluat de la o aplicatie pentru transmiterea de date utile pentru fizica energiilor inalte la o aplicatie despre care milioane de oameni cred ca este Internetul. Popularitatea sa enorma se datoreaza faptului ca are o interfata grafica plina de culoare, usor de utilizat de catre utilizatori si in acelasi timp ofera o cantitate imensa de informatie despre orice subiect posibil

WEB-ul a aparut din necesitatea de a permite cercetatorilor raspanditi in lume sa colaboreze utilizand colectii de rapoarte, planuri, desene, fotografii si alte tipuri de documente aflate intr-o continua modificare. Propunerea initiala pentru crearea unei colectii de documente avand legaturi intre ele (WEB) a fost facuta de fizicianul Tim Berners-Lee, fizician la CERN, in martie 1989. Primul prototip (bazat pe text) era operational 18 luni mai tarziu. In decembrie 1991 s-a facut o demonstratie publica la conferinta Hypertext '91, in San Antonio, Texas. Actiunea a continuat in anul urmator, fiind incununata cu realizarea primei interfete grafice, Mosaic, in februarie 1993.

Mosaic a fost atat de popular incat un an mai tarziu autorul sau Mark Andreessen a parasit NCSA unde Mosaic-ul a fost dezvoltat, pentru a forma o noua companie, Netscape Communication Corp. care se ocupa de dezvoltarea de software pe WEB.

In 1994 CERN si MIT au semnat o intelegere de a forma consortiul WORLD WIDE WEB, organizatie care are ca obiectiv dezvoltarea WEB-ului, standardizarea protocoalelor si incurajarea interoperabilitatii intre site-uri. De atunci, sute de universitati si companii au intrat in consortiu. MIT coordoneaza partea americana a consortiului, in timp ce centrul de cercetari INRIA coordoneaza partea europeana. Desi exista foarte multe carti despre WEB, cel mai bun loc pentru gasirea unor informatii la zi despre el este (in mod natural) chiar WEB-ul. Pagina consortiului are adresa htttp://www.w3.org. Cititorii interesati vor gasi acolo legaturi la pagini care acopera toate documentele si activitatile consortiului.

Descriere

Din punct de vedere al utilizatorului, WEB-ul se prezinta ca o colectie imensa de documente raspandite in toata lumea, numite pagini. Fiecare pagina poate sa contina legaturi (indicatori) la alte pagini, aflate oriunde in lume. Utilizatorii pot sa aleaga o legatura (de exemplu prin executia unui click) care ii va duce la pagina indicata de legatura. Acest proces se poate repeta la nesfarsit, fiind posibil sa se traverseze in acest mod sute de pagini legate intre ele. Despre paginile care indica spre alte pagini se spune ca utilizeaza hypertext.

Paginile Web sunt vizualizate pe calculatorul client cu ajutorul unui program special numit browser. La inceput, Web-ul consta numai din pagini de text, fara nici o imagine. Odata cu aparitia primului browser Web grafic in anul 1993, Web-ul a inceput sa se impuna cu adevarat. Nu cu mult timp in urma, browserul Navigator al firmei Netscape era cel mai popular program de navigare, insa browser-ul Internet Explorer de la Microsoft ocupa in momentul de fata mai mult de jumatate din piata.

Programul de navigare aduce pagina ceruta, interpreteaza textul si comenzile de formatare continute in text si afiseaza pagina, formatata corespunzator, pe ecran. Majoritatea paginilor de WEB incep cu titlu, contin informatii si se termina cu adresa de posta electronica a celui care mentine pagina. Sirurile de caractere care reprezinta legaturi la alte pagini se numesc hyperlegaturi, sunt afisate in mod diferit, fiind subliniate si/sau colorate cu o culoare speciala. Pentru a selecta o legatura, utilizatorul va plasa cursorul pe zona respectiva (utilizand mouse-ul sau sagetile de pe tastatura) si comanda selectia (cu ajutorul mouse-ul sau apasand tasta ENTER). Desi exista programe de navigare fara interfata grafica, ca de exemplu lynx, ele nu sunt atat de utilizate ca programele de navigare grafice.

Tehnologia folosita de Worl Wide Web este cea client-server, care presupune urmatoarele etape:

Un calculator (clientul) formuleaza o cerere

Cererea clientului este expediata unui server

Serverul analizeaza aceasta cerere, o executa, formuleaza raspunsul si il expediaza clientului

Clientul receptioneaza raspunsul la cererea solicitata

Modelul de comunicare intre serverul WEB si clientul care acceseaza informatia este urmatorul (sa zicem ca aceseaza https://www.w3.org/hypertext/WWW/TheProject.html) :

· Programul de navigare determina URL (pe baza selectiei)

· Programul de navigare intreaba DNS care este adresa IP pentru masina care se numeste www.w3.org.

· DNS raspunde cu 18.23.0.23

· Programul de navigare realizeaza conexiunea TCP cu portul 80 al 18.23.0.23

· Trimite o comanda GET /hypertext/WWW/TheProject.html

· Serverul www.w3.org transmite fisierul 'TheProject.html'

· Conexiunea TCP este eliberata

· Programul de navigare afiseaza formatat textul din 'TheProject.html'

· Programul de navigare aduce si afiseaza toate imaginile din 'TheProject.html'

HTML si URL

'Limbajul' in care sunt descrise paginile WEB se numeste HTML. El este derivat din SGML, si este format din seturi de tag-uri inserate in text, care dau directive asupra modului in care sa se formateze textul. In functie de posibilitatile hard ale sistemului pe care se vizualizeaza pagina, si de posibilitatile browserului, pagina va fi afisata cu mai multe sau mai putine caracteristici de formatare (un browser in mod text nu va putea folosi fonturi de marimi diferi 525h79f te). Tagurile sunt texte cuprinse intre '<' si '>'. Textul va trebui sa nu contina aceste caractere, aparitia lor trebuind inlocuita cu metacaractere inlocuitoare ('&lt;' si '&gt;') la randul lui, '&' trebuie si el inlocuit cu metasecventa '&amp;'. Si alte caractere se pot specifica prin metasecvente (de exemplu caractere care nu sunt in setul standard ASCII).

Numele tagurilor nu sunt 'case sensitive', doar optiunile si argumentele pot face distinctie in anumite cazuri intre literele mari si mici (de exemplu calea intr-un URL care se gaseste in tagul <a>).

Textul este cuprins intre tagurile <html> si </html>. El cuprinde o sectiune de 'head' si una de 'body'. Sectiunea de 'head' contine informatii despre document care nu se vor afisa in pagina (eventual se va afisa pe bara de titlu a ferestrei browserului). Textul din sectiunea de 'body' contine descrierea paginii propriu zise. In cadrul textului caracterul de sfarsit de linie este ignorat, la fel si taburile sau aparitile multiple de spatii (se retine numai unul).

URL (Uniform Resource Location) reprezinta o conventie de localizare a unei resurse informationale. El cuprinde (de la dreapta la stanga) identificarea fisierului referit pe masina pe care se afla, numele masinii pe care se gaseste si modul (protocolul) de accesare a acesteia. De exemplu in URL-ul: https://home.ro/pclaude din exemplu protocolul este http (acces prin portul 80 prin protocolul HTTP), masina este home.ro iar identificarea paginii este 'pclaude' - adica pagina personala a userului pclaude. Serverul HTTP va rezolva acest identificator la calea interna /home/pclaude/public_html/index.html. Se observa ca sarcina localizarii pe server este sarcina serverului, care cunoaste propriul mod de identificare a resurselor sale publice.

Nu toate fisierele de pe un server WEB pot fi accesate prin HTTP. De obicei paginile publice se afla in directoare speciale, identificarea lor facandu-se cu calea relativa la acel director. Daca nu se specifica decat calea relativa a unui director, serverul intoarce un fisier cu nume implicit (de obicei numit index.html). Exista si alte conventii (de exemplu /~user/ reprezinta directorul radacina al informatiilor publice ale userului 'user'. URL-ul este un caz particular de mai putin cunoscutul URI (Uniforme Resource Identifier) care identifica unic pe Internet resursele care se pot accesa prin diferite protocoale

Paginile WEB pot contine imagini (tagul <img>), tabele (tagul <table>) , etc. In sectiunea de 'head' se pot specifica prin tagul '<meta>' informatii despre autor, firma de care apartine si chiar informatii destinate motoarelor de cautare (descriere, cuvinte cheie, etc).

Server de Web

Serverul web este un calculator care gazduieste un site web si care e capabil sa raspunda cererilor de pagini web din partea clientilor. Pentru a realiza acest lucru, server-ul trebuie sa ruleze o aplicatie speciala numita httpd (HyperText Transfer Protocol Demon). Ca servere Web, cele mai intalnite sunt: Apache Server , Microsoft Web Server , Oracle Web Server

In momentul de fata se folosesc foarte multe tipuri de calculatoare si sisteme de operare, majoritatea oferind software server Web de buna calitate. Cele mai cunoscute sisteme de operare pentru calculatoare ce deservesc pagini Web sunt UNIX si Microsoft Windows NT/2000.

Unix este folosit de la crearea Web-ului si majoritatea serverelor Web ruleaza in continuare acest sistem. Windows NT /2000 este mai nou in domeniu, dar si-a castigat rapid popularitatea. Din punctul de vedere al designer-ului Web, server-ul utilizat pentru livrarea unei pagini este in general irelevant, cu anumite exceptii:

. UNIX este folosit de mai mult timp si este relativ stabil. Windows NT sufera actualizari majore si de aceea poate avea probleme in acest sens

. Exista foarte multe companii care au baze de date Microsoft Access pe care vor sa le integreze in site-ul lor, acest lucru putandu-se face numai in mediul Windows NT

. Furnizorii de servicii Internet (Internet Service Provider - ISP) percep in general taxe mai reduse pentru servere bazate pe UNIX, pentru ca intretinerea sistemului este mai putin costisitoare dacat Windows NT.

Intre calculatoarele interconectate informatia circula in pachete. Pachetele contin adresa expeditorului si cea a destinatarului, informatia, numele aplicatiei client care a formulat cererea si numele aplicatiei de pe server care va primi cererea. Aceste pachete sunt dirijate pentru a ajunge la destinatie prin anumite mijloace de dirijare precum Internet Protocol (IP). Reteaua Internet dispune de asemenea si de mijloace de corectie a erorilor de transmitere a pachetelor. Un astfel de mijloc este Transfer Control Protocol (TCP) - Protocolul de Control al Transferului.

Site-urile Web reprezinta o serie de pagini Web care sunt interconectate. Site-urile pot contine legaturi catre alte site-uri, lucru care duce la obtinerea unor panze de informatii. Primul document dintr-un site se numeste Home Page (pagina de pornire). Ea contine legaturi catre toate celelalte documente.

Site-urile Web sunt publicate prin transferul fisierelor HTML si al fisierelor multimedia asociate pe servere Web. Protocolul de transfer al fiserelor (FTP) este un standard care permite mutarea, redenumirea sau stergerea fisierelor de pe un calculator la distanta.

2.2 Serverul de Web Apache

Istoric si caracteristici

Unul dintre cele mai utilizate servere de web, Apache Web Server este un efort de a oferi o alternativa viabila necomerciala, in domeniul serverelor de web. Reusita acestui proiect este in mare masura legata de fenomenele initiate prin oameni ca Linus sau Stalman, ce au avut ca rezultat produse extraordinare, puternice si eficiente cum ar fi Linux, Emacs precum si toate pachetele software aparute sub licenta GNU.

Crearea unui proiect de sine statator - The Apache Project este rezultatul reunirii unui mare numar de voluntari, comunicand prin intermediul Internet-ului. Acestia sunt cunoscuti sub numele de Apache Group. In plus, sute de utilizatori din intreaga lume au contribuit la proiect prin cele mai diverse mijloace, de la cod sursa pana la documentatie HTML.

Apache isi are originea din ideile si codul aflat in cel mai popular server HTTP al timpului NCSA . In 1995 cel mai performant server de web era practic cel dezvoltat la NCSA , University of Illiois, de catre Rob McCool. In momentul in care acesta a plecat si nu a mai continuat dezvoltarea serverului sau, au inceput sa apara o multime de programatori ce produceau versiuni modificate si imbunatatite ale acestui server. Un grup de asemenea programatori au decis in februarie 1995 sa se reuneasca intr-un proiect de dezvoltare si imbunatatire a serverului initial. Pornind de la NCSA httpd 1.3 ei au construit, prin adaugarea celor mai bune patch-uri, versiunea Apache 0.6.2 care a fost lansata in aprilie 1995.

Desi NCSA si-a reinceput dezvoltarea serverului in aceeasi perioada, Apache a continuat sa devina cel mai utilizat server de web din comunitatea unix in urmatorii doi ani. Acesta a fost implicat mai departe in cele mai multe sisteme UNIX care contin servere HTTP.

Designul unei noi arhitecturi si rescrierea serverului intr-o maniera extrem de modulara si eficienta a dus la o popularitate crescanda serverului. Apache este, din ianuarie 1997, cel mai utilizat server WWW de Internet. Deasemenea Apache a aratat a fi cel mai rapid dintre serverele de tip free.

Serverul ofera desigur majoritatea facilitatilor gasite in cazul oricarui server de web modern. O indelungata perioada de timp acesta chiar a stabilit standardele in domeniu. Astfel, din punct de vedere al securitatii gasim suport SSL, protectie de tip username/password asupra directoarelor, HTTPS etc.

Server-side includes a fost o inovatie a Apache Group. Suportul modular de adaugire a unor noi facilitati la server, content handlers, persistent connections, online statistics (incluzand aici chiar si broadcastingul de informatie de logging) etc, toate acestea sunt elemente in care Apache a adus elemente mai mult sau mai putin noi.

Detalii de instalare si configurare

In prezent serverul se prezinta sub forma unui pachet software de tip tar-gzip (exista si o versiune pentru Windows NT ) ce contine sursele complete precum si un set de documentatie pentru server. Compilarea serverului este extrem de facila si nu s-a intalnit nici o platforma uzuala care sa aiba vreo problema la compilare. .

Rezultatul compilarii va fi in principal un fisier binar executabil numit in principal httpd, localizat in directorul src/. Se recomanda copierea acestui binar intr-un loc mai sigur, eventual crearea unui director bin/ (de exemplu) si copierea in acel director. In unele versiuni mai vechi, calea (path-ul) catre locul unde este instalat serverul va trebui inserata in unele fisiere sursa, inainte de compilare. Deoarece acest fapt nu mai este de actualitate nu il vom comenta insa se recomanda instalarea serverului la o locatie destul de comuna ,de exemplu: in /usr/local/http, /usr/http sau chiar /etc/http/. NU instalati serverul (fisierul binar) in sistemul de fisiere principal. (/usr/bin, /bin, etc.)

Dupa instalarea binarului (vom presupune /usr/http ca director principal de instalare si /usr/http/bin directorul in care se gaseste fisierul binar executabil httpd) va trebui configurat serverul prin modificarea unor fisiere de configurare. Acestea se gasesc in acest caz in /usr/http/conf. Ele sunt httpd.conf, access.conf, srm.conf. Fiecare dintre ele stabilesc parametri diferiti pentru serverul de web. Se recomanda citirea documentatiei de configurare. Nu trebuie modificate direct fisierele de configurare existente in acel director. De obicei numele acestora are o extensie ?-dist'. (Ex. httpd.conf-dist) . Se copie acestea in fisiere cu nume fara extensia respectiva (Ex. cp httpd.conf-dist httpd.conf) si abia apoi se va modifica fisierul copie.

Configurarea serverului in cazul cel mai simplu impune doar modificarea, in httpd.conf, a numelui serverului precum si, in toate fisierele, a cailor (path) ce definesc locul de instalare a serverului precum si a documentelor html.

Dupa configurarea serverului se impune pornirea acestuia. Exista doua moduri de rulare a serverului. Modul implicit si cel mai utilizat de rulare este modul daemon. In mod daemon acesta este pornit si ruleaza in background, activandu-se de la sine de mai multe ori, asigurand astfel un bun timp de raspuns la cereri HTTP. Al doilea mod ar fi rularea serverului prin intermediul daemonului inetd. In acest caz, inetd are grija de interceptarea unei cereri HTTP si pornirea unei copii a unui server de web pentru tratarea acelei cereri. Nu se recomanda acest mod de rulare decat in cazuri speciale.

Pornirea serverului (modul daemon) se rezuma la executarea binarului cu parametrii adecvati (in principal stabilirea caii fisierului primar de configurare httpd.conf) dupa care acesta va raporta orice erori sau probleme precum si accesele de web in cazul rularii, prin intermediul unor fisiere de log localizate in directorul logs/. In cazul unor erori sau porniri defectuoase se recomanda analizarea fisierului error-log din logs/.

Dupa ce ati pornit serverul exista posibilitatea accesarii unei documentatii complete chiar prin serverul proaspat instalat.

2.3 Limbajul PHP (Hypertext Preprocessor)

Prezentare

PHP (Hypertext Preprocessor) este unul din cele mai populare limbaje de scripting folosite in dezvoltarea site-urilor de comert electronic, stiri on-line sau a site-urilor cu volume mari de informatii. Ajuns la versiunea 5, limbajul PHP castiga in popularitate datorita usurintei de programare, a rapiditatii codului si a multitudinii de facilitati oferite. In prezent, majoritatea site-urilor care includ diverse forme de interactiune cu utilizatorul se bazeaza pe PHP. Limbajul PHP este absolut gratuit, oferind facilitati de portare pe Windows, Linux si in majoritatea mediilor Unix.

PHP (Hypertext Preprocessor) este un mediu de programare pe server care este folosit pentru crearea paginilor Web interactive si construirea aplicatiilor Web puternice. Principiul de functionare este foarte simplu : cand serverul Web primeste o cerere pentru un fisier PHP, prelucraza scriptul continut in fisier pentru a crea pagina Web care este trimisa in cod HTML pur catre browser. Scripurile scrise in PHP sunt o cale usoara pentru a crea aplicatii Web foarte puternice. Daca ati dorit vreodata sa stocati informatia dintr-un formular HTML intr-o baza de date, sa realizati un catalog de produse sau sa oferiti acces intr-o zona a site-ului numai anumitor persoane veti gasi in PHP solutii pentru toate aceste probleme.

Este de notat diferenta cu alte limbaje script CGI scrise in limbaje precum Perl sau C: in loc de a scrie un program cu o multitudine de linii de comanda afisate in final intr-o pagina HTML, se va scrie o pagina HTML cu codul inclus pentru a realiza o actiune precisa . Codul PHP este inclus intre tag-urile speciale de inceput si de sfarsit care permit utilizatorului sa treaca din 'modul HTML' in 'modul PHP'. Este posibila sa se configureze serverul de Web astfel incat acesta sa prelucreze (analizeze) toate fisierele HTML ca fisiere PHP. Astfel nu exista nici un mijloc de a distinge paginile care sunt produse dinamic de paginile statice.

Fata de alte limbaje scriptuale, precum Javascript, la PHP codul se executa pe server, pe cand JavaScript este executat pe calculatorului clientului (de navigatorul de Internet).

Scripturile scrise in PHP sunt rulate pe server astfel codul sursa nu poate fi copiat pentru ca la client ajunge numai rezultatul ,fara a vedea in nici un fel codul din spatele acestuia. Acest lucru si multitudinea de functii care sunt inglobate in PHP fac din acesta unul din limbajele cel mai des folosite pentru realizarea aplicatiilor de tip e-commerce, e-business sau e-school. Un alt avantaj care a determinat evolutia rapida a acestui limbaj de script este documentatia foarte bogata care se afla pe Internet (manuale,tutoriale,cod sursa).

Inceputurile PHP

PHP cunoscut in versiunile mai vechi si sub numele de PHP/FI (Personal Homepage/Form Interpreter), initial a fost gandit a fi o simpla aplicatie CGI pentru interpretarea formularelor definte prin HTML si procesate de un program scris intr-un limbaj Perl, script shell, executat pe server. In cazul interfetei CGI era necesara permisiunea de a rula programe pe server, ceea ce ducea la lacune in securitate si in plus la disocierea de documentul HTML a programului care procesa datele.

Istoria PHP-ului incepe la sfarsitul anului 1994, cand Rasmus Lerdorf dezvolta prima versiune, ca proiect personal. PHP-ul este facut public in debutul anului 1995 sub denumirea de Personal Home Page Tools, fiind considerat un analizor simplist care interpreta cateva macrouri ce puteau fi incluse in cadrul documentelor HTML, permitand contorizarea accesului la paginile Web sau accesarea unei carti de oaspeti (guestbook). Analizorul a fost rescris la mijlocul aceluiasi an si denumit PHP/FI 2.0, unde FI era o alta aplicatie scrisa de Rasmus Lenford, un interpreter de formulare HTML. A fost adaugat si suportul pentru bazele de date mSQL si astfel PHP/FI a inceput sa aiba succes, fiind disponibil gratuit pe Web. Se estimeaza ca la sfarsitul lui 1996 cel putin 15 mii de site-uri Web utilizau PHP/FI, iar in anul 1997 numarul acestora era de 50 de mii.

Programatorii Zeev Suraski si Andi Gutmans rescriu analizorul PHP si noua aplicatie formeaza nucleul versiunii PHP 3.0 care include o parte din vechile surse PHP/FI 2.0. Relativ recent, la inceputul anului 2000, a fost facuta publica versiunea PHP 4.0, utilizand puternicul motor de scriptare Zend si oferind suport nu numai pentru serverul Apache ci si pentru alte servere Web. De asemeni, PHP 4.0 ofera posibilitatea accesarii documentelor XML via DOM.

PHP in versiunile actuale - reprezinta un pachet puternic care ofera un limbaj de programare accesibil din cadrul fisierelor HTML, limbaj asemanator cu Perl sau C, plus suport pentru manipularea bazelor de date intr-un dialect SQL si acces la sisteme hipermedia precum Hyperwave. De asemeni, PHP suporta incarcarea fisierelor de pe calculatorul client: upload (standard propus de E. Nebel si L. Masinter de la Xerox, descris in RFC 1867) si ofera suport pentru cookies (mecanism de stocare a datelor in navigatorul client pentru identificarea utilizatorilor, propus de Netscape).

Aceasta aplicatie este disponibila gratuit pe Internet, pentru medii Unix si mai nou pentru medii Windows (inclusiv sursele), integrandu-se in popularul sever Apache.

Se estimeaza ca numarul site-urilor care folosesc in prezent PHP este de peste un milion. Deja, pe Web, exista o multitudine de aplicatii si utilitare concepute in PHP, care se regasesc grupate si in asa-numitul PEAR (PHP Extension and Add-on Repository ).

Aspecte generale privind instalarea

Inainte de inceperea instalarii, este necesar sa se stie pentru ce anume se doreste a fi utilizat PHP-ul . Sunt trei domenii principale in care poti folosi PHP-ul :

1. Scripturi ce ruleaza pe partea de server

2. Scripturi ce ruleaza din linia de comanda

3. Aplicatii GUI ce ruleaza la client

Pentru prima si cea mai utilizata forma, sunt necesare trei lucruri:

PHP-ul insasi

un server de web

un navigator web.

Probabil , ca utilizatorul, are deja un navigator web si, depinzand de instalarea sistemului sau de operare, s-ar putea sa aiba si un server de web (ex. Apache pe Linux sau IIS pe Windows). Utilizatorul ar putea, de asemenea, sa inchirieze spatiu pe web de la o companie. In acest fel, nu trebuie sa-l seteze el personal, doar sa scrie scripturile PHP, sa le transfere pe serverul pe care s-a inchiriat spatiul si sa se vada rezultatul obtinut in browser. Se poate gasi o lista cu companii care ofera hosting la https://hosts.php.net/.

Daca utilizatorul doreste sa instaleze serverul web si PHP-ul de unul singur, are la dispozitie doua metode de a conecta PHP-ul de server. Pentru majoritatea serverelor, PHP -ul are un modul direct de interfata (numit si SAPI). Aceste servere includ Apache, Microsoft Internet Information Server, Netscape si iPlanet. Multe alte servere au suport pentru ISAPI, modulul de interfata Microsoft (OmniHTTPd spre exemplu). Daca PHP-ul nu are suport de modul pentru serverul de web folosit de utilizator, atunci se poate folosi intotdeauna ca un procesor CGI. Aceasta inseamna ca trebuie sa se configureze serverul de web , astfel incat, sa foloseasca executabilul in linie de comanda a PHP-ului (php.exe in Windows) ca sa proceseze toate fisierele PHP cerute pe server.

Daca utilizatorul este de asemenea interesat sa foloseasca php in scripting linie de comanda (ex. scriearea de scripturi care sa autogenereze imagini offline, sau procesarea de fisiere text depinzand de argumentele pe care le trimite utilizatorul), intotdeauna este nevoie de executabilul in linia de comanda. Pentru mai multe informatii, poate fi citita sectiunea despre scrierea de aplicatii PHP in linia de comanda. In acest caz nu este nevoie de server si nici de navigator.

Cu PHP pot fi deasemenea sa fie scrise aplicatii GUI ce ruleaza de partea clientului folosind extensia PHP-GTK. Aceasta este o abordare total diferita decat cea a scrierii paginilor web, deoarece utilizatorul nu scoate nici un rezultat HTML, dar manevreaza ferestre si obiecte din interiorul lor. Pentru mai multe detalii despre PHP-GTK, poate fi vizitat site-ul dedicat acestei extensii. PHP-GTK nu este inclus in distributia oficiala a PHP-ului.

Se descarca PHP, codul sursa, si distributiile binare pentru Windows care pot fi gasite la https://www.php.net/. Se recomanda sa se aleaga un server care se afla mai aproape de utilizator pentru a descarca mai repede distributiile.

Utilizarea PHP

Cele mai bune lucruri in folosirea PHP-ului sunt ca este foarte simplu pentru un incepator, dar ofera o multime de facilitati avansate pentru un programator profesional.

PHP este in principal axat pe partea de scripting ce ruleaza pe server, deci se poate face orice poate face si un program CGI, cum ar fi colectarea de date de la formulare, generarea de continut dinamic sau trimitere si primire de cookie-uri. Dar PHP poate face mult mai multe.

Exista trei domenii principale unde sunt folosite scripturile PHP:

1) Scripturi ce ruleaza pe server. Acesta este cel mai traditional si cel mai important pentru PHP. Sunt necesare trei lucruri pentru a face sa mearga. Interpretorul PHP (CGI sau modul de server), un server de web si un navigator de web. E nevoie ca serverul de web sa fie pornit, cu o conexiune PHP instalata. Se poate accesa rezultatul programelor PHP cu un navigator prin intermediul serverului de web.

2) Scripting la linia de comanda. Se poate face ca PHP sa ruleze fara a fi nevoie de server si de browser, ci doar de interpretorul PHP. Aceasta metoda este ideala pentru scripturile ce se vor a fi executate regulat folosind cron (task scheduler in Windows), sau sarcini simple de procesare a textelor.

3) Scrierea de aplicatii ce ruleaza de partea clientului in mod grafic (GUI). Probabil ca PHP nu este limbajul cel mai bun de a scrie aplicatii cu ferestre pentru Windows sau alte sisteme de operare, dar daca se doreste folosirea unor facilitati avansate ale PHP-ului in aplicatiile proprii ce ruleaza de partea clientului se poate totusi folosi PHP-GTK pentru a scrie astfel de programe. Deasemenea exista posibilitatea de a scrie aplicatii ce ruleaza pe platforme diferite folosind aceasta metoda. PHP-GTK este o extensie a PHP-ului, nedisponibila in distributia principala de PHP.

PHP poate fi folosit pe aproape toate marile sisteme de operare, incluzand Linux, multe variante de Unix (incluzand HP-UX, Solaris si OpenBSD), Microsoft Windows, Mac OS X, RISC OS, probabil si altele. PHP are deasemenea suport pentru majoritatea serverelor de web din prezent. Acestea includ serverele Apache, Microsoft Internet Information Server, Personal Web Server, Netscape si iPlanet, serverul Oreillz Website Pro, Caudium, Xitami, OmniHTTPd, si multe atele. Pentru majoritatea serverelor PHP are un modul, iar pentru celelalte suporta standardul CGI, PHP putand sa lucreye ca un procesor CGI.

Deci, cu PHP, exista libertatea de a alege un sistem de operare si un server de web. Chiar mai mult, exista posibilitatea de a alege programarea procedurala sau programarea orientata obiect, sau chiar amestecarea lor. Cu toate acestea, nu orice facilitate a standardului POO este prezenta in versiunea curenta a PHP-ului, multe librarii de cod si aplicatii mari (incluzand si libraria PEAR) sunt scrise folosind doar cod POO.

* Facilitati in PHP

Una dintre cele mai puternice si importante facilitati in PHP este suportul sau pentru o gama larga de baze de date. Scrierea une pagini de web ce interactioneaza cu o baza de date este incredibil de simpla. Sunt suportate o mare varietate de formate de baze de date (dBase, Informix, MySQL, mSQL, Oracle, PostgreSQL, Solid, Sybase, ODBC etc.).

Deasemenea avem o extensie abstracta a bazei de date DBX ce iti permite intr-un mod transparent folosirea oricarei bazei de date ce suporta aceasta extensie. Mai mult, PHP suporta ODBC, standardul Open Database Connectio, deci este posibila conectarea la orice alta baza de date ce suporta acest standard mondial.

Cu PHP nu exista limitarea de a scoate rezultat HTML. Posibilitatile PHP-ului includ afisarea de imagine, fisiere PDF si chiar filmulete Flash (folosind librariile libswf si Ming) toate generate instant. Este posibil deasemeanea ca rezultatul sa fie orice fisier text, cum ar fi XHTML sau orice alte fisiere XML. PHP poate genera automat aceste fisiere si sa le salveze in sistemul de fisiere in loc sa le afiseze, formand un cache de partea serverului pentru continutul dinamic.

PHP are deasemeanea suport pentru a conversa cu alte servicii folosind protocoale cum ar fi LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (pe Windows) si multe altele. Se pot deasemenea deschide deasemenea socket-uri de retea si sa se interactioneze intre aproape toate limbajele de programare Web. Apropo de interconectare, PHP are suport pentru instantierea obiectelor Java si utilizarea lor intr-un mod transparent ca obiecte PHP. Este posibila deasemenea folosirea extensiilor CORBA pentru a accesa obiecte aflate la distanta.

PHP are capabilitati extrem de folositoare pentru procesarea textului, de la POSIX Extins sau expresii regulare Perl pana la parsarea documentelor XML. Pentru parsarea si accesarea documentelor XML, sunt suportate standardele SAX si DOM. Este posibila in PHP folosirea extensiei XSLT pentru a transforma documentele XML.

Folosind PHP in domeniul comertului electronic, foarte folositoare pentru programe de plati online sunt functiile de plata Cybercash, CyberMUT, VeriSign Payflow Pro si CCVS.

In cele din urma, dar nu ultimul rand, exista si alte extensii interesante, cum ar fi functii ale motorului de cautare mnoGoSearch, functii pentru accesarea IRC-ului, multe utilitare de compresie (gzip, bz2), conversie de calendar, traducere si multe altele.

Tipuri de date, Variabile, Constante, Operatori, Definire functii

In PHP lucrul cu variabile este extrem de simplu. PHP recunoaste usor tipurile variabilelor, iar sintaxa de definire a acestora are structura cea mai simpla posibila. Aceia care au mai lucrat cu C, Java sau Perl, vor gasi lucrul cu PHP foarte usor.

Toate variabilele, in PHP incep su semnul dolar ($). Nu conteaza ce tip de variabila folositi. In codul programului toate arata la fel. PHP retine tipul informatiei stocate in variabila.

Nu este necesara o declarare a variabilelor la inceputul programului. Tot ce trebuie sa faceti este doar sa le folositi si ele exista. Cum am spus, toate tipurile de variabile arata la fel. Urmatorul exemplu arata cum se declara o variabila de tipul string, integer, si floating-point (tipurile de date vor fi discutate si explicate imediat):

$a = "Acesta este un string"; //Acesta este un string

$b = 4; //Acesta este un integer

$c = 4.837 //Acesta este un numar in virgula flotanta (floating-point)

$d = "2"; //Acesta este tot un string

TIPURI DE DATE

Tipurile de date cele mai folosite in PHP sunt urmatoarele:

boolean

integer

floating-points

string

array

null.

In continuare le vom discuta pe fiecare pe scurt.

Boolean
Este cel mai simplu tip de date. O variabila de tipul boolean poate avea doar doua valori: TRUE sau FALSE (ADEVARAT sau FALS). De asemenea poate lua valori intregi care sa le repreainte pe cele de mai sus. Astfel, valoarea 0 inseamna FALSE, iar orice alta valoare intreaga diferita de 0 inseamna TRUE.

In urmatoarele exemple variabila a primeste valoarea TRUE (adevarat):

$a = TRUE;

$a = 1;

$a = -1;

sau valoarea FALSE (fals):

$a = FALSE;

$a = 0;

$a = ""; //sirul vid

Integer

Reprezinta multimea numerelor intregi Z =

Variabilele de acest tip pot fi initializate cu numere intregi specificate in format zecimal (in baza 10), hexazecimal (in baza 16) sau octal (in baza 8).

Exemplu:

$a = 1234; //numar intreg zecimal

$a = -123; //numar intreg negativ

$a = 0123; //numar intreg in format octal - numarul trebuie precedat de un 0

$a = 0x1AB; //numar intreg in format hexazecimal - numarul e precedat de 0x

Dimensiunea unui numar de tip Integer este dependenta de platforma, dar valoarea maxima este de aproximativ 2.000.000.000 cu semn (-2.000.000.000 . 0 . +2.000.000.000)

Floating-points

Reprezinta numerele cu virgula mobila, care pot fi specificate folosind oricare din sintaxele urmatoare:

$a = 1.23;

$a = 1.2e3;

$a = 7E-10;

Dimensiunea acestui tip de date este foarte mare, si este data de numere ce pot fi scrise pe 64 de biti (numarul maxim este in jurul valorii de 10^20 = 10 la puterea 20). Dezavantajul este ca are o precizie scazuta la ultimele cifre.

String

String reprezinta un sir de caractere.

Exista 3 moduri de definire a variabilelor de tip String, dar numai 2 sunt folosite in mod uzual.


- definirea cu ghilimele simple:

$a = 'Acesta este un string';


- definirea cu ghilimele duble:

$a = "Acesta este un string";

Pentru afisarea caracterului apostrof ( ' ) in cadrul textului, acesta trebuie precedat de caracterul backslash ( ). La fel se procedeaza pentru afisarea caracterului backslash ( ).

Exemplu:

$a = 'Arnold once said: 'I'll be back'';

//Va afisa: Arnold once said: "I'll be back"

Diferenta dintre cele doua modalitati este ca in cazul al doilea pot fi inserate anumite caractere speciale, iar daca in cadrul textului apare o variabila, aceasta va fi inlocuita cu valoarea continuta in ea.

Exemplu:

$x = 40;

$a = "S-au inscris $x participanti la cursul de PHP.";

//Va afisa: S-au inscris 40 participanti la cursul de PHP.

Caracterele speciale care pot fi folosite sunt urmatoarele:

n linie noua (line feed)

r intoarcere la inceputul liniei (carriage return)

t tab

backslash

$ semnul dolar

ghilimele

Array

In limba romana acest tip de date se numeste tipul Tablou si reprezinta o structura ordonata pe mai multe dimensiuni. Datele continute intr-un Array pot fi de tipuri diferite.

Sintaxa pentru definire este urmatoarea:

$nume_array[cheie] = valoare;
cheie - poate fi de tipul String sau Integer nenegativ

valoare - poate fi orice

Definirea se poate face in mai multe moduri, ilustrate in exemplul urmator:

// Acesta

$a = array( 'culoare' => 'rosu'

, 'gust' => 'dulce'

, 'forma' => 'rotund'

, 'nume' => 'mar'

4 // cheia este 0

);

// este absolut echivalent cu

$a['culoare'] = 'rosu';

$a['gust'] = 'dulce';

$a['forma'] = 'rotund';

$a['nume'] = 'mar';

$a[] = 4; // cheia este 0

//sau

$b[] = 'a';

$b[] = 'b';

$b[] = 'c';

// Va rezulta sirul array( 0 => 'a' , 1 => 'b' , 2 => 'c' ),

// sau mai simplu, sirul array('a', 'b', 'c')

Referirea la o variabila de tip tablou se face cu numele tabloului si cheie:

echo "Fructul $a['nume'] are gust $a['gust'].";

//Va afisa: Fructul mar are gust dulce.

Null

Valoarea speciala NULL reprezinta o variabila care nu are nici o valoare.

Sintaxa de atribuire a acestei valori unei variabile este urmatoarea:

$a = Null;

Atentie! Valoare null trebuie scrisa in forma aceasta Null, cu N mare.

VARIABILE

Cum am spus si la inceput, toate variabilele sunt precedate de semnul dolar ( $ ). Numele variabilelor este case-sensitive, adica tine cont de litere mari sau mici ($var este o variabila diferita de $Var). Numele unei variabile trebuie sa inceapa cu o litera sau liniuta de subliniere ( _ ) urmata de oricate litere, cifre sau liniute de subliniere.

Exemplu:

$var = "Bob";

$Var = "John";

echo "$var, $Var"; //Va afisa: "Bob, John"

$4me = "variabila"; //incorect - numele incepe cu o cifra

$_4me = "variabila"; //corect - numele incepe cu liniuta de subliniere

In PHP este permisa atribuirea unei valori prin referinta. Aceasta inseamna ca noua variabila va fi o referinta spre variabila originala. Modificarea variabilei noi va duce la modificarea celei originale, si invers. Aceasta atribuire are loc mult mai rapid, iar efectul se observa mai ales in structuri care se repeta. Pentru o astfel de atribuire se foloseste semnul ( & ) in fata valorii atribuite.

Exemplu:

$a = 'banana';

$b = &$a; //variabila $b va contine stringul 'banana'

$b = 'portocala'; //modificand variabila $b se va modifica si $a

Variabilele declarate in cadrul unui program nu sunt valabile si in interiorul functiilor definite de utilizator. Variabilele globale sunt valabila in tot programul, iar variabilele locale sunt valabile doar in cadrul structurii definite de utilizator.

Exemplu:

$a = 1; /* variabila globala */


Function Test ()


Test ();

Aceasta functie nu va afisa nimic, pentru ca variabila locala $a nu are atribuita nici o valoare. Pentru a folosi o variabila globala in interiorul functiei definite de utilizator, ea trebuie declarata in cadrul functiei cu clauza global.

$a = 1; /* variabila globala */


Function Test ()


Test ();

Aceasta functie va afisa valoarea 1, pentru ca foloseste variabila $a declarata global.

Variabilele pot fi luate si dintr-un formular HTML sau prin specificarea lor la apelarea paginii web, insa acestea vor fi tratate in alta lectie.

CONSTANTE

Constanta este un identificator pentru o valoare simpla. Cum spune si numele, valoarea acesteia nu se modifica pe durata executiei scriptului. Numele constantei este case-sensitive, ca si in cazul variabilelor. Prin conventie, constantele se scriu intotdeauna cu litere mari.

Exemplu:

define('CONSTANT', 'Hello world.');

echo CONSTANT; // Afiseaza: 'Hello world.'

Constantele pot contine numai date de tipul: boolean, integer, floating-point si string.

Exista cateva diferente intre constante si variabile:

- constantele nu au semnul dolar ( $ ) in fata

- constantele pot fi definite si accesate oriunde, fara a tine cont de regulile de la variabile

- constantele nu pot fi redefinite.

OPERATORI

Operatori aritmetici

$a + $b adunare

$a - $b scadere

$a * $b inmultire

$a / $b impartire

$a % $b modulo

Operatori de atribuire

$a = 3; //$a primeste valoarea 3

$a += 5; //$a ia valoarea 8, adica 3 + 5.

$c = ($b = 4) + 5; //$b primeste valoarea 4, iar $c valoarea 9

$b = 'Hello ';

$b .= 'There!'; //atribuie lui $b valoarea 'Hello There!', este echivalent cu $b = $b . 'There!';

Operatori la nivel de bit

$a & $b Si

$a | $b Sau

$a ^ $b Sau-Exclusiv

~ $a Not (Negare)

$a << $b Rotire la stanga (muta bitii lui $a cu $b pozitii spre stanga)

$a >> $b Rotire la dreapta (muta bitii lui $a cu $b pozitii spre dreapta)

Operatori de comparare

$a == $b egal cu

$a === $b identic cu

$a != $b deferit

$a <> $b diferit

$a !== $b neidentic

$a < $b mai mic

$a > $b mai mare

$a <= $b mai mic sau egal

$a >= $b mai mare sau egal

Operatori de incrementare/decrementare

++$a Pre-incrementare (aduna 1 la $a, apoi returneaza $a)

$a++ Post-incrementare (returneaza $a, apoi aduna 1 la $a)

--$a Pre-decrementare (scade 1 din $a, apoi returneaza $a)

$a-- Post-decrementare (returneaza $a, apoi scade 1 din $a)

Operatori logici

$a and $b Si

$a or $b Sau

$a xor $b Sau-Exclusiv

$a Not (Negare)

$a && $b Si

$a || $b Sau

Preluarea datelor din formular

Pentru a descrie un formular folositi eticheta FORM, care are urmatoarea forma elementara:

<FORM METHOD="metoda" ACTION="url" >

Atributul METHOD poate lua una din valorile GET sau POST.

Cand METHOD este GET (implicit), datele introduse in form sunt trimise ca o cerere HTTP GET cu ?form_data adaugat la sfarsitul  URL-ului specificat de atributul ACTION . Astfel, datele trimise prin metoda GET pot fi vizualizate de catre utilizator (dezavantaj).Folositea metodei GET permite ca trimiterea form-ului sa fie continuta in URL. Aceasta prezinta avantajul ca poate fi  facuta bookmark in browserele actuale, dar, datele nu pot contine caractere non-ASCII precum  'é' si '©'. De asemenea, cantitatea de date care poate fi procesata prin metoda GET este limitata de lungimea maxima a URL-ului pe care o accepta serverul si browserul. Pentru siguranta, form-urile care ar putea contine caractere non-ASCII sau mai mult de 100 de catactere trebuie sa foloseasca  METHOD=POST.Cu valoarea  METHOD egala cu  POST, datele introduse in form sunt trimise ca o cerere HTTP POST , iar datele sunt continute in interiorul cererii .Majoritatea browserelor actuale nu pot face bookmark la cereri POST , dar, astfel POST nu limiteaza lungimea si tipul de caracter introdus ,precum la  GET.

Ca incepator este mai bine sa folositi in mod consecvent metoda POST, deoarece alegerea intre metodele GET si POST este destul de complicata.Ca regula empirica, multi programatori folosesc GET pentru formulare care executa o cautare sau o interogare, respectiv POST pentru formulare care actualizeaza o baza de date sau un fisier.Astfel, datele trimise prin metoda GET pot fi vizualizate de catre utilizator.

Atributul ACTION specifica adresa URL a scriptului PHP care prelucreaza datele adunate prin intermediul formularului. Adresa URL poate fi o adresa completa,care include protocolul, numele gazdei si calea de acces, respectiv o adresa partiala, care specifica o locatie relativa la locatia paginii curente.

Intre eticheta FORM si eticheta sa /FORM corespunzatoare, plasati controalele formularului

Ex 1:

<FORM method="POST" action="https://www.php.intercer.org/test.php">

<FORM method="POST" action="test1.php">

Pentru a crea o caseta de tip text folosim un control text :

<INPUT TYPE="text" name="mytext">

Atributul NAME atribuie casetei cu text un nume, astfel incat continutul sau sa fie accesibil unui script PHP.Numele pe care il atribuiti unui control trebuie sa fie unic in cadrul formularului si trebuie sa respecte regulile pentru denumirea variabilelor PHP, cu exceptia ca nu trebuie sa inceapa cu simbolul $. HTML nu are o eticheata /INPUT.

Daca trimitem scriptului PHP date confidentiale, folosim o caseta text de tip password

<INPUT TYPE="password" name="mypassword">

Pentru a expedia datele unui script PHP aveti nevoie de un buton de expediere :

<INPUT TYPE="submit" VALUE="text">

Atributul VALUE specifica textul care trebuie sa apara pe suprafata butonului de expediere

Ex 2:

Crearea unui formular cu 3 controale: un control de tip text, unul de tip password si un buton

<FORM METHOD="post" ACTION="login.php">

Login : <INPUT TYPE="text" name="login">

Parola : <INPUT TYPE="password" name="parola">

<INPUT TYPE="submit" VALUE="Login">

</FORM>

Crearea de suprafete cu text

Ca o caseta cu text, o suprafata cu text permite unui utilizator sa introduca text.Cu toate acestea, o suprafata cu text poate permite utilizatorului sa introduca mai multe linii de text, in timp ce o caseta de text permite introducerea unei singure linii de text.

<TEXTAREA NAME="mytext" ROWS="numar" COLS="numar" WRAP="wrap">

Atributul NAME(obligatoriu) specifica numele controlului.

Atributul ROWS(obligatoriu) specifica numarul liniilor de text vizibile in suprafata cu text

Atributul COLS(facultativ) specifica numarul coloanelor de text vizibile in suprafata cu text

Atributul WRAP(facultativ) specifica maniera de infasurare in interiorul suprafetei cu text.

O eticheta TEXTAREA trebuie combinata cu o eticheta /TEXTAREA.Orice text care apare intre etichete va fi prezentat drept continut initial al controlului de tip suprafata cu text.

Crearea campurilor ascunse

Uneori este utila crearea asa-numitelor campuri ascunse.Valorile campurilor ascunse sunt trimise la server alaturi de valorile altor controale; cu toate acestea, utilizatorul nu are posibilitatea de a vizualiza sau manipula valorile campurilor

<INPUT TYPE="hidden" NAME="mytext" VALUE="myvalue">

Crearea casetelor de validare

Pentru datele care pot avea numai una din doua valori, cum ar fi "pornit" sau "oprit", caseta de validare este controlul ideal.De exemplu, caseta de validare este un control adecvat pentru a permite utilizatorului sa opteze pentru livrarea rapida a unui colet.In cazul in care caseta de validare este validata, coletul va fi livrat mai rapid, in caz contrar, coletul se va deplasa cu mijloace obisnuite.

<INPUT TYPE="checkbox" NAME="mycheck" value="text" CHECKED>

Daca atributul CHECKED apare, caseta de validare va fi selectata in mod prestabilit; in caz contrar, caseta de validare nu este selectata initial.

Atributul VALUE specifica valoare care este trimisa serverului in cazul in care caseta de validare este selectata; daca atributul nu este specificat, se va trimite valoarea on (activat)

Crearea butoanelor radio

Ca si casetele de validare, butoanele radio pot avea numai una din doua valori. Cu toate acestea, butoanele radio sunt organizate in grupuri, iar la un moment dat poate fi activat un singur buton radio din cadrul unui grup; toate celelalte trebuie sa fie dezactivate.Butoanele radio sunt utile pentru a permite unui utilizator sa aleaga dintr-o serie de alternative mutual exclusive.De exemplu, puteti folosi un set de trei butoane radio pentru a permite utilizatorului sa specifice tipul de ambalaj pentru un cadou: fara ambalaj, cu ambalaj simplu sau sofisticat. Numai unul din cele trei butoane radio poate fi activat; la un loc, setul de butoane radio ofera utilizatorului o tripla optiune.

<INPUT TYPE="radio" NAME="myradio" value="text" CHECKED>

Atributele unui buton radio au aceeasi semnificatie ca si acelea ale unei casete de validare

Toti membrii unui set de casete de validare prezinta acceasi valoare a atributului name

Crearea de selectii

O selectie este un meniu care defileaza, de unde utilizatorul poate alege una sau mai multe optiuni. De exemplu, intr-o selectie pot fi enumerate garniturile pentru pizza, astfel incat un utilizator sa poata selecta orice combinatie de garnituri pe care o doreste.

<SELECT NAME="myselect" size="numar" MULTIPLE>etichete OPTION</SELECT>

Eticheta SELECT este folosita in combinatie cu eticheta /SELECT. Intre cele doua etichete este inclusa o serie de etichete OPTION.

Atributul MULTIPLE arata ca utilizatorul poate alege mai multe optiuni mentinand apasata tasta CTRL si executand click pe aceasta.In absenta atributului MULTIPLE, utilizatorul poate selecta o singura optiune.Daca specificati atributul MULTIPLE, trebuie sa specificati si un atribut NAME, care atribuie un nume de tablou ca nume al controlului. De exemplu, un control de tip selectie care permite utilizatorului sa aleaga mai multe garnituri pentru desert trebuie denumit folosind sintaxa garnitura[], nu garnitura.

Atributul SIZE specifica numarul de optiuni vizibile.Prin utilizarea unui buton de derulare in jos sau a unei bare de defilare, utilizatorul poate manipula selectia pentru a obtine accesul la restul optiunilor si a alege dintre acestea.

Asa cum s-a aratat, o selectie este asociata cu una sau mai multe optiuni.Pentru a crea o optiune care urmeaza a fi utilizate in cadrul unei selectii, folositi urmatoare sintaxa:

<OPTION SELECTED VALUE="text">continut_optiune</OPTION>

Eticheta OPTION este combinata cu eticheta /OPTION. Textul dintre aceste etichete este cunoscut sub numele de continut al optiunii. Continutul optiunii apare in controlul SELECT.

Multi programatori HTML omit eticheta /OPTION, caz in care textul optiunii se extinde pana la urmatoarea eticheta OPTION sau /SELECT/.Totusi s-ar putea

ca acest mod de utilizare sa nu fie compatibil cu versiunile ulterioate ale standardului HTML.

Crearea unui buton de reinitializare

Acest buton este folosit pentru ca utilizatorul sa poata sterge toate informatiile incluse intr-un formular.

<INPUT TYPE="reset" VALUE="reset">

Unicul atribut obligatoriu este TYPE. Atributul optional VALUE specifica textul care va aparea pe suprafata butonului de reinitializare; daca atributul este omis, pe buton va scrie "Reset".

Am vazut cum se poate crea un formular in HTML.Acum o sa vedem cum putem prelua variabilele din php si sa le afisam intr-o fereastra noua.

O variabila preluata dintr-un formular poate fi preluata prin una din modalitatile :

1.   $_POST["nume_variabila"] sau cu $_GET["nume_variabila"] (in functie de atributul method al formului - post sau get)

2.   De asemeni pot fi folosite si $HTTP_POST_VARS["nume_variabila"] si $HTTP_GET_VARS["nume_variabila"]

3.   Daca in PHP.ini (fisierul de configurare al php-ului) aveti setat register_globals=on puteti folosi $nume_variabila

Personal va recomand prima varianta.

Sa luam cateva exemple de formulare simple :

Ex 3 : preluarea valorii unui control text

test.html

<form action='test.php' method='POST'>

     Introduceti numele : <input type='text' name='name'><br>

<input type='submit' value='Trimite'>

</form>

test.php

<?php

echo 'Salut '.$_POST['name'].'

?>

Similar se face pentru controale de tip password si textarea.

Ex 4: preluarea valorii unui control checkbox

test1.html

<form action='test1.php' method='POST'>

Alb <input type='checkbox' name='color_alb' value='alb'><br>

Rosu <input type='checkbox' name='color_rosu' value='rosu'><br>

Alb <input type='checkbox' name='color_verde' value='verde'><br>

<input type='submit' value='Trimite'>

</form>

test1.php

<?php

echo 'Ati selectat culorile :<br>';

if($_POST['color_alb']!='')

echo 'Culoarea '.$_POST['color_alb'].' !!<br>';

if($_POST['color_rosu']!='')

echo 'Culoarea '.$_POST['color_rosu'].' !!<br>';

if($_POST['color_verde']!='')

echo 'Culoarea '.$_POST['color_verde'].' !!<br>';

?>

Ex 5: preluarea valorii unui control radio

test2.html

<form action='test2.php' method='POST'>

Alb <input type='radio' name='color' value='alb'><br>

Rosu <input type='radio' name='color' value='rosu'><br>

Alb <input type='radio' name='color' value='verde'><br>

<input type='submit' value='Trimite'>

</form>

test2.php

<?php

echo 'Ati selectat culoarea :'.$_POST['color'].' !!!';

?>

Ex 6: preluarea valorii unui control select

test3.html

<form action='test3.php' method='POST'>

Selecteaza culoare :

<select name='color[]' MULTIPLE size='3'>

<option>alb</option>

<option>negru</option>

<option>rosu</option>

<option>verde</option>

<option>albastru</option>

<option>galben</option>

</select>

<input type='submit' value='Trimite'>

</form>

Obs: daca doriti selectie simpla puneti name="color" iar daca doriti sa fie vizibila o singura optiune la un moment dat stergeti size="3"

test3.php

<?php

if(is_array($_POST['color']))

else

 ?>

Conectarea PHP la MySQL
Conectarea la MySQL se face printr-o functie PHP, mai exact:

<?php
     $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
     or die('Nu se poate conecta');
?>

Functia mysql_connect se conecteaza la MySQL folosind ca parametri adresa serverului unde ruleaza MySQL (daca il aveti instalat pe propriul calculator aceasta ar trebui sa fie localhost), user-ul (daca il aveti instalat pe propriul calculator aceasta ar trebui sa fie root) si parola (daca il aveti instalat pe propriul calculator aceasta ar trebui sa nu existe).

Deci exemlul de mai sus particularizat pentru cazul in care aveti MySQL instalat pe proriul calculator:

<?php
     $link = mysql_connect('localhost', 'root', '')
     or die('Nu se poate conecta');
?>

Functia die nu face altceva decat sa afiseze mesajul si sa nu mai execute nici un cod dupa. Variabila $link reprezinta un identificator pentru aceasta conxiune (pentru ca ne putem conecta simultan la mai multe server MySQL).

Numai conectarea nu este suficienta. Trebuie sa-i spunem servarului MySQL ce baza de date dorim sa folosim. Pentru a exemplifica vom folosi baza de date de la

<?php
     $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
     or die('Nu se poate conecta');
    mysql_select_db('anunturi', $link) or die('nu se poate alege baza de date');
?>

Observati ca functia mysql_select_db este cea care ii transmite serverului MySQL ce baza de date vrem sa folosim.

Trimiterea de interogari cu PHP
Vom contiuna sa folosim ca exemplu practic baza de date de la
lectia 5. Sa presupunem ca dorim sa schimbam data celui de-al doilea anunt.

<?php
     $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
     or die('Nu se poate conecta');
    mysql_select_db('anunturi', $link) or die('nu se poate alege baza de date');
    $query = 'UPDATE anunturi SET data_anunt = '2003-05-10' WHERE id =2';
    $result = mysql_query($query) or die('Query failed') 
?>

Functia mysql_query este cea care transmite serverului MySQL query-ul pe care dorim sa-l executam ca string. Variabila $query cintine in acest caz un string ce reprezinta query-ul nostru de update. Se pot astfel executa orice fel de query-uri, dar probabil cele mai importante sunt cele care selecteaza si afiseaza informatii din baza de date, asa cum vom vedea in paragraful urmator.

manipularea rezultatelor selectate

Functia nou introdusa in exemlul nostru este mysql_fetch_array functie ce nu face decat sa ia pe rand (pana se termina) fiecare rand (inregistrare) returnat de query si sa o introduca intr-un vector ($myrow). Puteti observa ca, cheile acestui vector sunt chiar numele campuriolor din tabela noastra.

Introducerea de noi date in baza de date
Si acum sa incercam sa realizam o metoda practica de a introduce noi anunturi in baza noastra de date. Ati invatat despre formulare la lectia 4. Daca nu ati parcurs-o deja ca invit sa o faceti inainte de a continua pentru a putea intelege pe deplin urmatoarele exemple.

Vom folosi un fisier (html) in care va exista un formular unde vom introduce anunturile sa-l numim 6_form.htm. El are urmatorul continut:

<html>
<head>
<title>Adaugare in baza de date</title>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
</head>
<body>
<form name='form1' method='post' action='6_insert.php'>
  <strong>anunt:</strong>
  <input type='text' name='anunt' id='anunt'>
  <br>
  <strong>data:</strong>
  <input type='text' name='data' id='data'>
  (in format aaaa-ll-zz)<br>
  <input type='submit' name='Submit' value='adauga'>
  <input type='reset' name='Submit2' value='reset'>
</form>
</body>
</html> 

Prin intermediul acestui fisier se pot introduce anuntul si data la care a fost publicat.

Acum cel de-al doilea fisier (de data asta de tip php) care va prelua datele din formularul precedent si le va introduce in baza de date. Sa-l numim 6_insert.php.

In acest fisier se introduc informatiile in baza de date si se afiseaza daca a intervenit vreo eroare.

html>
<head>
<title>Adaugare in baza de date</title>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
</head>
<body>
<?php
     $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
     or die('Nu se poate conecta');
    mysql_select_db('anunturi', $link) or die('nu se poate alege baza de date');
    $query = 'INSERT INTO anunturi SET text_anunt=''.$_POST['anunt'].'', data_anunt=''.$_POST['data'].''';
    $result = @mysql_query($query);
     if ($result) echo 'anuntul a fost indrodus cu succes. <a href='6_form.htm'>introduceti alt anunt?</a>';
     else
        
     
?>
</body>
</html>

2.4 Serverul de baze de date MySQL

* Scurta descriere

MySQL este un server de baze de date SQL (Structured Query Language) foarte rapid. O baza de date reprezinta o colectie de date organizate dupa anumite criterii. Pentru a accesa, adauga sau procesa date continute in baza de date este nevoie de un sistem de administrare a bazelor de date precum MySQL.

MySQL este foarte rapid, dar si usor de invatat. In plus, este si gratuit; pachetul MySQL este disponibil la www.mysql.com sub forma unei arhive zip care trebuie despachetata intr-un folder, de regula - C:/MySQL. MySQL a fost dezvoltat pentru a lucra cu baze de date foarte complexe. Conectivitatea, viteza si securitatea il fac foarte potrivit pentru accesarea bazelor de date in Internet.

Server-ul MySQL poate fi gestionat manual cu urmatoarele linii de comanda:

. mysqld.exe - porneste server-ul

. mysqladmin.exe - opreste server-ul

. mysql.exe - afiseaza consola MySQL

Server-ul MySQL permite lucrul cu mai multi utilizatori, existand in mod predefinit utilizatorul:

user: root

password: ''

* Comenzi uzuale in MySQL

O baza de date este formata din mai multe tabele, acestea fiind divizate in inregistrari (records), inregistrari ce pot fi considerate liniile tabelului. O linie a unui tabel este impartita in mai multe campuri, care pot stoca diferite tipuri de date

Gestionarea tabelelor pentru a crea o baza de date la consola MySQL

create database nume_baza; - creeaza baza de date

use nume_baza; - comanda folosirea unei anumite baze de date

drop database nume_baza; - sterge o baza de date

show databases; - afiseaza bazele de date existente pe server

create table nume_tabel; - creeaza un tabel atunci cand baza de date este deschisa

show tables; - afiseaza tabelele din baza de date curenta

drop table nume_tabel; - sterge un tabel din baza de date

desc nume_tabel; - arata informatii despre structura unui tabel

Primary key este o instructiune folosita pentru definirea cheii primare. Aceasta creeaza un index pe baza coloanei al carei nume a fost specificat. Aceata coloana este considerata ca fiind cea mai importanta, des folosita, fiind vazuta drept cheia de sortare a tabelului. Primary key este o coloana de tip AUTO_INCREMENT.

insert into nume_tabel values ('val_1', 'val_2',..); - adauga date in tabel

select * from nume_tabel; - afisarea datelor dintr-un tabel specificat.

2.5 Limbajul JavaScrip

Generalitati

JavaScript este un limbaj de tip script dezvoltat de firma Netscape cu ajutorul caruia putem adauga foarte usor efecte spectaculoase paginilor de Web , codul JavaScript introducandu-se direct in pagina HTML. Pentru a rula script-uri scrise in JavaScript este necesar un browser de Web capabil sa interpreteze cod JavaScript - cum ar fi Netscape Navigator (de la versiunea 2.0 in sus) sau Microsoft Internet Explorer (de la versiunea 3.0 in sus).

Spre doesebire de scripturile CGI, care se executa pe calculatorul gazda (server), script-urile JavaScript sunt incarcate de pe server pe calculatorul local. Interpretatorul va decodifica instructiunile script-urilor si le va executa la momentul potrivit: la incarcarea paginii pe server, la apasarea unui buton, la miscarea mouse-ului, etc. Script-urile JavaScript fac parte din codul sursa HTML al paginilor Web, dandu-le acestora un aspect dinamic, interactiv si mult mai atractiv.

JavaScript este cel mai cunoscut si, urmare fireasca, cel mai folosit limbaj pentru crearea de script-uri pe web. Bineinteles, ca e vorba despre un limbaj obiectual si, foarte important, multi-platforma - idea de baza este ca acelasi cod este sau ar trebui sa fie interpretat la fel indiferent de platforma pe care ruleaza browser-ul.

Spre deosebire de limbajele C++ sau Java care sunt limbaje orientate obiect , JavaScript este un limbaj scriptual bazat pe obiecte - si aceasta deoarece obiectelor JavaScript le lipsesc 3 caracteristici ale teoriei OOP(Object Oriented Programming): mostenirea , incapsularea si abstractizarea. Corporatia Netscape Communication a definit propriul concept - cunoscut sub numele de JavaScript Object Model - ce contine totalitatea obiectelor ,proprietatilor, metodelor dar si variabilelor si functiilor din universul Netscape . Obiectele Netscape nu trebuie totusi confundate cu cele ale limbajului JavaScript

JavaScript poseda o serie de obiecte ale sale. Toate obiectele organizeaza-ierarhizeaza o serie de date, dar si functii (metode) care opereaza asupra acestor date. Aceste obiecte - unele deja existente in JavasScript (predefinite) ,altele create de utilizator explicit - pot fi cuplate, respectiv sunt legate de elementele HTML si dau posibilitatea efectuarii diverselor calcule matematice sau a crearii diferitelor resurse: text, ferestre , formulare ,cadre , etc/

Pe osatura unui document HTML recurgandu-se la facilitatile limbajului JavaScript se pot afisa o serie de ferstre , cadre , casete de dialog , unde sa apara tot felul de mesaje, resurse grafice , se pot valida sau chiar evalua expresii in care apar variabile, date numerice , literali.

* Evolutia limbajului Javascript

Ca tot ceea ce are legatura cu Web-ul, JavaScript este o tehnologie noua - mai noua chiar decat insusi limbajul Java. Initial, JavaScript a fost dezvoltat de Netscape sub denumirea LiveScript, un limbaj de scriptare care intentiona sa extinda capacitatile HTML si sa ofere o alternativa partiala la utilizarea unui numar mare de scripturi CGI pentru prelucrarea informatiilor din formulare si pentru a adauga dinamism in paginile utilizatorilor. Dupa lansarea limbajului Java, Netscape a inceput sa lucreze impreuna cu firma Sun pentru a oferi un limbaj de scriptare a carui sintaxa si semantica erau strans legate de Java - motiv pentru care denumirea a fost schimbata in JavaScript. Dupa finalizarea limbajului, Netscape si Sun l-au lansat impreuna.

Una dintre motivatiile care au stat la baza limbajului JavaScript a fost recunoasterea necesitatii ca logica si inteligenta sa existe si pe partea de client, nu doar pe partea de server. Daca toata logica este pe partea de server, intreaga prelucrare este dirijata la server, chiar si pentru sarcini simple, asa cum este validarea datelor. In fapt, lipsit de suport logic pe parte de utilizator, mediul Web ar intra in arhitectura demodata "de la terminal spre calculatorul gazda', care a fost inlocuita de revolutia PC din anii '80. Asigurarea de logica in interiorul browserului il inzestreaza pe client si face ca relatia sa fie un adevarat sistem client/server.

Java a insemnat un pas in aceasta directie dar a fost implementat ca auxiliar al HTML in sine si nu se intentionase integrarea sa din punctul de vedere al unui limbaj. Fiind un limbaj strict in privinta tipului de date, Java nu este optim ca liant pentru numeroasele tehnologii de care Webmasterii au nevoie in crearea paginilor lor si necesita capacitati de programare de nivel redus - ceva ce majoritatea programatorilor HTML prefera sa nu exercite exclusiv pentru a oferi logica in spatele elementelor unui formular. Un limbaj de scriptare de nivel ridicat, pe parte de client, parea a fi piesa lipsa din arena instrumentelor de programare pentru Web.

De la lansarea sa, in decembrie 1995, JavaScript si-a atras sprijin din partea principalilor distribuitori din domeniu, printre care Apple, Borland, Sybase, Informix, Oracle, Digital, HP si IBM. A continuat sa se dezvolte, obtinand recunoastere nu numai in majoritatea browserelor actuale, ci si in alte aplicatii pe care le-au lansat aceste companii, dar si altele.

Situatia s-a complicat insa atunci cand a intervenit Microsoft. Intelegand importanta scriptarii Web, Microsoft a dorit sa ofere suport si pentru JavaScript. Cand Netscape a preferat sa acorde licenta de tehnologie companiei Microsoft in loc sa o vanda, Redmond a analizat JavaScript, bazandu-se pe documentatia publica, si a creat propria sa implementare, JScript, care este recunoscuta de Microsoft Internet Explorer versiunile 3.0 si ulterioare. JScript 1.0 este aproximativ compatibil cu JavaScript 1.1, care este recunoscut in Netscape Navigator 3.0 si browserele ulterioare. Totusi, numeroasele versiuni JavaScript si diversele bizarerii specifice platformelor de operare le-au dat dureri de cap programatorilor pentru Web, atunci cand au incercat sa desfasoare situri Web capabile de JavaScript.

Din fericire, Netscape, Microsoft si alti distribuitori au acceptat sa predea limbajul unei organizatii internationale de standardizare, ECMA. De atunci, ECMA a finalizat o specificatie de limbaj, cunoscuta ca ECMAScript, pe care o recunosc toti distribuitorii. Desi standardul ECMA este util, atat Netscape cat si Microsoft au propriile lor implementari ale limbajului (JavaScript si JScript) si continua sa extinda limbajul dincolo de standardul de baza.

Pe langa JScript, Microsoft are propriul sau concurent pentru JavaScript, numit VBScript, realizat pentru a usura patrunderea pe Web a actualilor programatori VB. In esenta, VBScript este un subset al limbajului Visual Basic. Deoarece Netscape nu recunoaste VBScript, principalele sale utilizari sunt pentru intraneturile (sau siturile Internet) unde se inregistreaza o abundenta de utilizatori de Microsoft Internet Explorer.

Chiar tinand seama de VBScript, JavaScript a devenit cunoscut ca limbajul de scriptare standard pentru Web. Intrucat distribuitorii produc instrumente de dezvoltare Web care necesita un limbaj de scriptare, JavaScript este frecvent folosit in acest scop; astfel, Netscape foloseste limbajul cunoscut ca Server-Side JavaScript (SSJS) pe parte de server.

Desigur, Microsoft nu a ramas in urma si, cand a lansat tehnologia Active Server Pages (ASP), aceasta includea si recunoasterea motorului JScript.

* Java si JavaScript

Una dintre cele mai intilnite intrebari referitoare la Javascript este legata de 'gradul de rudenie' cu limbajul Java. Afinitatile dintre cele doua limbaje se regasesc la nivelul sintaxei, al structurilor de control si, intr-o anumita masura, la securitate (nu este permisa, spre exemplu, cititea fisierelor de pe calculatorul-client). In rest, Java este un limbaj mult mai complex ( ca majoritatea limbajelor orientate-obiect). Diferente exista inclusiv in legatura cu rularea codului .

Limbajul JavaScript a fost creat de firma Netscape. Spre deosebire de Java, care este un limbaj compilat (programele sunt compilate pe server si executate apoi local pe calculatorul client), JavaScript este un limbaj interpretat ( interpretarea limbajului se face de catre browsere, care au incorporate un interpretator ce analizeaza instructiunile JavaScript si le executa pe calculatorul client). Limbajele interpretate sunt mai simple decat cele compilate si mai usor de invatat. De asemenea, modificarea si depanarea este mult mai usor de realizat pentru ca nu mai este nevoie de compilare de fiecare data.

Dupa cum s-a specificat anterior , script-urile JavaScript sunt incarcate de pe server pe calculatorul local. Interpretatorul va decodifica instructiunile script-urilor si le va executa la momentul potrivit: la incarcarea paginii pe server, la apasarea unui buton, la miscarea mouse-ului, etc. ( deci mai general la producerea unui eveniment ) .Script-urile JavaScript fac parte din codul sursa HTML al paginilor Web, dandu-le acestora un aspect dinamic, interactiv si mult mai atractiv. Acest lucru insa are un mare dezavantaj: aceste script-uri pot fi copiate, modificate si reutilizate. In cazul applet-urilor Java nu apare aceasta problema, intrucat codul sursa al acestora nu este transferat de pe server pe calculatorul client. Ambele limbaje creeaza aplicatii independente de platforma pe care se executa. Programele Java sunt executate de masina virtuala Java iar script-urile de catre interpretator, ambele fiind incluse in navigator.

In timp ce Java este un limbaj complex, orientat obiect, JavaScript este un limbaj mai putin robust; are foarte multe asemanari cu Java, insa sintaxa este mai simpla, iar regulile mai putin complexe. Chiar daca Java si JavaScript au o sintaxa asemanatoare, aceste limbaje sunt folosite in scopuri diferite. Se poate mai degraba spune ca sunt complementare decat concurente.

* Caracteristici ale limbajului JavaScript

Meritul principal al JavaScript este ca pune la dispozitia creatorilor de pagini web o metoda excelenta de 'a dinamiza' paginile create. Si aceasta fara a apela la programarea pe partea de server (server-side programming). Fara a inlocui acest gen de programare mentionat, script-urile pot rezolva o serie de probleme (e drept, nu foarte complexe; cu toate aceste complexitatea e relativa, depinzind de abilitatile programatorului) cum ar fi validarea unui cimp dintr-o forma sau afisarea unui mesaj dupa un click pe un buton (in general, programarea evenimentelor). Iar avantajul integrarii complete in paginile HTML a capatat o noua dimensiune acum cu explozia interfetelor HTML .

JavaScript este 'case sensitive', adica se face discriminarea intre literele mari si cele mici intilnite in numele identificatorilor (nume de variabile, functii, obiecte etc.).

JavaScript e un limbaj slab-tipizat in comparatie cu Pascal, C++ sau Java. Astfel tipul unei variabile nu este determinat in momentul crearii variabilei, iar pe parcursul executiei programului se poate schimba in functie de context. Acest fapt poate fi un avantaj, in sensul unei libertati in conceperea programului, dar si un dezavantaj legat de ambiguitatea ce poate sa apara, codul fiind mai greu de inteles. Totusi, daca la un moment dat, doriti sa aflati tipul unei variabile aveti la dispozitie operatorul typeOf. Prin aplicarea lui se obtine un string ce contine tipul variabilei (inclusiv undefined sau object, pe linga tipurile standard).

Raportat la variabile, exista asa-numita facilitate de 'type-casting' (convertire automata a tipului). In acest caz, in functie de context, tipul variabilelor se modifica automat. In JavaScript casting-ul este partial. Astfel o variabila numerica se converteste automat la string , insa reciproca nu este valabila. De aceea, in multe script-uri veti intilni functia parseInt care converteste, in masura posibilului, unui string in numar.

Exista o valoare speciala in JavaScipt si anume null. Adica, dupa cum ii spune si numele, nimic. Exista diverse situatii cind o veti intilni cum ar fi folosirea de variabile nedefinite dar si unele rezultate de functii. null nu este acelasi lucru cu sirul vid (''), de pilda. De aceea, uneori trebuie sa fie testate cu grija anumite rezultate etc.

JavaScript permite folosirea expresiilor conditionale (existente, de atfel, si in alte limbaje de programare), ce se pot dovedi foarte utile. Exemplu: isNS = (document.layers) ? 1 : 0;

Daca browserul recunoaste aceasta colectie de obiecte (specifica Netscape Navigator) atunci expresia se evalueaza true si variablia noastra va lua valoarea 1, altfel 0. Aceasta este o metoda extrem de simpla de a identifica un browser. Pentru Internet Explorer: isIE = (document.all) ? 1 : 0.

Cuvintul cheie this se poate dovedi extrem de util, caci intotdeauna se refera la obiectul curent. Cred ca puteti intui si acum cit de important e sa puteti folosi o expresie de genul self.proprietate pentru a accesa proprietatea obiectului curent (ma rog, formularea suporta critici), fara a sti care obiect este efectiv.

Data fiind caracteristica multi-platforma a JavaScript este important sa dispunem de functii care sa asigure compatibilitatea in diverse situatii. Doua asemenea functii complementare sunt escape si unescape. Sirul de caractere primit ca argumet este convert la codificarea standard ISO Latin-1 si invers. Este necesara mai ales in cazul cookie-urilor pentru a converti caractere depinzind de setul de caractere (dependent, la rindul sau, de platforma).

Macrosubstitutia este facilitate puternica a unor limbaje de programare (din fericire, intilnita si la JavaScript). Poate ca in acest caz e vorba de o mini-implementare a unei asemenea facilitati (prin functia eval), insa este foarte utila. Astfel eval executa string-ul primit ca argument ca si cum ar fi o linie de cod JavaScript: eval('alert(strA)') va genera o fereastra (prompt window) care va afisa valoarea string-ului strA. Utilitatea este data si de incompatibilitatile dintre browsere la nivelul referirii obiectelor suportate. In acest caz eval() ne ajuta in scrierea unui cod elegant.

Toate variabilele si obiectele sunt distruse la reincarcarea paginii web sau la incarcarea unei pagini noi. Singura solutie in acest caz (pentru crearea unei aplicatii mai complexe) ramine folosirea frame-urilor si, in speta, a unui frame ce nu isi reincarca continutul.

2.6 LIMBAJUL HTML

Un document HTML cuprinde:

<HTML>......</HTML> defineste inceputul si sfarsitul documentului

<HEAD>......</HEAD> inceput/sfarsit antet document

<TITLE>.....</TITLE> inceput/sfarsit titlu document

<BODY>.....</BODY> inceput/sfarsit document propriu-zis

Limbajul HTML include o mare diversitatea de tag-uri sub urmatoarele minim doua forme:

<Nume_tag> Text ... [</Nume_tag>]

Tagu-urile sunt :

Singulare (Ex: <p> trecerea la un nou paragraf)

Pereche (Ex: <HEAD>..</HEAD>)

Unele detin atribute

<Nume_tag atribut_1= "valoare_1" atribut_2= "valoare_2">

(Ex: IMG src= "URL_imagine" align= "top">

IMG = numele tag-ului ce are rolul de a include in document o imagine.

src = numele primului atribut ce are ca valoare URL-ul fisierului imagine

align = numele celui de-al doilea atribut ce are valoarea TOP referindu-se la aranjarea imaginii in document.

Cateva tag-uri elementare:

<Hi>....</Hi> - stabileste dimensiunea caracterelor pentru textul din interiorul tag-ului. Acest "i" ia valori de la i=1(dimensiunea cea mai mare) la i = 6 (dimensiunea cea mai mica)

<B>... </B> - text bolduit

<I>....</I> - text italic

<BR> - intrerupe linia curenta si trece pe urmatoarea indiferent daca urmeaza text sau imagine

<P> - trece la un nou paragraf. Spre deosebire de <BR> acesta mai lasa si un rand liber ca separator de paragraf.

<! .... TEXT..> - reprezinta un comentariu, fiind ignorat de navigator

<HR SIZE=n WIDTH=n ALIGN=LEFT/RIGHT/CENTER> - traseaza o noua linie orizontala de separare caracterizata prin SIZE - grosime, WIDTH - lungime, ALIGN - aliniere

<BR CLEAR=c> - permite spatierea unei imagini fata de textul documentului HTML. "C" poate lua valorile: LEFT/RIGHT/ALL aceasta insemnand ca se lasa un spatiu liber in stanga/dreapta/ intre cele doua imagini daca vrem sa avem doua imagini pe pagina - una aliniata la stanga si alta la dreapta.

<BODY BGCOLOR=C TEXT=T LINK=L VLINK=V ALINK=A > - controleaza culorile pentru fontul ecranului (BGCOLOR), text (TEXT) si legaturi (LINK), culoarea legaturilor care au fost vizitate (VLINK), culoarea temporara a legaturii din momentul activarii acesteia (ALINK). Toate valorile din tag-ul BODY se specifica sub forma "#rrggbb" (rosu, verde, albastru).

<BODY BACKGROUND= "fisier_imagine.gif"> - fontul ecranului poate contine o imagine ce are numele "fisier_imagine.gif"

<FONT COLOR=a SIZE=b > - controleaza culoarea textului si dimensiunea acestuia.

LISTE ORDONATE

Forma generala a unei liste ordonate este :

<OL Type=t Start=s>

<LI> TEXT 1

<LI> TEXT 2

<LI> TEXT 3

</OL>

Unde Type=t permite specificarea tipului de data cu care sa inceapa numerotarea din lista (Ex: a - ca sa se inceapa cu text (a,b,c.) minuscule sau cu A pentru majuscule, 1 - ca sa se inceapa cu cifre (1,2,3.) sau I ca sa scrie cu litere romane mari sau i pentru a incepe numerotarea cu litere romane mici; Start=s defineste valoarea de inceput.

EXEMPLU:

<HTML>

<HEAD>

<B><TITLE>EXEMPLU</TITLE></B>

</HEAD>

<BODY>

<B> <CENTER>LISTA ORDONATA</B></CENTER><P>

<OL TYPE=1 START=3>

<B>

<LI> MATEMATICA

<LI> INFORMATICA

<LI> CONTABILITATE

<LI> MANAGEMENT

<LI>FINANTE

</B>

</OL>

</BODY>

</HTML>

Ceea ce se va afisa este :

LISTE NEORDONATE

Forma generala a unei liste neordonate este :

<UL Type=t >

<LI> TEXT 1

<LI> TEXT 2

<LI> TEXT 3

</OL>

Unde Type=t defineste semnul care va precede elementele listei. Valorile pe care le poate lua "t" sunt : SQUARE (patrat), CIRCLE (cerc vid) si DISC (cerc plin)

EXEMPLU:

<HTML>

<HEAD>

<B><TITLE>EXEMPLU</TITLE></B>

</HEAD>

<BODY>

<B> <CENTER>LISTA NEORDONATA</B></CENTER><P>

<UL TYPE=DISC>

<B>

<LI> MATEMATICA

<LI> INFORMATICA

<LI> CONTABILITATE

<LI> MANAGEMENT

<LI>FINANTE

</B>

</UL>

</BODY>

</HTML>

LISTA CU DEFINITII

Forma generala a unei liste cu definitii este :

<DL>

<DT>Termen de definit

<DD> Definitia termenului

<DT> Termen de definit

<DD> Definitia termenului

</DL>

EXEMPLU

<HTML>

<HEAD>

<B><TITLE> EXEMPLU</TITLE></B>

</HEAD>

<BODY>

<B> <CENTER>LISTA CU DEFINITII</B></CENTER><P>

<DL>

<DT><B> CE ESTE MEMORIA INTERNA</B><P>

<DD> MEMORIA ESTE O LOCATIE DIN CALCULATOR, UNDE INFORMSIILE SE STOCHEAZA SUB FORMA BINARA IN CIRCUITE INTEGRATE</B><P>

<DT><B> PRIN CE SE POATE CARACTERIZA MEMORIA INTERNA A UNUI MICROCALCULATOR</B><P>

<DD> DIMENSIUNEA LOCATIEI ADRESABILE, CAPACITATEA TOTALA, TIMPUL DE ACCES SI DE RASPUNS SI COSTUL MEMORIEI

</DL>

</BODY>

</HTML>

LEGATURI HIPERTEXT

Legaturile hipertext permit vizualizarea prin clic pe un cuvant, fraza sau imagine a altor fisiere decat cel curent.

Pentru a realiza o legatura hipertext se utilizeaza tag-ul <A..>....</A> ce include si atributul HREF utlilizat pentru a specifica URL-ul documentului tinta.

Astfel sintaxa este urmatoarea:

< A HREF= "LOCALIZAREA DOCUMENTULUI"> TEXT DE LEGATURA </A>

Exista mai multe tipuri de legaturi :

locale

interne

externe

EXEMPLU DE LEGATURA LOCALA

<HTML>

<HEAD>

<B><TITLE> EXEMPLU</TITLE></B>

</HEAD>

<BODY>

<B> <CENTER>LEGATURA LOCALA</B></CENTER><P>

<! FISIERUL CATRE CARE SE FACE LEGATURA TREBUIE SA EXISTE<P>

<A HREF='LUCRARE.DOC'>CLICK AICI PENTRU A AJUNGE IN FISIERUL "LUCRARE DE DIPLOMA"</A><P>

</BODY>

</HTML>

Rezultatul acestei aplicatii , inainte de a executa click pe fraza subliniata, este :

iar dupa ce s-a executat click avem urmatoarea imagine :

NOTA : Crearea unei ancore in punctul tinta se realizeaza astfel :

<A NAME= "CUVINT CHEIE"> </A>

Realizarea efectiva a legaturii se face astfel:

<A HREF= "#CUVINT CHEIE">PARAGRAF TINTA</A>

<HTML>

<HEAD>

<B><TITLE> EXEMPLU</TITLE></B>

</HEAD>

<BODY>

<B> <CENTER>LEGATURA INTERNA</B></CENTER><P>

<A NAME='INTOARCERE'></A><P>

<OL TYPE=1 START=1>

<LI><H3><A HREF='#NUME1'>MATERIILE ANULUI I</A><BR>

<LI><A HREF='#NUME2'>MATERIILE ANULUI 2</A><BR>

<LI><A HREF='#NUME3'>MATERIILE ANULUI 3</A><BR></H3>

</OL>

<HR SIZE=2>

<P>

<A NAME='NUME1'> MATERIILE ANULUI I</A>

<OL>

<LI> MATEMATICA

<LI> BAZELE INFORMATICII

<LI> SPORT

</OL>

<HR SIZE=2>

<A HREF='#INTOARCERE'>REVENIRE LA INCEPUT</A>

<HR SIZE=2>

<A NAME='NUME2'>MATERIILE ANULUI 2</A>

<OL>

<LI>MATEMATICA II

<LI>BIROTICA

<LI>SPORT

</OL>

<HR SIZE=2>

<A HREF='#INTOARCERE'>REVENIRE LA INCEPUT</A>

<HR SIZE=2>

<A NAME='NUME3'> MATERIILE ANULUI 3</A>

<OL>

<LI> FINANTELE INTREPRINDERII

<LI> ACCESS

<LI> SPORT

</OL>

<HR SIZE=2>

<A HREF='#INTOARCERE'>REVENIRE LA INCEPUT</A>

<HR SIZE=2>

</BODY>

</HTML>

Dupa lansarea in executie se obtine urmatoarea imagine :

Dupa excutarea unui click pe suprafata subliniata se face trimitere la materiile anului respectiv : (cazul materiilor din anul I este prezentat in figura de mai jos):

Activarea legaturii Revenire la inceput ne va duce practic la prima imagine.

EXEMPLU DE LEGATURA EXTERNA

<HTML>

<HEAD>

<B><TITLE> EXEMPLU</TITLE></B>

</HEAD>

<BODY>

<B> <CENTER>LEGATURA EXTERNA</B></CENTER><P>

<A HREF= "HTTP://WWW.PROTV.RO"> LEGATURA CATRE SITE-UL PROTV</A><P>

<A HREF= "HTTP://WWW.ANTENA1.RO"> LEGATURA CATRE SITE-UL ANTENA1</A><P>

<A HREF= "HTTP://WWW.TVR.RO"> LEGATURA CATRE SITE-UL TVR</A><P>

<A HREF="MAILTO:[email protected]" > TRANSMITE-MI UN MESAJ</A><P>

</BODY>

</HTML>

Schimbarea culorii fundalului se face astfel :

<BODY BGCOLOR="#FF0000"></A>

Se obtine urmatoarea imagine cu fundalul din spate rosu (tinem cont de exemplul precedent numai ca in plus undeva mai adaugam si comanda de mai sus):

Daca dorim ca pe fundal sa avem o poza atunci folosim comanda :

<BODY BACKGROUND="NUME FISIER.GIF ">

Aceasta comanda se va scrie undeva in programul de mai sus, tinand cont de numele fisierului.

DE EXEMPLU daca includem ca fundal o imagine cu numele 'Z:glavanCARTE VISUAL FOXPRO 6.0Imagine ecranimagine FOXPRO 6.0.GIF' se obtine, pe exemplul precedent, urmatoarea imagine :

Includerea imaginilor in document, nu ca fundal ci ca un continut al paginii WEB se realizeaza astfel :

imaginea nu este un hyperlink

<IMG SRC= " NUME IMAGINE.GIF" ALIGN=A HSPACE=B VSPACE=C WIDTH=D HEIGHT=E BORDER=F>

A - poate lua valorile TOP, MIDDLE, BOTTOM, LEFT, RIGHT.

HSPACE - spatiu orizontal

VSPACE - spatiu vertical

BORDER - cadru

WIDTH - latime

HEIGHT - inaltime

EXEMPLU :

Undeva in document se va introduce instructiunea de mai jos (pozitionarea ei influenteaza imaginea de mai jos):

<IMG SRC='Z:glavanCARTE VISUAL FOXPRO 6.0Imagine ecranimagiNE FOXPRO 6.0.GIF' ALIGN=LEFT WIDTH=130 HEIGHT=130 BORDER=2>

imaginea este un hyperlink

Se foloseste comanda :

<A HREF= "ADRESA LA CARE VREM SA FACEM TRIMITERE"><IMG SRC= "URL - IMAGINE"></A>

EXEMPLU :

Undeva in document se va introduce instructiunea de mai jos (pozitionarea ei influenteaza imaginea de mai jos):

<A HREF='HTTP://WWW.MAILCOM.ASE.RO'><IMG SRC='Z:glavanCARTE VISUAL FOXPRO 6.0Imagine ecranimagine FOXPRO 6.0.GIF' ALIGN=right WIDTH=130 HEIGHT=130 BORDER=3></A>

FORMULARE

Sunt instrumente oferite prin limbajul HTML pentru a genera pe ecran zone de dialog cu cititorul paginii WEB.

Sintaxa generala pentru descrierea unui formular este :

<FORM METHOD=TIPUL_METODEI ACTION=NUME ADRESA UNDE SE VA TRANSMITE INFORMATIA NAME=NUME FORMULAR TARGET=NUMELE CADRULUI IN CARE SE VA AFISA REZULTATUL EXECUTIEI>

METHOD - specifica modul cum se transmite informatia catre server (cel mai des se utilizeaza GET si POST (cel mai utilizat)

ACTION - indica locul unde se transmite informatia

NAME - se utilizeaza atunci cand in document avem mai multe formulare

TARGET - numele cadrului in care se va afisa rezultatul executiei. Daca lipseste se inlocuieste pagina curenta.

Sintaxa generala a tag-ului care defineste un camp pentru introducerea datelor intr-un formular este :

<INPUT TYPE= "TIP" NAME=NUME_CIMP VALUE= "VALOARE" SIZE= "A" MAXLENGHT="B">

EXEMPLU DE FORMULAR CU TOATE TIPURILE DE CONTROALE

<HTML>

<HEAD>

<B><TITLE> EXEMPLU DE FORMULAR</TITLE></B>

</HEAD>

<BODY>

<B><h1><FONT COLOR='FF0000'><CENTER>FORMULAR</B></CENTER><P></FONT></h1>

<HR>

<FORM METHOD=GET ACTION= "MAILTO: [email protected]">

<B><FONT COLOR='FF0000'><CENTER> CASETA DE TIP TEXT</B><P></FONT>

<B>INTRODUCETI NUMELE SI PRENUMELE

<INPUT TYPE=TEXT SIZE=25><P>

<B>

<HR>

<B><FONT COLOR='FF0000'><CENTER> CASETA DE TIP PAROLA</B><P></FONT>

<B>INTRODUCETI PAROLA

<INPUT TYPE=PASSWORD SIZE=25 MAXLENGHT=25><P>

<B>

<HR>

<B><FONT COLOR='FF0000'><CENTER> CONTROALE DE TIP CHECK BOX</B><P></FONT>

<CENTER><H3>SELECTATI CELE DOUA SAU TREI RASPUNSURI PE CARE LE CONSIDERATI CORECTE LA INTREBAREA:CARE ESTE CEL MAI FRUMOS ORAS ?</CENTER></H3><P>

<INPUT TYPE=CHECKBOX>BUCURESTI

<INPUT TYPE=CHECKBOX>TG-JIU

<INPUT TYPE=CHECKBOX CHECKED>RM. VALCEA

<INPUT TYPE=CHECKBOX>BRASOV

<INPUT TYPE=CHECKBOX>PREDEAL

<INPUT TYPE=CHECKBOX>CLUJ-NAPOCA

<INPUT TYPE=CHECKBOX>DEVA

<HR>

<B><FONT COLOR='FF0000'><CENTER> CONTROALE DE TIP RADIO BUTON</B><P></FONT>

<CENTER><H3>SELECTATI DOAR UN SINGUR RASPUNS LA INTREBAREA:CARE ESTE CEL MAI FRUMOS ORAS ?</CENTER></H3><P>

<INPUT TYPE=RADIO>BUCURESTI

<INPUT TYPE=RADIO>TG-JIU

<INPUT TYPE=RADIO CHECKED>RM. VALCEA

<INPUT TYPE=RADIO>BRASOV

<INPUT TYPE=RADIO>PREDEAL

<INPUT TYPE=RADIO>CLUJ-NAPOCA

<INPUT TYPE=RADIO>DEVA

<HR>

<B><FONT COLOR='FF0000'><CENTER><H3>EXMPLU DE UN BUTON OARECARE</B><P></H3></FONT>

<INPUT TYPE=BUTTON VALUE='CALCULAEZA'><P>

<HR>

<B><FONT COLOR='FF0000'><CENTER><H3>BUTOANE STANDARD DE TRIMITERE SI ANULARE</B><P></H3></FONT>

<INPUT TYPE=SUBMIT VALUE='TRIMITE'><P>

<INPUT TYPE=RESET VALUE='ANULEAZA'>

<HR>

<B><FONT COLOR='FF0000'><CENTER><H3> CASETA DE TIP MULTILINIE</B><P></H3></FONT>

<B><H3>INTRODUCETI DATELE PERSONALE SUB FORMA STRADA, NR., B.I. SERIA, NR. .<P></H3>

<TEXTAREA ROWS=4 COLS=30></TEXTAREA>

<B>

<HR>

<B><FONT COLOR='FF0000'><CENTER> LISTA DE VALORI</B><P></FONT>

<CENTER>ALEGETI DIN LISTA DE VALORI MATERIA CARE VA PLACE CEL MAI MULT</CENTER>

<SELECT MULTIPLE SIZE=3>

<OPTION> MATEMATICA

<OPTION> MANAGEMENT

<OPTION> INFORMATICA

<OPTION> ANALIZA

<OPTION> GESTIUNE FINANCIARA

<OPTION> CONTABILITATE

<OPTION> CALCULATIA COSTURILOR

<OPTION> CONTABILITATE BANCARA

</SELECT>

<HR>

<B><FONT COLOR='FF0000'><CENTER> COMBO BOX</B><P></FONT>

<SELECT>

<OPTION> MATEMATICA

<OPTION> MANAGEMENT

<OPTION> INFORMATICA

<OPTION> ANALIZA

<OPTION> GESTIUNE FINANCIARA

<OPTION> CONTABILITATE

<OPTION> CALCULATIA COSTURILOR

<OPTION> CONTABILITATE BANCARA

</SELECT>

<HR>

</BODY>

</HTML>

Lansarea in executie a acestui program este urmatoarea (se va tine cont de faptul ca tot programul nu poate fi afisat intr-o singura imagine, deci va fi impartita in trei imagini succesive ):

REALIZAREA DE FRAME - URI (CADRE)

Un cadru nu este altceva decat o portiune (un cadru)dintr-un site de pe internet care poate contine orice fel de informatii (liste ordonate, neordonate, cu definitii, legaturi si orice tipuri de controale).

De exemplu sa luam urmatorul caz :

Presupunem ca dorim sa avem un site care sa aibe 2 linii egale, iar pe prima linie sa existe doua coloane egale si una dublul unei din cele doua, iar pe a doua linie sa avem trei coloane egale (ATENTIE : nu este vorba de un tabel). Frame-ul pe care dorim sa o avem pe ecran este urmatorul :

Pentru rezolvarea acestei probleme facem urmatoarele notatii direct pe frame-ul de mai sus dand nume fiecarui frame. Programul pentru crearea unui astfel de frame este urmatorul :

<HTML>

<FRAMESET ROWS='*,*'>

<FRAMESET COLS='*,*,2*'>

<FRAME NAME='F1' SRC='Z:glavanANUL I HTMLFISIER 1.HTM'>

<FRAME NAME='F2' SRC='Z:glavanANUL I HTMLFISIER 2.HTM'>

<FRAME NAME='F3' SRC='Z:glavanANUL I HTMLFISIER 3.HTM'>

</FRAMESET>

<FRAMESET COLS='*,*,*'>

<FRAME NAME='F4' SRC='Z:glavanANUL I HTMLFISIER 4.HTM'>

<FRAME NAME='F5' SRC='Z:glavanANUL I HTMLFISIER 5.HTM'>

<FRAME NAME='F6' SRC='Z:glavanANUL I HTMLFISIER 6.HTM'>

</FRAMESET>

</FRAMESET>

</HTML>

Nota:

la crearea programului, dupa cum se observa nu se mai foloseste structura generala a unui document HTML. Orice informatie pusa in document, inainte sau dupa crearea frame-urilor anuleaza programul tot.

atributul SRC ne spune ca informatiile din frame-ul numit F1 contine datele din FISIERUL 1.HTM si asa mai departe.

Dupa cum se observa nu avem nimic in interiorul frame-urilor, deoarece am creat fisierele FISIER 1.HTM, FISIER 2.HTM, FISIER 3.HTM, FISIER 4.HTM, FISIER 5.HTM si FISIER 6.HTM ca fiind goale, fara nici o cerinta in interiorul lor.

Daca doream sa avem ceva in interiorul frame-urilor atunci in fisierele respective scriam acele instructiuni.

De exemplu dorim ca in frame-ul F1 sa avem trei radio butoane, atunci trebuie sa identificam valorea SRC respectiv (in cazul nostru avem 'Z:glavanANUL I HTMLFISIER 1.HTM'). Apoi, in valoarea respectiva adica, in fisierul FISIER 1.HTM trebuie sa scriem instructiunea de creare unui radio buton, si anume :

<HTML>

<BODY>

<INPUT TYPE=RADIO NAME=A>RM.VALCEA

<INPUT TYPE=RADIO NAME=A>PREDEAL

<INPUT TYPE=RADIO NAME=A>TG.JIU

</BODY>

</HTML>

De asemenea putem avea un link care sa ne schimbe o imagine in cadrul altui frame.

De exemplu, daca dorim sa avem un link catre frame-ul cu numele F5 care sa ne schimbe fundalul, de exemplu, din frame-ul cu numele F3, atunci dupa identificarea valorilor atributelor SRC corespunzatoare scriem instructiunea respectiva :

iar fisierul cu numele FISIER 55.HTM cuprinde (ATENTIE facem referire la fisierul FISIER 55.HTM in acel HREF= .. ):

TABELE

<HTML>

<TABLE BORDER=5 CELLPADING=5 CELLSPACING=10 WIDTH=100%>

<CAPTION ALIGN=TOP><B><FONT SIZE=18> TABEL DE INCERCARE</CAPTION>

<TR VALIGN=MIDDLE ALIGN=CENTER BGCOLOR=YELLOW>

<TD rowspan='2 >1</TD>

<TD>2</TD>

<TD>3</TD>

<TD>4</TD>

<TD COLSPAN=2>6

<TR VALIGN=MIDDLE ALIGN=CENTER BGCOLOR=RED>

<TD COLSPAN=3 BGCOLOR=009900>5

<TD>7</TD>

<TD>8</TD>

</TR>

<TR ALIGN=CENTER BGCOLOR=BLUE>

<TD><FONT COLOR=YELLOW><B>9</TD>

<TD COLSPAN=3>10</TD>

<TD>11</TD>

<TD>12</TD>

<TR>

</TABLE>

<FORM METHOD='POST' ..>

<B><INPUT TYPE=BUTTON VALUE='ACESTA ESTE UN TABEL'>

</FORM>

</HTML>

ALT EXEMPLU:

<html>

<head>

<title>Examen</title>

</head>

<body>

<table border=3 CELLSPACING=5 BGCOLOR= RED width=%>

<tr VALIGN=MIDDLE ALIGN=CENTER BGCOLOR=YELLOW>

<td>2

<td>3

<td colspan=3>4

<tr VALIGN=TOP ALIGN=CENTER BGCOLOR=RED>

<td>6

<td VALIGN=MIDDLE ALIGN=CENTER rowspan='2><FONT' COLOR=YELLOW

SIZE=12>7

<td>8

<td COLSPAN=2>9

<tr VALIGN=TOP ALIGN=CENTER BGCOLOR=BLUE>

<td>10

<td>11

<td COLSPAN=2>12

</table>

</body>

</html>

Lansarea in executie se prezinta astfel:

Realizarea unei pagini WEB se face trecand prin urmatorii pasi :

Se intra in START*PROGRAMS*ACCESSORIES*NOTEPAD

Se editeaza textul respectiv

Se salveaza cu extensia .HTM

Se deschide INTERNET EXPLORING

Se deschide fisierul creat in NOTEPAD cu FILE*OPEN.

La orice modificare se revine in INTERNET EXPLORING si se apasa tasta F5

CAPITOLUL.III- PROIECTAREA APLICATIEI

Aplicatia este necesara firmelor de recrutare ce doresc o administrare eficienta a celor sa isi doresc sa-si gaseasca un loc de munca. Datele clientului sunt introduse in baza date si gestionate de catre angajatii firmei.

Acesta aplicatie ofera un modul de cautare eficient dupa multiple campuri.

Aplicatia foloseste tehnologia PHP-MySQL, un tandem foarte bine cunoscut in domeniul dezvoltarii aplicatiilor web. Aplicatia nu este un site ci este un soft in toata puterea cuvantului.

Aplicatia are la baza doua module principale: modulul de SETUP unde se realizeaza toate setarile necesare pentru rulare si modulul CLIENT , modul care colecteaza datele introduse de utilizator.

Modulul se Setup - in acest modul se fac toate setarile necesare functionarii aplicatiei.

Este constituita din urmatoarele submodule:

Useri- gestioneaza utilizatorii ce introduce datele clientilor.

Domeniu - seteaza domeniile de activitate: Ex: management, IT, economie etc, domenii in care clientul doreste un job.

Limbi Straine- sunt definite limbile straine.Acest submodul seteaza datele submodului "Limbi straine" din modulul client.

Posturi- definirea posturile in care vor fi incadrati clientii. Acestea sunt clasificate dupa domenii.

2. Modulul Client - ce administreaza clientii acestei firme

Este constituita din urmatoarele submodule:

Client- acest modul este cel de colectare si gestionare a dateleor introduse de utilizatori

Listare clienti- listarea clientilor si editarea datelor acestora

Modulul Setup-User


Fig1. introducere utilizator

In acest modul sunt gestionati utilizatorii aplicatiei. Utilizatorii sunt persoanele care au acces la aplicatie si introduc datele clientilor. De asemenea ei gestioneaza datele clientilor.

Formularul este format din campurile: nume, prenume, user, parola, rescrie parola, Tip user.

Fisierele care stau la baza acestui modul sunt: setup_user.php, setup_user.html.php, listare_user.php, listare_user.html.php

Modul Setup-Domeniu

Definire domenii de activitate unde clientul isi doreste un job. Fisierele acestui modul sunt: : setup_domeniu.php, setup_domeniu.html.php, listare_domeniu.php, listare_domeniu.html.php


Fig2. definire domeniu

Fig3. listare domenii

Modul Setup-Limbi straine

Definire limbi straine. In acest se definesc limbile straine folosite in modulul "Limbi straine" din modulul client.Fisierele acestui modul sunt: setup_limba.php, setup_limba.html.php, listare_limba.php, listare_limba.html.php

Fig4. limbi straine

Modul Setup- Posturi

Definirea posturilor dorite de clienti. Fisierele care stau la baza acestui submodul sunt: setup_post.php, setup_post.html.php, listare_post.php, listare_post.html.php

Modulul CLIENT

Modulul principal al aplicatiei. Acest modul administreaza datele colectate de la clienti. De asemeanea in Acest modul se face cautarea in intreaga baza de date.


Fig.5-listare date client

Modulul Client este alcatuit din urmatoarele submodule:

-date personale: preia datele personale ale clientului

- locuri munca : sunt definite locurile de munca ale clientului pentru a se evidentia experienta acestuia in domeniul dorit sau in domenii adiacente domeniului cunoscut.

- studii: se preiau datele despre studiile clientului

-limbi straine: limbile straine cunoscute de client

-incadrare- in acest submodul se incadreaza clientul in domeniul ales de el , se defineste un salatiu si o data de la care este disbonibil

Modulul Client - Date personale

` Se preia datele clientului: Fisierele care stau la baza sunt:

client_date.php, client_date.html.php, client_date.php, client_date.html.php


Fig.6-clienti

Modulul Client - Limbi straine

Definirea limbilor straine cunoscute de client. In acest modul sunt o limba straina este clasificate dupa 3 cricterii: scris, citit, vorbit. La fiecare cricteriu sunt definite 3 tipuri de nivele: incepator, mediu, avansat. Fisiere ce stau la baza acestui submodul sunt: limba_st.html.php, limba_st.php.


Fig.7 limbi straine

Modulul Client - Incadrare

in acest modul se retin conditiile clientului cu privire la noul loc de munca.

Fisierele sunt: incadrare.html.php,incadrare.php


Fig.8- incadrare client 

Cautare client- acest modul ajuta utilizatorul aplicatiei sa gaseasca clienti dupa cricterii definite


Fig9. cautare client

Fisa client- fisa clientului:

In acesta fisa sunt colectate toate datele clientului. Prin acesta fisa fiorma care doreste sa angajejze clientul isi poate face o imagine asupra eventualui angajat.

Fig.10 -fisa client

Cap IV Concluzii

Cheia in gasirea unui loc de munca bun sta in cunoasterea pietei fortei de munca. Daca ati "diseca" putin aceasta piata, ati vedea ca exista doua metode de a obtine o slujba: directe si indirecte.     
         
Modalitatea directa implica raspunsul la un anunt dat de angajator, iar modalitatea indirecta presupune fie apelarea la diferite cunostinte care lucreaza in domeniul ales de voi, participarea la diversele targuri de joburi, pe Internet, sau pur si simplu va puteti depune CV-ul catre diverse companii, chiar daca acestea nu ofera la momentul respectiv un post.
         Tot o modalitate indirecta este si inscrierea in baza de date a unei agentii de recrutare. Intr-un sondaj realizat de Ziarul de Joburi, cu privire la cat de utile sunt aceste agentii, pe un esantion de 55 de cititori, 54% le considera foarte utile, 33% - inutile, numai 9% fiind de parere ca sunt inutile, iar restul de 4% nu stiu.
         Contrar a ceea ce ati putea crede, agentiile de recrutare de personal nu percep nici o taxa pentru a va inscrie CV-ul in baza lor de date. Pe langa acest avantaj exista si cel al economiei de timp. Practic agentia lucreaza pentru voi, selectand din multitudinea de oferte disponibile pe piata pe cele care sunt mai potrivite cerintelor si profilului vostru. Daca v-ati hotarat sa cooperati cu o agentie profesionala, iata cum functioneaza sistemul unei astfel de companii. In prima faza va depuneti CV-ul la sediul agentiei, ulterior va avea loc un interviu cu unul dintre consultanti pentru a identifica punctele voastre de interes.Va trebui sa completati un numar de formulare si chestionare si vi se va cere sa rezolvati o serie de teste psihometrice. O data aceasta etapa incheiata, va va fi prezentata o lista cu genurile de posturi care vi s-ar potrivi ca tipologie, si ar trebui sa vi se descrie firmele angajatoare care au posturi libere in momentul respectiv, precum si posturile in sine, cu tot ce implica ele (pozitie, cerinte, atributii). Daca veti fi interesati de unul dintre acestea, consultantul va trebui sa inainteze datele voastre angajatorului si sa faca, in numele vostru, demersurile necesare pentru un interviu cu angajatorul.
         Ce agentie sau agentii veti alege este o optiune personala. Un singur lucru nu ar trebui sa acceptati insa, acela de a plati agentiei pentru inscrierea CV-ului vostru in baza de date. Motivul? Angajatorul deja plateste pentru toate serviciile de cautare si selectare a personalului sau. Unele agentii solicita firmelor, ca plata pentru serviciul de recrutare echivalentul a doua-trei salarii lunare ale personalului selectat, in cazul in care ramane angajat stabil (dupa perioada de proba care difera de la companie la companie). Daca angajatul respectiv nu face fata solicitarilor postului, agentia ofera un inlocuitor fara plata altor taxe suplimentare.
         
Exista agentii specializate in ceea ce pe romaneste se traduce "vanatoarea de capete" (head hunting). Acestea opereaza putin diferit fata de agentiile traditionale, in sensul ca lucreaza cu posturi mai putine, dar mult mai importante si ofera servicii foarte personalizate. Acestea fac angajari numai pentru pozitiile de top dint-o companie, iar ceea ce este interesant de stiut este ca procesul de recrutare se desfasoara invers celui prezentat anterior, in sensul ca nici un candidat nu se duce la o astfel de agentie. Agentia ii cauta pe cei mai buni din domeniul pentru care se face recrutarea, din diverse companii si le face o oferta directa.
         Pentru a fi selectat prin aceasta metoda este necesar sa ai un profil de pregatire de exceptie sau o experienta perfect corespunzatoare celei solicitate de postul in cauza. Chiar si asa, recrutarea nu este garantata si depinde de cat de bine cunoaste domeniul respectiv acea agentie, pentru a sti unde sa caute. Dupa acest ultim criteriu, in special se diferentiaza intre ei "vanatoarii de capete".
         Ce trebuie sa faceti pentru a va inscrie in baza de date a unei agentii? In primul rand, cautati agentiile de plasament din zona voastra geografica si aflati care dintre ele sunt specializate in domeniile voastre de interes. Odata facut acest pas, vizitati cateva dintre ele si comparati serviciile pe care le ofera, inclusiv modul in care sunteti tratat. Puteti apela la mai multe deodata, nu se impune o limita.
         Am realizat pentru voi o clasificare a celor mai importante agentii de recrutare din zona Capitalei, multe dintre acestea avand filiale si in celelalte orase mari ale tarii.
         Agentii care acopera diverse pozitii de la entry level la top management:
         - Aims Human Capital Romania este partener al companiei intenationale AIMS, oferind printre multe alte servicii si pe acela de recrutare si plasare de personal. Prin cele doua birouri din Bucuresti si Timisoara realizeaza anual aproximativ 200 de plasamente la nivel de middle si top management. Acesta este, dealtfel si serviciul de baza al agentiei.
         Domeniile acoperite sunt diverse, de la sectoarele: industrial, produse de larg consum, constructii, pana la industria farmaceutica, IT si telecom si cea financiar-bancara.
         - Optim Solutions HR se ocupa in principal de segmentul de piata reprezentat de posturile din middle-management, din toate domeniile, de la vanzari si contabilitate pana la posturi tehnice.
         - P&P este o companie interantionala, prezenta in Romania prin parteneriatul cu HRD Dezvoltare Resurse Umane. Compania recruteaza pentru potitiile de top si middle management din diverse domenii de activitate.
         - Advice Human Resources acopera o gama larga de domenii, insa cele mai solicitate sunt marketing, PR, publicitate si vanzari, finante si contabilitate, proiectare si executie in domeniul industrial, constructii civile si industriale, turism si servicii, medicina si farmacie.
         - Adecco Romania este parte a grupului Adecco International cu filiale in peste 60 de tari, recrutand pentru toate pozitiile, de la entry level la top management. Acopera toate domeniile de activitate, cele mai solicitate joburi fiind cele din vanzari, contabilitate, inginerie.
         - Manpower Romania este o filiala a agentiei internationale Manpower ale carei servicii acopera o gama variata de posibilitati si oportunitati, mergand de la proiecte temporare (pe perioada studiilor, in vacante, part-time), proiecte de recrutare permanenta in toate segmentele de activitate, pe pozitii de entry level, middle si top management, pana la orientare in cariera si consiliere pe tematici legate de mediul organizational.Cele mai solicitate domenii pentru care recruteaza sunt secretariat, contabilitate, PR.
         - HR Romania are cele mai multe cereri pe domeniile vanzari, IT, finante, marketing, publicitate, resurse umane.
         Alte agentii din acest domeniu sunt: B&B Expert, Total Consult, Redo Consulting.
         Agentii de head-hunting:
         - Alexander Hughes Romania, face parte din compania Alexander Hughes International si face recrutari numai pentru pozitii de conducere, numai prin abordare directa (direct search), nu foloseste niciodata anunturi.
         - Global Consulting este atat o agentie de head-hunting cat si de recrutare de personal pentru diverse domenii de la finante, marketing, IT, la cel energetic sau al sectorului public.
         Agentii de recrutare de personal atat pentru tara cat si pentru strainatate: Pluri Consultants, NBS ACCEPT (care faciliteaza gasirea unui loc de munca in Italia, Anglia, Cipru).
         
         
         Care sunt avantajele celor care apeleaza la o agentie de recrutare?
         
         Pentru un tanar este mult mai avantajos sa apeleze la o firma de recrutare, are sansa sa-si gaseasca mult mai repede un loc de munca avantajos. In primul rand, va beneficia de o consiliere care il va ajuta sa castige incredere in resursele proprii dar sa si invete cum sa-si faca un CV corect , cum sa se prezinte la un interviu de angajare. Apoi, are sansa sa isi gaseasca un loc de munca serios, pentru ca o firma de recrutare isi rezerva dreptul de a selecta companiile cu care lucreaza si de a oferi candidatilor toate informatiile despre acestea.
         Atfel, lucrul cu o agentie de resurse umane este interesant pentru candidati din mai multe puncte de vedere:
         - Inscrierea in baza de date a unei agentii de recrutare permite accesul in screening pe diferite pozitii compatibile cu asteptarile, motivatia, parcursul educational si profesional al candidatului;
         - Spre deosebire de o companie, agentiile de recrutare au mai multe pozitii deschise in paralel, deci mai multe sanse pentru un candidat.
         - Agentiile de recrutare lucreaza cu companii de renume din toate ariile de activitate, garantand atat seriozitatea companiei cat si a procesului de recrutare. Companii multinationale sau romanesti, mari corporatii sau IMM-uri pot apela la serviciile unei agentii de recrutare, deschizand un spectru foarte larg de oportunitati pentru candidati.
         - Candidatura inscrisa intr-o baza de date a unei agentii poate avea un raspuns si dupa o perioada mai mare de timp, nu doar pentru proiectele imediate anuntate la un moment dat in presa.
         Luiza Petrica, HR Consultant, Manpower Romania

CapV. Bibliografie

Acu, Ioan Calin, Optimizarea paginilor web, Polirom, Iasi, 2005

Julie C. Meloni, PHP, MySQL si Apache, Ed Corint, Bcuresti, 2005

Lenuta Alboaie, Servicii Web. Concepte de baza si implementari, Ed. Polirom, Iasi , 2006

L. Welling, L. Thomsom- Dezvoltarea aplicatiilor WEB cu Php, MySQL ed. Teora, Bucuresti, 2007

Marin Fotache, Proiectarea bazelor de date. Normalizare si postnormalizare, Ed. Polirom, Iasi, 2006

Sabin Buraga, Proiectarea siturilor Web. Design si functionalitate (editia a II-a), Ed Polirom, Iasi, 2006

Sabin Buraga, Situri web la cheie. Solutii profesionale de implementare, Ed. Polirom, Iasi

Teodor Gugoiu, HTML, XHTML, CSS si XML prin exemple Ed. Teora, Bucuresti, 2007

Traian Anghel, Programarea PHP, ghid practic Ed. Polirom, Iasi, 2006

Traian Anghel, Dezvoltarea aplicatiilor WEB folosind XHTML, PHP SI MySQL, Ed. Polirom, Iasi, 2006

***www.php.net, site-ul oficial al limbajului PHP

***www.phpromania.net, site-ul oficial al comunitatii PHP Romania

Anexa A -Structura aplicatiei


Anexa B - Relatiile intre tabele


Anexa C - CODUL PHP AL PROIECTULUI

I.      Modulul Client

client_cauta.php - cautarea clientilor in baza de date

<?php

include_once('../../config.php');

class client_cauta extends template

function cauta()

//interogarea pentru cautare client

$q = '

SELECT *FROM `client`

LEFT JOIN `client_incadrare` ON (client.id=client_incadrare.client_id)

WHERE '.$where.'

';

$clienti = MyActiveRecord::FindBySql('client',$q);

//system::debug($clienti);

$this->buffer['clienti'] = $clienti;

//system::debug($clienti);

}//sf functie

}//sf clasa

$client_cauta = new client_cauta();

?>

client_date.php-preluarea datelor personale a clientului

<?php

include_once('../../config.php');

class client_date extends template

function save()

else

if(isset($_POST['Salveaza']))

//verificam datele

//sexul

if(empty($client->sex))

$this->add_message('Selectati sexul candidatului!');

if(empty($client->nume))

$this->add_message('Introduceti numele candidatului!');

if(empty($client->email))

$this->add_message('Introduceti adresa de email!');

if(!system::is_valid_email($client->email) && !empty($client->email) )

$this->add_message('Adresa de email nu este valida!');

if(empty($client->adresa))

if(empty($client->localitate))

if(empty($client->judet))

//validam unicitatea numelui

if(!empty($client->nume))

' AND `id`!=''');

if($client_test)

$this->add_message('Exista un client cu acest nume');

}

if(sizeof($this->error)==0)

//preluam erorile

}

$this->buffer['client'] = $client;

}//sf functie

}//sf clasa

$client_date = new client_date();

?>

client_fisa.php- fisa clientului generata dupa introducera tuturor dateleor. Acesta fisa este generata la afisare

<?

include_once('../../config.php');

//preluam datele dupa id client

$client_id = isset($_GET['client_id'])?intval($_GET['client_id']):0;

if(!empty($client_id))

?>

<html>

<head>

<title>Client nume </title>

<style>

*

label

.lista

#header_limba td

tr.limba_data td

#title

</style>

</head>

<body>

<table width='100%' cellpadding='0' cellspacing='0'>

<tr>

<td colspan='2' id='title'>Client&nbsp;-&nbsp;<b><?=ucfirst($date->nume)?></b></td>

</tr>

<tr>

<td height='30'>&nbsp;</td>

</tr>

<td><b>Date</b></td>

<td>

<!--datele clientului-->

<ul class='lista'>

<li><label>Data nasterii :&nbsp;</label>&nbsp;<?=$date->data_nasterii?></li>

<li><label>Adresa:&nbsp;</label>&nbsp;<?=$date->adresa?></li>

<li><label>Localitate:&nbsp;</label>&nbsp;<?=$date->localitate?></li>

<li><label>Judet:&nbsp;</label>&nbsp;<?=$date->judet?></li>

<li><label>Email:&nbsp;</label>&nbsp;<?=$date->email?></li>

li><label>Telefoane:&nbsp;</label>&nbsp;<?=$date->telefon1?>, <?=$date->telefon2?></li>

</ul>

</td>

</tr>

<tr>

<td><b>Locuri anterioare</b></td>

<td>

<?if(sizeof($locuri)>0):?>

<? foreach ($locuri as $loc): ?>

<ul class='lista'>

<li><label>Nume firma :&nbsp;</label>&nbsp;<?=$loc->nume_firma?></li>

<li><label>Inceput :&nbsp;</label>&nbsp;<?=$loc->data_start?></li>

<li><label>Final :&nbsp;</label>&nbsp;<?=$loc->data_final?></li>

<li><label>Salariu :&nbsp;</label>&nbsp;<?=floatval($loc->salariu)?></li>

<li><label>Observatii :&nbsp;</label>&nbsp;<?=$loc->observatii?></li>

</ul>

<? endforeach;?>

<? endif; ?>

</td>

</tr>

<tr>

<td><b>Studii</b></td>

<td>

<!--studii-->

<?if(sizeof($studii)>0):?>

<? foreach ($studii as $studiu): ?>

<ul class='lista'>

<li><label><?=$studiu->an_start?>-<?=$studiu->an_final?>&nbsp;<br>Unitate invatamant :&nbsp;</label>&nbsp;<?=$studiu->unitate_invatamant?></li>

<li><label>Specializare :&nbsp;</label>&nbsp;<?=$studiu->specializare?></li>

<li><label>Localitate :&nbsp;</label>&nbsp;<?=$studiu->localitate?></li>

<li><label>Judet :&nbsp;</label>&nbsp;<?=$studiu->judet?></li>

<li><label>Diploma :&nbsp;</label>&nbsp;<?=$studiu->diploma?></li>

</ul>

<? endforeach;?>

<? endif; ?>

<!--studii-->

</td>

</tr>

<tr>

<td><b>Limbi straine</b></td>

<td>

<!--limbi straine-->

<?if(sizeof($limbi)>0):?>

<table cellpadding='0' cellspacing='0' width='100%'>

<tr id='header_limba'>

<td>Nr</td>

<td>Limba</td>

<td>Vorbit</td>

<td>Scris</td>

<td>Citit</td>

</tr>

<? $i=0; foreach ($limbi as $limba): $i++; ?>

<tr class='limba_data'>

<td><?=$i?></td>

<td><?=$limba->get_nume_limba()?></td>

<td><?=$limba->nivel_vorbit?></td>

<td><?=$limba->nivel_scris?></td>

<td><?=$limba->nivel_citit?></td>

</tr>

<? endforeach;?>

</table>

<? endif; ?>

<!--limbi straine-->

</td>

</tr>

<tr>

<td><b>Conditii client</b></td>

<td style='padding-left: 5px;'>

Clientul doreste sa ocupe un post de <b><?=$incadrare->get_nume_post()->nume?></b>, dorind un salariu mai mare sau egal cu <b><?=floatval($incadrare->salariu)?>&nbsp;</b>RON si este disponibil incepand cu data <b><?=$incadrare->disponibil?></b>

</td>

</tr>

</table>

</body>

</html>

client_listare.php- listarea clientilor

<?php

include_once('../../config.php');

class client_listare extends template

function listare()

}//sf stergere

$this->buffer['clienti'] = MyActiveRecord::FindAll('client',null,'`nume` ASC');

}

}

$confirmare = new client_listare();

?>

client_studii.php- introducerea studiilor clientului

<?php

include_once('../../config.php');

class client_studii extends template

$this->buffer['label_form'] = 'Adauga studii';

$this->include_html();

}

function save_client_studii()

else

if(isset($_POST['Salveaza']))

//validare date

if(empty($studiu->unitate_invatamant))

$this->add_message('Introduceti unitatea de invatamant!');

if(empty($studiu->an_start))

$this->add_message('Introduceti anul de start!');

if(empty($studiu->an_final))

$this->add_message('Introduceti anul final!');

if(empty($studiu->specializare))

$this->add_message('Introduceti specializarea!');

if(empty($studiu->diploma))

$this->add_message('Introduceti diploma obtinuta !');

if(empty($studiu->judet))

$this->add_message('Introduceti judetul !');

if(empty($studiu->localitate))

$this->add_message('Introduceti localitatea !');

if(intval($studiu->an_start)>= intval($studiu->an_final))

$this->add_message('Anul de start este mai mare decat anul absolvirii!');

if(sizeof($this->error)==0)

}

$this->buffer['studiu'] = $studiu;

}//sf functie

//listare loc munca

function listare()

$this->buffer['studii'] = MyActiveRecord::FindAll('studii','`client_id`=''','`unitate_invatamant` ASC');

}

}//sf clasa

$client_studii = new client_studii();

?>

incadrare.php- prealuarea conditiilor de angajare a clientului

<?php

include_once('../../config.php');

class incadrare extends template

$this->buffer['label_form'] = 'Incadrare post';

//selectam domeniile si posturile respective

$this->buffer['domenii'] = MyActiveRecord::FindAll('domeniu',null,'`nume` ASC ');

$this->save();

$this->include_html();

}

function save()

}//de la salveaza

$this->buffer['client_incadrare'] = $client_incadrare;

}//sf functie

}//sf clasa

$incadrare = new incadrare();

?>

II Modulul Login- modulul de logarea a operatorilor aplicatiilor

login.php

<?php

include_once('../../config.php');

class limba_st extends template

$this->buffer['label_form'] = 'Limbi straine';

$this->include_html();

}

function save_limba()

'');

if(isset($_POST['Salveaza']))

{

//stergem limbile selectate anterior

$limbi_st_sel = MyActiveRecord::FindAll('client_limba','`client_id`=''');

if($limbi_st_sel)

foreach ($limbi_st_sel as $limba)

$limba->destroy();

if(sizeof($_POST['limba_straina']) > 0)

}//sf conditie selectare limba straina

}//sf de la salveaza

$this->buffer['limba_st'] = $limba_st;

}//sf functie

//functie ce construieste vectorul de limbi

function cons_limba_st()

'');

if($limbi)

foreach ($limbi as $limba)

$this->buffer['limbi_sel'] = $limbi_arr ;

//system::debug($this->buffer['limbi_sel']);

}

}//sf clasa

$limba = new limba_st();

?>

logout.php

<?php

include_once('../../config.php');

session_destroy();

system::sys_location(baseHref.'/login/login');

?>

Modulul III- Setup -

modul de setup al aplicatiei, configurarea datelor nesare functinarii aplicatiei

listare_domeniu.php

<?php

include_once('../../config.php');

class listare_domeniu extends template

function listare()

}//sf stergere

$this->buffer['domenii'] = MyActiveRecord::FindAll('domeniu',null,'`nume` ASC');

}

}

$confirmare = new listare_domeniu();

?>

listare_limba.php - listarea limbilor straine

<?php

include_once('../../config.php');

class listare_limba extends template

function listare()

}//sf stergere

$this->buffer['limbi'] = MyActiveRecord::FindAll('limba',null,'`nume` ASC');

}

}

$confirmare = new listare_limba();

?>

listare_post.php- listarea posturilor predefinite

<?php

include_once('../../config.php');

class listare_post extends template

function listare()

}//sf stergere

$this->buffer['posturi'] = MyActiveRecord::FindAll('post',null,'`nume` ASC');

}

}

$confirmare = new listare_post();

?>

setup_domeniu.php - definirea domeniilor de activitate

<?php

include_once('../../config.php');

class setup_domeniu extends template

function save()

else

$this->buffer['domeniu'] = $domeniu;

if(isset($_POST['Salveaza']))

//verificam datele

if(trim($domeniu->nume)=='')

//validam unicitatea numelui

if(!empty($domeniu->nume))

' AND `id`!=''');

if($domeniu_test)

$this->add_message('Exista un domeniu cu acest nume');

}

if(sizeof($this->error)==0)

//preluam erorile

}

}//sf functie

}//sf clasa

$setup_domeniu = new setup_domeniu();

?>

setup_limba.php- introducerea limbilor predefinite

<?php

include_once('../../config.php');

class setup_limba extends template

function save()

else

$this->buffer['limba'] = $limba;

if(isset($_POST['Salveaza']))

//verificam datele

if(trim($limba->nume)=='')

//validam unicitatea numelui

if(!empty($limba->nume))

' AND `id`!=''');

if($limba_test)

$this->add_message('Exista o limba cu acest nume');

}

if(sizeof($this->error)==0)

//preluam erorile

}

}//sf functie

}//sf clasa

$setup_limba = new setup_limba();

?>

setup_post.php - introducerea

<?php

include_once('../../config.php');

class setup_post extends template

function save()

else

$this->buffer['post'] = $post;

if(isset($_POST['Salveaza']))

//verificam datele

if(trim($post->nume)=='')

//validam unicitatea numelui

if(!empty($post->nume))

' AND `id`!='' AND `domeniu_id`=''');

if($post_test)

$this->add_message('Exista un post acest nume');

}

if(sizeof($this->error)==0)

//preluam erorile

}

}//sf functie

}//sf clasa

$setup_post = new setup_post();

?>

setup_user.php - introducerea operatorilor aplicatiei

<?php

include_once('../../config.php');

class setup_user extends template

function save()

else

$this->buffer['user'] = $user;

if(isset($_POST['Salveaza']))

if(empty($id))

//verificam datele

if(trim($user->nume)=='')

if(trim($user->prenume)=='')

if(trim($user->user)=='')

//verificam parola

if(empty($id) && trim($user->parola)=='' )

if(empty($id) && trim($user->parola)!='' && $user->parola !=trim($_POST['parola2']))

if(!empty($id) && !empty($_POST['parola']))

else

}

if(sizeof($this->error)==0)

//preluam erorile

}

}//sf functie

}//sf clasa

$setup_user = new setup_user();

?>


Document Info


Accesari: 4484
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )