Sunteți pe pagina 1din 30

PROIECT LA INFORMATICA

Folosirea MySQL şi PHP


în gestionarea unei baze de date pe WEB

-Sibiu 2008-
2
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB
Abstract

Acest proiect este destinat gestionării documentelor în cadrul unui intranet, în


exemplul de faţă în mediul militar, în cadrul oricărei unităţi militare.
Aplicaţia îmbina HTML, PHP si MySQL având un design simplu şi intuitiv,
neogligând utilizatorul să posede cunoştinţe avansate în utilizarea calculatorului.
Aplicaţia se va găsi pe server, iar fiecare compartiment îşi va putea încarca fişierele de
interes public “Un mic avizier virtual”.
Utilizatorii se vor înregistra şi loga la aplicaţie având la dispoziţie atât interfaţă
pentru upload / download documente cât şi pagină personală cu posibilitatea de
modificare a datelor personale, inclusiv modificarea parolei de acces la aplicaţie.
Se pot încărca şi descărca fişiere de orice tip (fără arhive), gestionarea acestora
(ştergerea la un anumit interval de timp în funcţie de capacitatea de stocare a HDD)
făcându-se de către administratorul de reţea.

Cuprins
3
Introducere 5
1. Scurt istoric privind PHP şi MySQL 6
2. Aplicaţii în sisteme cu baze de date 10
2.1 Aplicaţii cu arhitecturi intranet 11
2.2 Limbajul SQL 12
3. Sintaxa php 16
3.1 Afişarea cu ajutorul lui “echo“ 16
3.2 Elemente de formatare 17
3.3 Afişarea elementelor html cu ajutorul lui php 18
3.4 Escape-ul anumitor semne 18
3.5 Afişarea semnelor speciale din PHP 19
4. Construirea unei Baze de Date 20
4.1 Construirea unei Baze de Date 20
4.2 Conectarea la o Bază de Date 20
4.3 Crearea unei Tabele 20
4.4 Introducerea datelor 21
5. Aplicaţie 23
5.1 Prezentare generală 23
5.2 Arhitectura generala a site-ului 24
Concluzii 28
Bibliografie 29

Introducere
4
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB

Conţinutul lucrării este dat de construcţia de legături dintre World Wide Web şi
baze de date, dintre tehnologia veche şi cea nouă, codarea la nivel inferior şi folosirea
uneltelor “high-level”, dintre tehnicieni şi producători sau manageri, dintre izolarea unei
mici reţele (intranet) şi comunitatea globală Internet. Universul bazelor de date şi World
Wide Web este un val complex de produse vechi şi noi, de moduri de gândire vechi şi
noi. Aşa cum o descoperire nouă îi aruncă pe oamenii de ştiinţă într-o dispută colectivă
pentru teorii noi, aşa şi bazele de date pe Web obligă producătorii şi utilizatorii să
construiască punţi de legătură între tehnologiile multiple cu scopul de a crea aplicaţii
mai bune.
Scopul principal urmărit, atunci când se alege ca soluţie de rezolvare a problemei
gestiunii informaţiilor utilizarea bazelor de date, este acela de a regăsi într-un timp cât
mai scurt informaţia căutată, de a asigura securitatea acestora, de a minimiza spaţiul
necesar de memorare, de a asigura unicitatea şi flexibilitatea datelor gestionate.
Proiectul este structurat pe 5 capitole şi are ca scop demonstrarea posibilităţilor
multiple şi avantajele pe care le posedă bazele de date, în cazul de faţă MySQL folosite
împreună cu limbajele HTML şi PHP.
Primul capitol este un scurt istoric privind PHP şi MySQL pentru a introduce
cititorul în lumea informatică.
Al doilea capitol îşi propune să prezinte câteva modele de arhitecturi de aplicaţii
internet şi limbajul SQL atât de des folosit la administrarea bazelor de date.
Al treilea capitol are drept scop descrierea sintaxei PHP, modului de utilizare,
exemple la folosirea acesteia în aplicatii împreună cu HTML si MySQL.
Al patrulea capitol prezinta modul de construire a unei baze de date, cu exemple
concrete din cadrul aplicaţiei realizate.
Al cincelea capitol oferă o imagine de ansamblu asupra aplicaţiei realizate, o
prezentare generală, cât şi arhitectura generală a site-ului.

1. Scurt istoric privind PHP şi MySQL


5
PHP, acronim care provine din "PHP: Hypertext Preprocessor", este un limbaj de
scripting utilizat pe scară largă, realizat şi distribuit în sistem Open Source, care este
special realizat pentru a dezvolta aplicaţii web, prin integrarea codului PHP în
documente HTML. Sintaxa sa provine din C, Java şi Perl şi este uşor de învăţat. Scopul
principal al limbajului este acela de a scrie rapid pagini web dinamice, dar cu PHP se
pot realiza mult mai multe.
Prima versiune de PHP s-a numit PHP/FI. Ea a fost creata de Rasmus Lerdorf in
1995. Initial versiunea continea o colectie simpla de scripturi Perl scrisa pentru
considerente proprii si care se numea ‘Personal Home Page Tools’. Cu timpul Rasmus a
dezvoltat acest pachet adaugand cat mai multe facilitati, cum ar fi comunicarea cu
bazele de date, ceea ce ducea la dezvoltarea unor aplicatii web dinamice, simple dar
eficiente. Rasmus a hotarat sa faca publice sursele PHP/FI pentru ca fiecare sa
beneficieze de avantajele lor si pentru a imbunatati codul. PHP/FI (Personal Home Page
/ Forms Interpreter) avea functionalitatea codului PHP din ziua de azi. Avea variabile ca
in Perl, interpretare de formulare HTML, cod HTML integrat in sintaxe. Insusi sintaxa
era similara cu cea din Perl, insa mult mai limitata, simpla si intr-un fel inconsistenta.
In 1997 apare PHP/FI 2.0, si deja incepe sa castige in popularitate, un grup de
cateva sute de utilizatori din intreaga lume deja se aratau interesati de acest proiect iar
aproximativ 50.000 domenii aveau instalat PHP (ceea ce insemna 1% din totalul
domeniilor de pe Internet la vremea aceea). Cu toate ca un grup restrans de persoane
participau la development, totusi munca principala era facuta tot de un singur om
(Rasmus Lerdorf). PHP/FI 2.0 a fost lansat oficial in Noiembrie 1997, dupa o lunga
perioada de releas-uri beta. La scurt timp isi fac aparitia si primele versiuni alpha de
PHP 3.0.
PHP 3.0 este prima vesiune care era asemanatoare cu veriunile din zilele noastre.
A fost creat si dezvoltat de Andi Gutmans si Zeev Suraski in 1997 care au rescris
complet codul dupa ce si-au dat seama ca PHP/FI 2.0 nu putea face fata unei aplicatii
eCommerce la care ei lucrau la un proiect pentru universitate. Unindu-si eforturile cei
doi au hotarat sa participe la developmentul PHP si sa creeze PHP 3.0.
Una dintre cele mai mari proprietati ale PHP 3.0 era extensibilitatea. Acest lucru a
atras foarte multi developeri care au contribuit cu noi module (comunicarea cu
majoritatea tipurilor de baze de date, protocoale, API-uri). Un alt element cheie in PHP
3.0 a fost suportul pentru sintaxa orientata pe obiect care era in acest fel mult mai
consistenta si flexibila.
Noul limbaj a fost lansat sub un nume nou, care inlocuia ideea de aplicatie cu uz
personal din PHP/FI 2.0 si aducea una mai mare si disponibila tuturor, la o scara mai
mare: PHP: Hypertext Preprocessor. La sfarsitul anului 1998, PHP se dezvoltase foarte
mult, deja existau rapoarte care estimau zeci de mii de utilizatori si sute de mii de site-
uri web care rulau PHP. In acest moment PHP constituia 10% din potentialul web al
Internetului la vremea aceea. PHP 3.0 a fost lansat pe piata oficial in Iunie 1998 dupa ce
petrecuse 9 luni de testing public.In iarna lui 1998 la foarte scurt timp dupa PHP 3.0 a
fost lansa, Andi Gutmans si Zeev Suraski au inceput sa rescrie codul PHP. Scopurile
principale acum erau de a imbunatati performanta aplicatiilor mai complexe si de a
extinde modularitatea codului PHP.

6
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB
Noul engine a fost numit ‘Zend Engine’ (compus din numele Zeev si Andi) iar
acesta putea face fata aplicatiilor complexe cu succes. Acesta a fost prezentat pentru
prima oara la mijlocul anului 1999. PHP 4.0 se baza pe acest engine care impreuna cu
mai multe addonuri si imbunatatiri a fost lansat in Mai 2000 la aproape 2 ani de la
predecesorul sau PHP 3.0.
Noua versiune includea suport pentru majoritatea platformelor si serverelor web,
sesiuni http, output buffering, moduri mai securizate de a manipula input-urile userilor,
etc. PHP 4 este in prezent cea mai stabila versiune de PHP. Deja s-a inceput
developmentul la PHP 5.0 din care au fost facute publice cateva versiuni alpha.
In prezent PHP este folosit de sute de mii de programatori web si cateva milioane
de site-uri care il au instalat (estimari de 20% din domeniile de pe Internet existente in
prezent). PHP 5.0 va include noua versiune a noului engine Zend Engine 2.0.
Bazele sistemului MySQL au fost puse în 1979, o dată cu instrumentul pentru
baze de date UNIREG, creat de Michael "Monty" Widenius pentru compania suedeză
TcX. în 1994, TcX a început să caute un server SQL pentru a-1 utiliza la dezvoltarea
aplicaţiilor. Compania a testat unele servere comerciale, dar toate s-au dovedit a fi prea
lente pentru tabelele de mari dimensiuni ale firmei. De asemenea, compania a examinat
mSQL, dar acestuia îi lipseau anumite caracteristici obligatorii pentru TcX. în con-
secinţă, Monty a început să programeze un server nou. Interfaţa de programare era
proiectată în mod explicit pentru a fi similară celei folosite de mSQL, deoarece pentru
mSQL erau disponibile numeroase instrumente gratuite, iar prin utilizarea unei interfeţe
similare aceleaşi instrumente puteau fi folosite pentru MySQL, cu un efort de portare
minim.
În 1995, David Axmark de la Detron HB a început să facă presiuni pentru ca TcX
să lanseze MySQL pe Internet. De asemenea, David lucra la documentaţie şi la a
determina MySQL să construiască folosind utilitarul GNU configure. MySQL 3.11.1 a
fost dat lumii întregi în 1996, sub forma de distribuţie binară pentru Linux si Solaris, în
prezent, MySQL funcţionează pe mult mai multe platforme si este disponibil atât în
formă binară, cât şi sursă.
MySQL nu este un proiect Open Source, deoarece este necesară o licenţă în
anumite condiţii. Totuşi, MySQL se bucură de o amplă popularitate în comunitatea
Open Source, deoarece termenii de licenţă nu sunt foarte restrictivi, (în esenţă, MySQL
este în general gratuit, dacă nu doriţi să obţineţi profit prin vânzarea sistemului sau a
unor servicii care necesită utilizarea acestuia.)
Popularitatea sistemului MySQL nu este limitată la comunitatea Open Source.
Da, rulează pe calculatoare personale (într-adevăr, o bună parte din programarea cu
MySQL are loc pe sisteme Linux ieftine). Dar MySQL este portabil si rulează pe
sisteme de operare comerciale (precum Solaris, Irix si Windows) şi pe echipamente care
merg până la servere de întreprindere, în plus, performanţele sale rivalizează cu acelea
ale oricărui sistem de baze de date cu care doriţi să îl comparaţi şi poate manipula baze
de date de mari dimensiuni, cu milioane de înregistrări.
MySQL apare foarte clar în imaginea care se desfăşoară dinaintea ochilor noştri:
sisteme de operare disponibile gratuit, care rulează pe echipamente puternice, dar
necostisitoare, punând la dispoziţia unui număr de oameni mai mare ca oricând o putere
substanţială de prelucrare a datelor şi alte caracteristici, pe o varietate de sisteme mai
largă ca oricând. Această „coborâre" a barierelor economice în ceea ce priveşte
7
prelucrarea automată a datelor pune soluţii puternice pentru baze de date la dispoziţia
unui număr fără precedent de mare de persoane şi instituţii. De exemplu, eu folosesc
MySQL cu Perl, Apache şi PHP pe calculatorul meu. G3 PowerBook, care rulează
LinuxPPC. Aceasta îmi permite să-mi transport oriunde rezultatele activităţii mele. Preţ
total: costul calculatorului PowerBook.
Instituţii care în trecut se mărgineau să viseze la a exploata în folos propriu
puterea unui SGBDR cu performanţe ridicate au acum această posibilitate, la un preţ
foarte redus. Utilizarea bazelor de date este tot mai frecventă si la nivel individual.
Oameni care nu se gândeau niciodată că vor folosi baze de date încep să ia în
considerare tot felul de utilizări ale acestora, din moment ce procurarea unui sistem de
baze de date este facilă - de exemplu, stocarea si accesul la rezultatele unor cercetări
genealogice, urmărirea si întreţinerea colecţiilor de diferite tipuri (fluturi, mărci poştale,
cărţi de joc cu jucători de baseball etc.), asistenţă în demararea unei afaceri sau
furnizarea de posibilităţi de căutare pentru situri Web personale.
De ce să optez pentru MySQL?
Dacă sunteţi în căutarea unui sistem gratuit sau necostisitor de gestiune a bazelor
de date, puteţi alege din mai multe opţiuni: MySQL, mSQL, Postgres, unul din
motoarele gratuite (dar fără suport) furnizate de producătorii comerciali şi aşa mai
departe. Când comparaţi MySQL cu alte sisteme de baze de date, gândiţi-vă la ceea ce
este cel mai important pentru dumneavoastră. Performanţă, suport, caracteristici
(conformantă cu SQL, extensii etc.), condiţii si restricţii de licenţiere, preţ; toate acestea
constituie factori care trebuie luaţi în considerare. Date fiind aceste consideraţii,
MySQL are de oferit numeroase caracteristici atractive:
 Viteză. MySQL este rapid. Programatorii pretind că MySQL este cel mai rapid
sistem de baze de date pe care îl puteţi găsi. Puteţi verifica această afirmaţie
vizitând http: //www. mysql. com/benchmark. html, o pagină de comparaţie a
performanţelor din situ! Web MySQL.
 Uşurinţă în utilizare. MySQL este un sistem de baze de date cu performanţe
ridicate, dar relativ simplu, a cărui configurare şi administrare sunt mult mai
simple decât în cazul sistemelor mai mari.
 Cost. MySQL este gratuit pentru majoritatea utilizărilor interne. Vezi secţiunea
„MySQL este gratuit?" ulterior în această introducere.
 Suport pentru limbaje de interogare. MySQL înţelege SQL (Structured Query
Language - limbaj de interogare structurat), limbajul preferat al tuturor sistemelor
moderne de baze de date. De asemenea, puteţi avea acces la MySQL folosind
aplicaţii care acceptă ODBC (Open Database Connectivity), un protocol de
comunicaţie cu bazele de date creat de Microsoft.
 Caracteristici. La server se pot conecta mai mulţi clienţi simultan. Clienţii pot
folosi mai multe baze de date simultan. Puteţi obţine acces la MySQL în mod
interactiv, folosind numeroase interfeţe care vă permit să introduceţi interogări şi
să vizualizaţi rezultate: clienţi în linie de comandă, browsere Web sau clienţi X
Window System. De asemenea, este disponibilă o varietate de interfeţe de
programare pentru limbaje precum C, Perl, Java, PHP şi Python. Astfel, aveţi
opţiunea de a folosi programe client preambalate sau de a vă scrie propriile
programe client pentru aplicaţii personalizate.
 Conectivitate şi securitate. MySQL poate fi folosit integral în reţele, iar bazele de
8
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB
date sunt accesibile de oriunde din Internet, deci vă puteţi partaja datele cu
oricine, oriunde. Dar MySQL are controlul accesului, astfel încât persoanele care
nu au dreptul să vă citească datele nu vor avea această posibilitate.
 Portabilitate. MySQL rulează pe numeroase varietăţi de UNIX, precum şi pe alte
sisteme non-UNIX, ca Windows şi OS/2. MySQL rulează pe echipamente de la
calculatoare de birou la servere cu performanţe ridicate.
 Distribuţie liberă. MySQL este uşor de obţinut; pentru aceasta, folosiţi-vă
browserul de Web. Dacă nu înţelegeţi funcţionarea unei componente sau sunteţi
curios cu privire la un algoritm, vă puteţi procura codul sursă si îl puteţi examina.
Dacă nu vă place modul de funcţionare a unei componente, îl puteţi modifica.

9
2. Aplicaţii în sisteme cu baze de date
Consultarea bazelor de date a devenit astăzi ceva trivial. Practic, de la apariţia
Internetului, în goana după informaţii, accesăm zilnic baze de date fără a realiza faptul
că lucrăm cu o bază de date. In scopul introducerii aspectelor teoretice legate de bazele
de date considerăm un sistem de baze de date ca fiind un sistem computerizat de
păstrarea a articolelor, sistem care cuprinde pe lângă datele propriu-zise şi utilizatorii
acestora, software şi hardware.

 aplicaţii rezidente pe mainframe, terminale pentru I/O şi validări

monitor
TP

 aplicaţii în sisteme cu arhitectură locală - baze de date de dimensiuni mici sau


părţi din baze de date complexe sunt înregistrate pe maşina client. În cazul unei
LAN pot apare replicări.

Maşina client Server

Aplicaţie

SGBD
SGBD
Replicare
(posibila)

 aplicaţii în sisteme cu arhitectură client-server - LAN-urile permit ca părţi dintr-


o aplicaţie să fie deplasate pe maşina client cu datele rezidente pe server
Maşina client Server

Aplicaţie
SGBD
10
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB
2.1 Aplicaţii cu arhitecturi intranet

Maşina client Server

Aplicaţie Aplicaţie
server SGBD

Aplicaţiile Internet sunt accesate printr-un browser care poate fi executat pe


diferite tipuri de maşini client. In arhitecturile de tip Internet nu este practic ca instalarea
sau configurarea unei aplicaţii să se facă pe maşina client. De obicei utilizatorul final nu
vrea să-şi bată capul cu aşa ceva şi în cazul folosirii unor platforme hardware diferite de
la client la client acest lucru devine prohibitiv.
Aplicaţiile Internet pot fi de diferite tipuri:

1. server Web cu pagini HTML statice şi pagini generate dinamic


Maşina client Server

Browser HTTP/ HTML Server SGBD


Web

2. aplicaţia este adusă pe maşina client odată cu pagina Web


Maşina client Server

HTTP/ HTML Server


Browser Web

Applet

SGBD
11
3. serverul Web poate activa un applet care poate accesa baza de date direct sau

poate accesa un server de aplicaţie

Maşina client Server

HTTP/ HTML Server


Web
Browser

Applet
Server SGBD
Aplicaţie

2.2 Limbajul SQL

O dată cu dezvoltarea calculatoarelor, cantitatea de informaţie vehiculată în


cadrul diverselor firme, institutii, organizatii sau intre persoane fizice a crescut
exponential. Orice aplicaţie software prelucrează un volum mai mic sau mai mare de
informaţie şi necesită stocarea acestuia pe disc. Algoritmii dezvoltări de-a lungul
timpului au oferit soluţii din ce în ce mai bune pentru problemele legate de stocarea şi
readucerea datelor – dar şi pentru prelucrarea lor – mergând până la a oferi modele
standardizate de lucru.
Punctul culminant al teoriei structurilor de date a fost atins în momentul definirii
conceptului de baze de date relaţionale. Acesta descrie metode de modelare a
problemelor reale în scopul definirii unor structuri care să elimine redundanţele în
stocarea datelor şi să permită cu usurinţă modificări cerute de evoluţia problemei reale.
Cu această ocazie sunt identificate operaţiile comune efectuate de marea majoritate a
aplicaţiilor, fapt care îi îndreptăţeşte pe teoreticieni să pună bazele unui limbaj accesibil
oricui şi care să permită implementarea cu usurinţă a tuturor metodelor de lucru întâlnite
în aplicaţiile ce necesită baze de date. Definirea lui s-a făcut doar la nivel teoretic,
implementarea fiind lăsată în sarcina companiilor ce dezvoltă motoare de baze de date.
Acest limbaj a fost denumit SQL (Structured Query Language) şi este implementat de
toate motoarele existente în prezent. Avantajul principal al acestui limbaj s-a dorit să fie
simplitatea. Spre deosebire de un adevărat limbaj de programare ce necesită învăţarea
unor sintaxe stricte şi uşor de confundat, SQL are o sintaxa foarte apropiată de limbajul
uman natural, uşor de înţeles şi de utilizat. O frază în acest limbaj trebuie să fie lizibilă
pentru oricine cunoaşte cele câteva cuvinte din limba engleză care compun vocabularul
12
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB
SQL: SELECT, FROM, WHERE, ORDER BY etc. Complexitatea sistemului care
implementează algoritmii necesari lucrului efectiv cu datele, metodele de stocare,
căutare etc, precum şi optimizările sunt perfect transparente pentru utilizator. Acest
limbaj nu este considerat un limbaj de programare deoarece a fost conceput pentru a
spune calculatorului CE date sunt necesare şi nu CUM trebuie obţinute. Sunt necesare
cunoştinţe minime de calculator pentru utilizarea SQL; acesta este de fapt şi idealul
urmărit de marile firme producătoare de motoare de baze de date: comercializarea unui
sistem complex care să permită implementarea oricărei baze de date; datele se pot apoi
manipula doar cu ajutorul utilitarelor anexate sistemului, fără a mai fi nevoie de scrierea
de aplicaţii specifice.

Figura 1.3.1.
Independenţa aplicaţiei faţă de
baza de date

Al doilea mare avantaj îl constituie portabilitatea. O aplicaţie utlizează o bază de


date prin intermediul acestor fraze SQL care nu sunt altceva decât simplu text. Orice
motor de baze de date acceptă astfel de fraze, făcând posibilă migrarea unei aplicaţii de
pe un motor pe altul mai performant fără nici o modificare. Faptul că SQL este un
standard unanim recunoscut conferă un mare avantaj aplicaţiilor care îşi pot alege
oricând pe ce sistem să ruleze.
Limbajul foarte apropiat de cel natural necesită minime cunoştinţe de calculator
pentru a folosi o bază de date prin intermediul SQL. În realitate nu există nici o aplicaţie
care să prezinte o interfaţă SQL utilizatorului neprofesionist. Există foarte multe
programe care folosesc baze de date ce suportă SQL, dar nici unul dintre ele nu prezintă
o consolă pentru comenzi directe. O interfaţă vizuală, oricât de limitată ar fi, este cu
mult mai uşor de folosit decât limbajul SQL. Nici o firmă ce dezvoltă software nu îşi
permite să-şi oblige clienţii (dintre care marea majoritate sunt slab familiarizaţi cu
calculatorul) să înveţe un limbaj a cărui însuşire ar necesita cel puţin un an de pregătire.
Trebuie să remarcam faptul că oricât de intuitivă ar fi sintaxa unui limbaj, tehnicile de
utilizare a acestuia sunt cu mult mai importante, iar acestea se deprind prin exerciţii
îndelungate. Învăţarea şi utilizarea acestui limbaj revine în exclusivitate
programatorului, care este însă deprins cu limbaje mult mai apropiate de maşină, astfel
încât mare parte din tehnica de utilizare SQL se concentrează asupra modului de a
transforma o cerere din limbajul calculatorului (aflat la îndemâna programatorului) în
limbajul SQL, pentru a o pasa apoi interpretorului care să o înţeleagă şi să o transforme
înapoi în limbajul calculatorului.

Figura 1.3.2. Fluxul de execuţie a cererilor într-un sistem bazat pe SQL

Generalitatea şi portabilitatea

13
Standardizarea a fost întotdeauna o sursă de progres; stabilirea unui limbaj comun
a permis producătorilor din întreaga lume să îşi sumeze eforturile şi să îşi bazeze munca
pe rezultatele anterioare. În realitate SQL constituie un standard doar în formă teoretică,
descrisă cu mulţi ani în urmă. O dată cu avansul tehnologic setul de facilităti oferite de
SQL a devenit rapid insuficient. Firmele ce implementează motoare de baze de date au
pus al dispoziţia clienţilor noi funcţii şi extensii ale SQL, care permit o utilizare mai
eficientă dar care nu mai sunt standardizate. Mai exact spus, componenta SQL denumită
limbajul de definire a datelor (DDL) a rămas aproape neschimbată, dar limbajul de
manipulare a datelor (DML) a suferit modificări substanţiale. DDL nu a putut fi
modificat deoarece reprezintă punerea în practică a însăşi teoriei bazelor de date
relaţionale. Nu acelaşi lucru se poate spune însă despre DML. Metodele în care datele
pot fi prelucrate sunt de o varietate infinită şi nu au putut fi grupate într-un set de funcţii
comune, fiecare aplicaţie având cerinţe specifice. Însă SQL reprezentă singura metodă
de interogare a bazelor de date, astfel încât a fost obligatorie implementarea multor
funcţii, oricât de rar folosite ar fi fost. Aceste noi funcţii inventate pentru a satisface cele
mai variate necesităţi, de la simple conversii între tipuri de date până la medii
geometrice, radicali, logaritmi sau căutări de şiruri, nu au mai reprezentat un standard.
Au început prin a fi extensii venite să îmbogăţească limbajul de bază şi să uşureze
munca utilizatorului, dar au devenit curând absolut indispensabile şi au fost
implementate de toate sistemele. Astfel, toate companiile ce dezvoltă motoare de baze
de date implementează aceleaşi funcţii, dar sub denumiri şi cu sintaxe diferite. SQL a
rămas portabil la nivelul său primar şi, teoretic, este încă posibilă portarea unei aplicaţii
de pe un motor pe altul fără mari modificări. Pentru aceasta trebuie însă făcute eforturi
pentru evitarea utilizării oricărei facilităţi oferite de un anumit sistem, dacă aceasta nu
este implementată şi pe celelalte. Această misiune este însă dificilă şi are ca rezultat o
aplicaţie ce nu beneficiază niciodată de ultimele tehnologii; în aceste condiţii
producătorii de soft preferă să renunţe la portabilitate. Tot pentru a rămâne credincios
ideii de portabilitate, SQL a ales cea mai elementară metodă de transmisie a cererilor:
formatul text. în ciuda faptului ca nu este economic din punct de vedere al informaţiei
(conţine multă informaţie redundantă), a fost ales acest format deoarece este cel mai
simplu de interpretat de către orice sistem de operare. S-a pierdut însă din vedere faptul
că transmiterea inversă de date (aducerea rezultatelor) conţine de multe ori informaţii ce
nu se pot reprezenta în format text, astfel încât canalul de comunicaţie deschis între
aplicaţie şi motorul de baze de date trebuie să fie mult mai complex.
Există şi alte dezavantaje majore ale SQL, unul dintre ele fiind viteza mult
redusă. Cauza principală a pierderii de viteză este interpretorul SQL, care are misiunea
de a transforma o frază dintr-un limbaj apropiat de cel uman în cel al calculatorului,
verificând şi semnalând eventualele erori de sintaxă. Performanţele slabe din punct de
vedere al vitezei au îngreunat mult manipularea datelor din cadrul aplicaţiei. Cu alte
cuvinte nu mai este posibilă utilizarea bazei de date pentru stocarea şi regăsirea
informaţiilor, urmând ca prelucrarea lor să se facă din cadrul aplicaţiei. A devenit
necesară prelucrarea datelor în interiorul motorului de baze de date, prin introducerea
conceptului de proceduri stocate. Acestea sunt scrise într-un limbaj derivat din SQL şi
sunt stocate împreună în interiorul bazei de date. Noul limbaj seamană mai puţin cu
SQL şi mai mult cu un limbaj de programare obişnuit, cu instrucţiuni condiţionale şi
repetitive, sacrificând ideea iniţială de simplitate. Fireşte, nu se mai pune problema
14
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB
utilizării unui astfel de limbaj de către un client al cărui domeniu de activitate este altul
decât informatica. Deasemenea, e de la sine înţeles că există multiple variante – foarte
diferite – ale acestui limbaj, nimeni neconformându-se unui standard. Încet-încet, SQL
s-a transformat într-un limbaj de programare în adevăratul sens al cuvântului, la fel de
dificil de însuşit ca oricare altul. Portabilitatea a rămas posibilă doar la nivel teoretic,
deoarece diferenţele dintre implementările actuale îi pun piedici mari. Mai mult,
sistemele bazate pe SQL sunt încetinite cu mult de procedurile de interpretare a sintaxei
comenzilor şi de conversia datelor în formate incomode pentru calculator, dar cerute de
limbaj. Implementarea SQL impune crearea mai multor module, iar un motor de baze de
date este cu atât mai mare, mai lent şi mai costisitor cu cât oferă mai multe facilităţi.
Din aceste cauze motoarele de baze de date existente nu reprezintă o soluţie pentru
aplicaţiile cu pretenţii asupra vitezei de execuţie, spaţiului ocupat pe hard-disk, preţului
de vânzare sau asupra dependeţei faţă de versiunea sistemului de operare.

15
3. Sintaxa php

Un fişier php conţine tag-uri normale de html şi cod php. Marcarea începutului
codului php se face cu „<?php” iar sfârşitul blocului de cod php cu „?>”

Exemplu:
Clasicul exemplu cu „ proiect la informatica” transformat în script php:
<html> <body>
<?php echo " proiect la informatica "; ?>
</body>
</html>

Fişierul de mai sus trebuie salvat cu extensia php pentru ca severul de web să
transmită fişierul interpretorului php

Rezultatul va fi:
proiect la informatica

iar codul sursa returnat (vizibil de altfel cu View Source) este următorul:

<html> <body>
proiect la informatica </body> </html>

Un bloc de script php poate fi inserat în orice loc a unui document html. Fiecare
instrucţiune php trebuie separata de o alta instrucţiune cu ;

Afişarea în php
1. Afişarea cu ajutorul lui “echo”
2. Elemente de formatare a codului sursa
3. Afişarea elementelor HTML
4. Escape-ul pentru anumite semne
5. Afişarea semnelor speciale din PHP

3.1 Afişarea cu ajutorul lui “echo“

Pentru a afişa ceva în PHP (adică codul html pentru o pagină) se pot utiliza mai
multe funcţii: echo, print şi printf. Funcţia printf() se utilizează asemănător ca în C în
sensul că permite formatarea afişărilor. Noi vom folosi funcţia echo care este puţin mai
16
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB
rapida ca print. Diferenţa dintre echo si print este ca print returnează întotdeauna
valoarea 1 după ce a fost executata si deci poate fi utilizata în construcţii mai complexe.

Exemplu 1
<?php
echo "Acesta este textul care se va afişa"; ?>
După cum se observă lipsesc parantezele specifice funcţiilor. Asta se întâmpla
deoarece echo nu este o funcţie ci doar un constructor al limbajului PHP. În schimb dacă
am folosi printf() atunci trebuie utilizate parantezele.

Exemplu 2
<?php
echo "Acesta este textul care se va afişa";
echo "Acesta este al doilea text care se va afişa"; ?>
Daca salvam acest fişier şi îl salvăm pe server, obţinem următorul rezultat:

Codul sursă generat de php este:

Observăm ca al doilea string a fost adăugat primului fără salt la rând nou cu toate
ca am avut doua echo în codul php. Problema este ca după afişarea primului string
cursorul imaginar al PHP-ului a rămas după primul string, al doilea echo fiind afişat
începând cu acea poziţie.
Pentru a avea un salt la linie noua trebuie sa utilizam elemente de formatare

3.2 Elemente de formatare


Pentru a forţa salt la rând nou în php utilizam string-ul \n

Exemplul 3
<?php
echo "Acesta este textul care se va afişa\n";
echo "Acesta este al doilea text care se va afişa"; ?>
Rezultatul este :
Acesta este textul care se va afişa
Acesta este al doilea text care se va afişa

Adică cam tot ca la exemplul anterior. Totuşi dacă vedem codul generat de php
observăm modificarea.
17
În principiu utilizăm elementele de formatare pentru lizibilitatea codului.
Totuşi pentru a putea afişa si în fereastra browser-ului cele două string-uri pe
doua rânduri mai utilizam si elemente html.

3.3 Afişarea elementelor html cu ajutorul lui php


Pentru a forţa un salt la rând nou utilizam elementul html <br>

Exemplul 4

<?php
echo "Acesta este textul care se va afişa<br>\n";
echo "Acesta este al doilea text care se va afişa"; ?>

Rezultatul este:

3.4 Escape-ul anumitor semne


Titlul este ales nefericit. Ce vrea sa spună este faptul că anumite semne cum sunt
ghilimelele, slash-ul etc. sunt interpretate de către php. Adică dacă avem un text care ar
conţine ghilimele am avea probleme la afişarea sa.

Exemplu:
<?php
echo "Acesta este "textul" care se va afişa<br>\n";
echo "Acesta este al doilea text\scris care se va afişa"; ?>

Dacă vom lăsa php-ul să interpreteze acest script vom obţine un rezultat nesatisfăcător:

18
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB

Linia a doua conţine mai mult de 2 ghilimele şi acest lucru duce la eroarea
afişata. Pentru a evita astfel de probleme trebuie să „marcam” ghilimelele care sunt
necesare în text şi care nu fac parte din sintaxă. Acest lucru se face cu ajutorul escape-
ului – se pune un \ înaintea ghilimelelor:

Codul ar trebui să arate astfel:


<?php
echo "Acesta este \"textul\" care se va afişa<br>\n";
echo "Acesta este al doilea text\\scris care se va afişa"; ?>

Observăm faptul că pentru a afişa un \ a trebuit să adăugam în codul sursa un al doilea \.

3.5 Afişarea semnelor speciale din PHP

Sunt cazuri în care am dori să afişăm semnul $. În PHP acesta este un semn
rezervat pentru variabile în sensul că orice sir de caractere care începe cu $ este
considerat nume de variabilă.
Pentru a rezolva această problemă utilizăm tot semnul de escape \
Exemplu:
<?php
echo "Semnul de dolar \$ este o unitate monetara"; ?>

19
4. Construirea unei Baze de Date

4.1 Construirea unei Baze de Date


Mai înainte de a porni construcţia unor script-uri pentru baze de date, ar trebui să
avem o bază de date în care să plasăm informaţii şi din care să citim. Procesul de
instalare a unei baze de date MySQL diferă de la o platformă la alta. Bazele de date
MySQL au un sistem de iniţializare standard (un setup). Este vorba de o bază de date,
compusă din tabele, oarecum separate, conţinând diferite câmpuri, chiar dacă sunt parte
dintr-o bază de date. Fiecare tabelă conţine înregistrări care sunt făcute din câmpuri.

4.2 Conectarea la Baza de Date


In esenţă este vorba peste tot de un nume al bazei de date, un nume de utilizator
(cont) şi o parolă. Aceste informaţii sunt cerute pentru conectarea la baza de date.
Baza de date creată pentru aplicaţie şi conectarea la baza de date (config.php):

…………………………………………………
$AdresaBazaDate = "localhost";
$UtilizatorBazaDate = "root";
$ParolaBazaDate = "";
$NumeBazaDate = "test";

$conexiune = mysql_connect ($AdresaBazaDate, $UtilizatorBazaDate, $ParolaBazaDate) or die("Nu


ma pot conecta la MySQL!");
mysql_select_db($NumeBazaDate, $conexiune) or die("Nu gasesc baza de date");
…………………………………………………

4.3 Crearea unei Tabele


Mai înainte de orice altceva cu baza de date, trebuie să vă creaţi o tabelă. O tabelă
este o secţiune a bazei de date pentru memorarea unor informaţii structurate (legate).
Intr-o tabelă vom defini diferite câmpuri care vor fi folosite în acea tabelă. Din cauza
acestei construcţii, aproape toate centrele cu baze de date trebuie să fie satisfăcute
folosind doar o bază de date.
În lucrarea de faţă tabela a fost creată cu MySQL din “phpmyadmin“ având
următoarele câmpuri:
CREATE TABLE utilizatori (
id int(11) NOT NULL auto_increment,
utilizator char(60) NOT NULL default '',
20
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB
parola char(60) NOT NULL default '',
nume char(30) NOT NULL default '',
prenume char(30) NOT NULL default '',
varsta int(2) NOT NULL default '0',
compartiment char(30) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;

Câmpul id va fi pus ca PRIMARY, INDEX, UNIQUE şi iniţializat ca


auto_increment (poziţie ce apare în Extra în PHPMyAdmin). Raţiunea pentru asta este
că acesta va fi câmpul identificator (primar sau index) şi deci trebuie să fie unic.
Definirea sa ca auto increment înseamnă că la adăugarea fiecărei înregistrări, câtă
vreme nu specificăm acolo un id, acesta va primi ca valoare următorul număr.
Am ales MyISAM ca MySQL Storage Engine Architecture şi nu InnoDB deoarece
tabelele InnoDB nu pot fi reparate cu mysqlcheck sau cu repair table, ci sunt reparate
automat. Lucrul asta nu se întamplă chiar tot timpul, dar atunci când se întâmplă, acest
lucru poate fi iremediabil.
Alt avantaj MyISAM este ca suporta Merge (union views) si Compress read-only
storage, iar cel mai important este că atât spaţiul pe disc cât şi utilizarea memoriei sunt
mult mai mici pentru tabelele MyISAM.
Prin urmare, alegerea motorului de stocare e strans legata de tipul si marimea
aplicatiei, resursele serverului, marimea si numarul de accesari a bazei de date.

4.4 Introducerea datelor


Introducerea datelor se face din pagina HTML care este aproape identică cu
inserarea lor din script-uri PHP. Avantajul constă, însă, în faptul că nu apare nevoia
schimbării script-ului pentru fiecare câmp de introdus. In plus, putem permite
"vizitatorilor" să introducă direct datele lor.
…………………………………………………
<form name="formular" action="inregistrare.php?actiune=validare" method="post">
<tr>
<td height="36" colspan="4" valign="top" align="center"><font color="#ffffff"><h1>Formular
înregistrare </h1></td>
</tr>
<tr>
<td width="80" height="19" valign="top">&nbsp;</td>
<td width="15" rowspan="5" valign="top"></td>
<td width="144" valign="top">&nbsp;</td>
<td width="70" valign="top">&nbsp;</td>
</tr>
<tr>
<td height="22" align="right" valign="top"><font color="#ffffff"><h2>Utilizator:</td>
<td colspan="2" valign="top">
<input type="text" name="user" value="'.$_SESSION['user'].'"> </td>
</tr>
<tr>
<td height="7"></td>
<td></td>
21
<td></td>
</tr>
<tr>
<td height="22" align="right" valign="top"><font color="#FFffff"><h2>Parola:</td>
<td colspan="2" valign="top"><input type="password" name="parola1" value="'.
$_SESSION['parola1'].'"></td>
</tr>

…………………………………………………
$cerereSQL = "INSERT INTO `utilizatori` (`utilizator`, `parola`, `nume`, `prenume`, `varsta`,
`compartiment`)
VALUES ('".addentities($_SESSION['user'])."', '".md5($_SESSION['parola1'])."',
'".addentities($_SESSION['nume'])."', '".addentities($_SESSION['prenume'])."',
'".addentities($_SESSION['varsta'])."', '".addentities($_SESSION['compartiment'])."')";
mysql_query($cerereSQL);
…………………………………………………

22
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB

5. Aplicaţie
5.1 Prezentare generală
Lucrarea de faţă îşi propune să prezinte o aplicaţie destinată publicării
documentelor pe intranet sau web. În acest sens am realizat un site prin care utilizatorul
după de se înregistrează şi apoi se autentifică, poate să vizualizeze şi să descarce
documentele puse la dispoziţie de alţi utilizatori sau să încarce pe server propriile
documente. Utilizatorul după logare are la dispoziţie o pagină personală unde poate să-
şi schimbe datele personale, inclusiv parola.
Aplicaţia în varianta prezentată are un design simplu şi sugestiv, putând fi accesat
atât de un utilizator experimentat cât şi de un începător fără probleme.
Am ales tehnologia - PHP-MySQL - de a realiza aplicaţia datorită atu-urile
fundamentale oferite de aceasta, şi care nu pot fi deloc sau doar cu greu acoperite de
HTML:
 unitatea şi simplitatea manipulării designului sitului ;
 dinamicitatea paginilor ;
 folosirea formularelor şi lucrul cu baze de date .

23
5.2 Arhitectura generala a site-ului
index.php

utilizator nou inregistrare.php

utilizator vechi
inregistrare.php?actiune=validare

Au fost complatate corect toate cîmpurile şi s-a primit confirmarea de introducere a datelor în baza de date

autentificare.php

autentificare.php?actiune=validare

Pagina personala pentru administrarea contului


pagina.php

Schimbarea datelor personale

profil.php
Schimbare parolă
profil.php?actiune=parola

profil.php?actiune=date_personale
Schimbare date personale

upload/index.php

upload/prelucrare.php

upload/afisare.php

iesire.php

24 Nu au fost completate cîmpurile sau au fost completate incorect


Calea parcursă de un utilizator în sistem
Link-uri către diverse pagini din cadrul sistemului
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB

index.php

autentificare.php

25
inregistrare.php

pagina.php

profil.php

26
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB

upload/index.php

upload/afisare.php

modificarea datelor personale

27
modificarea parolei

6. Concluzii
Folosirea bazelor de date pe Web deschide noi şi mari posibilităţi de lucru în
Internet şi poate face mult mai puternic un centru Web, economisind timpul de
actualizare, permiţând utilizatorilor să interacţioneze (să răspundă) şi multe altele.
Identificarea utilizatorului pentru intrarea în aplicaţie prezintă un mare atu în
cadrul marilor companii mai ales în mediul militar. De aceea am încercat şi sper că am
reuşit să fac un prim pas pentru implementarea în unităţile în care există o reţea de
calculatoare a unui sistem de gestionare a datelor si schimbul acestora.
Pentru o mai bună protecţie a datelor personale, pentru parola am folosit
algoritmul de criptare MD5.

28
Folosirea MySQL şi PHP în gestionarea unei baze de date pe WEB

Bibliografie
 Luminiţa Giurgiu, Programare web, Editura Academiei Fortelor Terestre, Sibiu,
2006
 Bill McCarty, PHP4, Editura Teora, Bucureşti, 2002;
 Phillips, Lee Anne, Utilizare HTML 4, Teora, Bucuresti, 2000;
 Taylor Dave, Crearea paginilor WEB cu HTML 4, Teora, Bucuresti;
 Larry Ullman, PHP si MySQL pentru site-uri dinamice, Editura Teora, Bucureşti,
2005;
 L.Welling L. Thomson, Dezvoltarea aplicatiilor WEB cu PHP si MySQL, Editia a
II-a, Editura Teora, Bucureşti, 2003;
 Scott Mitchell, Cum sa creezi un site WEB, Editura Teora, Bucureşti;
 Traian Anghel, Dezvoltarea aplicatiilor WEB folosind XHTML, PHP si MySQL,
Libraria Stilus Online
 Boian F.M. "Programarea distribuită în Internet", Ed. Albastră, Cluj-Napoca,

1999 ;

 Buraga S. "Situri Web la cheie; soluţii profesionale de implementare. PHP, Perl,


ASP.NET, ActionScript, XML, SQL, Palm OS", Editura Polirom, 2004 ;
 Popescu Ileana, “Baze de date relaţionale”, E.U.B 1997 ;
 Pavel Năstase, Floarea Năstase, "Internet, World Wide Web, JavaScript - Html -
Java" , Editura Economică ;
 Lalani S., Weakley S., “Programarea în WEB”, Bucureşti, 1997 ;
 Krainak J., Habraken J., “Internet”, Bucureşti, 1999 ;
 Florin Vladimir Pilat, Sorin Popa, Sorin Deaconu, Florin Radu, “Introducere în
Internet” , Ed. Teora, 1994 ;

29
30

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