Sunteți pe pagina 1din 27

PHP/MySQL

Curs PHP/MySQL
Acest curs este o traducere i adaptare realizat de Mihai Jalobeanu, a ghidului lui
David Cowans intitulat PHP/M!"# $utorial %& '((( ) *++' David ,owans-
Cuprins:
Partea ')a. /ntroducere
Partea *)a. Construirea unei 0aze de Date
Partea 1)a. /ntroducerea datelor
Partea 2)a. A3iarea datelor
Partea 4)a. Alte rezultate
Partea 5)a. 6nregistrri i erori
Partea 7)a. Actualizare i tergere
Partea 8)a. 6ncheierea !cript)ului
'
PHP/MySQL
Partea 1-a: Introducere
Introducere
Pentru 9ult lu9e, principala ra:iune de a ;nv:a un li9ba< precu9
PHP ar 3i interac:iunea pe care o o3er cu bazele de date= ;n acest curs
cut9 s e>plic9 cu9 se 3olosete PHP i M!"#, pentru a 9e9ora
in3or9a:ii pe ?eb i cu9 include9 toate acestea pe site)ul ?eb= Pentru a
parcurge acest curs sunt necesare cel pu:in ele9entele de baz privind
3olosirea PHP= !e reco9and deci parcurgerea cursului de PHP, ;nainte de
a continua=
De ce mi trebuie o Ba! de Date"
@ste, de 3apt, surprinztor cAt de util poate 3i o baz de date, 9ai
ales atunci cAnd poate 3i 3olosit ;ntr)un site ?eb= !unt 3oarte 9ulte
lucruri care se pot 3ace ;ntr)un ast3el de caz, de la a3iarea unor si9ple
liste i pAn la producerea integral a paginilor ?eb dintr)o baz de date=
CAteva e>e9ple cu PHP i M!"#, 3olosite ;9preun, sunt.
!chi9barea ) rota:ia 0anner)elor = Pentru a realiza schi9barea pe
ecran a i9aginilor la di3eritele vizitri ale unei pagini i a asigura
ast3el un interes 9ai 9are al vizitatorilor, se poate 3olosi un script
PHP care deschide o baz de date i e>trage aleator o i9agine sau
un set de i9agini, pentru a o%a)l- include ;ntr)un set de pagini ?eb=
!criptul PHP va contoriza dease9eni nu9rul de cAte ori a 3ost
vzut banner)ul, putAnd, cu 9odi3icri 9inore, s ur9reasc chiar
i nu9rul de click)uri= Pentru a aduga, schi9ba sau edita
bannerele, tot ce ave9 de 3cut este s schi9b9 baza de date iar
scriptul va ;ncrca banner)ul corect ;n toate paginile site)ului ?eb=
Boru9urile ?eb = !ute de 3oru9uri de dezbatere sunt acu9 realizate
i ruleaz ;n PHP i M!"#= Acestea s)au dovedit 9ult 9ai e3iciente
dacAt alte siste9e, creind cAte o pagin pentru 3iecare 9esa< i
o3erind o larg varietate de op:iuni= $oate paginile 3oru9ului pot 3i
actualizate prin schi9barea unui script PHP=
0azele de Date = Cn ast3el de e>e9plu %edi3icator- ;l o3er site)urile
care dau toate in3or9a:iile dintr)o baz de date= !pre e>e9plu,
!cript Avenue este rulat de cAteva scripturi, care 3urnizeaz toate
in3or9a:iile dintr)o baz de date a9pl= $oate categoriile de
scripturi di3erite pot 3i accesate ;ntr)un singur script e>act prin
schi9barea CD#)ului pentru a accesa di3erite pr:i ale bazei de
date=
*
PHP/MySQL
!ite)urile ?eb = CAnd ave9 un site de 9ari di9ensiuni ) cu 9ulte
pagini, i dori9 s 9odi3ic9 aspectul general sau s schi9b9
proiectul, chestiune care ar cere 3oarte 9ult ti9p pentru aducere la
zi i ;ncrcare= Cu PHP i M!"# ;ntregul site ?eb se poate reduce
la unul sau dou scripturi PHP care s acceseze o baz de date
M!"# pentru a ob:ine in3or9a:iile pentru paginile ?eb= Pentru a
actualiza sau a 9odi3ica proiectul centrului ?eb nu trebuie s
schi9b9 decAt o pagin=
De ce e ne#oie"
!unt necesare trei co9ponente pentru a putea rula scripturi PHP
care s acceseze baze de date cu M!"#=
'= 6n pri9ul rAnd, este nevoie de un server ?eb= Acesta poate 3i sau
pe calculatorul personal sau pe o EgazdE ?eb= Fricare pachet )
oricare tip de server ?eb este acceptat i va lucra cu PHP i M!"#,
dar cel 9ai reco9andat este Apache, care e public i gratis=
*= PHP trebuie s 3ie instalat pe server= Dac nu este de<a instalat,
pute:i s o 3ace:i sau s apela:i la ad9inistratorul serverului ?eb, ;n
acest sens= Pachetul de instalare poate 3i descrcat ) preluat de la
http.//PHP=net i este dease9eni public ) gratuit= Dac nu sunte:i
sigur dac este sau nu instalat, o s vede:i 9ai <os cu9 v pute:i
l9uri=
1= 6n 3ine, ave:i nevoie de M!"#= Acesta este de 3apt pachetul de
progra9e pentru gestiunea bazelor de date= Pute:i 3olosi dease9eni
9ulte alte siste9e de baze de date %!"#, Fracle etc=- dar aici
discut9 despre PHP/M!"#, deci ave9 nevoie de M!"# %cu toate
c se 3olosesc co9enzi care :in de li9ba<ul !"# i E9ergE la oricare
din siste9ele de baze de date !"#-= Gi pachetul M!"# este public )
gratuit, putAnd 3i preluat din pagina o3icial a 3ir9ei M!"#= Dar i
;n cazul M!"# trebuie s veri3ic9 9ai ;ntAi dac nu cu9va este
de<a instalat=
Dac nu pute:i instala PHP i M!"#, sau dac gazda ?eb nu v)o
per9ite, pute:i apela la alt server ?eb, la alt gazd= !pre e>e9plu,
Breedo9*!ur3 este un server ?eb public, care acord acces liber i
suport PHP, avAnd M!"# instalat= HostDocHet este un alt server
e>celent care o3er spa:iu de pAn la 1++ MF, i include PHP, M!"# i
9ulte altele, dar percepe o ta> de abona9ent de '+ C!D pe lun=
1
PHP/MySQL
Cum a$%!m dac! PHP &i MySQL sunt insta%ate
@>ist un test si9plu, atAt pentru PHP cAt i pentru M!"#.
#ansa:i ) deschide:i un editor de te>te i scrie:i ur9toarele.
IJ
phpin3o%-K
JL
salvAnd 3iierul cu un nu9e precu9 phpinfo.php
Apoi ;ncrca:i acest 3iier ;n spa:iul web, pe server, apelAndu)l, dup
aceea, din navigator= Dac PHP)ul este de<a instalat ve:i cpta o pagin
plin cu toate detaliile instalrii respective= Parcurge:i atunci aceste
in3or9a:ii= Dac gsi:i o sec:iune despre M!"# atunci ;nsea9n c
M!"# este i el de<a instalat=
'estiunea Bae%or de date
Chiar dac tot ce :ine de ad9inistrarea bazelor de date poate 3i
realizat prin scripturi PHP, instalarea pe server a pachetului PHPMyAdmin
poate aduce un plus de con3ort= @ste un e>celent set de scripturi care
asigur o inter3a: ad9inistrativ pentru bazele de date M!"#= !i 9ai
este i public)gratuit=
Cu el pute:i aduga, eli9ina, edita, salva i vizualiza bazele de date, 3iind
deosebit de util pentru depanare=
Scopu% acestui curs
Cr9ri9 3a9iliarizarea cursantului cu cAteva din ele9entele de
baz ale 3olosirii PHP ;9preun cu M!"#= Pentru asta vo9 ur9ri 9ereu
un e>e9plu= ParcurgAnd cursul de 3a: ve:i ;nv:a cu9 s crea:i un
progra9 bazat pe ?eb pentru a contacta colaboratorii ) o variant de
caiet de adrese= Acest progra9 v per9ite s 9e9ora:i nu9ele
;9preun cu adresa corespunztoare, adresa e)9ail i nu9rul de
tele3on= Me:i putea s actualiza:i ;nregistrrile, s cuta:i ;n baza de date=
@>istAnd i op:iunea de a tri9ite un 9esa< e9ail la to:i cei din baza de
date %re:ine:i ;ns. acest siste9 nu va 3i 3olosit pentru e>pedierea unor
9esa<e nesolicitate-=
Dup realizarea acestui siste9 ve:i 3i, cu siguran:, ;n 9sur s crea:i
aproape orice tip de baz de date pe ?eb=
n lec ia urm toare (Partea 2-a) vom vedea cum proiect m - cum realiz m o baz de date n MySQL. N O O O O
II #a cuprins
2
PHP/MySQL
Partea (-a: Construirea unei Bae de Date
Introducere
Mai ;nainte de a porni construc:ia unor script)uri pentru baze de
date, ar trebui s ave9 o baz de date ;n care s plas9 in3or9a:ii i din
care s citi9= 6n aceast lec:ie vo9 vedea cu9 cree9 o baz de date ;n
M!"# i cu9 o pregti9 pentru date= Ca un e>e9plu, vo9 crea o baz
de date de tip carte de adrese de contact=
Construc)ia Baei de Date
0azele de date M!"# au un siste9 de ini:ializare standard %un
setup-= @ste vorba de o baz de date, co9pus din tabele, oarecu9
separate, con:inAnd di3erite cA9puri, etc= chiar dac sunt parte dintr)o
baz de date= Biecare tabel con:ine ;nregistrri care sunt 3cute din
cA9puri=
Conectarea %a o Ba! de Date
Procesul de instalare a unei baze de date M!"# di3er de la o
plat3or9 la alta= 6n esen: este vorba peste tot de un nu9e al bazei de
date, un nu9e de utilizator %cont- i o parol= Aceste in3or9a:ii sunt
cerute pentru conectarea la baza de date=
Dac ave:i pachetul PHPMAd9in %sau un progra9 si9ilar- instalat,
atunci pute:i s intra:i acolo i s v conecta:i introducAnd contul
%nu9ele de utilizator- i parola= Dac nu ave:i aa ceva, atunci trebuie s
3ace:i ;ntreaga ad9inistrare a bazelor de date 3olosind script)uri PHP %i o
pute:i 3ace-=
Crearea unei *abe%e
Mai ;nainte de orice altceva cu baza de date, trebuie s v crea:i o
tabel= F tabel este o sec:iune a bazei de date pentru 9e9orarea unor
in3or9a:ii structurate %legate-= 6ntr)o tabel vo9 de3ini di3erite cA9puri
care vor 3i 3olosite ;n acea tabel= Din cauza acestei construc:ii, aproape
toate centrele cu baze de date trebuie s 3ie satis3cute 3olosind doar o
baz de date=
Crearea unei tabele ;n PHPMAd9in este si9pl, scrie:i nu9ele,
selecta:i nu9rul de cA9puri i Papsa:iP butonul %click-= A<unge:i atunci
la un ecran setup ;n care trebuie s crea:i cA9purile pentru baza de date=
Dac 3olosi:i un script PHP pentru a crea propria baz de date, iar
co9pleta creere i ini:ializarea vor 3i 3cute ;tr)o singur co9and=
4
PHP/MySQL
C+mpuri
@>ist o larg varietate de cA9puri i de atribute disponibile ;n
M!"# i vo9 discuta doar cAteva din ele.
*ipu% c+mpu%ui Descriere
$/QR/Q$ Qu9r ;ntreg 9ic
!MA##/Q$ Qu9r ;ntreg 9ic
M@D/CM/Q$ Qu9r ;ntreg
/Q$ Qu9r ;ntreg
MADCHAD $e>t %9a>i9u9 *45 caractere-
$@S$ $e>t
Acestea sunt doar cAteva dintre cA9purile disponibile= F cutare pe
/nternet ne poate 3urniza lista cu toate tipurile de cA9puri per9ise=
Crearea unei *abe%e cu PHP
! cree9 o tabel din PHP este ceva 9ai di3icil decAt cu M!"#=
Ave9 de parcurs ur9torii pai.
CD@A$@ $A0#@ nu9eTtabel U
Bields
V
CA9purile sunt de3inite dup cu9 ur9eaz.
3ieldna9e tpe%length- e>tra in3o,
Clti9ul cA9p introdus nu poate include nici o virgul=
F s d9 ;ndat un e>e9plu co9plet privind aceste de3iniri=
Baa de date cu adrese de contact
0aza de date de contact va con:ine toate in3or9a:iile de contact ale
cunoscu:ilor introdui ;n tabel= /ar in3or9a:iile vor putea 3i editate i
consultate ;n internet=
Cr9toarele cA9puri vor 3i 3olosite ;n baza de date.
5
PHP/MySQL
,ume *ipu% Lun-imea Descrierea
id /Q$ 5 Un identificator unic pentru fiecare nregistrare
Qu9e MADCHAD '4 Numele de familie al persoanei
prenu9e MADCHAD '4 Numele de botez al persoanei
tele3on MADCHAD *+ Numrul de telefon
9obil MADCHAD *+ Numrul de telefon mobil
3a> MADCHAD *+ Numrul de fa
e9ail MADCHAD 1+ Adresa e!mail
web MADCHAD 1+ Pagina "eb personal
Poate v 9ira:i c a9 3olosit un tip de cA9p MADCHAD pentru
coloana 9u9rTtele3on/3a>, chiar dac acestea sunt 3or9ate din ci3re=
Chiar dac a9 putea 3olosi tipul /Q$, este pre3erabil s 3olosi9 MADCHAD
pentru c ast3el vor 3i per9ise spa:ii i crati9e, precu9 i por:iuni de
te>t, la 3el ca nu9erele scrise ca te>t %e>e9plu '8++)CFMPAQR- i cu9
nu vo9 ini:ia apeluri tele3onice de pe ?eb, totul e ;n ordine=
@>ist ;nc ceva de care trebuie s ave9 gri< ;n aceast baz de
date= CA9pul id va 3i pus ca PD/MADR, /QD@S, CQ/"C@ i ini:ializat ca
auto#increment %pozi:ie ce apare ;n @>tra ;n PHPMAd9in-= Da:iunea
pentru asta este c acesta va 3i cA9pul identi3icator %pri9ar sau inde>- i
deci trebuie s 3ie unic= De3inirea sa ca auto increment ;nsea9n c la
adugarea 3iecrei ;nregistrri, cAt vre9e nu speci3ic9 acolo un id,
acesta va pri9i ca valoare ur9torul nu9r=
Dac 3olosi9 PHPMAd9in sau un progra9 de 9anage9ent, pute9
crea o tabel nu9it contacte=
Crearea *abe%ei n PHP
Pentru a crea aceast tabel vo9 3olosi ur9toarea secven: de
co9enzi PHP= F parte dintre co9enzile de 9ai <os n)au 3ost ;nc
discutate, dar le vo9 e>plica ;n detaliu ;n lec:ia ur9toare=

IJ
WuserXPuserna9ePK
WpasswordXPpasswordPK
WdatabaseXPdatabasePK
9sYlTconnect%localhost,Wuser,Wpassword-K
Z9sYlTselectTdb%Wdatabase- or die% P0aza de date nu poate 3i selectataP-K
WYuerXPCD@A$@ $A0#@ contacts %id int%5- QF$ QC## autoTincre9ent,nu9e
varchar%'4- QF$ QC##,prenu9e varchar%'4- QF$ QC##,tele3on varchar%*+- QF$
QC##,9obil varchar%*+- QF$ QC##,3a> varchar%*+- QF$ QC##,e9ail varchar%1+-
QF$ QC##,web varchar%1+- QF$ QC##,PD/MADR [@R %id-,CQ/"C@ id %id-,[@R idT*
%id--PK
7
PHP/MySQL
9sYlTYuer%WYuer-K
9sYlTclose%-K
JL
/ntroduce:i nu9ele bazei de date, contul M!"# i parola M!"# ;n
pozi:iile corespunztoare din pri9ele 1 linii de 9ai sus=
n lec ia urm toare (Partea 3-a) vom vedea cum ne conect m la o baz de date folosind PHP i vom N O O O \
nv a cum s ad ug m informa ii n noua noastr baz de date. ON O O O N O O
II #a cuprins
8
PHP/MySQL
Partea .-a: Introducerea date%or
Introducere
Pe parcursul precedentelor lec:ii a9 vzut ce vre9 s ;nv:9 ;n
acest curs i a9 vzut cu9 pute9 crea o baz de date pe care s)o
3olosi9 ;n acest curs= 6n aceast lec:ie vo9 vedea cu9 introduce9
anu9ite in3or9a:ii ;n baza noastr de date ast3el ;ncAt s devin cAt 9ai
util=
Conectarea %a o ba! de date
Pri9ul lucru care trebuie 3cut, 9ai ;nainte de a putea 3ace ceva,
este conectarea la baza de date M!"#= Acesta este un pas 3oarte
i9portant, pentru c, dac nu sunte9 conecta:i, co9enzile ctre baza de
date vor eua=
Practic, pentru a 3olosi o baz de date trebuie s preciz9 nu9ele de
utilizator %username-, parola %pass$ord- i nu9ele bazei de date.
Wuserna9eXPnu9eTutilizatorPK
WpasswordXPparolaPK
WdatabaseXPnu9eleTbazeiTdeTdatePK
Desigur, aici s)ar putea discuta dac nu)i riscant s pstr9 parola
;ntr)un 3iier= Qu trebuie s v alar9a:i ;ns, deoarece sursa PHP este
prelucrat de server ;nainte de a 3i tri9is navigatorului, ast3el ;ncAt este
i9posibil pentru orice utilizator s vad scriptul=
Mai apoi, ave9 nevoie de o co9and care s lanseze cone>iunea la baza
de date.
9sYlTconnect%localhost,Wuserna9e,Wpassword-K
Aceast linie spune PHP)ului s se conecteze la serverul de baze de date
M!"# la ElocalhostE %localhost se nu9ete serverul pe care ruleaz PHP)
ul= 6n a3ara cazului ;n care gazda "eb indic altceva, vo9 3olosi
localhost- 3olosind nu9ele de cont 9e9orat ;n Wuserna9e i parola din
Wpassword=
Mai ;nainte de a discuta cu9 lucr9 cu baza de date, vo9 vedea ;nc o
co9and.
9sYlTclose%-K
Aceasta este o co9and 3oarte i9portant care ;nchide cone>iunea cu
(
PHP/MySQL
serverul de baze de date= !criptul va rula ;nc, dac nu include9 aceast
co9and, iar prea 9ulte cone>iuni M!"# deschise pot cauza proble9e
serverului web= @ste un obicei bun s include9 co9anda de ;nchidere de
9ai sus dup ce a9 introdus toate co9enzile ctre baza de date, pentru
a 9en:ine plat3or9a ;n bun stare=
Se%ectarea baei de date
Dup ce ne)a9 conectat la serverul de baze de date, trebuie s
select9 baza de date pe care vre9 s)o 3olosi9= $rebuie s 3ie o baz de
date la care ave9 acces, cu respectivul nu9e de utilizator=
!e 3olosete ur9toarea co9and.
Z9sYlTselectTdb%Wdatabase- or die% P0aza de date nu poate 3i selectataP-K
Aceasta spune PHP)ului s selecteze baza de date speci3icat ;n variabila
Wdatabase %pe care a9 de3init)o 9ai ;nainte-= Dac cone>iunea nu se
poate realiza procesul %e>ecu:ia script)ului- se oprete a3iAnd te>tul.
0aza de date nu poate 3i selectata
Aceast parte supli9entar Eor dieE este bun pentru ieire, chiar dac nu
asigur decAt un 9ini9 control al erorii=
/0ecu)ia comeni%or
Dup conectarea la server i selec:ia bazei de date dorite, pute9
;ncepe e>ecu:ia co9enzilor pe server=
@>ist dou 9oduri de a e>ecuta o co9and= Pri9a revine pur i si9plu
la introducerea co9enzii ;n PHP= Asta 9erge atunci cAnd nu apar
rezultate ca ur9are a e>ecu:iei co9enzii=
Cea de a doua variant este s de3ini9 co9anda ca o variabil= Asta va
atribui variabilei rezultatele opera:iei=
6n aceast lec:ie vo9 3olosi pri9a cale, deoarece nu atept9 rspuns de
la baze de date= Co9anda va arta ca9 aa.
9sYlTYuer%WYuer-K
Bolosirea acestei 3or9e a co9enzii este util pentru c repet9 pur i
si9plu aceiai co9and iari i iari 3r a 3i nevoie s 9e9or9
altele= $ot ce ave9 de 3cut este s schi9b9 variabila=
'+
PHP/MySQL
Introducerea date%or
Acu9 ne vo9 ;ntoarce la baza de date cu adrese de contact, pe
care a9 creat)o ;n lec:ia anterioar, pentru a introduce pri9ele in3or9a:ii
;n baza de date.
,ume. /onescu
Prenume. ,heorghe
*e%e$on. +*' 124578(
Mobi%. +7*2 112244
1a0. +*52 4578('
/-mai%. ionescugheZpersonal=ro
2eb. http.//www=cinestie=ine>t=ro
$oate acestea vor 3i introduse cu o singur co9and.
WYuer X P/Q!@D$ /Q$F contacts MA#C@! %EE,E/onescuE,E,heorgheE,E+*'
124578(E,E+7*2 112244E,E+*52
4578('E,EionescugheZpersonal=roE,Ehttp.//www=cinestie=ine>t=roE-PK
Pare pu:in ca9 con3uz la pri9a vedere= ! l9uri9 pu:in lucrurile=
Mai ;ntAi, apare variabila WYuer creia ;i atribui9 o co9and %vezi
paragra3ul precedent-=
Cr9toarea parte, adic. /Q!@D$ /Q$F contacts MA#C@!
este destul de uor de ;n:eles= @a spune PHP)ului s insereze ;n
tabela nu9it contacts valorile care ur9eaz %scrise ;ntre paranteze-=
Acolo, ;ntre paranteze, ave9 toate cA9purile de adugat= Apar toate
cA9purile ;n ordine i sunt inserate in3or9a:iile dintre ghili9ele=
!pre e>e9plu. /onescu va 3i inserat ;n al *)lea cA9p, care, ;n aceast
tabel este cA9pul Enu9eE=
Poate a:i re:inut c nu a9 inserat ni9ic ;n pri9ul cA9p din baza de date
%id-= Asta din cauz c acest cA9p va 3i un cA9p inde>, ele9entul unic
de identi3icare= Biecare ;nregistrare din baza de date va avea un unic /D=
Din aceast cauz, cAnd ;ncrc9 baza de date, vo9 pune /D pe EAuto
/ncre9entE= Asta ;nsea9n c, ne)atribuindu)i nici o valoare, el va lua la
3iecare ;nregistrare ur9toarea valoare din ir= /ar pri9a ;nregistrare va
avea valoarea /DX' =
n lec ia urm toare (Partea 4-a) vom vedea cum folosim formularele i variabilele pentru a insera N O \
informa ii i cum afi m informa iile din baza de date. N \ \O N
II #a cuprins
''
PHP/MySQL
Partea 3-a: 4$i&area date%or
Introducere
PAn acu9, a9 creat o baz de date i a9 ;ncrcat ;n ea in3or9a:ii=
/n aceast lec:ie vo9 vedea cu9 se realizeaz o pagin de intrare pentru
aceast baz de date, i cu9 se a3ieaz con:inutul acesteia=
Introducerea date%or dintr-o pa-in! H*ML
/ntroducerea datelor din paginile H$M# este aproape identic cu
inserarea lor din script)uri PHP= Avanta<ul const, ;ns, ;n 3aptul c nu
apare nevoia schi9brii script)ului pentru 3iecare cA9p de introdus= /n
plus, pute9 per9ite PvizitatorilorP s introduc direct datele lor=
/at 9ai <os cu9 arat o pagin H$M# cu celule te>t pentru introducerea
detaliilor corespunztoare.
I3or9 actionXPinsert=phpP 9ethodXPpostPL
Qu9e Ba9ilie. Iinput tpeXPte>tP na9eXPnu9ePLIbrL
Prenu9e. Iinput tpeXPte>tP na9eXPprenu9ePLIbrL
$ele3on. Iinput tpeXPte>tP na9eXPtele3onPLIbrL
Mobil. Iinput tpeXPte>tP na9eXP9obilPLIbrL
Ba>. Iinput tpeXPte>tP na9eXP3a>PLIbrL
@)9ail. Iinput tpeXPte>tP na9eXPe9ailPLIbrL
?eb. Iinput tpeXPte>tP na9eXPwebPLIbrL
Iinput tpeXP!ub9itPL
I/3or9L
Aceast pagin poate 3i, desigur, 3or9atat i pot apare di3erite
schi9bri ) variante= @ste doar un 3or9ular de pornire, ilustrativ= Ma
trebui ;ns editat script)ul din lec:ia precedent, pentru ca, ;n locul
introducerii in3or9a:iilor direct din script ;n baza de date, s 3ie 3olosite
variabilele.
IJ
Wuserna9eXPuserna9ePK
WpasswordXPpasswordPK
WdatabaseXPbazaT9eaTdeTdatePK
9sYlTconnect%localhost,Wuserna9e,Wpassword-K
Z9sYlTselectTdb%Wdatabase- or die% P0aza de date nu poate 3i selectataP-K
WYuer X P/Q!@D$ /Q$F contacts MA#C@!
%EE,EWnu9eE,EWprenu9eE,EWtele3onE,EW9obilE,EW3a>E,EWe9ailE,EWwebE-PK
'*
PHP/MySQL
9sYlTYuer%WYuer-K
9sYlTclose%-K
JL
Acest script trebuie salvat ca 3iier cu nu9ele insert.php, ast3el ca
s poat 3i apelat de 3or9ularul H$M#= $reaba va 9erge ;ntrucAt, ;n loc ca
datele s 3ie introduse local, ele se introduc ;n 3or9ular i sunt 9e9orate
;n variabilele care apar precizate acolo i care sunt trans9ise apoi PHP)
ului=
Pute9 s adug9 script)ului un 9esa< care s con3ir9e preluarea
datelor= Asta 3ace parte din Eo3ertaE de baz a PHP i r9Ane ca e>erci:iu=
Scoaterea Date%or
Acu9 ave9 ;n baza de date cel pu:Ein o ;nregistrare, dac nu 9ai
9ulte= !e pune proble9a cu9 vizualiz9, cu9 scoate9 aceste date
3olosind PHP= Cunoaterea ele9entelor de progra9are din PHP este
necesar, reco9andabil 3iind parcurgerea Mini)cursului de PHP ;naintea
acestuia=
Pri9a co9and la care vo9 apela este co9anda !@#@C$ din !"#, 3olosit
;ntr)o cerere M!"# ;n 3or9a.
!@#@C$ ] BDFM contacts
Aceasta este o co9and de baz din M!"#, care va spune script)ului s
selecteze toate ;nregistrrile din tabela contacts= Dar, de data aceasta,
co9anda 3urnizeaz un rezultat, ea va trebui e>ecutat atribuin
rezultatele unei variabile.
WYuerXP!@#@C$ ] BDFM contactsPK
WrezultatX9sYlTYuer%WYuer-K
/n acest caz, ;ntregul con:inut al bazei de date va 3i atribuit variabilei cu
nu9ele Wrezultat %care va 3i deci o 9atrice, un tablou-= Mai ;nainte de a
putea scoate aceste date va trebui s le e>trage9 ca variabile si9ple,
separate= Pentru asta trebuie s ti9 cAte ;nregistrri ave9 ;n tabel
%deci i ;n variabila Wrezultat -=
,um!rarea %inii%or
Ave9 o co9and special ;n M!"# pentru calculul nu9rului de linii din
tabel= @ste i9portant pentru c ;n baza de date se 3ac uzual
nu9eroase actualizri, co9pletri, tergeri=
'1
PHP/MySQL
Wnu9X9sYlTnu9rows%Wrezultat-K
Ast3el, variabila Wnu9 va cpta ca valoare nu9rul de linii din Wrezultat
%adic toc9ai din baza de date-= Acest nu9r va putea 3i 3olosit ;n
continuare pentru ciclul ;n care se vor analiza i des3ace ;n variable
separate cA9purile 3iecrei linii=
Construirea cic%u%ui
Ave9 de scris un ciclu pentru a selecta din tabel %din rezultat- linie cu
linie====
De3ini9 un indice, o variabil Wi care va parcurge %cu incre9entare-
valorile de la ' la Wnu9=

WiX+K
while %Wi I Wnu9- U
FP@DA$//#@ A!CPDA #/Q/@/
^^WiK
V
Acesta este un ciclu tipic ;n PHP i va e>ecuta ansa9blul nu9it
FP@DA$//#@ A!CPDA #/Q/@/ de e>act Wnu9 ori, adic de atAtea ori cAt
trebuie= #a 3iecare reluare Wi 3iind 9rit cu o unitate= Ast3el Wi poate 3i
3olosit i pentru a preciza nu9rul liniei care se prelucreaz=
4socierea date%or %a #ariabi%e
6n partea pe care a9 nu9it)o FP@DA$//#@ A!CPDA #/Q/@/ trebuie s
separ9 3iecare cA9p din linia ) ;nregistrare asociindu)l unei variabile=
Bolosi9 pentru asta ur9toarea secven:.
WvariableX9sYlTresult%Wrezultat,Wi,Pnu9eleTca9puluiP-K
Ast3el, pentru a e>trage 3iecare co9ponent din baza noastr de date,
vo9 3olosi ur9toarele instruc:iuni.
Wnu9eX9sYlTresult%Wresult,Wi,Pnu9eP-K
Wprenu9eX9sYlTresult%Wresult,Wi,Pprenu9eP-K
Wtele3onX9sYlTresult%Wresult,Wi,Ptele3onP-K
W9obilX9sYlTresult%Wresult,Wi,P9obilP-K
W3a>X9sYlTresult%Wresult,Wi,P3a>P-K
We9ailX9sYlTresult%Wresult,Wi,Pe9ailP-K
WwebX9sYlTresult%Wresult,Wi,PwebP-K
'2
PHP/MySQL
Qu ne)a9 ocupat aici de cA9pul /D %dei o putea9 3ace- pentru c nu ne
este necesar la a3iare datelor=
Combinarea Script-u%ui
Acu9 pute9 scrie script)ul co9plet pentru scoaterea datelor= 6n
acest script datele nu sunt 3or9atate, adic vor 3i a3iate toate cu acelai
font, prede3init=
IJ
Wuserna9eXPuserna9ePK
WpasswordXPpasswordPK
WdatabaseXPbazaTnoastraTdeTdatePK
9sYlTconnect%localhost,Wuserna9e,Wpassword-K
Z9sYlTselectTdb%Wdatabase- or die% P0aza de date nu poate 3i selectataP-K
WYuerXP!@#@C$ ] BDFM contactsPK
WrezultatX9sYlTYuer%WYuer-K
Wnu9X9sYlTnu9rows%Wrezultat-K
9sYlTclose%-K
echo PIbLIcenterLDatabase FutputI/centerLI/bLIbrLIbrLPK
WiX+K
while %Wi I Wnu9- U
Wnu9eX9sYlTresult%Wrezultat,Wi,Pnu9eP-K
Wprenu9eX9sYlTresult%Wresult,Wi,Pprenu9eP-K
Wtele3onX9sYlTresult%Wresult,Wi,Ptele3onP-K
W9obilX9sYlTresult%Wresult,Wi,P9obilP-K
W3a>X9sYlTresult%Wresult,Wi,P3a>P-K
We9ailX9sYlTresult%Wresult,Wi,Pe9ailP-K
WwebX9sYlTresult%Wresult,Wi,PwebP-K
echo PIbLWnu9e Wprenu9eI/bLIbrL$ele3on. Wtele3onIbrLMobil.
W9obilIbrLBa>. W3a>IbrL@)9ail. We9ailIbrL?eb. WwebIbrLIhrLIbrLPK
^^WiK
V
JL
n lec ia urm toare (Partea 5-a) vom vedea cum realiz m scoaterea datelor i cum select m diferite N O O \ O
date din baza de date.
II #a cuprins
'4
PHP/MySQL
Partea 5-a: 4%te reu%tate
Introducere
PAn acu9 a9 vzut cu9 cree9 o baz de date ) tabelele din care
este 3or9at, cu9 inser9 in3or9a:iile i cu9 a3i9 datele din baza de
date= 6n aceast lec:ie vo9 vedea 9ai 9ulte 9oduri de a a3ia ) scoate
date din baza de date=
1ormatarea scoaterii
6n ulti9a parte a lec:iei precedente a9 scos o list cu toate
persoanele ;nregistrate ;n baza de date= De 3apt a9 a<uns s ave9
de3inite variabilele care per9it scoaterea sau a3iarea, ;ncheind cu o
co9and destul de si9pl de a3iare %echo- 3r a o e>plica= Desigur,
datele din tabel ar trebui prezentate pe ecran tot ;n 3or9a unui tabel= /ar
asta nu)i prea co9plicat= 6n 3ond dac ti9 cu9 s a3i9 %scoate9-
3iecare variabil ;n parte, atunci tot restul privind 3or9atarea,
organizarea ca tabel, etc=, este doar legat de cunoaterea H$M#=
$ot ce ave9 de 3cut deci este s 3olosi9 PHP pentru scoaterile H$M#
incluzAnd variabilele ;n zonele corecte= Cel 9ai si9plu este s ;nchide9
tagul PHP i s introduce9 liniile nor9ale din H$M#= FridecAte ori
a<unge9 la o variabil o vo9 include 3olosind o secven: de 3or9a.
IJ echo PWnu9eleTvariabileiPK JL
Pute9 atunci s 3olosi9 un ciclu PHP pentru a repeta o secven: de cod
ca cea de 9ai sus, la includerea variabilelor ;ntr)un tablou= !pre e>e9plu,
3olosind secven:a de cod din lec:ia precedent cu ciclul corespunztor,
pute9 3or9ata scoaterile pentru ca s apar ;ntr)o tabel 9are.
Itable borderXP+P cellspacingXP*P cellpaddingXP*PL
ItrL
IthLI3ont 3aceXPArial, Helvetica, sans)seri3PLQu9eI/3ontLI/thL
IthLI3ont 3aceXPArial, Helvetica, sans)seri3PL$ele3onI/3ontLI/thL
IthLI3ont 3aceXPArial, Helvetica, sans)seri3PLMobilI/3ontLI/thL
IthLI3ont 3aceXPArial, Helvetica, sans)seri3PLBa>I/3ontLI/thL
IthLI3ont 3aceXPArial, Helvetica, sans)seri3PL@)9ailI/3ontLI/thL
IthLI3ont 3aceXPArial, Helvetica, sans)seri3PL?ebsiteI/3ontLI/thL
I/trL
WiX+K
while %Wi I Wnu9- U
Wnu9eX9sYlTresult%Wrezultat,Wi,Pnu9eP-K
Wprenu9eX9sYlTresult%Wresult,Wi,Pprenu9eP-K
'5
PHP/MySQL
Wtele3onX9sYlTresult%Wresult,Wi,Ptele3onP-K
W9obilX9sYlTresult%Wresult,Wi,P9obilP-K
W3a>X9sYlTresult%Wresult,Wi,P3a>P-K
We9ailX9sYlTresult%Wresult,Wi,Pe9ailP-K
WwebX9sYlTresult%Wresult,Wi,PwebP-K
JL
ItrL
ItdLI3ont 3aceXPArial, Helvetica, sans)seri3PLIJ echo PWnu9e Wprenu9ePK J
LI/3ontLI/tdL
ItdLI3ont 3aceXPArial, Helvetica, sans)seri3PLIJ echo PWtele3onPK J
LI/3ontLI/tdL
ItdLI3ont 3aceXPArial, Helvetica, sans)seri3PLIJ echo PW9obilPK J
LI/3ontLI/tdL
ItdLI3ont 3aceXPArial, Helvetica, sans)seri3PLIJ echo PW3a>PK J
LI/3ontLI/tdL
ItdLI3ont 3aceXPArial, Helvetica, sans)seri3PLIa hre3XP9ailto.IJ echo
PWe9ailPK JLPL@)9ailI/aLI/3ontLI/tdL
ItdLI3ont 3aceXPArial, Helvetica, sans)seri3PLIa hre3XPIJ echo PWwebPK J
LPL?ebsiteI/aLI/3ontLI/tdL
I/trL
IJ
^^WiK
V
echo PI/tableLPK
Aceast secven: va a3ia antetul tabelului, apoi va aduga o l inie
supli9entar pentru 3iecare ;nregistrare din baza de date, 3or9atAnd
datele la scoatere=
Dac sunte:i de<a 3a9iliariza:i cu PHP i H$M#, atunci lucrurile sunt
probabil destul de clare ) de uor de ;n:eles= F s e>plic9 doar una din
liniile din tabel, spre e>e9plu.
Ia hre3XP9ailto.IJ echo PWe9ailPK JLPL@)9ailI/aL
care construiete o legtur e9ail la adresa trans9is de variabila
We9ail = Asta arat una dintre calit:ile i9portante i utile ale 3olosirii
PHP pentru includerea datelor M!"# = Adic prin ast3el de scoateri
pute9 3ace paginile ?eb dina9ice=
'7
PHP/MySQL
Se%ectarea unor date
#a 3el cu a3iarea ;ntregii baze de date, PHP poate 3i 3olosit pentru a
selecta date individuale, doar anu9ite ;nregistrri, sau ;nregistrrile care
veri3ic anu9ite criterii= Pentru asta trebuie s 3olosi9 o varia:iune a
cererii !@#@C$ = Pentru a3iarea ;ntregii tabele a9 3olosit cererea.
!@#@C$ ] BDFM contacts
Dac vre9 ;ns s select9 doar pe acele persoane care au prenu9ele
EMihaiE vo9 3olosi o cerere de 3or9a.
!@#@C$ ] BDFM contacts ?H@D@ prenu9eXE9ihaiE
Ca i la alte cereri ) co9enzi !"#, ave9 de 3apt propozi:ii 3oarte
apropiate de 3or9ularea curent din li9ba englez= 6ntr)un 9od
ase9ntor vo9 putea selecta ;nregistrrile pe baza oricrui cA9p din
baza de date= Dar se poate selecta o ;nregistrare 3olosind 9ai 9ulte
cA9puri, adugAnd ;n 3or9ularea cererii clauza.
3ieldXEvalueE
Br a intra ;n prea 9ulte detalii, vo9 9ai spune c pute9 3olosi
variabilele pentru a trans9ite criteriul dorit pentru selec:ie= !pre
e>e9plu, dac dintr)un 3or9ular de cutare pri9i9 a variabil nu9it
Wnu9eTcautat pute9 i9agina ur9toarea secven:.
WYuerXP!@#@C$ ] BDFM contacts ?H@D@ nu9eXEWnu9eTcautatEPK
WresultX9sYlTYuer%WYuer-K
De:ine:i c la s3Aritul pri9ei linii ave9 un 6 ur9at de 7 , ;nainte de 8 =
n lec ia urm toare (Partea 6-a) vom vedea cteva moduri de a scoate date din baza de date, precum N O
i cum putem s control m erorile prin num rarea liniilor. \ O O O
II #a cuprins
'8
PHP/MySQL
Partea 9-a: :nre-istr!ri &i erori
Introducere
6n ulti9ele dou lec:ii a9 vzut cu9 e>trage9 date din baza de
date i cu9 le a3i9 pe ecran= Acu9 vo9 a<unge la aspectele 3inale ale
a3irii datelor, prin selectarea ele9entelor dorite i controlul erorilor
%stoparea 9esa<elor de eroare- atunci cAnd scoate9 date=
Interceptarea /rori%or
Prin scoaterea tuturor in3or9a:iilor dintr)o baz de date, este pu:in
probabil s a<unge9 la situa:ia cAnd nu 9ai sunt date= Dar dac a9
per9is a<ustri i, tergeri i actualizri ale ;nregistrrilor, atunci se prea
poate s a<unge9 la o eroare= Din 3ericire, cu PHP i M!"#, ave9 un
9od si9plu de a evita o ast3el de situa:ie 3olosind.
Wnu9X9sYlTnu9rows%Wrezultat-K
unde Wrezultat con:ine rezultatul unei cereri ) interogri a bazei de date
%precu9 selectarea tuturor ;nregistrrilor-= Aa cu9 a9 discutat 9ai sus,
aceasta va atribui variabilei Wnu9 nu9rul de linii din rezultat %care s)a
utilizat ;ntr)un ciclu, ;n lec:ia a 2)a-= Pute9 insera ;n ciclu o co9and de
captare/tratare a erorilor 3olosind o instruc:iune /B .
i3 %Wnu9XX+- U
echo P0aza de date nu con:ine nici o ;nregistrarePK
V else U
Futput #oop
V
Pute9 dezvolta ra9ura asta 3cAnd)o 9ai prietenoas= !pre e>e9plu,
o3erind o legtur la pagina Add Data, de introducere de in3or9a:ii ;n
baza de date, atunci cAnd ea este vid=
;rdonarea date%or
Qu nu9ai c pute9 scoate datele ;n 3unc:ie de con:inutul unui
cA9p, dar pute9 ordona aceste date pe baza unei reguli aplicat
con:inutului unei coloane %spre e>e9plu aran<And utilizatorii ;n ordine
al3abetic-= /n 9od nor9al, a3iarea ;n ur9a unei interogri se 3ace ;n
ordinea stabilit de identi3icatorul /D, pornind de la ' ;n sus= Pute9 ;ns
alege 9odul de ordonare %sortarea- dup oricare coloan din tabel=
!pre e>e9plu, o ordonare util ar putea 3i dup nu9ele de botez= Asta
;nse9nAnd ;n ordine ascendent %cresctoare, de la A la _ i de la ' la
'(
PHP/MySQL
'+===-= Pentru a ob:ine un ast3el de rezultat 3olosi9 ur9toarea cerere.
!@#@C$ ] BDFM contacts FDD@D 0R prenu9e A!C
Pute9 3olosi, desigur i ordonarea descendent, speci3icAnd D@!C ;n
locul lui A!C =
4%te #ariante cu mys<%=numro>s &i Sortare
Maloarea care i se atribuie %ca 9ai sus- variabilei Wnu9 este 3oarte
i9portant, nu nu9ai pentru cicluri i captarea erorilor= Cn e>e9plu
poate 3i scoaterea doar a ulti9elor 4 ;nregistrri adugate bazei de date=
Mai ;ntAi, ave9 ordonarea natural, stabilit de /D, %ulti9a ;nregistrare
avAnd valoarea 9a>i9 a /D-, dar vo9 alege ordinea descendent=
Ast3el vo9 avea ;nregistrrile ;ncepAnd cu cea 9ai recent i ter9inAnd
cu cea 9ai veche= Mai trebuie doar s nu9r9, a3iAnd doar pri9ele 4=
Desigur, ;nainte de a ;ncepe ciclul de cinci, trebuie s ne asigur9 c
Wnu9 este 9ai 9are decAt 4 = Ave9 deci o secven: de 3or9a.
i3 %Wnu9I4- U
WtoXWnu9K
VelseU
WtoX4K
V
WiX+K
while %Wi I Wto- U
!@CM@Q$A D@ CFM@Q_/ 9sYl P@Q$DC !CFA$@D@
Cu alte cuvinte, dac ave9 9ai 9ult de cinci linii ;n tabel atunci ciclul se
va 3ace de la + la 4= /n caz contrar, dac sunt 9ai pu:in de 4 linii, ciclul va
parcurge e>act nu9rul respectiv de linii=
C+mpu% ID
Atunci cAnd, ;n pri9ele lec:ii a9 creat baza de date %cartea de
adrese-, a9 inclus un cA9p nu9eric nu9it id= Pe care l)a9 stabilit ca
auto#increment i i)a9 dat rolul de cA9p pri9ar= A9 discutat cu9 acesta
are rolul de identi3icator unic pentru 3iecare ;nregistrare din baza de date=
Acu9 3ace9 un pas ;nainte, 3olosind acest cA9p pentru a selecta
anu9ite ;nregistrri din baza de date=
*+
PHP/MySQL
Se%ec)ia unei sin-ure nre-istr!ri
/at cu9 pute9 selecta ;nregistrri din baza de date 3olosind con:inutul
unui cA9p particular.
!@#@C$ ] BDFM contacts ?H@D@ 3ieldXEvalueE
Atunci, 3olosind unicitatea cA9pului /D pute9 selecta orice ;nregistrare
din baza de date, 3olosind.
!@#@C$ ] BDFM contacts ?H@D@ idXEWidE
unde Wid este o variabil con:inAnd nu9rul unei ;nregistrri= !pre
e>e9plu, dac dori9 s ave9 o pagin ?eb generat dina9ic dintr)o
baz de date cu un singur script PHP, pute9 scrie script)ul ca s includ
pagini ?eb distincte ca ;nregistrri ale bazei de date= Atunci, 3olosind
cA9pul id, pute9 selecta 3iecare pagin individual plasAnd)o la soatere=
Pute9 chiar 3olosi chiar CD#)ul paginii pentru a speci3ica ;nregistrarea
dorit
http.//www=centrulTpropriu=ro/stiri/ite9s=phpJite9X4275
/ar script)ul PHP s caute ;nregistrarea care are nu9rul de ordine %id)ul-
care corespunde valorii variabilei Wite9, care ;n acest caz este 4275
Le-!turi %a o sin-ur! nre-istrare
Bolosind aceast 9etod de alegere a ;nregistrrii 3olosind CD#)ul,
;nregistrarea poate 3i e>tins prin generarea dina9ic a CD#)ului= Pare
ca9 co9plicat= Mo9 vedea cu9 realiz9 o pagin de aducere la zi a
bazei de date cu adresele= Cu ideea ca utilizatorul s)i poat 9odi3ica
propriile detalii din ;nregistrare=
Pentru asta, vo9 include o nou coloan cuprinzAnd o legtur Cpdate =
Aceast legtur conducAnd la o pagin care s per9it utilizatorului s
actualizeze ;nregistrarea=
Pentru a selecta ;nregistrarea din acea pagin vo9 pune. JidXWid
CptAnd identi3icatorul id al ;nregistrrii, secven:a aceasta va crea o
legtur la 3iecare din ;nregistrri=
n lec ia urm toare (Partea 7-a) vom vedea cum creem pagina pentru actualizarea informa iilor din N O N
baza de date.
II #a cuprins
*'
PHP/MySQL
Partea ?-a: 4ctua%iare &i &ter-ere
Introducere
PAn acu9 a9 ;nv:at cu9 s pune9 in3or9a:iile ;n baza de date
M!"#, cu9 s vede9 aceste in3or9a:ii din baza de date, selectAnd care
din ele vre9 s le vede9= 6n aceast lec:ie vo9 vedea cu9 3ace9 cele
dou ac:iuni 3inale, actualizarea bazei de date i tergerea unor
;nregistrri din ea=
Script-u% de actua%iare
A9 vzut ;n lec:ia anterioar cu9 cree9 o legtur pentru 3iecare
;nregistrare pentru a ne pozi:iona ;n scriptul de actualizare= Prin 3olosirea
variabilei Wid , legturile respective pot trans9ite valoarea corect a
identi3icatorului /D ctre script, ast3el ca acesta s poat actualiza baza
de date= Mo9 realiza deci un script de actualizare, care va avea dou
pr:i.
Pa-ina de a$i&are a actua%i!rii
Pri9a parte a script)ului de actualizare 3olosete procedeul de selec:ie a
unei singure ;nregistrri, aa cu9 l)a9 descris ;n lec:ia precedent,
adugAnd doar cAteva ele9ente H$M# pentru a)l 3ace 9ai util= Mai ;ntAi,
ne conect9 la baza de date i select9 ;nregistrarea potrivit=
WidXWT,@$`EidEaK
Wuserna9eXPnu9eTutilizatorPK
WpasswordXPparolaPK
WdatabaseXPbazaTdeTdatePK
9sYlTconnect%localhost,Wuserna9e,Wpassword-K
WYuerXP !@#@C$ ] BDFM contacts ?H@D@ idXEWidEPK
WresultX9sYlTYuer%WYuer-K
Wnu9X9sYlTnu9rows%Wrezultat-K
9sYlTclose%-K
WiX+K
while %Wi I Wnu9- U
Wnu9eX9sYlTresult%Wrezultat,Wi,Pnu9eP-K
Wprenu9eX9sYlTresult%Wrezultat,Wi,Pprenu9eP-K
Wtele3onX9sYlTresult%Wrezultat,Wi,Ptele3onP-K
W9obilX9sYlTresult%Wrezultat,Wi,P9obilP-K
W3a>X9sYlTresult%Wrezultat,Wi,P3a>P-K
We9ailX9sYlTresult%Wrezultat,Wi,Pe9ailP-K
**
PHP/MySQL
WwebX9sYlTresult%Wrezultat,Wi,PwebP-K
_ona de cod supli9entar
^^WiK
V
Cnde E_ona de cod supli9entarE 9archeaz por:iunea din script unde vor
apare co9enzile de actualizare= Adic 3or9atarea H$M# pentru scoatere.
I3or9 actionXPupdated=phpP 9ethodXPpostPL
Iinput tpeXPhiddenP na9eXPudTidP valueXPIJ echo PWidPK JLPL
Qu9ele de Ba9ilie. Iinput tpeXPte>tP valueXPudT3irstP valueXPIJ echo
PWnu9ePJLPLIbrL
Qu9ele de 0otez. Iinput tpeXPte>tP valueXPudTlastP valueXPIJ echo
PWprenu9ePJLPLIbrL
Qu9rul de $ele3on. Iinput tpeXPte>tP valueXPudTphoneP valueXPIJ echo
PWtele3onPJLPLIbrL
Qu9rul de Mobil. Iinput tpeXPte>tP valueXPudT9obileP valueXPIJ echo
PW9obilPJLPLIbrL
Qu9rul de Ba>. Iinput tpeXPte>tP valueXPudT3a>P valueXPIJ echo PW3a>PJ
LPLIbrL
Adresa @)9ail. Iinput tpeXPte>tP valueXPudTe9ailP valueXPIJ echo
PWe9ailPJLPLIbrL
Adresa ?eb. Iinput tpeXPte>tP valueXPudTwebP valueXPIJ echo PWwebPJ
LPLIbrL
Iinput tpeXP!ub9itP valueXPCpdatePL
I/3or9L
Aa cu9 se poate vedea, aceast secven: construiete %scoate- un
3or9ular standard, dar ;n locul zonelor goale, aa cu9 apreau ;n
3or9ularul pentru introducerea datelor, de data asta ave9 con:inutul
cA9pului respectiv din ;nregistrarea ;n cauz %care)i de actualizat-= Asta ;l
3ace 9ai adaptat scopului, 9ai co9od de 3olosit=
4ctua%iarea baei de date
$ot ce 9ai ave9 de 3cut este actualizarea e3ectiv a bazei de date= Asta
este o opera:ie si9pl care i9plic o nou cerere pentru baza de date.
WYuer X PCPDA$@ contacts !@$ nu9e X EWudT3irstE,prenu9e X
EWudTlastE,tele3on X EWudTphoneE,9obil X EWudT9obileE,3a> X EWudT3a>E,e9ail X
EWudTe9ailE,web X EWudTwebE ?H@D@ id X EWudTidEPK
Aceast cerere spune siste9ului de gestiune de baze de date s
actualizeze tabela contacts ;n acele linii ;n care /D coincide cu valoarea
din WudTid %care, aa cu9 se poate vedea din 3or9ularul anterior, a
pri9it valoarea id a ;nregistrrii pe care o actualiz9-, 9odi3icAnd
ur9toarele cA9puri cu valorile speci3icate %care au 3ost introduse cu
*1
PHP/MySQL
a<utorul 3or9ularului-=
Aceast cerere poate 3i ;nglobat ;ntr)un script si9plu.
WudTidXWTPF!$`EudTidEaK
WudT3irstXWTPF!$`EudT3irstEaK
WudTlastXWTPF!$`EudTlastEaK
WudTphoneXWTPF!$`EudTphoneEaK
WudT9obileXWTPF!$`EudT9obileEaK
WudT3a>XWTPF!$`EudT3a>EaK
WudTe9ailXWTPF!$`EudTe9ailEaK
WudTwebXWTPF!$`EudTwebEaK
Wuserna9eXPnu9eTutilizatorPK
WpasswordXPparolaPK
WdatabaseXPbazaTdeTdatePK
9sYlTconnect%localhost,Wuserna9e,Wpassword-K
WYuerXPCPDA$@ contacts ?H@D@ idXEWudTidE !@$ 3irstXEWudT3irstE
lastXEWudTlastE phoneXEWudTphoneE 9obileXEWudT9obileE 3a>XEWudT3a>E
e9ailXEWudTe9ailE webXEWudTwebEPK
9sYlTYuer%WYuer-K
echo PActualizarea s)a 3cutPK
9sYlTclose%-K
Asta va actualiza baza de date trans9i:And i o con3ir9are utilizatorului=
@ter-erea nre-istr!ri%or
Clti9a parte a acestei lec:ii privete 9odul cu9 terge9 o ;nregistrare
din baza de date= Ca i cu pagina de actualizare, vo9 construi o pagin
pentru a terge una sau 9ai 9ulte linii din baza de date= $rebuie s)i
trans9ite9 pozi:ia %/D)ul- ;nregistrrii, printr)un CD#, spre e>e9plu.
delete=phpJidX(
!criptul care va 3ace asta, nu9it delete.php, este aproape identic cu cel
de actualizare a bazei de date, cu e>cep:ia co9enzii M!"# %9odului ;n
care este construit cererea-= /n locul co9enzii !"# CPDA$@ , vo9 3olosi.
D@#@$@ BDFM contacts ?H@D@ idXEWidE
Cic%uri%e
#a acest punct este 9o9entul s 9en:ion9 i un alt 9od de
3olosire a ciclurilor cu o baz de date= Pute9 3olosi un ciclu pentru a
e>ecuta un ir de cereri= !pre e>e9plu, dac trebuie s schi9b9 )
e>trage9 toate ;nregistrrile dintr)o baz de date ;n care apare ca
prenu9e Gerban pentru a realiza un ?ebsite www=serban=ro.
*2
PHP/MySQL
Partea !tandard de Conectare la 0aza de Date
WYuerXP !@#@C$ ] BDFM contacts ?H@D@ prenu9eXE!erbanEPK
WrezultatX9sYlTYuer%WYuer-K
Wnu9X9sYlTnu9rows%Wrezultat-K
WiX+K
while %Wi I Wnu9- U
WidX9sYlTresult%Wrezultat,Wi,PidP-K
WYuer'XPCPDA$@ contacts !@$ webXEhttp.//www=serban=roE ?H@D@ idXEWidEPK
9sYlTYuer%WYuer-K
^^WiK
V
9sYlTclose%-K
n lec ia urm toare (Partea 8-a), ultima din acest curs, vom vedea cum s punem gr mad toate N O O O O
componentele script-ului creat i nc cteva alte am nunte privind folosirea MySQL. \ O O
II #a cuprins
*4
PHP/MySQL
Partea A-a: :ncBeierea Script-u%ui
Introducere
Pe parcursul acestui curs a9 vzut cu9 s 3olosi9 PHP)ul pentru a
interac:iona cu un siste9 de baze de date M!"# %sau !"#- i cu9 s
3olosi9 co9enzile uzuale %cele 9ai necesare-= A9 e>e9pli3icat, cu 9odul
de realizare a unei baze de date de tip carte de adrese %ca siste9 de
9anage9ent a contactelor J-= /n aceast lec:ie 3inal, vo9 vedea cAteva
PtrucuriP M!"# i vo9 scrie versiunea de3initiv %3inal- a script)ului
construit pe parcursul acestui curs=
Pentru economia de timp
Atunci cAnd construi9 un script co9ple> 3olosind bazele de date,
apare des secven:a de conectare la baza de date= De aceea, pentru a
si9pli3ica lucrurile, se poate 3ie s cree9 un 3iier cu nu9ele de utilizator
i parola sau chiar un 3iier de conectare= !pre e>e9plu, un 3iier
Puserna9e/passwordP poate 3i construit cu nu9ele. dbin3o=inc=php
cuprinzAnd ;n el.
IJ
Wuserna9eXPnu9eleTdeTutilizatorTalTbazeiTdeTdatePK
WpasswordXPparolaPK
WdatabaseXPnu9eTbazaTdeTdatePK
JL
6n care preciz9 datele concrete potrivite )
%nu9eleTdeTutilizatorTalTbazeiTdeTdate, parola, nu9eTbazaTdeTdate-=
Atunci ;n 3iierele php vo9 3olosi, chiar la ;nceput, ur9toarea secven:,
care va include scriptul de 9ai sus.
include%Pdbin3o=inc=phpP-K
sau, atunci cAnd acesta se a3l ;n alt director.
include%P/`traseul co9pleta/dbin3o=inc=phpP-K
Atunci, vo9 putea 3olosi ;n continuare variabilele Wuserna9e, Wpassword
i Wdatabase ;n script)ul nostru, 3r a avea nevoie s le de3ini9 de
3iecare dat= De ase9eni, dac vo9 9odi3ica cAndva aceste in3or9a:ii,
spre e>e9plu trecAnd pe alt server web, tot ce va 3i de schi9bat va 3i ;n
acest unic 3iier=
Aceeai sche9 o pute9 3olosi pentru conectarea la baza de date,
plasAnd i co9anda de conectare ;n 3iier= Atunci va trebui, ;ns, s ne
*5
PHP/MySQL
asigur9 de ;nchiderea cone>iunii, pentru a nu avea proble9e cu
serverul M!"#=
C!utarea
!e poate realiza i o cutare li9itat ;n baza de date 3olosind
3unc:ia special din M!"#= Adic prin 3olosirea 3unc:iei #/[@ , ;n 3or9a.
!@#@C$ ] BDFM nu9eTtabela ?H@D@ nu9eTca9p #/[@ EbWstringbE
Asta ;nse9n c #/[@ va spune bazei de date s 3oloseasc posibilit:ile
proprii de cutare= !e9nele b au se9ni3ica:ia c orice alte date pot s
apar ;n pozi:ia lor i variabila Wstring va con:ine cererea de cutare=
Adic pute9 avea acolo un cuvAnt, sau un nu9r, spre e>e9plu.
#/[@ EbpianbE
ceea ce va conduce la scoaterea liniilor care includ cuvAntul pian ;n
cA9pul speci3icat=
!i9ilar, pute9 renun:a la unul din se9nele b ast3el ca s preciz9
pozi:ia irului de caractere. #/[@ EpianbE
Ast3el vo9 putea selecta doar liniile ;n care cA9pul speci3icat ;ncepe cu
pre3i>ul pian, caz ;n care, spre e>e9plu, e>presia ur9toare va 3i evitat.
Cn pian se a3l pe scen=
1ina%iarea Script-u%ui
Pe parcursul acestui 9ini)curs a9 prezentat di3erite por:iuni de cod
ale script)ului pentru construc:ia bazei de date contacts= Pute:i descrca
script)ul co9plet ca un 3iier co9pri9at zip, pentru a e>a9ina ;ntreaga
aplica:ie %vezi legturile-=
Conc%uii
Acu9, ;ncheind acest curs, ar trebui s ti:i s 3olosi:i PHP i M!"#
;9preun pentru a crea o baz de date ) accesibil pe ?eb, precu9 i
pentru a scrie progra9e de acces la baza de date= Bolosirea bazelor de
date pe ?eb deschide noi i 9ari posibilit:i de lucru ;n /nternet i poate
3ace 9ult 9ai puternic un centru ?eb, econo9isind ti9pul de
actualizare, per9i:And utilizatorilor s interac:ioneze %s rspund- i
9ulte altele=
II #a ;nceput
*7

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