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=

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 Ba e%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 lecNia urmOtoare (Partea 2-a) vom vedea cum proiectOm - cum realizOm o bazO de date n MySQL.

II #a cuprins
2

PHP/MySQL

Partea (-a: Construirea unei Ba e 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 Ba ei 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 PHPM Ad9in %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 PHPM Ad9in 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=

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 $/QR/Q$ !MA##/Q$ M@D/CM/Q$ /Q$ MADCHAD $@S$ Descriere Qu9r ;ntreg 9ic Qu9r ;ntreg 9ic Qu9r ;ntreg Qu9r ;ntreg $e>t %9a>i9u9 *45 caractere$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 t pe%length- e>tra in3o,

Clti9ul cA9p introdus nu poate include nici o virgul= F s d9 ;ndat un e>e9plu co9plet privind aceste de3iniri=

Ba a 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.

PHP/MySQL ,ume id Qu9e prenu9e tele3on 9obil 3a> e9ail web *ipu% /Q$ MADCHAD MADCHAD MADCHAD MADCHAD MADCHAD MADCHAD MADCHAD Lun-imea 5 '4 '4 *+ *+ *+ 1+ 1+ Descrierea Un identificator unic pentru fiecare nregistrare Numele de familie al persoanei Numele de botez al persoanei Numrul de telefon Numrul de telefon mobil Numrul de fa Adresa e!mail 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 PHPM Ad9in-= 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 PHPM Ad9in 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 9 sYlTconnect%localhost,Wuser,Wpassword-K Z9 sYlTselectTdb%Wdatabase- or die% P0aza de date nu poate 3i selectataP-K WYuer XPCD@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

9 sYlTYuer %WYuer -K 9 sYlTclose%-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 lecNia urmOtoare (Partea 3-a) vom vedea cum ne conectOm la o bazO de date folosind PHP \i vom nvONa cum sO adOugOm informaNii n noua noastrO bazO de date.

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.
9 sYlTconnect%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.
9 sYlTclose%-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 ba ei 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.
Z9 sYlTselectTdb%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 comen i%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.
9 sYlTYuer %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 lecNia urmOtoare (Partea 4-a) vom vedea cum folosim formularele \i variabilele pentru a insera informaNii \i cum afi\Om informaNiile din baza de date.

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 t peXPte>tP na9eXPnu9ePLIbrL Prenu9e. Iinput t peXPte>tP na9eXPprenu9ePLIbrL $ele3on. Iinput t peXPte>tP na9eXPtele3onPLIbrL Mobil. Iinput t peXPte>tP na9eXP9obilPLIbrL Ba>. Iinput t peXPte>tP na9eXP3a>PLIbrL @)9ail. Iinput t peXPte>tP na9eXPe9ailPLIbrL ?eb. Iinput t peXPte>tP na9eXPwebPLIbrL Iinput t peXP!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 9 sYlTconnect%localhost,Wuserna9e,Wpassword-K Z9 sYlTselectTdb%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

9 sYlTYuer %WYuer -K 9 sYlTclose%-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.
WYuer XP!@#@C$ ] BDFM contactsPK WrezultatX9 sYlTYuer %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

Wnu9X9 sYlTnu9rows%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 incre9entarevalorile 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:.
WvariableX9 sYlTresult%Wrezultat,Wi,Pnu9eleTca9puluiP-K

Ast3el, pentru a e>trage 3iecare co9ponent din baza noastr de date, vo9 3olosi ur9toarele instruc:iuni.
Wnu9eX9 sYlTresult%Wresult,Wi,Pnu9eP-K Wprenu9eX9 sYlTresult%Wresult,Wi,Pprenu9eP-K Wtele3onX9 sYlTresult%Wresult,Wi,Ptele3onP-K W9obilX9 sYlTresult%Wresult,Wi,P9obilP-K W3a>X9 sYlTresult%Wresult,Wi,P3a>P-K We9ailX9 sYlTresult%Wresult,Wi,Pe9ailP-K WwebX9 sYlTresult%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 9 sYlTconnect%localhost,Wuserna9e,Wpassword-K Z9 sYlTselectTdb%Wdatabase- or die% P0aza de date nu poate 3i selectataP-K WYuer XP!@#@C$ ] BDFM contactsPK WrezultatX9 sYlTYuer %WYuer -K Wnu9X9 sYlTnu9rows%Wrezultat-K 9 sYlTclose%-K echo PIbLIcenterLDatabase FutputI/centerLI/bLIbrLIbrLPK WiX+K while %Wi I Wnu9- U Wnu9eX9 sYlTresult%Wrezultat,Wi,Pnu9eP-K Wprenu9eX9 sYlTresult%Wresult,Wi,Pprenu9eP-K Wtele3onX9 sYlTresult%Wresult,Wi,Ptele3onP-K W9obilX9 sYlTresult%Wresult,Wi,P9obilP-K W3a>X9 sYlTresult%Wresult,Wi,P3a>P-K We9ailX9 sYlTresult%Wresult,Wi,Pe9ailP-K WwebX9 sYlTresult%Wresult,Wi,PwebP-K echo PIbLWnu9e Wprenu9eI/bLIbrL$ele3on. Wtele3onIbrLMobil. W9obilIbrLBa>. W3a>IbrL@)9ail. We9ailIbrL?eb. WwebIbrLIhrLIbrLPK ^^WiK V JL
n lecNia urmOtoare (Partea 5-a) vom vedea cum realizOm scoaterea datelor \i cum selectOm diferite date din baza de date.

II #a cuprins

'4

PHP/MySQL

Partea 5-a: 4%te re u%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 %scoate93iecare 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 Wnu9eX9 sYlTresult%Wrezultat,Wi,Pnu9eP-K Wprenu9eX9 sYlTresult%Wresult,Wi,Pprenu9eP-K '5

PHP/MySQL

Wtele3onX9 sYlTresult%Wresult,Wi,Ptele3onP-K W9obilX9 sYlTresult%Wresult,Wi,P9obilP-K W3a>X9 sYlTresult%Wresult,Wi,P3a>P-K We9ailX9 sYlTresult%Wresult,Wi,Pe9ailP-K WwebX9 sYlTresult%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:.
WYuer XP!@#@C$ ] BDFM contacts ?H@D@ nu9eXEWnu9eTcautatEPK WresultX9 sYlTYuer %WYuer -K

De:ine:i c la s3Aritul pri9ei linii ave9 un 6 ur9at de 7 , ;nainte de 8 =

n lecNia urmOtoare (Partea 6-a) vom vedea cteva moduri de a scoate date din baza de date, precum \i cum putem sO controlOm erorile prin numOrarea liniilor.

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.
Wnu9X9 sYlTnu9rows%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_/ 9 sYl 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)ulcare 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 lecNia urmOtoare (Partea 7-a) vom vedea cum creem pagina pentru actualizarea informaNiilor din baza de date.

II #a cuprins

*'

PHP/MySQL

Partea ?-a: 4ctua%i are &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%i are


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 9 sYlTconnect%localhost,Wuserna9e,Wpassword-K WYuer XP !@#@C$ ] BDFM contacts ?H@D@ idXEWidEPK WresultX9 sYlTYuer %WYuer -K Wnu9X9 sYlTnu9rows%Wrezultat-K 9 sYlTclose%-K WiX+K while %Wi I Wnu9- U Wnu9eX9 sYlTresult%Wrezultat,Wi,Pnu9eP-K Wprenu9eX9 sYlTresult%Wrezultat,Wi,Pprenu9eP-K Wtele3onX9 sYlTresult%Wrezultat,Wi,Ptele3onP-K W9obilX9 sYlTresult%Wrezultat,Wi,P9obilP-K W3a>X9 sYlTresult%Wrezultat,Wi,P3a>P-K We9ailX9 sYlTresult%Wrezultat,Wi,Pe9ailP-K **

PHP/MySQL

WwebX9 sYlTresult%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 t peXPhiddenP na9eXPudTidP valueXPIJ echo PWidPK JLPL Qu9ele de Ba9ilie. Iinput t peXPte>tP valueXPudT3irstP valueXPIJ echo PWnu9ePJLPLIbrL Qu9ele de 0otez. Iinput t peXPte>tP valueXPudTlastP valueXPIJ echo PWprenu9ePJLPLIbrL Qu9rul de $ele3on. Iinput t peXPte>tP valueXPudTphoneP valueXPIJ echo PWtele3onPJLPLIbrL Qu9rul de Mobil. Iinput t peXPte>tP valueXPudT9obileP valueXPIJ echo PW9obilPJLPLIbrL Qu9rul de Ba>. Iinput t peXPte>tP valueXPudT3a>P valueXPIJ echo PW3a>PJ LPLIbrL Adresa @)9ail. Iinput t peXPte>tP valueXPudTe9ailP valueXPIJ echo PWe9ailPJLPLIbrL Adresa ?eb. Iinput t peXPte>tP valueXPudTwebP valueXPIJ echo PWwebPJ LPLIbrL Iinput t peXP!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%i area ba ei 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 9 sYlTconnect%localhost,Wuserna9e,Wpassword-K WYuer XPCPDA$@ contacts ?H@D@ idXEWudTidE !@$ 3irstXEWudT3irstE lastXEWudTlastE phoneXEWudTphoneE 9obileXEWudT9obileE 3a>XEWudT3a>E e9ailXEWudTe9ailE webXEWudTwebEPK 9 sYlTYuer %WYuer -K echo PActualizarea s)a 3cutPK 9 sYlTclose%-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 WYuer XP !@#@C$ ] BDFM contacts ?H@D@ prenu9eXE!erbanEPK WrezultatX9 sYlTYuer %WYuer -K Wnu9X9 sYlTnu9rows%Wrezultat-K WiX+K while %Wi I Wnu9- U WidX9 sYlTresult%Wrezultat,Wi,PidP-K WYuer 'XPCPDA$@ contacts !@$ webXEhttp.//www=serban=roE ?H@D@ idXEWidEPK 9 sYlTYuer %WYuer -K ^^WiK V 9 sYlTclose%-K

n lecNia urmOtoare (Partea 8-a), ultima din acest curs, vom vedea cum sO punem grOmadO toate componentele script-ului creat \i ncO cteva alte amOnunte privind folosirea MySQL.

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%i area 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%u ii
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