mini curs php

Upload: firememo8844

Post on 10-Apr-2018

278 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 Mini Curs Php

    1/24

    Curs PHP/MySQL

    Partea 1-a: Introducere

    Cuprinsul

    Partea 1-a: Introducere Partea 2-a: Construirea unei Baze de Date Partea 3-a: Introducerea datelor Partea 4-a: Afiarea datelor Partea 5-a: Alte rezultate Partea 6-a: nregistrri i erori Partea 7-a: Actualizare i tergere Partea 8-a: ncheierea Script-ului

    Introducere

    Pentru mult lume, principala raiune de a nva un limbaj precum PHP ar fi interaciunea pecare o ofer cu bazele de date. In acest curs cutm s explicm cum se folosete PHP iMySQL, pentru a memora informaii pe Web i cum includem toate astea pe site-ul Web. Pentrua parcurge acest curs sunt necesare cel puin elementele de baz privind folosirea PHP. Serecomand deci parcurgerea cursului de PHP, nainte de a continua.

    De ce mi trebuie o Baz de Date?

    Este, de fapt, surprinztor ct de util poate fi o baz de date, mai ales atunci cnd poate fifolosit ntr-un site Web. Sunt foarte multe lucruri care se pot face ntr-un astfel de caz, de la

    afiarea unor simple liste i pn la producerea integral a paginilor Web dintr-o baz de date.Cteva exemple cu PHP i MySQL, folosite mpreun, sunt:

    Schimbarea - rotaia Banner-elor. Pentru a realiza schimbarea pe ecran a imaginilor ladiferitele vizitri ale unei pagini i a asigura astfel un interes mai mare al vizitatorilor, sepoate folosi un script PHP care deschide o baz de date extrage aleator o imagine sauun set de imagini, pentru a-l include ntr-un set de pagini Web. Scriptul PHP va contorizadeasemeni numrul de cte ori a fost vzut banner-ul, putnd, cu modificri minore, surmreasc chiar i numrul de click-uri. Pentru a aduga, schimba sau edita bannerele,tot ce avem de fcut este s schimbm baza de date iar scriptul va ncrca banner-ulcorect n toate paginile site-ului Web.

    Forumurile Web. Sute de forumuri de dezbatere sunt acum realizate - ruleaz n PHP iMySQL. Acestea s-au dovedit mult mai eficiente dact alte sisteme, creind cte o pagin

    pentru fiecare mesaj i oferind o larg varietate de opiuni. Toate paginile forumului pot fiactualizate prin schimbarea unui script PHP.

    Bazele de Date. Un astfel de exemplu (edificator) l ofer site-urile care dau toateinformaiile dintr-o baz de date. Spre exemplu, Script Avenue este rulat de ctevascripturi, care furnizeaz toate informaiile dintr-o baz de date ampl. Toate categoriilede scripturi diferite pot fi accesate ntr-un singur script exact prin schimbarea URL-uluipentru a accesa diferite pri ale bazei de date.

    Site-urile Web. Cnd avem un site de mari dimensiuni - cu multe pagini, i dorim smodificm aspectul general sau s schimbm proiectul, chestiune care ar cere foarte

    http://jalobean.itim-cj.ro/Cursuri/phpmysql/2.htmlhttp://jalobean.itim-cj.ro/Cursuri/phpmysql/3.htmlhttp://jalobean.itim-cj.ro/Cursuri/phpmysql/4.htmlhttp://jalobean.itim-cj.ro/Cursuri/phpmysql/5.htmlhttp://jalobean.itim-cj.ro/Cursuri/phpmysql/6.htmlhttp://jalobean.itim-cj.ro/Cursuri/phpmysql/7.htmlhttp://jalobean.itim-cj.ro/Cursuri/phpmysql/8.htmlhttp://jalobean.itim-cj.ro/Cursuri/phpmysql/3.htmlhttp://jalobean.itim-cj.ro/Cursuri/phpmysql/4.htmlhttp://jalobean.itim-cj.ro/Cursuri/phpmysql/5.htmlhttp://jalobean.itim-cj.ro/Cursuri/phpmysql/6.htmlhttp://jalobean.itim-cj.ro/Cursuri/phpmysql/7.htmlhttp://jalobean.itim-cj.ro/Cursuri/phpmysql/8.htmlhttp://jalobean.itim-cj.ro/Cursuri/phpmysql/2.html
  • 8/8/2019 Mini Curs Php

    2/24

    mult timp pentru aducere la zi i ncrcare. Cu PHP i MySQL ntregul site Web se poatereduce la unul sau dou scripturi PHP care s acceseze o baz de date MySQL pentru aobine informaiile pentru paginile Web. Pentru a actualiza sau a modifica proiectulcentrului Web nu trebuie s schimbm dect o pagin.

    De ce e nevoie?

    Sunt necesare trei componente pentru a putea rula scripturi PHP care s acceseze baze de datecu MySQL.

    1. n primul rnd, este nevoie de un server Web. Acesta poate fi sau pe calculatorulpersonal sau pe o 'gazd' Web. Oricare pachet - oricare tip de server Web este acceptati va lucra cu PHP i MySQL, dar cel mai recomandat este Apache, care e public igratis.

    2. PHP trebuie s fie instalat pe server. Dac nu este deja instalat, putei s o facei sau sapelai la administratorul serverului Web, n acest sens. Pachetul de instalare poate fidescrcat - preluat de la http://PHP.net i este deasemeni public - gratuit. Dac nusuntei sigur dac este sau nu instalat, o s vedei mai jos cum v putei lmuri.

    3. n fine, avei nevoie de MySQL. Acesta este de fapt pachetul de programe pentrugestiunea bazelor de date. Putei folosi deasemeni multe alte sisteme de baze de date(SQL, Oracle etc.) dar aici discutm despre PHP/MySQL, deci avem nevoie de MySQL(cu toate c se folosesc comenzi care in de limbajul SQL i 'merg' la oricare dinsistemele de baze de date SQL). i pachetul MySQL este public - gratuit, putnd fipreluat din pagina oficial a firmei MySQL. Dar i n cazul MySQL trebuie s verificmmai nti dac nu cumva este deja instalat.

    Dac nu putei instala PHP i MySQL, sau dac gazda Web nu v-o permite, putei apela la altserver Web, la alt gazd. Spre exemplu, Freedom2Surf este un server Web public, care acordacces liber i suport PHP, avnd MySQL instalat. HostRocket este un alt server excelent careofer spaiu de pn la 300 MO, i include PHP, MySQL i multe altele, dar percepe o tax deabonament de 10 USD pe lun.

    Cum aflm dac PHP i MySQL sunt instalate

    Exist un test simplu, att pentru PHP ct i pentru MySQL:

    Lansai - deschidei un editor de texte i scriei urmtoarele:

    salvnd fiierul cu un nume precum phpinfo.php

    Apoi ncrcai acest fiier n spaiul web, pe server, apelndu-l, dup aceea, din navigator. DacPHP-ul este deja instalat vei cpta o pagin plin cu toate detaliile instalrii respective.Parcurgei atunci aceste informaii. Dac gsii o seciune despre MySQL atunci nseamn cMySQL este i el deja instalat.

    Gestiunea Bazelor de date

    http://www.mysql.com/http://www.mysql.com/
  • 8/8/2019 Mini Curs Php

    3/24

    Chiar dac tot ce ine de administrarea bazelor de date poate fi realizat prin scripturi PHP,instalarea pe server a pachetului PHPMyAdmin poate aduce un plus de confort. Este un excelentset de scripturi care asigur o interfa administrativ pentru bazele de date MySQL. Si mai estei public-gratuit.

    Cu el putei aduga, elimina, edita, salva i vizualiza bazele de date, fiind deosebit de util pentru

    depanare.

    Scopul acestui curs

    Urmrim familiarizarea cursantului cu cteva din elementele de baz ale folosirii PHP mpreuncu MySQL. Pentru asta vom urmri mereu un exemplu. Parcurgnd cursul de fa vei nva cums creai un program bazat pe Web pentru a contacta colaboratorii - o variant de caiet deadrese. Acest program v permite s memorai numele mpreun cu adresa corespunztoare,adresa e-mail i numrul de telefon. Vei putea s actualizai nregistrrile, s cutai n baza dedate. Existnd i opiunea de a trimite un mesaj email la toi cei din baza de date (reinei ns:acest sistem nu va fi folosit pentru expedierea unor mesaje nesolicitate).

    Dup realizarea acestui sistem vei fi, cu siguran, n msur s creai aproape orice tip de bazde date pe Web.

    Partea 2-a

    n lecia urmtoare vom vedea cum proiectm - cum realizm o baz de date n MySQL.

    Partea 2-a: Construirea unei Baze de Date

    Introducere

    Mai nainte de a porni construcia unor script-uri pentru baze de date, ar trebui s avem obaz de date n care s plasm informaii i din care s citim. In aceast lecie vom vedeacum creem o baz de date n MySQL i cum o pregtim pentru date. Ca un exemplu, vomcrea o baz de date de tip carte de adrese de contact.

    Construcia Bazei de Date

    Bazele de date MySQL au un sistem de iniializare standard (unsetup). Este vorba de obaz de date, compus din tabele, oarecum separate, coninnd diferite cmpuri, etc. chiardac sunt parte dintr-o baz de date. Fiecare tabel conine nregistrri care sunt fcutedin cmpuri.

    Conectarea la o Baz de Date

    Procesul de instalare a unei baze de date MySQL difer de la o platform la alta. Inesen este vorba peste tot de un nume al bazei de date, un nume de utilizator (cont) i oparol. Aceste informaii sunt cerute pentru conectarea la baza de date.

  • 8/8/2019 Mini Curs Php

    4/24

    Dac avei pachetul PHPMyAdmin (sau un program similar) instalat, atunci putei sintrai acolo i s v conectai introducnd contul (numele de utilizator) i parola. Dacnu avei aa ceva, atunci trebuie s facei ntreaga administrare a bazelor de date folosindscript-uri PHP (i o putei face).

    Crearea unei Tabele

    Mai nainte de orice altceva cu baza de date, trebuie s v creai o tabel. O tabel este oseciune a bazei de date pentru memorarea unor informaii structurate (legate). Intr-otabel vom defini diferite cmpuri care vor fi folosite n acea tabel. Din cauza acesteiconstrucii, aproape toate centrele cu baze de date trebuie s fie satisfcute folosind doaro baz de date.

    Crearea unei tabele n PHPMyAdmin este simpl, scriei numele, selectai numrul decmpuri i &Quot;apsai" butonul (click). Ajungei atunci la un ecransetup n caretrebuie s creai cmpurile pentru baza de date. Dac folosii un script PHP pentru a crea

    propria baz de date, iar completa creere i iniializarea vor fi fcute tr-o singurcomand.

    Cmpuri

    Exist o larg varietate de cmpuri i de atribute disponibile n MySQL i vom discutadoar cteva din ele:

    Tipul cmpului Descriere

    TINYINT Numr Intreg micSMALLINT Numr Intreg mic

    MEDIUMINT Numr IntregINT Numr IntregVARCHAR Text (maximum 256 caractere)TEXT Text

    Acestea sunt doar cteva dintre cmpurile disponibile. O cutare pe Internet ne poatefurniza lista cu toate tipurile de cmpuri permise.

    Crearea unei Tabele cu PHP

    S creem o tabel din PHP este ceva mai dificil dect cu MySQL. Avem de parcursurmtorii pai:CREATE TABLE nume_tabel {

    Fields

    }

  • 8/8/2019 Mini Curs Php

    5/24

    Cmpurile sunt definite dup cum urmeaz:

    fieldname type(length) extra info,

    Ultimul cmp introdus nu poate include nici o virgul.

    O s dm ndat un exemplu complet privind aceste definiri.

    Baza de date cu adrese de contact

    Baza de date de contact va conine toate informaiile de contact ale cunoscuilor introduin tabel. Iar informaiile vor putea fi editate i consulate n internet. Urmtoarele cmpurivor fi folosite n baza de date:

    Nume Tipul Lungimea Descrierea

    id INT 6 Un identificator unic pentru fiecare nregistrare

    Nume VARCHAR 15 Numele de familie al persoaneiprenume VARCHAR 15 Numele de botez al persoanei

    telefon VARCHAR 20 Numrul de telefon

    mobil VARCHAR 20 Numrul de telefon mobil

    fax VARCHAR 20 Numrul de fax

    email VARCHAR 30 Adresa e-mail

    web VARCHAR 30 Pagina Web personal

    Poate v mirai c am folosit un tip de cmp VARCHAR pentru coloana

    mumr_telefon/fax, chiar dac acestea sunt formate din cifre. Chiar dac am putea folositipul INT, este preferabil s folosim VARCHAR pentru c astfel vor fi permise spaii icratime, precum i poriuni de text, la fel ca numerele scrise ca text (exemplu 1800-COMPANY) i cum nu vom iniia apeluri telefonice de pe Web, totul e n ordine.

    Exist nc ceva de care trebuie s avem grije n aceast baz de date. Cmpul id va fi pusca PRIMARY, INDEX, UNIQUE i iniializat ca auto_increment(poziie ce apare nExtra n PHPMyAdmin). Raiunea pentru asta este c acesta va fi cmpul identificator(primar sau index) i deci trebuie s fie unic. Definirea sa ca auto incrementnseamn cla adugarea fiecrei nregistrri, ct vreme nu specificm acolo un id, acesta va primi cavaloare urmtorul numr.

    Dac folosim PHPMyAdmin sau un program de management, putem crea o tabel numitcontacte.

    Crearea Tabelei n PHP

    Pentru a crea aceast tabel vom folosi urmtoarea secven de comenzi PHP. O partedintre comenzile de mai jos n-au fost nc discutate, dar le vom explica n detaliu n lecia

  • 8/8/2019 Mini Curs Php

    6/24

    urmtoare.

    Introducei numele bazei de date, contul MySQL i parola MySQL n poziiilecorespunztoare din primele 3 linii de mai sus.

    Partea 3-a

    In lecia urmtoare vom vedea cum ne conectm la o baz de date folosind PHP i vomnva cum s adugm informaii n noua noastr baz de date.

    Partea 3-a: Introducerea datelor

    Introducere

    Pe parcursul precedentelor lecii am vzut ce vrem s nvm n acest curs i am vzutcum putem crea o baz de date pe care s-o folosim n acest curs. In aceast lecie vomvedea cum introducem anumite informaii n baza noastr de date astfel nct s devinct mai util.

    Conectarea la o baz de date

    Primul lucru care trebuie fcut, mai nainte de a putea face ceva, este conectare la baza dedate MySQL. Acesta este un pas foarte important, pentru c, dac nu suntem conectai,comenzile ctre baza de date vor eua.

    Practic, pentru a folosi o baz de date trebuie s precizm numele de utilizator(username), parola (password) i numele bazei de date :

    $username="nume_utilizator";$password="parola";$database="numele_bazei_de_date";

  • 8/8/2019 Mini Curs Php

    7/24

    Desigur, aici s-ar putea discuta dac nu-i riscant s pstrm parola ntr-un fiier. Nutrebuie s v alarmai, ns, deoarece sursa PHP este prelucrat de server nainte de a fitrimis navigatorului, astfel ncacirc;t este imposibil pentru orice utilizator s vadscriptul.

    Mai apoi, avem nevoie de o comand care s lanseze conexiunea la baza de date:

    mysql_connect(localhost,$username,$password);

    Aceast linie spune PHP-ului s se conecteze la serverul de baze de date MySQL la'localhost' (localhostse numete serverul pe care ruleaz PHP-ul. In afara cazului n caregazda Web indic altceva, vom folosi localhost) folosind numele de cont memorat n$username i parola din $password.

    Mai nainte de a discuta cum lucrm cu baza de date, vom vedea nc o comand:

    mysql_close();

    Aceasta este o comand foarte important care nchide conexiunea cu serverul de baze dedate. Scriptul va rula nc, dac nu includem aceast comand, iar prea multe conexiuniMySQL deschise pot cauza probleme serverului web. Este un obicei bun s includemcomanda de nchidere de mai sus dup ce am introdus toate comenzile ctre baza de date,pentru a menine platforma n bun stare.

    Selectarea bazei de date

    Dup ce ne-am conectat la severul de baze de date, trebie s selectm baza de date pecare vrem s-o folosim. Trebuie s fie o baz de date la care avem acces, cu respectivulnume de utilizator. Se folosete urmtoarea comand:

    @mysql_select_db($database) or die( "Baza de date nu poate fi selectata");

    Aceasta spune PHP-ului s selecteze baza de date specificat n variabila $database (pecare am definit-o mai nainte). Dac conexiunea nu se poate realiza procesul (execuiascript-ului) se oprete afind textul:

    Baza de date nu poate fi selectata

    Aceast parte suplimentar 'or die' este bun pentru ieire, chiar dac nu asigur dect unminim control al erorii.

    Execuia comenzilor

    Dup conectarea la server i selecia bazei de date dorite, putem ncepe execuiacomenzilor pe server.

  • 8/8/2019 Mini Curs Php

    8/24

    Exist dou moduri de a executa o comand. Prima revine pur i simplu la introducereacomenzii n PHP. Asta merge atunci cnd nu apar rezultate ca urmare a execuieicomenzii.

    Cea de a doua variant este s definim comanda ca o variabil. Asta va atribui variabilei

    rezultatele operaiei.In aceast lecie vom folosi prima cale, deoarece nu ateptm rspuns de la baze de date.Comanda va arta cam aa:

    mysql_query($query);

    Folosirea acestei forme a comenzii este util pentru c repetm pur i simplu aceiaicomand iari i iari fr a fi nevoie s memorm altele. Tot ce avem de fcut este sschimbm variabila.

    Introducerea datelor

    Acum ne vom ntoarce la baza de date cu adrese de contact, pe care am creat-o n leciaanterioar. Pentru a introduce primele informaii n baza de date:

    Nume: IonescuPrenume: GheorgheTelefon: 021 3456789Mobil: 0724 334455Fax: 0264 567891E-mail: [email protected]

    Web: http://www.cinestie.inext.ro

    Toate acestea vor fi introduse cu o singur comand:

    $query = "INSERT INTO contacts VALUES ('','Ionescu','Gheorghe','0213456789','0724 334455','0264567891','[email protected]','http://www.cinestie.inext.ro')";

    Pare puin cam confuz la prima vedere. S lmurim puin lucrurile.

    Ma nti, apare variabila $query creia i atribuim o comand (vezi paragraful precedent).

    Urmtoarea parte, adic:INSERT INTO contacts VALUES

    este destul de uor de neles. Ea spune PHP-ului s insereze n tabel numit contactsvalorile care urmeaz (scrise ntre paranteze).

  • 8/8/2019 Mini Curs Php

    9/24

    Acolo, ntre paranteze, avem toate cmpurile de adugat. Apar toate cmpurile n ordinei sunt inserate informaiile dintre ghilimele. Spre exemplu:

    Ionescu

    va fi inserat n al 2-lea cmp, care, n aceast tabel este cmpul 'nume' .Poate ai reinut c nu am inserat nimic n primul cmp din baza de date (id). Asta dincauz c acest cmp va fi un cmp index, elementul unic de identificare. Fiecarenregistrare din baza de date va avea un unic ID. Din aceast cauz, cnd ncrcm bazade date, vom pune ID pe 'Auto Increment'. Asta nseamn c, ne-atribuindu-i nici ovaloare, el va lua la fiecare nregistrare urmtoarea valoare din ir. Iar prima nregistrareva avea valoarea ID=1 .

    Partea 4-a

    In lecia urmtoare vom vedea cum folosim formularele i variabilele pentru a insera

    informaii i cum afim informaiile din baza de date.

    Partea 4-a:

    Introducere

    Pn acum, am creat o baz de date i am ncrcat n ea informaii. In aceast lecie vomvedea cum se realizeaz o pagin de intrare pentru aceast baz de date, i cum seafieaz coninutul acesteia.

    Introducerea datelor dintr-o pagin HTML

    Introducerea datelor din paginile HTML este aproape identic cu inserarea lor din script-uri PHP. Avantajul const, ns, n faptul c nu apare nevoia schimbrii script-ului pentrufiecare cmp de introdus. In plus, putem permite "vizitatorilor" s introduc direct datelelor.

    Iat mai jos cum arat o pagin HTML cu celule text pentru introducerea detaliilorcorespunztoare:

    Nume Familie:
    Prenume:
    Telefon:
    Mobil:
    Fax:
    E-mail:

  • 8/8/2019 Mini Curs Php

    10/24

    Web:

    Aceast pagin poate fi, desigur, formatat i pot apare diferite schimbri - variante. Este

    doar un formular de pornire, ilustrativ. Va trebui ns editat script-ul din leciaprecedent, pentru ca, n locul introducerii informaiilor direct din script n baza de date,s fie folosite variabilele:

  • 8/8/2019 Mini Curs Php

    11/24

    $query="SELECT * FROM contacts";$rezultat=mysql_query($query);

    In acest caz, ntregul coninut al bazei de date va fi atribuit variabilei cu numele $rezultat

    (care va fi deci o matrice, un tablou). Mai nainte de a putea scoate aceste date va trebuis le extragem ca variabile simple, separate. Pentru asta trebuie s tim cte nregistrriavem n tabel (deci i n variabila $rezultat ).

    Numrarea liniilor

    Avem o comand special n MySQL pentru calculul numrului de linii din tabel. Esteimportant pentru c n baza de date se fac uzual numeroase actualizri, completri,tergeri.

    $num=mysql_numrows($rezultat);

    Astfel, variabila $num va cpta ca valoare numrul de linii din $rezultat (adic tocmaidin baza de date). Acest numr va putea fi folosit n continuare pentru ciclul n care sevor analiza i desface n variable separate cmpurile fiecrei linii.

    Construirea ciclului

    Avem de scris un ciclu pentru a selecta din tabel (din rezultat) linie cu linie.... Definim unindice, o variabil $i care va parcurge (cu incrementare) valorile de la 1 la $num .

    $i=0;

    while ($i < $num) {

    OPERATIILE ASUPRA LINIEI

    ++$i;}

    Acesta este un ciclu tipic n PHP i va executa ansamblul numit OPERATIILE ASUPRALINIEI de exact $num ori, adic de attea ori ct trebuie. La fiecare reluare $i fiind mritcu o unitate. Astfel $i poate fi folosit i pentru a preciza numrul liniei care seprelucreaz.

    Asocierea datelor la variabile

    In partea pe care am numit-o OPERATIILE ASUPRA LINIEI trebuie s separm fiecarecmp din linia - nregistrare asociindu-l unei variabile. Folosim pentru asta urmtoareasecven:

    $variable=mysql_result($rezultat,$i,"numele_campului");

  • 8/8/2019 Mini Curs Php

    12/24

    Astfel, pentru a extrage fiecare component din baza noastr de date, vom folosiurmtoarele instruciuni:

    $nume=mysql_result($result,$i,"nume");

    $prenume=mysql_result($result,$i,"prenume");$telefon=mysql_result($result,$i,"telefon");$mobil=mysql_result($result,$i,"mobil");$fax=mysql_result($result,$i,"fax");$email=mysql_result($result,$i,"email");$web=mysql_result($result,$i,"web");

    Nu ne-am ocupat aici de cmpul ID (dei o puteam face) pentru c nu ne este necesar laafiare datelor.

    Combinarea Script-ului

    Acum putem scrie script-ul complet pentru scoaterea datelor. In acest script datele nusunt formatate, adic vor fi afiate toate cu acelaifont, predefinit.

  • 8/8/2019 Mini Curs Php

    13/24

  • 8/8/2019 Mini Curs Php

    14/24

    NumeTelefonMobilFax

    E-mailWebsite

    $i=0;while ($i < $num) {

    $nume=mysql_result($rezultat,$i,"nume");$prenume=mysql_result($result,$i,"prenume");$telefon=mysql_result($result,$i,"telefon");$mobil=mysql_result($result,$i,"mobil");

    $fax=mysql_result($result,$i,"fax");$email=mysql_result($result,$i,"email");$web=mysql_result($result,$i,"web");?>

  • 8/8/2019 Mini Curs Php

    15/24

  • 8/8/2019 Mini Curs Php

    16/24

    In ultimele dou lecii am vzut cum extragem date din baza de date i cum le afim peecran. Acum vom ajunge la aspectele finale ale afirii datelor, prin selectareaelementelor dorite i controlul erorilor (stoparea mesajelor de eroare) atunci cndscoatem date.

    Interceptarea Erorilor

    Prin scoaterea tuturor informaiilor dintr-o baz de date, este puin probabil s ajungem lasituaia cnd nu mai sunt date. Dar dac am permis ajustri i, tergeri i actualizri alenregistrrilor, atunci se prea poate s ajungem la o eroare. Din fericire, cu PHP iMySQL, avem un mod simplu de a evita o astfel de situaie folosind:

    $num=mysql_numrows($rezultat);

    unde $rezultat conine rezultatul unei cereri - interogri a bazei de date ( precumselectarea tuturor nregistrrilor). Aa cum am discutat mai sus, aceasta va atribui

    variabilei $num numrul de linii din rezultat (care s-a utilizat ntr-un ciclu, n lecia a 4-a). Putem insera n ciclu o comand de captare/tratare a erorilor folosind o instruciune IF:

    if ($num==0) {echo "Baza de date nu conine nici o nregistrare";} else {Output Loop}

    Putem dezvolta ramura asta fcnd-o mai prietenoas. Spre exemplu, oferind o legtur la

    pagina Add Data, de introducere de informaii n baza de date, atunci cnd ea este vid.

    Ordonarea datelor

    Nu numai c putem scoate datele n funcie de coninutul unui cmp, dar putem ordonaaceste date pe baza unei reguli aplicat coninutului unei coloane (spre exemplu aranjndutilizatorii n ordine alfabetic). In mod normal, afiarea n urma unei interogri se face nordinea stabilit de identificatorul ID, pornind de la 1 n sus. Putem ns alege modul deordonare (sortarea) dup oricare coloan din tabel.

    Spre exemplu, o ordonare util ar putea fi dup numele de botez. Asta nsemnnd n

    ordine ascendent (cresctoare, de la A la Z i de la 1 la 10...). Pentru a obine un astfelde rezultat folosim urmtoarea cerere:

    SELECT * FROM contacts ORDER BY prenume ASC

    Putem folosi, desigur i ordonarea descendent, specificnd DESC n locul lui ASC .

    Alte variante cu mysql_numrows i Sortare

  • 8/8/2019 Mini Curs Php

    17/24

    Valoarea care i se atribuie (ca mai sus) variabilei $num este foarte important, nu numaipentru cicluri i captarea erorilor. Un exemplu poate fi scoaterea doar a ultimelor 5nregistrri adugate bazei de date. Mai nti, avem ordonarea natural, stabilit de ID,(ultima nregistrare avnd valoarea maxim a ID), dar vom alege ordinea descendent.

    Astfel vom avea nregistrrile ncepnd cu cea mai recent i terminnd cu cea maiveche. Mai trebuie doar s numrm, afind doar primele 5.

    Desigur, nainte de a ncepe ciclul de cinci, trebuie s ne asigurm c $num este mai maredect 5 . Avem deci o secven de forma:

    if ($num

  • 8/8/2019 Mini Curs Php

    18/24

    s avem o pagin Web generat dinamic dintr-o baz de date cu un singur script PHP,putem scrie script-ul ca s includ pagini Web distincte ca nregistrri ale bazei de date.Atunci, folosind cmpul id, putem selecta fiecare pagin individual plasnd-o la soatere.Putem chiar folosi chiar URL-ul paginii pentru a specifica nregistrarea dorit

    http://www.centrul_propriu.ro/stiri/items.php?item=5476Iar script-ul PHP s caute nregistrarea care are numrul de ordine (id-ul) care corespundevalorii variabilei $item, care n acest caz este 5476

    Legturi la o singur nregistrare

    Folosind aceast metod de alegere a nregistrrii folosind URL-ul, nregistrarea poate fiextins prin generarea dinamic a URL-ului. Pare cam complicat. Vom vedea cumrealizm o pagin de aducere la zi a bazei de date cu adresele. Cu ideea ca utilizatorul s-i poat modifica propriile detalii din nregistrare.

    Pentru asta, vom include o nou coloan cuprinznd o legtur Update . Aceast legturconducnd la o pagin care s permit utilizatorului s actualizeze nregistrarea. Pentru aselecta nregistrarea din acea pagin vom pune:

    ?id=$id

    Cptnd identificatorul id al nregistrrii, secvena aceasta va crea o legtur la fiecaredin nregistrri.

    Part 7

    In lecia urmtoare vom vedea cum creem pagina pentru actualizarea informaiilor dinbaza de date.

    Partea 7-a:

    Introducere

    Pn acum am nvat cum s punem informaiile n baza de date MySQL, cum s vedemaceste informaii din baza de date, selectnd care din ele vrem s le vedem. In aceastlecie vom vedea cum facem cele dou aciuni finale, actualizarea bazei de date itergerea unor nregistrri din ea.

    Script-ul de actualizare

  • 8/8/2019 Mini Curs Php

    19/24

    Am vzut n lecia anterioar cum creem o legtur pentru fiecare nregistrare pentru a nepoziiona n scriptul de actualizare. Prin folosirea variabilei $id , legturile respective pottransmite valoarea corecta a identificatorului ID ctre script, astfel ca acesta s poatactualiza baza de date. Vom realiza deci un script de actualizare, care va avea dou pri:

    Pagina de afiare a actualizrii

    Prima parte a script-ului de actualizare folosete procedeul de selecie a unei singurenregistrri, aa cum l-am scris n lecia precedent, adugnd doar cteva elementeHTML pentru a-l face mai util. Mai nti, ne connectm la baza de date i selectmnregistrarea potrivit.

    $id=$_GET['id'];$username="nume_utilizator";$password="parola";$database="baza_de_date";

    mysql_connect(localhost,$username,$password);

    $query=" SELECT * FROM contacts WHERE id='$id'";$result=mysql_query($query);$num=mysql_numrows($rezultat);mysql_close();

    $i=0;while ($i < $num) {$nume=mysql_result($rezultat,$i,"nume");$prenume=mysql_result($rezultat,$i,"prenume");

    $telefon=mysql_result($rezultat,$i,"telefon");$mobil=mysql_result($rezultat,$i,"mobil");$fax=mysql_result($rezultat,$i,"fax");$email=mysql_result($rezultat,$i,"email");$web=mysql_result($rezultat,$i,"web");

    Zona de cod suplimentar

    ++$i;}

    Unde 'Zona de cod suplimentar' marcheaz poriunea din script unde vor apare comenzilede actualizare. Adic formatarea HTML pentru scoatere:

  • 8/8/2019 Mini Curs Php

    20/24

    "$prenume"?>">
    Numrul de Telefon:

  • 8/8/2019 Mini Curs Php

    21/24

    $password="parola";$database="baza_de_date";mysql_connect(localhost,$username,$password);

    $query="UPDATE contacts WHERE id='$ud_id' SET first='$ud_first'

    last='$ud_last' phone='$ud_phone' mobile='$ud_mobile' fax='$ud_fax'email='$ud_email' web='$ud_web'";mysql_query($query);echo "Actualizarea s-a fcut";mysql_close();

    Asta va actualiza baza de date transmind i o confirmare utilizatorului.

    Stergerea nregistrrilor

    Ultima parte a acestei lecii privete modul cum tergem o nregistrare dim baza de date.

    Ca i cu pagina de actualizare, vom construi o pagin pentru a terge una sau mai multelinii din baza de date. Trebuie s-i transmitem poziia (ID-ul) nregistrrii, printr-un URL,spre exemplu:

    delete.php?id=9

    Scriptul care va face asta, numit delete.php, este aproape identic cu cel de actualizare abazei de date, cu excepia comenzii MySQL (modului n care este construit cererea). Inlocul comenzii SQL UPDATE , vom folosi:

    DELETE FROM contacts WHERE id='$id'

    Ciclurile

    La acest punct este momentul s menionm i un alt mod de folosire a ciclurilor cu obaz de date. Putem folosi un ciclu pentru a executa un ir de cereri. Spre exemplu, dactrebuie s schimbm - extragem toate nregistrrile dintr-o baz de date n care apare caprenume Serban pentru a realiza un Website www.serban.ro:

    Partea Standard de Conectare la Baza de Date

    $query=" SELECT * FROM contacts WHERE prenume='Serban'";

    $rezultat=mysql_query($query);$num=mysql_numrows($rezultat);

    $i=0;while ($i < $num) {$id=mysql_result($rezultat,$i,"id");$query1="UPDATE contacts SET web='http://www.serban.ro' WHERE id='$id'";mysql_query($query);

  • 8/8/2019 Mini Curs Php

    22/24

    ++$i;}

    mysql_close();

    Partea 8-a

    In lecia urmtoare, ultima din acest curs, vom vedea cum s punem grmad toatecomponentele script-ului creat i nc cteva alte amnunte privind folosirea MySQL.

    Partea 8-a

    Introducere

    Pe parcursul acestui curs am vzut cum s folosim PHP-ul pentru a interaciona cu unsistem de baze de date MySQL (sau SQL) i cum s folosim comenzile uzuale (cele mainecesare). Am exemplificat, cu modul de realizare a unei baze de date de tip carte deadrese (ca sistem de management a contactelor ?). In aceast lecie final, vom vedeacteva "trucuri" MySQL i vom scrie versiunea definitiv (final) a script-ului construitpe parcursul acestui curs.

    Pentru economia de timp

    Atunci cnd construim un script complex folosind bazele de date, apare des secvena deconectare la baza de date. De aceea, pentru a simplifica lucrurile, se poate fie s creem unfiier cu numele de utilizator i parola sau chiar un fiier de conectare. Spre exemplu, unfiier "username/password" poate fi construit cu numele:dbinfo.inc.php

    cuprinznd n el:

    In care precizm datele concrete potrivite (numele_de_utilizator_al_bazei_de_date,parola, nume_baza_de_date). Atunci n fiierele php vom folosi, chiar la nceput,urmtoarea secven, care va include scriptul de mai sus:

    include("dbinfo.inc.php");

  • 8/8/2019 Mini Curs Php

    23/24

    sau, atunci cnd acesta se afl n alt director:

    include("/[traseul complet]/dbinfo.inc.php");

    Atunci, vom putea folosi n continuare variabilele $username, $password i $database n

    script-ul nostru, fr a avea nevoie s le definim de fiecare dat. De asemeni, dac vommodifica cndva aceste informaii, spre exemplu trecnd pe alt server web, tot ce va fi deschimbat va fi n acest unic fiier.

    Aceeai schem o putem folosi pentru conectarea la baza de date, plasnd i comanda deconectare n fiier. Atunci va trebui, ns, s ne asigurm de nchiderea conexiunii, pentrua nu avea probleme cu serverul MySQL.

    Cutarea

    Se poate realiza i o cutare limitat n baza de date folosind funcia special din MySQL.

    Adic prin folosirea funciei LIKE , n forma:

    SELECT * FROM nume_tabela WHERE nume_camp LIKE '%$string%'

    Asta nsemn c LIKE va spune bazei de date s foloseasc posibilitile proprii decutare. Semnele % au semnificaia c orice alte date pot s apar n poziia lor ivariabila $string va conine cererea de cutare. Adic putem avea acolo un cuvnt, sau unnumr, spre exemplu:

    LIKE '%pian%'

    ceea ce va conduce la scoaterea liniilor care includ cuvntulpian n cmpul specificat.

    Similar, putem renuna la unul din semnele % astfel ca s precizm poziia irului decaractere:

    LIKE 'pian%'

    Astfel vom putea selecta doar liniile n care cmpul specificat ncepe cu prefixulpian,caz n care, spre exemplu, expresia urmtoare va fi evitat:

    Un pian se afl pe scen.

    Finalizarea Script-ului

    Pe parcursul acestui mini-curs am prezentat diferite poriuni de cod ale script-ului pentruconstrucia bazei de date contacts. Putei descrca script-ul complet ca un fiiercomprimat zip, pentru a examina ntreaga aplicaie (vezi legturile).

    Concluzii

  • 8/8/2019 Mini Curs Php

    24/24

    Acum, ncheind acest curs, ar trebui s tii s folosii PHP i MySQL mpreun pentru acrea o baz de date - accesibil pe Web, precum i pentru a scrie programe de acces labaza de date. Folosirea bazelor de date pe Web deschide noi i mari posibiliti de lucrun Internet i poate face mult mai puternic un centru Web, economisind timpul deactualizare, permind utilizatorilor s interacioneze (s rspund) i multe altele.