Sunteți pe pagina 1din 9

Note de seminar Tehnologii Web

Specializare Info 2

Lab 12
Descriere: Prelucrarea datelor printr-un formular. Interactiunea cu o baza de date MySQL

Resurse
1. Manual PHP, http://www.php.net/manual/en/

Tutorial
1. Prelucrarea datelor dintr-un formular Un formular HTML este reprezentat de elementul FORM care contine alte cateva elemente utilizate pentru culegerea de informatii de la utilizator. Fiecare element din formular are un nume si o valoare, astfel incat datele transferate pentru procesare sa fie sub forma unor perechi nume/valoare. 1.1 Elementul FORM
<form [action=url] [method=get/post] [enctype=MIMEType] [onsubmit=script] [onreset=script] [acceptcharset=set_caractere] [core] [international] [events]> Elementele formularului </form>

1.2 Elementul INPUT


<input[type=text|password|checkbox|radio|submit|image|reset|button|hidden|file][name=nume] [value=valoare] [checked] [disabled] [readonly] [size=latime] [maxlength=cuvinte_maxime] [src=url][alt=altText] [usemap=url][align=left|center|right|justify] [tabindex=numar][accesskey=keyCombo] [onfocus=script] [onblur=script] [onselect=script] [onchange=script] [accept=set_caractere] [core] [international][events]>

<input type=button name=Buton value=Buton> Buton personalizat <input type=checkbox name=nume value=valoare> Checkbox

File hidden Elemente ascunse Image Password Radio Submit Text

<input type=file name=nume value=valoare> <input type=hidden name=nume value=valoare> <input type=image name=Buton src=poza.gif> <input type=password name=nume value=valoare> <input type=radio name=nume value=valoare> <input type=submit name=Trimite value=Trimite> <input type=text name=nume value=valoare>

Tehnologii Web
1.3 Elementul SELECT Acest element este folosit pentru crearea unei liste de optiuni. Fiecare din optiunile din lista reprezinta un element OPTION.
<select [name=nume] [size=latime] [multiple] [disabled] [tabindex=numar] [onfocus=script] [onblur=script][onchange=script] [core] [international] [events]> Elementele din select </select> <option [selected] [disabled] [value=valoare] [core] [international] [events]>Nume</option>

Exemplu
<select name=test> <option value=optiune 1>Optiune 1</option> <option value=optiune 2>Optiune 2</option> <option value=optiune 3>Optiune 3</option> <option value=optiune 4>Optiune 4</option> </select>

sau
<select name=test multiple size=4> <option value=optiune 1>Optiune 1</option> <option value=optiune 2>Optiune 2</option> <option value=optiune 3>Optiune 3</option> <option value=optiune 4>Optiune 4</option> <option value=optiune 5>Optiune 5</option> <option value=optiune 6>Optiune 6</option> </select>

1.4 Elementul TEXTAREA


Element care introde o caseta de text cu mai multe linii.
<textarea [name=nume] [rows=nr_randuri] [cols=nr_coloane] [disabled] [readonly] [tabindex=numar] [onfocus=script] [onblur=script] [onselect=script] [onchange=script] [core] [international] [events]</textarea>

Exemplu
<textarea name=nume cols=40 rows=10>Text initial</textarea>

Tehnologii Web

Exemplu de formular
<form action="formular.php" method="post"> Nume: <input type="text" name="nume" value="" size=60 maxLength=15> <br><br> Prenume: <input type="text" name="prenume" value=""> <br><br> Varsta: > 18 <input type="radio" name="varsta" value="sub16"> | > 18 <input type="radio" name="varsta" value="peste16"> <br><br> Parola: <input type="password" name="parola" value=""> <br><br> <input type="submit" name="Trimite" value="Trimite"> <input type="reset" name="Reseteaza" value="Reseteaza"> </form>

2. Prelucrarea datelor din formular Pentru a trimite la server valorile introduse de client, trebuie sa definim elementul action si elementul method al unui FORM. In elementul action se introduce calea catre fisierul PHP care prelucreaza datele iar in method se specifica metoda care va fi folosita pentru trimiterea datelor atunci cand se apasa butonul Submit. Exista doua metode: POST GET Transmisia se face transparent fata de utilizator Datele introduse in formular sunt trimise sub forma unui Query String in URL

Tehnologii Web
Pentru a acessa valorile introduse in formular folosim variabila predefinita $_POST
<?php echo 'Nume: '.$_POST['nume'].' <br> Prenume: '.$_POST['prenume'].' <br> Varsta: '.$_POST['varsta'].' <br> Parola: '.$_POST['parola'].' <br>'; ?>

Elementele tabloului $_POST pot fi accesate prin specificarea cheii, care este chiar numele elementului din formular a carui valoare dorim sa o extragem. Utilizarea metodei GET este similara, cu mentiunea ca se utilizeaza variabila predefinita $_GET. Este recomandata utilizarea metodei POST. 3. Validarea datelor trimise intr-un formular Desi este indicat ca verificarea datelor introduse sa se faca la client printr-un JavaScript, pentru a nu solicita inutil serverul, acest lucru poate fi facut si in PHP.
<?php if(($_POST['nume'] == "") || (is_numeric($_POST['nume'])) || (strlen($_POST['nume']) < 5)) { echo 'Campul nume nu a fost completat corect. <br> <a href="formular.html">Apasati aici</a> pentru a reveni in formular.'; } else { echo 'Nume: '.$_POST['nume'].' <br> Prenume: '.$_POST['prenume'].' <br> Varsta: '.$_POST['varsta'].' <br> Parola: '.$_POST['parola'].' <br>'; } ?>

4. Interactiunea cu o baza de date MySQL

4.1 Conectarea la o Baz de Date Procesul de instalare a unei baze de date MySQL difer de la o platform la alta. Pentru conectarea la baza de date este nevoie de un nume, un cont si o parola. Folosind phpMyAdmin baza de date poate fi gestionata folosind o interfata web.

Tehnologii Web
Prima etapa este reprezentata de crearea unei baze de date. Ea este alcatuita din tabele care, la randul lor, sunt formate din inregistrari dispuse in campuri. Un exemplu de baza de date este

4.2 Crearea unei Tabele O tabel este o seciune a bazei de date pentru memorarea unor informaii structurate (legate). Intro tabel vom defini diferite cmpuri. Crearea unei tabele n PHPMyAdmin este simpl, se introduce numele si se selecteaza numarul de campuri. Urmeaza crearea cmpurilor pentru tabela.

4.3 Cmpuri Exist o larg varietate de cmpuri i de atribute disponibile n MySQL i vom discuta doar cteva din ele: Tipul cmpului Descriere TINYINT Numr Intreg mic SMALLINT Numr Intreg mic MEDIUMINT Numr Intreg INT Numr Intreg VARCHAR Text (maximum 256 caractere) TEXT Text Acestea sunt doar cteva dintre cmpurile disponibile. O prima adaugare in orice baza de date, este bine sa fie un camp cu numele id, de tip INT, cu optiunea auto_increment activata, si cu atributul primary.

Tehnologii Web
Continuand exemplul se introduc pe rand campurile: nume , prenume , varsta. Ca Tip pentru aceste 3 intrari, se selecteaza CHAR, iar in coloana Length/Values se specifica numarul de maxim de caractere din care poate fi alcatuita o inregistrare.

La apasarea butonului Save, Aplicatia phpMyAdmin va genera tabela si va afisa comanda SQL corespunzatoare.

Dupa crearea tabelei putem utiliza meniul de navigare pentru a executa diverse operatii pe aceasta.

4.4 Conectarea la MySQL folosind PHP Dupa initializarea bazei de date urmeaza conectarea la baza de date, citirea/stergerea/modificarea inregistrarilor cu ajutorul scripturilor PHP. Intr-un director aflat in radacina serverului web se creaza un fisier cu numele config.php cu urmatorul cod:
<?php // Informatii baza de date $AdresaBazaDate = "localhost"; $UtilizatorBazaDate = "root"; $ParolaBazaDate = "parola_mysql"; $NumeBazaDate = "tutorial"; $conexiune = mysql_connect($AdresaBazaDate,$UtilizatorBazaDate,$ParolaBazaDate) or die("Nu ma pot conecta la MySQL!"); mysql_select_db($NumeBazaDate,$conexiune) or die("Nu gasesc baza de date!"); ?>

Tehnologii Web
SELECT Instructiunea SQL SELECT se foloseste pentru extragerea informatiilor din baza de date. Se creaza un nou fisier PHP cu urmatorul cod:
<?php require_once('config.php'); // Selectare dare din baza de date $cerereSQL = 'SELECT * FROM `formular`'; $rezultat = mysql_query($cerereSQL); while($rand = mysql_fetch_array($rezultat)) { echo $rand['nume'].<br>; } ?>

Prima linie din script contine functia require_once, functie care include, o singura data, in pagina extragere_date.php pagina config.php; adica datele din config.php vor fi transmise in pagina noastra.
$cerereSQL = 'SELECT * FROM `formular`';

In aceasta linie avem variabila $cerereSQL cu valoarea cererii SQL pentru a extrage datele din tabela formular. Ea se interpreteaza cam asa: SELECTEAZA tot DIN formular.
$rezultat = mysql_query($cerereSQL);

In aceasta linie avem variabila $rezultat cu valoarea functiei mysql_query, functie care realizeaza deschiderea conexiunii.
while($rand = mysql_fetch_array($rezultat)) { echo $rand['nume']; }

In aceasta parte de cod observam bucla while, care itereaza prin toate inregistrarile obtinute in urma interogarii.
echo $rand['nume'];

In acest echo apar valorile coloanei nume din tabelul formular. Pentru a afisa toate informatiile modificam aceasta ultima instructiune in
echo $rand['nume'].' '.$rand['prenume'].' '.$rand['varsta'].' <br>';

Sintaxa comenzii SQL SELECT este foarte complexa


SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr, ... [INTO OUTFILE 'file_name' export_options | INTO DUMPFILE 'file_name'] [FROM table_references [WHERE where_definition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_definition]

Tehnologii Web
[ORDER BY {col_name | expr | position} [ASC | DESC] , ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [FOR UPDATE | LOCK IN SHARE MODE]]

De exemplu pentru a selecta doar inregistrarea in care valoarea nume este egala cu Ionescu folosim instructiunea
SELECT * FROM formular WHERE nume="Ionescu"

INSERT Instructiunea SQL INSERT este utilizata pentru adaugarea de inregistrari in baza de date. De exemplu:
<?php require_once('config.php'); $cerereSQL = "INSERT INTO `formular` (`nume` , `prenume`, `varsta`) VALUES ('Limonada', 'Georgescu', '30 ani')"; mysql_query($cerereSQL); echo 'Am adaugat valorile in baza de date'; ?>

UPDATE Instructiunea UPDATE este utilizata pentru modificarea datelor existente intr-o baza de date. De exemplu:
<?php require_once('config.php'); $cerereSQL = "UPDATE `formular` SET nume='Pepsi', prenume='Ion' WHERE nume='Limonada' "; mysql_query($cerereSQL); echo 'Am modificat valorile'; ?>

DELETE Instructiunea DELETE se utilizeaza pentru a sterge datele existente in baza de date. De exemplu:
<?php require_once('config.php'); $cerereSQL = "DELETE FROM `formular` WHERE nume='Pepsi'"; mysql_query($cerereSQL); echo 'Am sters inregistrarea'; ?>

Exercitii 1. Realizati un formular simplu cu trei campuri si salvati informatia intr-o baza de date.

Tehnologii Web

2. Realizati un script PHP care redirecteaza utilizatorii. Indicatie: folositi functia header
header( 'Location: http://www.google.ro ');

Bibliografie 1. Conf.dr.Cristina Mndruta, Programare in Web, Note de curs. 2. Cristina Mndru, Arhitecturi, Tehnologii si Programare in Web, Matrix Rom Bucuresti 2005 3. Sabin Corneliu Buraga, Tehnologii Web, Matrix Rom, Bucuresti 2001 4. PHP website, http://ro.php.net/ 5. Valentin Ivascu, Initiere in PHP si MySQL