Sunteți pe pagina 1din 7

Capitolul 9.

Formulare i lucrul cu bazele de date


Formularele sunt obiecte prin care se pot introduce, edita, modifica sau sterge informaii care sunt stocate n bazele de date. n acest capitol sunt explicate modaliti de realizare ale unor astfel de operaii. Limbajul HTML are prevzute mijloace prin care se pot realiza formulare. Dar pentru prelucrarea informaiilor este nevoie de un limbaj procedural i de aceea se recurge la utilizarea unor proceduri de scripting, n lucrarea de fa noi vom exemplifica acest lucru cu proceduri scrise n limbaj PHP. n fine informaiile prelucrate sunt stocate n baze de date MySQL.

9.1. Transmiterea de informaii ntre paginile web


Prin metoda GET, datele sunt transferate de la o pagin web la alta, n formula de apel a noii pagini prin specificarea numelor parametrilor i a valorilor lor, precum n exemplul concret de mai jos: http://uniosah.ro/fotoistoricdir.php?dir=Diverse_evenimente&start=7 In formula de mai jos se apeleaz pagina web http://uniosah.ro/fotoistoricdir.php, (un script scris n limbajul PHP), transmindu-se parametrii: dir cu valoarea Diverse_evenimente i parametrul start cu valoarea 7. n sintax, ntre numele parametrului i valoarea sa se scrie semnul =, ntre parametrii se pune semnul &, iar ntre numele paginii web (url) i parametrii se scrie semnul ?. Scriptul PHP are acces la aceti parametrii prin masivul $_GET, care are ca elemente parametrii transmii prin aceast metod, indexai cu numele lor. Deci, n scriptul de mai sus, vom avea acces la valorile urmtoare $_GET["dir"]= "Diverse_evenimente" i $_GET["start"]=7. Metoda POST preia valorile introduse ntr-un formular i le transmite scriptului precizat dup ce se acioneaz asupra butonului submit din cadrul formularului. Scriptul PHP are acces la aceti parametrii prin masivul $_POST, care are ca elemente parametrii transmii prin aceast metod, indexai cu numele lor, ntr-un mod similar celui folosit n cazul metodei GET.

9.2. Realizarea formularelor


Pentru realizarea formularelor, limbajul HTML are prevzute dou marcaje principale: form i input. Sintaxa rezumativ a unui formular: <form action="nume_URL" method=METODA_DE_TRANSMITERE > etichete <input type={text | password} name=nume_caseta_text size=dimensiune maxlength=nr_caractere> sau etichete <input type={radio | checkbox} name=nume_buton value=valoare > eticheta ..

sau eticheta <select name=nume_meniu> <option> eticheta <option selected> <option value=valoare> </select>. sau etichete <input type=file name=nume_control_alegere_fiier > sau <textarea name=nume_zon rows=nr_rnduri cols=nr_coloane> ... <textarea> </form> METODA_DE_TRANSMITERE = {GET|POST} tip_control = {text | password | checkbox | radio | image | hidden | submit | reset} Marcajul form are n sintax doi parametrii obligatorii: - action care specific un URL pentru programul scris ntr-un limbaj de script, care va prelucra informaiile editate n formular - method care specific modul de transfer al parametrilor de la pagina formularui la script. Sunt mult uzitate metodele GET i POST. Pentru a introduce informaii n formulare n limbajul HTML, se folosete marcajul input, care prevede posibilitatea realizrii urmtoarelor obiecte: - text - casete text - password - casete text fr ecou (pentru parole) - checkbox casete de control (pentru bifri) - radio butoane radio - image - butoane din imagini - hidden cmpuri ascunse - submit buton de acceptare a informaiilor i transmiterea lor spre script - reset buton de anulare a informatiilor i renunarea la transmiterea lor. Pentru exemplificarea celor de mai sus, redm un program care realizeaz formularul urmtor:

Exerciiu 9.1. Realizarea unui formular


<table border=1> <tr><th align=right> Exemplu de formular <br> <form action="snelu.php" method="post"> Nume:<input type="text" name="nume"><br> Prenume:<input type="text" name="prenume"><br> CNP:<input type="text" name="cnp"><br> Telefon:<input type="text" name="telefon"><br> Fax:<input type="text" name="fax"><br> Email:<input type="text" name="email"><br> Sexul:<br> Masculin<input type="radio" name="sex" value="m"> Feminin<input type="radio" name="sex" value="f"><br> Specializare: <select name='specializare'> <option value="Finante si Bnci">Finan&#539;e &#537;i Bnci <option value="Management">Management <option value="CIG">CIG </select><br> Doresc ca prin eMail:<br> S primesc suport de curs<input type="checkbox" name="curs"><br> S primesc temele<input type="checkbox" name="teme"><br> S transmit rezultatele<input type="checkbox" name="rezu"><br> ncarc poz: <input type="file" name="file"><br> Alte probleme:<textarea name="obs" rows="5" cols="30"></textarea><br> <input type="submit" value="Trimite"><input type="reset" value="Sterge"> </form> </center> </table>

9.3. Realizarea scripturilor de prelucrare a informaiilor editate


Informaiile editate n formulare sunt prelucrate de un script, care preia aceste informaii, de obicei actualizeaz cu ele bazele de date. Pentru lucrul cu bazele de date MySQL, PHP are un set de funcii speciale. Funcia mysql_connect("localhost", "username", "password") realizeaz conexiunea ctre situl unde este gzduit baza de date. Funcia mysql_select_db("nume_baz_de_date") selecteaz baza de date cu care se dorete s se schimb de informaii. Informaiile recepionate prin formulare, sunt preluate de script din masivul $_POST. Pentru a putea fi manipulate mai uor, au fost transferate n variabile cu nume sugestiv. Valorile lor sunt necesare pentru constituirea ntr-un ir a comenzii sql care este trimis bazei de date pentru a se realiza interogarea. Funcia mysql_query($sir_sql) nfptuiete interogarea prin interschimb de informaii cu baza de date. Rezultatul difer n funcie de tipul de comand sql transmis bazei de date. n cazul comenzilor INSERT, UPDATE, DELETE, DROP, etc, mysql_query() funcia ntoarce TRUE n caz de succes sau FALSE n caz de eroare. Se obinuiete ca acest rezultat s fie testat i transmis celui care a completat formularul. Redm mai jos, scriptul:

Exerciiu 9.2. Script de prelucrare informaii introduse ntr -un formular


<?php $link = mysql_connect("localhost", "", "") or die("Could not connect"); mysql_select_db("nelu") or die("Could not select database"); /* Performing SQL query */ $mtelefon=$_POST['telefon']; $mnume=$_POST['nume']; $mprenume=$_POST['prenume']; $mfax=$_POST['fax']; $mcnp=$_POST['cnp']; $memail=$_POST['email']; $msex=$_POST['sex']; $mspecializare=$_POST['specializare']; $mcurs=$_POST['curs']; $mteme=$_POST['teme']; $mrezu=$_POST['rezu']; $mfile=$_POST['file']; $mobs=$_POST['obs']; $sql="insert into om (nume, prenume, cnp, telefon, fax, email, sex, specializare, curs, teme, rezu, obs, file ) values ('$mnume', '$mprenume', '$mcnp', '$mtelefon', '$mfax', '$memail', '$msex', '$mspecializare', '$mcurs', '$mteme', '$mrezu', '$mobs', '$mfile')"; print $sql; if( !($mnume=="")) $rez=mysql_query($sql)or die("Query failed"); else echo "nu introduce articole fara nume!"; if($rez>0) { print "<br><br>"."articolul a fost adaugat cu succes. <br> "Va multumim pentru colaborare" ; } else print "<br>"."Nu s-a putut face adaugarea"; print "<br>"."<br>".'Pentru a reveni <a href=formnelu.php ?> la formular, faceti clic TARGET="main">aici&nbsp;</a>';

n consecin, acesta are urmtorul rezultat transmis celui care a completat formularul: insert into om (nume,prenume, cnp, telefon, fax, email, sex, specializare, curs, teme, rezu, obs, file ) values ('Ionescu','Dan','1880808301993','0261-801801','0261801801','Dan.Ionescu@Gmail.com','m','CIG','on','on','on','-','205050[1].jpg') articolul a fost adaugat cu succes

Va

multumim

pentru

colaborare

Pentru a reveni la formular, faceti clic aici

Pe de alt parte, principala menire a scriptului, aceia de a realiza interschimb de informaii cu baza de date, n cazul nostru concret de inserare a unui articol nu este vizibil imediat. Pentru a chestiona coninutul bazelor de date trebuie transmise interogri de tip SELECT i informaiile obinute n vederi, formatate n rapoarte.

9.4. Realizarea altor tipuri de interogri n bazele de date


SQL are diverse comenzi, precum: - comenzi pentru creare i tergere de baze de date - comenzi pentru creare, copiere, tergere i modificare tabele - adugare, tergere, modificare cmpuri - adugare (INSERT), tergere (DELELE), modificare (UPDATE), extragere de vederi (SELECT), n lucrul cu articolele. Vom exemplifica lucrul cu ultimul tip de comenzi, cele cu articole. Dintre acestea, realizarea comenzii INSERT am exemplificat-o n paragraful precedent. a) Realizarea de vederi cu ajutorul comenzii SELECT. Utiliznd baza de date din paragrafele precedente prezentm un program PHP care extrage datele din tabelul `om` i le afieaz ntr-un tabel HTML. Realizarea conexiunii cu serverul prin funcia mysql_connect(), a legturii cu baza de date prin funcia mysql_select_db() i a transmiterii irului cu comenda sql prin funcia mysql_query()se efectueaz precum n subcapitolul anterior. Diferena care apare n acest subcapitol este faptul c, n cazul execuiei comenzii SELECT, care este trimis bazei de date pentru a se realiza interogarea, rezultatul returnat este de tip resurs care poate fi dat ca argument funciei mysql_fetch_array(), care returneaz un masiv cu datele vederii. Fiecare apel al acestei funcii returneaz un vector care conine valorile a cte unui articol, indexate cu indeci care sunt preluai din denumirile cmpurilor bazei de date. Prelucrarea acestora poate fi realizat recurgndu-se la instruciunile repetitive for, foreach sau while. Redm mai jos programul care realizeaz aceste operaii:

Exerciiu 9.3. Realizarea de vederi ntr-o baz de date


<? $link = mysql_connect("localhost", "", "") or die("Could not mysql_select_db("nelu") or die("Could not /* Performing SQL

select query

connect"); database"); */

$sql="select * from om"; ?> <table border=1> <tr><th>Nr.crt<th>Nume<th>Prenume<th>CNP<th>Telefon<th>fax<th>Sex<th>ema

il<th>Studii<th colspan="3">Acces internet<th>Poza<th>Obs.</tr> <?php $nr=1; $rez=mysql_query($sql)or die("Query failed"); if($rez>0) { while($lin=mysql_fetch_array($rez,MYSQL_ASSOC)) { echo "<br><tr><td>$nr"; $nr++; foreach($lin as $el) echo "<td>".$el; } } ?> Execuia programului are rezultatul din figura de mai jos:
Comunicare email Special Retu Rece Rece izare r ptie ptie rezul curs teme tate on on on on on Poza O bs.

Nr. crt

Nu me

Pren ume

CNP

Telefo n

fax

email

S e x

1 2

Ione Dan scu Ant one

18808083 026180 026180 Dan.Ionescu@Gm m CIG 01993 1801 1801 ail.com

205050[ 1].jpg 100_071 8.JPG

Maria 16901101 034780 034780 Marian.Antone@u Manage m n 71940 0123 0123 psmail.com ment

b) Modificarea de articole n baza de date. Utiliznd baza de date din paragrafele precedente prezentm un program PHP care va modifica n articolul n care este stocat 'Ionescu', valoarea pentru email n 'ionescu@email.ro'. Programul care realizeaz aceste operaii e prezentat mai jos:

Exerciiu 9.4. Actualizri ntr-o baz de date


<?php $link = mysql_connect("localhost", "", "") or die("Could not connect"); mysql_select_db("nelu") or die("Could not select database"); /* Performing SQL query */ $sir=$_GET['nume']; $sql="UPDATE `om` SET email='ionescu@email.ro' where nume='Ionescu'"; print $sql; $rez=mysql_query($sql)or die("Query failed"); print "rez .... $rez"; if($rez>0) echo "au fost modificate articolele cu numele Ionescu"; else echo "N-am sters nimic"; ?>

c) tergerea de articole din baza de date.

Utiliznd baza de date din paragrafele precedente prezentm un program PHP care efectueaz tergeri tabelul `om`. Se vor terge din tabel articolele pentru care numele are valoarea primit prin linia de comand, prin metoda GET. Programul care realizeaz aceste operaii e prezentat mai jos:

Exerciiu 9.5. tergeri ntr-o baz de date


<?php $link = mysql_connect("localhost", "", "") or die("Could not mysql_select_db("nelu") or die("Could not select /* Performing SQL $sir=$_GET['nume']; $sql="delete from om where nume='$sir'"; print $sql; $rez=mysql_query($sql)or die("Query print "rez .... $rez"; if($rez>0) { echo "au fost sterse articolele cu numele $sir"; } else echo "N-am sters ?>

connect"); query database"); */

failed");

nimic";

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