Sunteți pe pagina 1din 11

Întocmit: Slt.

ROMANIUC Alexandru-Gabriel
Centrul de instruire pentru
Tehnologia Informației și Apărare Cibernetice
Email address: romaniuc_alexandrugabriel@yahoo.com

CURS 6 – Interactiunea PHP cu MySQL-Optiunea 2 (Formular)

Pe platforma Moodle am incarcat deja un model de proiect in care


am realizat interactiunea dintre template si o baza de date utilizand
limbajul de programare PHP. Daca navigam prin template-ul Bibliotecii
Astra incarcat de mine, observam faptul ca meniul acestui template
este compus din 6 optiuni.
Prima optiune denumita Acasa, reprezinta pagina de inceput a
Bibliotecii, in care sunt prezentate doar cateva detalii/informatii
legate de Biblioteca Astra din Sibiu. Aceeasi sarcina o aveti si voi,
sa modificati meniul template-ului vostru astfel incat acesta sa
contina 6 optiuni (Sarcina1). Totodata va trebui sa
modificati/traduceti continutul primei optiuni, Acasa, astfel incat
acesta sa formeze o imagine de ansamblu a paginii voastre Web.
Pentru realizarea interactiunii dintre un site Web si o baza de
date, va trebui ca mai intai sa ne stabilim un nume pentru baza noastra
de date. Fiecare dintre dumneavoastra, a primit un template cu o
anumita tematica, va trebui sa va ganditi la un nume pentru baza de
date care sa se potriveasca cu tematica site-ului Web pe care l-ati
primit. Pe platforma moodle am incarcat un exemplu de proiect,
tematica acelui proiect o reprezinta Biblioteca Astra din Sibiu. Prin
urmare, am stabilit ca pentru acel template, sa creez o baza de date
denumita “biblioteca” care va fi utilizata de site-ul Web al
Bibliotecii pentru a elibera permise de acces in biblioteca. Prin
urmare baza de date pe care o sa o asociez/atribui site-ului Web al
Bibliotecii este denumita “biblioteca”.
In continuare, va trebui sa stabiliti scopul site-ului/template-
ului pe care l-ati primit, este foarte important sa ii asociem un scop
site-ului web pe care l-ati primit. De exemplu, pentru template-ul
incarcat de mine, si anume Biblioteca Astra din Sibiu, am stabilit ca
scopul acestui site Web sa fie crearea de permise de acces in
biblioteca. Acum ne gandim in felul urmator, de ce informatii are
nevoie administratorul bibliotecii, de la un utilizator, pentru a
elibera un permis de acces? Pai de exemplu: un ID Permis, Nume,
Prenume, Data nasterii, Sexul, Ocupatie, Adresa, si
Comentariu/Informatii suplimentare. Elementele enumerate de mine mai
sus, vor trebui salvate in baza de date. Acum apare intrebarea, unde
vor fi salvate in baza de date? Ei bine intr-un tabel creat in baza
de date, avand campurile enumerate de mine mai sus. Totodata, trebuie
denumit si tabelul, astfel incat sa se potriveasca cu baza de date,
dar si cu template-ul. De exemplu am denumit tabelul “abonati”.
Asadar, pana acum am realizat urmatoarele lucruri: am definit o
baza de date denumita “biblioteca”, aceasta baza de date contine un
tabel denumit “abonati”, acest tabel are 8 coloane si anume cele
enumerate de mine mai sus. Totul clar pana aici?
Acum ca ne-am stabilit scopul site-ului Web, numele bazei de
date, si tabelul din baza de date in care vom stoca informatiile
introduse de utilizator necesare eliberarii unui permis de acces, va
trebui sa cream suportul prin intermediul caruia, un utilizator
oarecare, poate formula o cerere de eliberare a unui permis de acces
in biblioteca. Acest lucru se va realiza prin intermediul unui
formular si anume facem referire la cea de-a doua optiune a meniului
paginii voastre Web, Formular, avand fisierul formular.html
Prin intermediul celei de-a doua optiune a meniului vostru, un
utilizator care acceseaza pagina Web, respectiv optiunea Formular, va
putea introduce date intr-un formular pentru a-si elibera un permis
de acces in biblioteca. Acum apare urmatoarea intrebare, ce campuri
va contine acel formular? Ei bine, formularul va contine aceleasi
campuri ca ale tabelului din baza de date. Deoarece, datele din
formular, vor fi incarcate in tabelul din baza de date in aceleasi
campuri. De exemplu: in campul Nume din formularul site-ului Web al
bibliotecii Astra din Sibiu, creat de mine, utilizatorul va introduce
un nume, de exemplu Popescu Ion. In ce camp al tabelului din formular,
se va stoca acest nume al utilizatorului? Ei bine in campul Nume din
tabel. Deci practic, vorbim aici de o relatie one-to-one intre
formular si tabelul din baza de date. Acest lucru se aplica si pentru
celelalte campuri ale formularului. Formularul din template-ul
incarcat de mine arata ceva de genul:
Vizual, formularul arata ca mai sus…… Sa vedem cum arata acesta
in linie de cod:

In linie de cod, formularul arata ca mai sus, FOARTE IMPORTANT


sa definim corect campurile formularului si aici fac referire la
numele fiecarui camp introduc prin atributul name.
Dupa cum putem observa in liniile de cod ale formularului, s-a
definit mai multe campuri, de diferite tipuri, option menu, simple-
text, etc.
Fiecare camp in parte are inserat atributul name, unde, rolul
acestuia este de a defini numele “variabilei” in care se stocheaza
datele introduse de utilizator. De exemplu, “variabila adresa”
stocheaza adresa introdusa de utilizator. Acest lucru se intampla
pentru fiecare camp in parte.
Sa presupunem ca un utilizator completeaza formularul pentru
eliberarea unui permis, acesta introduce toate datele necesare pentru
eliberarea unui permis. Dupa ce face acest lucru, acesta trebuie sa
apese pe butonul Validare. Ce se intampla in momentul in care, acesta
apasa butonul validare?
In momentul in care utilizatorul apasa butonul validare, toate
datele introduse de utilizator sunt preluate de catre un script de
prelucrare, denumit de exemplu, script_prelucrare. Acest scrip are
extensia .php deoarece contine linii de cod in PHP. Mai jos vom vedea
cum arata acest script de prelucrare:

Mai sus, aveti prima parte a codului continut in


script_prelucrare.php
Explicatii:
 Linia 80, se deschide script php
 Liniile 84-91, se declara cateva variabile PHP, care vor prelua
datele intorduce de utilizator in campurile din formular. Acest
lucru se realizeaza prin intermediul sintaxei $_POST, aceasta
sintaxa preia datele salvate in campurile formularului, si le
stocheaza in variabilele PHP declarate. Denumirea variabilelor
PHP poate fi aceeasi cu denumirea variabilelor din formular.
De exemplu $id=$_POST[‘id’]; Dupa cum putem observa, $id este
variabila in PHP, si id este variabila din formular in care s-
a stocat id-ul introdus de utilizator.
 Linia 94, se declara o variabila $eroare care se initializeaza
cu 0. Variabila aceasta este utilizata pentru a verifica daca
utilizatorul a completat toate campurile formularului.
 Liniile 96-101, se foloseste instructiunea if, pentru a
verifica daca, campul denumit id in formular este gol. Daca
este gol, se va afisa mesajul “Nu a-ti completat campul cu ID-
ul studentului”, si utilizatorul va fi intors inapoi la
formular, pentru a completa campul necompletat. Acelasi
algoritm este aplicat pana la linia de cod nr 120 si, pentru
121-134 din imaginea de mai jos.
Imaginea de mai sus reprezinta continuarea scriptului
script_prelucrare.php
Continuam:
 Liniile 136-159, se atribuie o valoare variabilei “ocupatie”
definita in formular. Acest lucru este necesar pentru orice
camp de tipul dropdown-menu. De exemplu, daca in campul
studii din formular, utilizatorul selecteaza optiunea 5,
atunci, optiunii 5 ii corespunde valoarea “Studii
superioare” care se incarca in variabila $ocupatie din php.
Si asa mai departe…
Mai departe, dupa ce s-a testat daca fiecare camp al formularului, a
fost completat de catre utilizator, se afiseaza datele introduse de
utilizator, trebuie sa mentionam faptul ca in acest moment, datele
sunt stocate in variabilele php, $id, $nume si asa mai departe.
Mai departe, dupa ce s-a verificat daca utilizatorul a introdus date
in fiecare camp al formularului si nu a lasat niciunul liber, REALIZAM
CONEXIUNEA LA BAZA DE DATE. Acest lucru se realizeaza in liniile de
cod 191-200 cu urmatoarele explicatii:
Explicaţii:
1. În acest script se va modifica valoarea variabilei
$Parola_Baza_Date cu parola setată a bazei de date (iniţial, în
interfaţa phpMyAdmin, la link-ul Privilegii s-a stabilit o parolă
după care ea a fost specificată şi în fişierul config.php, adică s-a
setat parola în câmpul $ cfg ['Servers'] [$i] ['password'] = ‘’.
În cazul nostru, nu am setat nicio parolă, deci prin urmare, valoarea
variabilei $Parola_Baza_Date rămane deocamdata nulă, adica “ “.
2. Variabila $adresa_baza_date este definită cu valoarea localhost
deoarece aceasta este adresa serverului pe care rulează serviciul
MySQL (serverul Apache+PHP este instalat pe acelaşi calculator ca şi
pachetul MySQL).
3. Variabila $utilizator_baza_date este definită cu valoarea root,
acesta fiind utilizatorul cu toate drepturile de acces asupra bazei
de date, (identificatorul de utilizator MySQL).
4. Variabila $parola_baza_date este definita cu valoarea
corespunzătoare şi este parola MySQL asociată identificatorului de
utilizator.
5. Variabila $conexiune este definită prin invocarea funcţiei
mysql_connect care realizează conectarea la serverul MySQL. Această
funcţie are ca argumente variabilele definite la liniile 194-197.
Funcţia returnează o valoare identificator de legătură care serveşte
ca instrument de manipulare pentru accesul la serverul MySQL.
6. Variabila $nume_baza_date este definită cu valoarea biblioteca,
acesta fiind numele bazei de date asupra căreia se va lucra.
7. Prin invocarea funcţiei mysql_select_db se specifică baza de date
la care scriptul PHP va avea acces în urma obţinerii conexiunii la
server. Funcţia returnează true dacă poate obţine accesul, respectiv
false în cazul eşecului.

Mergem mai departe la linia de cod 215. Dupa ce s-a verificat


daca s-a realizat conexiunea la baza de date, urmeaza adaugarea
datelor preluate din formular, in baza de date. Acest lucru se
realizeaza prin intermediul acestei linii de cod care reprezinta o
comanda SQL.
Explicatii:
 “INSERT INTO ‘abonati’ reprezinta actiunea de inserare in
tabelul abonati a datelor/ valorilor
('$id','$nume','$prenume','$datan','$sex','$ocupatie','$adresa','$co
mentariu')" in campurile (`ID Permis`,`Nume`,`Prenume`,`Dataa
nasterii`,`Sexul`,`Ocupatie`,`Adresa`,`Comentariu`) din tabelul din
baza de date.
Mergem mai departe la linia de cod 218, in care se executa comanda
SQL de adaugare a inregistrarii in tabelul bazei de date.
Dupa ce s-a realizat adaugarea inregistrarii in baza de date,
RECOMANDAT este sa inchidem conexiunea cu baza de date prin
intermediul liniei de cod 221.
In final, se afiseaza 3 mesaje de tipul echo, in care se afiseaza
faptul ca Inregistrarea a fost introdusa cu succes in baza de date.
Explicatii suplimentare

 mysql_connect() = functie pentru deschiderea unei conexiuni MySQL


Database Server. Functia returneaza True daca conexiunea a reusit,
sau False daca nu.
 mysql_close() = functie pentru inchiderea conexiunii cu baza de
date
 mysql_select_db() = functie care returneaza True daca s-a
selectat cu succes baza de date sau, False daca nu s-a selectat cu
succes.

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