Sunteți pe pagina 1din 10

http://www.cursuri-online.info/php_mysql/ConfigurareascriptuluiphpMyAdmin.

htm

Lucrul cu baza de date MySQL


Un browser web nu se poate lega direct la serverul MySQL, nu poate trimite query-uri si nu poate afisea rezultatul returnat de acestea. Un browser web nu poate decat sa afiseze pagini HTML. Si de aceea aici avem nevoie de PHP, care se poate conecta la MySQL, poate trimite interogari si poate afisea rezultatul interogarior in format HTML, format inteles de un browser web.

Browserul web vrea sa afiseze o pagina. El cere aceasta pagina serverului web, care vazand ca este o pagina de tip PHP o trimite spre prelucrare modulului de PHP instalat. Acesta interpreteaza codul, vede ca sunt cerute date din baza de date, se conecteaza la aceasta, le obtine si genereaza codul html pentru afiserea lor. Astfel pagina generata este servita browserului care o afiseaza Acesta este modul in care o baza de date lucreaza cu un server. La inceputul tutorialului v-am spus ceva de phpMyAdmin. Acesta este un pachet de scripturi php care va ajuta sa gestionati baza de date folosind o interfata web. In poza de mai jos va este aratat cum arata acest pachet de scripturi php numit phpMyAdmin.

1) Crearea unei baze de date Accesati http://localhost/phpmyadmin/ si apoi o sa observati in mijloc, campul Creaza baza de date noua. 1

http://www.cursuri-online.info/php_mysql/ConfigurareascriptuluiphpMyAdmin.htm Scrieti numele bazei de date pe care doriti sa o creati,dupa care apasati butonul Creaza. Sa luam ca exemplu, baza de date cu numele tutorial. Dupa ce ati creat baza de date cu numele tutorial, veti observa ca in partea stanga apare numele acesteia, iar in mijloc este scris textul Nu s-a gasit nici un tabel in baza de date.. Pentru a adauga un tabel in baza noastra de date, trebuie sa complectam campul Creaza tabela noua in baza de date tutorial:.

Campuri introduceti numarul de randuri ce le va avea aceasta tabela. Sa luam ca exemplu: Nume: formular Campuri: 4 Apasam butonul Executa

Intorcandu-ne putin la cunostintele pe care le-am acumulat cu o pagina mai sus, vom observa ca apar campurile: Camp, Tip, Lungime. . Cele mai folosite tipuri sunt: Tipuri numerice: INT Stocare octeti 4 BIGINT 64 biti Tipuri de sir: CHAR Interval 1-255 caractere VARCHAR Interval 1-255 caractere Tipuri de text: TEXT Lungime maxima de caractere 65.535 LONGTEXT Lungime maxima de caractere 4.294.967.295 O prima adaugare in orice baza de date, este bine sa fie un camp cu numele id, iar ca tip sa fie INT, si o setare speciala pentru aceasta prima linie din tabela noastra, este alegerea valorii auto_increment din categoria Extra, si apoi trebuie sa bifati optiunea primar .

Dupa care adaugati pe rand in coloana Camp urmatoarele: nume , prenume , varsta. Ca Tip pentru aceste 3 intrari, alegeti CHAR, apoi in coloana Lungime/Setare adaugati o valoare numerica, adica numarul de caractere maxime care sa poata intra in acel rand. 2

http://www.cursuri-online.info/php_mysql/ConfigurareascriptuluiphpMyAdmin.htm Exemplu: Pentru coloana camp cu valoarea nume o sa avem ca tip CHAR si lungime 30. Asta inseamna ca putem introduce un text mai mic sau egal cu 30 caractere.

Dupa ce ati introdus datele precum am spus mai sus si am aratat in poze, apasati butonul Salveaza. In urmatoarele 2 poze vedeti ca tabelul a fost creat, vi se arata comanda SQL, dupa care vi se listeaza aceasta tabela.

Dupa ce ati creat baza de date cu numele tutorial si tabela cu numele formular, doriti sa adaugati informatii in aceasta tabela. Sus in pagina aveti un meniu: Apasati pe butonul Inserare

http://www.cursuri-online.info/php_mysql/ConfigurareascriptuluiphpMyAdmin.htm

Completati campul Valoare cu datele pe care doriti sa le introduceti in formular pentru fiecare in valorile casutei Camp. Si anume:

Nu complectati casuta id de dip INT deoarece aceasta este folosita pentru a adauga un numar UNIC pentru fiecare intrare din baza de date. De exemplu, daca adaugati 2 intrari, numarul primei intrari va fi, 1 iar urmatoarei intrari va fi 2. Daca stergeti intrarea cu numarul 2 si adaugati o noua intrare, id-ul acesteia va fi 3 nu 2, deoarece valoarea campului id de tip INT nu se updateaza (in sensul ca se rearanjeaza numarul din dreptul fiecarei intrari) in momentul in care se sterge o intrare din tabela. Dupa ce ati adaugat informatii in casuta Valoare, apasati butonul Executa.

La fel ca si in atunci cand am adaugat o tabela, ni se va arata sintaxa SQL Pentru a vizualiza datele adaugate in tabela formular, apasati pe butonul Navigare din partea de sus a pagini.

In aceasta instanta vedeti ca puteti edita, sterge aceasta intrare. Mai adaugati o intrare in acest tabel efectuand acelasi procedeu ca cel de mai sus si apasati din nou butonul navigare. Apasati pe textul nume sau prenume sau varsta si observati ca listarea intrarilor se modifica in ordinea adaugarii lor in tabela. Sus observati sintaxa SQL 4

http://www.cursuri-online.info/php_mysql/ConfigurareascriptuluiphpMyAdmin.htm Listarea poate fi ASC (ascendenta), adica afisarea intrarilor pornind cu ultima intrare si sfarsind cu prima intrare, sau DESC (descendenta), adica afisarea intrarilor pornind cu prima intrare si sfarsind cu ultima. Nota: Puteti adauga in continuare si alte tabele si coloane atatea cate aveti nevoie.

Publicarea datelor din baza de date pe web Daca in lectia precedenta am vorbit despre baza de date acum a venit timpul sa afisem datele stocate intr-o forma "comerciala". Cei dintre voi care au avut curiozitatea sa incerce exemplele din lectia precedenta au observat ca rezultatul query-urilor sunt afisate intr-un tabel, lucru nu foarte estetic. Mai mult decat atat Sa detaliem un pic.. Sa parcurgem in detaliu toate aceste etape. Conectarea PHP la MySQL Conectarea la MySQL se face printr-o functie PHP, mai exact: <?php $link = mysql_connect("mysql_host", "mysql_user", "mysql_password") or die("Nu se poate conecta"); ?> Functia mysql_connect se conecteaza la MySQL folosind ca parametri adresa serverului unde ruleaza MySQL (daca il aveti instalat pe propriul calculator aceasta ar trebui sa fie localhost), user-ul (daca il aveti instalat pe propriul calculator aceasta ar trebui sa fie root) si parola (daca il aveti instalat pe propriul calculator aceasta ar trebui sa nu existe). Deci exemlul de mai sus particularizat pentru cazul in care aveti MySQL instalat pe proriul calculator: <?php $link = mysql_connect("localhost", "root", "") or die("Nu se poate conecta"); ?> Functia die nu face altceva decat sa afiseze mesajul si sa nu mai execute nici un cod dupa. Variabila $link reprezinta un identificator pentru aceasta conxiune (pentru ca ne putem conecta simultan la mai multe server MySQL). Numai conectarea nu este suficienta. Trebuie sa-i spunem servarului MySQL ce baza de date dorim sa folosim. Pentru a exemplifica vom folosi baza de date de la lectia 5. <?php $link = mysql_connect("mysql_host", "mysql_user", "mysql_password") or die("Nu se poate conecta"); mysql_select_db("anunturi", $link) or die("nu se poate alege baza de date"); ?> Observati ca functia mysql_select_db este cea care ii transmite serverului MySQL ce baza de date vrem sa folosim. 5

http://www.cursuri-online.info/php_mysql/ConfigurareascriptuluiphpMyAdmin.htm trimiterea de interogari cu PHP Vom contiuna sa folosim ca exemplu practic baza de date de la lectia 5. Sa presupunem ca dorim sa schimbam data celui de-al doilea anunt. <?php $link = mysql_connect("mysql_host", "mysql_user", "mysql_password") or die("Nu se poate conecta"); mysql_select_db("anunturi", $link) or die("nu se poate alege baza de date"); $query = "UPDATE anunturi SET data_anunt = '2003-05-10' WHERE id =2"; $result = mysql_query($query) or die("Query failed"); ?> Functia mysql_query este cea care transmite serverului MySQL query-ul pe care dorim sa-l executam ca string. Variabila $query cintine in acest caz un string ce reprezinta query-ul nostru de update. Se pot astfel executa orice fel de query-uri, dar probabil cele mai importante sunt cele care selecteaza si afiseaza informatii din baza de date, asa cum vom vedea in paragraful urmator. manipularea rezultatelor selectate Poate una dintre cele mai importante lucruri pe care le puteti face cu combinatia PHP - MySQL este sa selectati si sa afiseati informatile din baza de date. Sa luam un exemplu concret si sa-l discutam: <?php $link = mysql_connect("mysql_host", "mysql_user", "mysql_password") or die("Nu se poate conecta"); mysql_select_db("anunturi", $link) or die("nu se poate alege baza de date"); $query = "select * from anunturi"; $result = mysql_query($query) or die("Query failed"); while ($myrow = mysql_fetch_array($result)) { echo "<b>Anunt:</b> ".$myrow["text_anunt"]."<br><b>Data:</b> ". $myrow["data_anunt"]."<br><br><br>"; } ?> Functia nou introdusa in exemlul nostru este mysql_fetch_array functie ce nu face decat sa ia pe rand (pana se termina) fiecare rand (inregistrare) returnat de query si sa o introduca intr-un vector ($myrow). Puteti observa ca, cheile acestui vector sunt chiar numele campuriolor din tabela noastra. introducerea de noi date in baza de date Si acum sa incercam sa realizam o metoda practica de a introduce noi anunturi in baza noastra de date. Ati invatat despre formulare la lectia 4. Daca nu ati parcurs-o deja ca invit sa o faceti inainte de a continua pentru a putea intelege pe deplin urmatoarele exemple. Vom folosi un fisier (html) in care va exista un formular unde vom introduce anunturile sa-l numim 6_form.htm. El are urmatorul continut: <html> <head> <title>Adaugare in baza de date</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <form name="form1" method="post" action="6_insert.php"> <strong>anunt:</strong> 6

http://www.cursuri-online.info/php_mysql/ConfigurareascriptuluiphpMyAdmin.htm <input type="text" name="anunt" id="anunt"> <br> <strong>data:</strong> <input type="text" name="data" id="data"> (in format aaaa-ll-zz)<br> <input type="submit" name="Submit" value="adauga"> <input type="reset" name="Submit2" value="reset"> </form> </body> </html> Prin intermediul acestui fisier se pot introduce anuntul si data la care a fost publicat. Acum cel de-al doilea fisier (de data asta de tip php) care va prelua datele din formularul precedent si le va introduce in baza de date. Sa-l numim 6_insert.php. html> <head> <title>Adaugare in baza de date</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <?php $link = mysql_connect("mysql_host", "mysql_user", "mysql_password") or die("Nu se poate conecta"); mysql_select_db("anunturi", $link) or die("nu se poate alege baza de date"); $query = "INSERT INTO anunturi SET text_anunt='".$_POST["anunt"]."', data_anunt='". $_POST["data"]."'"; $result = @mysql_query($query); if ($result) echo "anuntul a fost indrodus cu succes. <a href=\"6_form.htm\">introduceti alt anunt?</a>"; else { echo "eroare. anuntul nu a putut fi introdus"; exit(); } ?> </body> </html> In acest fisier se introduc informatiile in baza de date si se afiseaza daca a intervenit vreo eroare. MySQL reprezinta o baza de date relationala oferita gratuit, disponibila atat pentru Windows, cat si pentru Linux. Este folosita in realizarea aplicatiilor mici si medii. Ideea pe care se bazeaza interactiunea PHP - MySQL sau in general interactiunea dintre PHP si o baza de date este aceea ca permite ca informatiile care se doresc sa apara pe site sa fie prezente in baza de date. In acest fel informatiile pot fi actualizate usor si prezentate intr-o forma "dinamica" in cadrul site-ului. Conectarea la baza de date Vom incepe prin a ne conecta la o baza de date MySQL. mysql_connect(adresa, utilizator, parola); Ca si parametri vom folosi adresa care reprezinta IP-ul sau hostname-ul calculatorului pe care am instalat baza de date MySQL. Acesta poate fi acelasi cu cel pe care ruleaza serverul de web (de obicei Apache sau IIS) sau un 7

http://www.cursuri-online.info/php_mysql/ConfigurareascriptuluiphpMyAdmin.htm alt calculator. In cazul in care se gaseste pe acelasi calculator cu serverul de web, putem folosi la adresa si localhost. Numele de utilizator si parola vor fi cele setate pentru MySQL. Implicit acestea sunt nume de utilizator: root si fara parola. Este recomandat ca aceste setari implicite sa fie modificate. Functia mysql_connect returneaza un numar de identificare a conexiuni in caz de succes sau false in caz de eroare <?php $id = mysql_connect("localhost", "root", "") or die("Nu ma pot conecta la MySQL!"); print ("Conectare reusita"); mysql_close($id); ?> Atentie o conexiune la baza de date trebuie deschisa intotdeauna inainte de a o folosi! In cazul in care nu ne putem conecta la baza de date functia mysql_connect va returna false, iar in acest caz se va trece la executarea functiei die care va afisa mesajul din paranteza si va termina executia scriptului. Urmatorul pas il reprezinta alegerea bazei de date mysql_select_db(baza_de_date, identificatorul_conexiunii); Parametrii folositi in acest caz vor fi numele bazei de date ales si identificatorul returnat de catre mysql_connect. <?php $id = mysql_connect("localhost", "root", "") or die("Nu ma pot conecta la MySQL!"); $db = mysql_select_db("curs", $id) or die("Nu gasesc o baza de date cu numele curs!"); mysql_close($id); ?> In exemplul de mai sus am selectat baza de date curs. Ca si in exemplul anterior, in cazul in care nu putem selecta baza de date curs se va trece la executia functiei die a carui comportament a fost explicat mai sus. Inserarea unei inregistrari in baza de date In exemplul urmator vom insera intr-o baza de data o inregistrare. Pentru aceasta vom folosi functia mysql_query cu ajutorul careia vom executa o instructiune SQL. mysql_query(instructiune_SQL, identificatorul_conexiunii); Aceasta instructiune (in cazul nostru <<INSERT INTO cursanti(nume) VALUES('$nume')>>) va fi transmisa serverului MySQL care il va executa si va returna rezultatul. In cazul mysql_query rezultatul va fi true, in caz de succes, sau false, in caz de eroare. Pentru a testa exemplul urmator va trebui sa creati un fisier cu numele "adauga_nume.php". Acest fisier va afisa in browser un formular cu o linie in care va puteti introduce numele si un buton care in momentul in care este apasat va transmite numele mai departe. Dupa cum se observa am setat formularului la actiune valoarea "adauga_nume.php", ceea ce inseamna ca valoarea va fi transmisa spre acelasi fisier. Dupa ce valoarea este transmisa, executia va continua si in interiorul instructiunii if, executie care initial a fost ignorata, deoarece variabila $nume nu exista in cazul primei executii. <? if($nume) { $idSQL = mysql_connect("localhost", "root", ""); mysql_select_db("curs", $idSQL); $query = "INSERT INTO cursanti(nume) VALUES('$nume')"; mysql_query($query, $idSQL); 8

http://www.cursuri-online.info/php_mysql/ConfigurareascriptuluiphpMyAdmin.htm print("Numele dvs a fost introdus in baza de date!"); } ?> <form method="POST" action="adauga_nume.php"> Numele dvs: <input type="text" name="nume" size="30"> <input type="submit" value="Adauga"></form> Atentie: In unele cazuri este necesar sa se foloseasca variabila $HTTP_POST_VARS['nume'] in momentul in care se doreste preluarea variabilei nume transmisa prin metoda POST prin intermediul formularului. Selectarea inregistrarilor Dupa ce am inserat o inregistrare in baza de date dorim sa o afisam in browser. De aceea vom incerca sa vedem daca in tabela cursanti exista un utilizator cu numele Cristi. Pentru aceasta construim o instructiune sql de tipul celei de mai jos. Instructiunea mysql_num_rows returneaza numarul de rezultate returnate de executia instructiunii. Se poate observa ca in cazul in care se foloseste instructiunea mysql_query cu o instructiune SELECT, acesta nu va returna true sau false, ci va returna o lista de rezultate sau false in caz de eroare. $query = "SELECT * FROM cursanti WHERE nume='Cristi'"; $result = mysql_query($query, $idSQL); if(mysql_num_rows($result)) { print("<strong>Numele Cristi exista in tabela cursanti</strong>"); } else { print("<strong>Numele Cristi nu exista in tabela cursanti</strong>"); } Atentie: Trebuie sa fiti conectati la baza de date inainte de a executa instructiunea SQL. In urmatorul exemplu dorim sa afisam toate inregistrarile din tabela cursanti. Vom proceda ca si in exemplul anterior. Insa in cazul in care gasim rezultate in tabela cursanti vom parcurge fiecare din aceste rezultate si il vom afisa pe ecran. mysql_fetch_row(rezultatul_returnat_de_mysql_query); Instructiunea mysql_fetch_row va parcurge rezultatul returnat de instructiunea mysql_query si va returna pentru fiecare inregistrare un tablou care contine fiecare camp returnat. Indexarea tablourilor incepe de la valoare 0. Instructiune while va avea ca efect returnarea pentru fiecare linie a unui tablou. In cazul nostru vom avea in $row[0], numele cursantului. $query = "SELECT nume FROM cursanti"; $result = mysql_query($query, $idSQL); if(mysql_num_rows($result)) { while($row = mysql_fetch_row($result)) { print("$row[0]<br>"); } } else { print "Tabela cursanti este goala !"; } Atentie: Trebuie sa fiti conectati la baza de date inainte de a executa instructiunea SQL. In urmatorul exemplu vom selecta dintr-o tabela toti cursanti a caror nume incep cu litera c. Pentru aceasta vom folosi o instructiune SQL mai complexa. Portiunea <nume LIKE 'c%'> din interiorul instructiunii SQL se 9

http://www.cursuri-online.info/php_mysql/ConfigurareascriptuluiphpMyAdmin.htm traduce prin toate inregistrarile a caror camp nume incepe cu litera c. Semnul % inseamna orice numar de caractere chiar si nici unul. In acest exemplu am selectat pe langa nume si campul email, pe care il afisam prin intermediul lui $row[1]. $query = "SELECT nume,email FROM cursanti WHERE nume LIKE 'c%'"; $result = mysql_query($query, $idSQL); if(mysql_num_rows($result)) { while($row = mysql_fetch_row($result)) { print("$row[0]"); print("$row[1]<br>"); } } else { print "Tabela cursanti este goala !"; } Atentie: Trebuie sa fiti conectati la baza de date inainte de a executa instructiunea SQL. Actualizarea unei inregistrari In urmatorul exemplu vom actualiza toate inregistrarile care contin emailul test@asp.net cu test@asp.net. In cazul nu exista nici un utilizator care sa posede adresa de email test@asp.net, tabela va ramane nemodificata. $query = "UPDATE cursanti SET email='test@php.net' WHERE email='test@asp.net'"; mysql_query($query, $idSQL); Stergerea unei inregistrari Urmatorul exemplu permite stergerea tuturor inregistrarilor din tabela cursanti care au emailul test@php.net. $query = "DELETE FROM cursanti WHERE email='test@php.net'"; mysql_query($query, $idSQL); Final Este recomandat ca dupa fiecare selectie a unor inregistrari din cadrul tabelei prin instructiunea SQL SELECT sa se foloseasca instructiunea mysql_free_result. Aceasta permite eliberarea resurselor asociate variabilei $result. mysql_free_result($result); In cadrul acestui tutorial am folosit o tabela de forma: CREATE TABLE cursanti( id tinyint(4) DEFAULT '0' NOT NULL AUTO_INCREMENT, nume varchar(50), email varchar(50), PRIMARY KEY (id));

10

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