Tehnologia PHP
1 Modelul
client-server. Pagini Web interactive
PHP use un acronim care provine din
"Hypertext Preprocessor" si este un limbaj de scripting, realizat si distribuit
in sistem Open Source, special realizat pentru a dezvolta aplicatii web, prin
intregarea codului PHP in documente HTML.Sintaxa sa provine din C, Java si Perl
si este usor de invatat. Scopul principal al limbajului este acela de a scrie
rapid pagini web dinamice si ofera suport pentru manipularea bazelor de date de
tip SQL (dBase, Informix, MySQL, mSQL, Oracle, PostgreSQL, Solid, Sybase, ODBC,
etc) cat si acces la sisteme hipermedia. De asemenea, PHP suporta incarcarea
fisierelor de pe calculatorul client, operatie cunoscuta sub numele de upload
si ofera suport pentru cookies.
Aceasta
aplicatie este disponibila, grutuit, pe Internet, pentru medii Unix cat si
pentru medii Windows, integrandu-se in serverul Apache.
PHP-ul
este facut public in anul 1995 sub
denumirea de Personal Home Page Tools, fiind considerat un analizator simpist
ce puteau fi incluse in cadrul documentelor HTML, permitand contorizarea
accesului la pagini.
Limbajul
PHP are, de asemenea, suport pentru diverse servicii server, utilizand
protocoale precum IMAP, SENMP, NNTP, POP3 si HTTP. Paginile HTML sunt de tip static , adica
informatiile prezentate in aceste pagini sunt indice pentru toti vizitatorii,
fiind simple pagini de prezentare.
World
Wide Web (retea globala) este o retea globala de calculatoare care comunica intre ele printr-un protocol de
retea numit HTTP (HyperText Transfer Protocol). World Wide Web a aparut la
Centru European de Fizica Nucleara (CEFN) apoi s-a raspandit rapid pe Internet.
WWW apare ca o colectie de informatii structurate sub forma de documente Web
sau pagini Web. Mai multe pagini Web, organizate ierarhic, formeaza un site.Site-ul reprezinta un ansamblu de
pagini Web, intre care sunt definite legaturi, astfel incat, pornind de la o
prima pagina a carei adresa reprezinta
adresa site-lui, este posibila navigarea prin toate paginile acestuia.
TCP/IP
(Transfer Control Protocol / Internet Protocol) este protocolul prin care se
face transmisia datelor in Internet
HTTP
este protocolul folosit pentru transferul informatiilor din cadrul paginilor
Web si anume, a HyperTextului. O cerere HTTP contine un URL dar si alte
informatii.
Paginile Web sunt de fapt documente, fisiere, cu un
format special ce au extensia HTML.
HTML
(HyperText Markup Language) este vazut ca un limbaj de realizare a
hypertextului.
JavaScipt
este un limbaj de scriptare a carui sintaxa seamana, intr-o oarecare masura, cu
cea a limbajelor C, C++, Pascal, Java sau Delphi, dar care are anumite
particularitati care il fac sa se deosebeasca esential de orice alt limbaj de
programare. Limbajul JavaScipt este un limbaj bazat pe obiecte, adica un
limbaj orientat obiect ce contine
obiecte predefinite.
In
sfarsit, JavaScript este un limbaj
independent de platforma pe care ruleaza, adica un acelasi script va putea fi
executat sub Unix, Maclntosh sau Windowos fara a fi necesara prezenta unui
emulator sau efectuarea anumitor modificari.
2
Prezentarea aplicatiei
Aplicatia Biblioteca este o aplicatie Web care poate usura si
eficientiza munca depusa de catre un bibliotecar in activitatea de gestionare a
cartilor, cititorilor si imprumuturilor
care se desfasoara in cadrul unei biblioteci. Mai mult, cititorii au oricand
acces la informatiile din baza de date privind existenta in biblioteca a unor carti de care au nevoie.
Iata care sunt cele mai importante
functionalitati pe care aplicatia Biblioteca le pune la dispozitia administratorului
aplicatiei, bibliotecarilor si a cititorilor:
● gestiunea conturilor de bibliotecari
prin intermediul contului de administrator;
● posibilitatea inregistrarii de carti
in biblioteca;
● posibilitatea gestionari imprumuturilor;
● posibilitatea stergerii unei carti
din biblioteca;
● posibilitatea inregistrarii cititorilor
in baza de date;
● posibilitatea accesarii bazei de
date de catre cititori cu scopul doar de documentare.
Practic un utilizator logat ca bibliotecar
poate modifica:
○ datele
cartilor (stergere,inregistrare)
○ datele
imprumuturilor (modificare stare carte)
○ datele
cititorilor (inregistrare, stergere)
Un utilizator logat ca cititor poate sa
acceseze datele din baza de date cu privire la carti (autor, titlul si domeniul)
fara posibilitatea de modificare a datelor.
Principalele
tehnologii utilizate pentru implementarea aplicatiei
Biblioteca sunt:
● HTML (HyperText Markup
Language)- pentru implementarea interfetei utilizator;
● limbajul de scripting PHP
(Hypertext Processor)- pentru implementarea functionalitatilor aplicatiei.
Aplicatia
Biblioteca ofera
o interfata "prietenoasa" si "aerisita", venind in sprijinul utilizatorului care doreste sa termine ceea ce are de facut ?????? (nu e
academic!) in cat mai scurt timp si cu eficienta maxima. In functie de
tipul de utilizator, acestuia nu ii sunt oferite decat informatiile si
functionalitatile de care are nevoie.
3 Structura aplicatiei
Aplicatia Biblioteca este structurata pe patru nivele, fiecarui
nivel corespunzandu-i cate un modul important al aplicatiei:
●
autentificare-contine
modulul de autentificare;
●
administrator- contine modulul administrator;
● bibliotecar-contine
modulul bibliotecar;
●
cititor- contine
modulul cititor;
In ceea ce priveste structura logica a
aplicatiei, cele patru module enuntate mai sus comunica intre ele ,
unidirectional, dupa cum se poate vedea in figura de mai jos:
Fig. 1. Titlu
Pentru ca un utilizator sa foloseasca
modulul admin, modulul bibliotecar sau modulul cititori, el trebuie mai intai
sa se autentifice folosind un cont de administrator sau de bibliotecar. De asemenea,
modulele bibliotecar si cititori depind de setarile facute la nivelul modulului
administrator iar modulul cititori depinde si de setarile facute la nivelul
modulului bibliotecar.
4
Interfata Logare"
Pentru rularea aplicatiei programul cere in
pagina principala identificarea utilizatorului. Aceasta se face cu ajutorul
unui formular in care se introduce numele utilizatorului si parola. Codul HTML
care genereaza pagina de logare este:
<html>
<body bgcolor= > <center> <table width= cellspacing= cellpadding= border= align='center' style='border:1px solid #666666; background:#0F8ABA'> <tr> <td valign='top' > <h1 align='center'>APLICATIE BIBLIOTECA - LOGARE ADMINISTRATOR</h1> <form action='index.php' method='post'> <table align='center' > <tr> <td align='right'>Username</td> <td><input type='text' name='admin_username'></td> </tr> <tr> <td align='right'>Parola</td> <td><input type='password' name='admin_password'></td> </tr> <tr> <td> </td> <td > <input type='submit' name='submit_login' value='LOGIN'> </td> </tr> </table> </form> </html>
Interfata utilizator pentru pagina de logare la baza de
date este prezentata mai jos:
Fig.
2. Interfata de conectare ca administrator
Scriptul care prelucreaza acest formular se numeste index.php iar codul sursa al sau este: <? session_start(); if ($handle = opendir('../smarty_dirs/templates_c')) }
closedir($handle);
include_once('../lib/db.php'); $cale_catre_smarty='../'; include_once('../lib/smarty.php'); $db=new db(); $smarty->assign(array('title' => 'Administrare generala', 'page_body' => 'administrare/root/home.htm',
'page_header' => 'administrare/root/page_header.htm',
'header_stanga' => 'administrare/root/header_stanga.htm',
$sections = array('gestiune_carti' => 'gestiune_carti/index.php', 'gestiune_utilizatori' => 'gestiune_utilizatori/index.php',
'imprumuturi' => 'imprumuturi/index.php',
'gestiune_carti_pierdute' => 'gestiune_carti_pierdute/index.php',
if(isset($_POST['submit_login'])) else
if(isset($_GET['action'])) if($_SESSION['admin']['admin_id']) else $smarty->assign(array('title' => '', 'page_body' => 'administrare/home.htm',
'page_header' => '',
'header_stanga' => ''));
if(!isset($nu_mai_afisa_template_index)) ?> In cazul in care username-ul sau parola nu au fost corecte utilizatorul este avertizat printr-un mesaj de eroare:"Logare esuata"
Daca logarea a fost realizata cu succes atunci se da acceptul intrarii in aplicatie si se trece la pagina principala cu meniuri.
Pagina de meniuri cuprinde opt meniuri si butonul de "Logaut":
Gestiune carti Inregistrare carti Gestiune utilizatori Iregistrare utilizatori Imprumuturi Carti pierdute/casate ◦ Gestiune amenzi ◦ Statistici
Fig. 3. Titlu
Interfata "Gestiune carti" Gestiunea cartilor din biblioteca presupune realizarea a doua activitati: adaugare carte in inventarul bibliotecii cautare carte atunci cand este solicitata Aceste operatii se realizeaza prin intermediul a doua formulare.Un formular pentru adaugare carte care este declansat la apasarea butonului "Adaugare carte "si care determina si aparitia campurilor de editare care urmeaza sa fie completate respectiv: Id
carte, Titlul, Autorul, Domeniul cartii, Limba in care e scrisa, Valoare (lei), Locatia, Stare fizica.Al doilea formular pentru cautare carte are urmatoarele campuri editabile, adica se poate face cautare dupa titlul, autor, domeniu si limba. Fiecare formular are si un buton de anulare pentru cazul cand anumite campuri au fost editate gresit. Formularul pentru adaugare carte asigura inregistrarea in baza de date a cartii respective prin apasarea butonului "Adaugare" dupa completarea campurilor:
Fig.
Formularul pentru adaugare carte in gestiunea bibliotecii are urmatoarele
linii de cod:
<form action= method='post' enctype='multipart/form-data'> <table cellpadding= cellspacing= width= align='center' border= > <tr> <td style='text-align:justify; font-size: 12px;' width= > Id carte </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='id_carte' style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Titlu </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='titlu' style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Autor </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='autor' style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Domeniul cartii </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='domeniu' style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Limba in care e scrisa cartea </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='limba' style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Valoare carte (lei) </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='valoare' style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Locatia </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='locatia' style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Stare fizica </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='stare_fizica' style='width:300px'> </td> </tr> <tr> <td colspan= align='center' style='font-size: 12px;'> <input type='submit' id='adauga_section' name='submit_adauga' value='Adaugare'> <a href='index.php?section=gestiune_carti' class='product_show'>Anulare</a> </td> </tr> </table> </form> Metoda folosita de catre formular pentru a transmite datele catre scriptul php este metoda POST.
Scriptul care prelucreaza datele transmise de catre
formular este afisat mai jos:
if($_POST['submit_adauga'])
elseif($_POST['submit_edit'])
elseif($_POST['submit_delete'])
Formularul pentru cautare carti are urmatoarea configuratie:
Fig. 5.
Cautarea unei carti in biblioteca se poate face si numai dupa un singur atribut din cele patru : titlul, autor, domeniul sau limba.In cazul in care o carte nu a fost gasita in baza de date utilizatorul este atentionat cu un mesaj de eroare.
Rezultatele cautarii sunt afisate intr-un tabel care cuprinde toate datele cartii insa mai exista si doua posibilitati: una de modificare a datelor cartii, si cea de a doua de stergere a datelor cartii. Fig. 6. Codul sursa html pentru cautare carte este: <form action= method='get' enctype='multipart/form-data'> <table cellpadding= cellspacing= width= align='center' border= > <tr> <td style='text-align:justify; font-size: 12px;' width= > Titlu </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='titlu' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Autor </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='autor' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Domeniu </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='domeniu' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Limba </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='limba' value= style='width:300px'> </td> </tr> <tr> <td colspan= align='center' style='font-size: 12px;'> <input type='submit' name='cautare' value='Cautare'> <a href='index.php?section=gestiune_carti' class='product_show'>Anulare</a> </td> </tr> </table> Scriptul care prelucreaza datele transmise de catre formular prin metoda GET are codul sursa afisat mai jos $clauza_cautare=''; if($_GET['cautare']) if($_GET['autor']) if($_GET['domeniu']) if($_GET['limba']) } $q='SELECT a.* FROM carti a WHERE 1 '.$clauza_cautare.' order by a.titlu '; $carti=$db->query($q); if($carti) }//end if $smarty->assign(array('carti'=>$carti, ?>
6. Interfata "Inregistrare
utilizatori"
Inregistrarea utilizatorilor in baza de date
presupune completarea unui formular in
care se trec datele despre cititor care sunt introduse in campurile: Numar
permis, Nume, Prenume, Telefon, Loc de munca si Email.La apasarea butonului
"Adaugare cititor" campurile formularului devin editabile. Dupa ce au fost
introduse datele, se apasa butonul submit "Adaugare cititor" si datele despre
cititor sunt introduse in baza de date.De asemenea exista si un buton de reset
pentru anularea datelor introduse gresit.
Formularul pentru inregistrarea cititorilor este
editat mai jos:
Fig. 7.
Liniile de cod html care generaza formularul
"Adaugare cititori" sunt scrise mai jos:
<form action= method='get' enctype='multipart/form-data'> <table cellpadding= cellspacing= width= align='center' border= > <tr> <td style='text-align:justify; font-size: 12px;' width= > Numar permis </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='nr_permis' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Nume </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='nume' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Prenume </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='prenume' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Telefon </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='telefon' value= style='width:300px'> </td> </tr> <tr> <td colspan= align='center' style='font-size: 12px;'> <input type='submit' name='cautare' value='Cautare'> <a href='index.php?section=gestiune_utilizatori' class='product_show'>Anulare</a> </td> </tr> </table> <input type='hidden' name='section' value='gestiune_utilizatori' > </form> Scriptul care primeste datele transmise de formularul "Adaugare cititori" sunt scrise mai jos:
if($_POST['submit_adauga'])
elseif($_POST['submit_edit'])
if($_GET['page'] == 'adauga')
elseif($_GET['page'] == 'edit')
elseif($_GET['page'] == 'delete')
Pentru cautarea unui cititor in baza de date
se completeaza formularul "Cautare cititori" format din patru campuri: Numar
permis, Nume, Prenume si Telefon. Se poate face cautare si dupa un singur camp.
In cazul in care un cititor nu a fost gasit in baza de date utilizatorul este
avertizat printr-un mesaj.
Interfata formularului cu utilizatorul este:
Fig. 8.
Codul formularului in html este:
<form action= method='get' enctype='multipart/form-data'> <table cellpadding= cellspacing= width= align='center' border= > <tr> <td style='text-align:justify; font-size: 12px;' width= > Numar permis </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='nr_permis' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Nume </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='nume' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Prenume </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='prenume' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Telefon </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='telefon' value= style='width:300px'> </td> </tr> <tr> <td colspan= align='center' style='font-size: 12px;'> <input type='submit' name='cautare' value='Cautare'> <a href='index.php?section=gestiune_utilizatori' class='product_show'>Anulare</a> </td> </tr> </table> <input type='hidden' name='section' value='gestiune_utilizatori' > </form></div>
Scriptul care prelucreaza datele trimise de
formularul de cautare cititori prin metoda GET este:
$clauza_cautare='';
if($_GET['cautare'])
if($_GET['prenume'])
if($_GET['telefon'])
if($_GET['email'])
$q='SELECT
a.*
FROM utilizatori a
WHERE 1
'.$clauza_cautare.'
order by a.nume, a.prenume ';
$utilizatori=$db->query($q);
if($utilizatori)
}//end
if
$smarty->assign(array('utilizatori'=>$utilizatori,
))
?>
7. Interfata "Gestiune imprumuturi"
Pentru operatiile de imprumut de carte care
se desfasoara in cadrul bibliotecii a fost nevoie sa introducem trei elemente:
♦
efectuare imprumut nou
♦
cautare imprumut
♦
imprumuturi finalizate
Primul element se refera la efectuarea unui
imprumut nou.Aceasta operatie se realizeaza cu ajutorul unui formular care are
campurile: Numar permis, Id_carte, Data imprumut si Data restituirii. Primele
doua campuri din formular sunt de tip meniu derulant. Data imprumut si data
restituirii sunt de tip data de forma: AAAA-LL-ZZ. Dupa completarea campurilor
formularului pentru inregistrarea in baza de date a operatiei de imprumut se
apasa butonul submit "Salvare imprumut" si astfel datele sau salvat in baza de
date.
Formularul care realizeaza inregistrarile imprumuturilor
este:
Fig. 9.
Codul html care generaza acest formular este:
<form action= method='post' enctype='multipart/form-data'> <table cellpadding= cellspacing= width= align='center' border= > <tr> <td style='text-align:justify; font-size: 12px;' > Numar permis </td> <td style='text-align:justify; font-size: 12px;' > <select name='nr_permis' onchange='window.location.href='index.php?section=imprumuturi&page=adauga&nr_permis='+this.value'> <option value= >---Alegeti numarul de permis---</option> <option value= >000001 Ciurea Catalin </option> <option value= >000002 Georgescu Ion </option> </select> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' width= > Id carte </td> <td style='text-align:justify; font-size: 12px;' > <select name='id_carte' > <option value= >0 (de )</option> <option value= >19444 Codul lui DaVinci(de Brown)</option> <option value= >12433 La cirese(de Ion Creanga)</option> <option value= >7833 Poezii(de Mihai Eminescu)</option> <option value= >1256 Povestiri de pe Eufrat(de )</option> </select> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Data imprumut </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='data_imprumut' value= style='width:100px'> (an-luna-zi) ex: 2008-03-22 </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Data resitiuirii </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='data_restituirii' value= style='width:100px'> (an-luna-zi) ex: 2008-03-22 </td> </tr> <tr> <td colspan= align='center' style='font-size: 12px;'> <input type='submit' id='adauga_section' name='submit_adauga' value='Salvare imprumut'> <a href='index.php?section=imprumuturi' class='product_show'>Anulare</a> </td> </tr> </table> </form>
Scriptul care
prelucreaza datele trimise de formular are urmatorul cod:
if($_POST['submit_adauga'])
elseif($_POST['submit_delete'])
if($_GET['page'] == 'adauga')
Cel de al doilea element se refera la cautare imprumut care este
realizat cu un formular cu doua campuri: Id_carte si Numar permis. In cazul in
care valoarea din unul din cele doua campuri este gresita utilizatorul este
avertizat ca nu exista imprumuturi. Daca valorile sunt corecte atunci se
afiseaza un tabel in care se regasesc datele complete ale imprumutului
solicitat.
Formularul pentru efectuarea de cautari a imprumuturilor
este:
Fig. 10.
Codul sursa care creaza formularul de mai sus scris in limbajul html
este:
<form action= method='get' enctype='multipart/form-data'> <table cellpadding= cellspacing= width= align='center' border= > <tr> <td style='text-align:justify; font-size: 12px;' width= > Id carte </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='id_carte' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Numar permis </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='nr_permis' value= style='width:300px'> </td> </tr> <tr> <td colspan= align='center' style='font-size: 12px;'> <input type='submit' name='cautare' value='Cautare'> <a href='index.php?section=imprumuturi' class='product_show'>Anulare</a> </td> </tr> </table> <input type='hidden' name='section' value='imprumuturi' > <input type='hidden' name='finalizate' value= > </form> Prelucrarea datelor este realizata de scriptul urmator:
$clauza_cautare='';
if($_GET['cautare'])
if($_GET['nr_permis'])
$q='SELECT *
FROM imprumuturi a, carti b,
utilizatori c '.$clauza_finalizare.'
and
a.id_carte = b.id_carte and a.nr_permis=c.nr_permis
'.$clauza_cautare.'
order by
a.data_imprumut desc ';
$imprumuturi=$db->query($q);
if($imprumuturi)
}//end if
Formularul de cautare este un formular
anterior celui de finalizare in sensul ca nu sunt operate cartile care nu au
fost restituite. In cazul in care un cititor aduce o carte pe care o are
imprumutata operatia trebuie sa fie confirmata aceasta operatie realizandu-se printr-o casuta de dialog. De asemenea
cititorii care au pierdut din diferite motive o carte acestia vor plati o
amenda care va fi formata valoric din contravaloarea cartii plus o suma fixa de
20 lei. Tot aici intalnim si situatia cand un cititor vrea sa imprumute mai
multe carti numarul maxim de carti imprumutate fiind de trei.
Cel de al treilea element se refera la
imprumuturile finalizate. Aceasta operatie de finalizare se realizeaza prin
afisarea unui tabel cu toate imprumuturile care au fost finalizate adica in
sesul ca data restituiri cartilor a fost completata. Formularul arata in felul
urmator:
Fig. 11.
Formularul scris in codul HTML care creaza pagina de "Finalizare imprumut" se gaseste mai jos: <form action= method='get' enctype='multipart/form-data'> <table cellpadding= cellspacing= width= align='center' border= > <tr> <td style='text-align:justify; font-size: 12px;' width= > Id carte </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='id_carte' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Numar permis </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='nr_permis' value= style='width:300px'> </td> </tr> <tr> <td colspan= align='center' style='font-size: 12px;'> <input type='submit' name='cautare' value='Cautare'> <a href='index.php?section=imprumuturi' class='product_show'>Anulare</a> </td> </tr> </table> <input type='hidden' name='section' value='imprumuturi' > <input type='hidden' name='finalizate' value= > </form></div> <br > <table border= cellspacing= cellpadding= class='anunturi_table' width= > <tr > <td style='font-size:14px'>Titlu</td> <td style='font-size:14px'>Cititor</td> <td style='font-size:14px'>Data imprumut</td> <td style='font-size:14px'>Data restituirii</td> <td colspan= > </td> </tr> <tr> <td > <a href='index.php?section=gestiune_carti&page=edit&id_carte=1256' >1256</a> Povestiri de pe Eufrat</td> <td ><a href='index.php?section=gestiune_utilizatori&page=edit&nr_permis=000002' >000002</a> Georgescu Ion</td> <td >2009-01-11</td> <td >0000-00-00</td> <td width= align='center'> <a href='index.php?section=imprumuturi&page=finalizare&id_imprumut=5' class='product_edit' onclick='return confirm('Confirmati inapoierea cartii Povestiri de pe Eufrat ?')'>termin imprumutul</a> </td> <td width= align='center'> <a href='index.php?section=imprumuturi&page=pierdere&id_imprumut=5' class='product_delete' onclick='return confirm('Confirmati pierderea cartii Povestiri de pe Eufrat ? nr Georgescu Ion trebuie sa plateasca o amenda de 70 lei! ')'>carte pierduta</a> </td> </tr> <tr> <td > <a href='index.php?section=gestiune_carti&page=edit&id_carte=12433' >12433</a> La cirese</td> <td ><a href='index.php?section=gestiune_utilizatori&page=edit&nr_permis=000001' >000001</a> Ciurea Catalin</td> <td >2008-12-10</td> <td >2008-12-20</td> <td width= align='center'> <a href='index.php?section=imprumuturi&page=finalizare&id_imprumut=1' class='product_edit' onclick='return confirm('Confirmati inapoierea cartii La cirese ?')'>termin imprumutul</a> </td> <td width= align='center'> <a href='index.php?section=imprumuturi&page=pierdere&id_imprumut=1' class='product_delete' onclick='return confirm('Confirmati pierderea cartii La cirese ? nr Ciurea Catalin trebuie sa plateasca o amenda de 32 lei! >carte pierduta</a> </td> </tr> </table> </td> </tr> </table> </center> </body> </html> 8 Interfata "Gestiune carti pierdute/casate" In cadrul acestui modul utilizatorul stocheaza intr-un tabel al bazei de date informatiile despre cartile pierdute.Tabelul cuprinde campurile: Id-carte, Titlul, Autor, Domeniul, Cititor, Telefon, Amenda. In acelasi timp aplicatia ne da posibilitatea sa efectuam si o cautare a unei carti pierdute.Tot aici se poate afla si datele cititorului care a pierdut cartea facand clik pe linkul "Numar permis" din campul Cititori. Interfata utilizator este urmatoarea: Fig. 12.
form action= method='get' enctype='multipart/form-data'> <table cellpadding= cellspacing= width= align='center' border= > <tr> <td style='text-align:justify; font-size: 12px;' width= > Titlu </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='titlu' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Autor </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='autor' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Domeniu </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='domeniu' value= style='width:300px'> </td> </tr> <tr> <td style='text-align:justify; font-size: 12px;' > Numar permis </td> <td style='text-align:justify; font-size: 12px;' > <input type='text' name='nr_permis_cititor' value= style='width:300px'> </td> </tr> <tr> <td colspan= align='center' style='font-size: 12px;'> <input type='submit' name='cautare' value='Cautare'> <a href='index.php?section=gestiune_carti_pierdute' class='product_show'>Anulare</a> </td> </tr> </table> <input type='hidden' name='section' value='gestiune_carti_pierdute' > </form></div> <br > <table border= cellspacing= cellpadding= class='anunturi_table' width= > <tr > <td style='font-size:14px'>Id carte</td> <td style='font-size:14px'>Titlu</td> <td style='font-size:14px'>Autor</td> <td style='font-size:14px'>Domeniu</td> <td style='font-size:14px'>Cititor</td> <td style='font-size:14px'>Telefon</td> <td style='font-size:14px'>Amenda platita</td> </tr> <tr> <td >12845</td> <td >Ion</td> <td >Liviu Rebreanu</td> <td >beletristica</td> <td ><a href='index.php?section=gestiune_utilizatori&page=edit&nr_permis=000001'>000001</a> Ciurea Catalin</td> <td >0248/217455</td> <td >36 lei</td> </tr> </table> </td> </tr> </table> </center> </body> </html> Scriptul care prelucreaza datele introduse in formularul care stocheaza datele despre cartile pierdute este urmatorul:
<?
$smarty->assign(array(
'page_body' => 'administrare/gestiune_carti_pierdute/index.htm'));
if($_POST['submit_delete'])
if($_GET['page'] ==
'adauga')
elseif($_GET['page']
== 'edit')
$clauza_cautare='';
if($_GET['cautare'])
if($_GET['autor'])
if($_GET['domeniu'])
if($_GET['nr_permis_cititor'])
$q='SELECT a.*
FROM carti_pierdute a
WHERE 1
'.$clauza_cautare.'
order by
a.titlu ';
$carti=$db->query($q);
if($carti)
}//end if
$smarty->assign(array('carti'=>$carti,
));
?>
9 Interfata "Gestiune amenzi"
In aceasta interfata
"Gestiune amenzi" avem un singur butonul "Afisarea amenzi"si tabelul "Alege
cititorul caruia ii dai amenda" ,in momentul cand dai clic pe buton iti apare
tabelul "Amenzi pentru carti pierdute" care este format din sapte campuri si
anume:titlu,autor,domeniu,limba,amenda,valoare si numele celui care a pierdut
cartea.
Formularul pentru
efectuatea amenzi arata astfel
Fig. 13.
Fig. 1
Interfata "Statistici"
Aceasta interfata contine trei tabele si
anume
cele mai imprumutate carti" contine cinci campuri:numar imprumut, id carte, titlu,
autor, domeniu si imprumutata.
Tabelul arata
astfel:
"cititori cei mai fideli" contine sapte campuri si anume:numar imprumut,numar
permis,nume,prenume,telefon,loc de munca si email si are urmatoarea interfata:
"lunile/anii
cu cele mai multe imprumuturi", are trei campuri: an, luna si numar imprumuturi si are urmatorul
tabel:
Concluzii
Fiind o lucrare de baze de date notiunile abordate
sunt cele care formeaza fundamentele bazelor de date. Astfel in primul capitol
sunt prezentate notiunile generale privind crearea bazelor de date si a elementelor
componente.
Capitolul doi abordeaza crearea bazei Bibiloteca cu
atributele fiecarei relatii in parte, cardinalitatea dintre relatii, normalizarea
bazei de date precum si realizarea diagramei Entitate-Relatie.
Capitolul trei cuprinde notiuni elementare
despre limbajul SQL si prezinta instructiunile folosite pentru crearea relatiilor
bazei de date, a tipurilor de date si a constrangerilor din cadrul relatiilor.
Ultimul capitol al lucrarii prezinta aplicatia
cu toate elementele sale componente. Concret sunt prezentate interfetele utilizator
precum si codurile sursa, atat codul html folosit pentru generarea
formularelor, cat si codurile PHP din spatele scripturilor care prelucreaza
datele formularelor.
Mentionez ca si componenta originala a
lucrarii introducerea unei facilitati folositoare si binevenita, tinand cont
atat de diversitatea documentarii cat si de ritmul alert de creare si
circulatie a informatiilor.
In acest sens baza de date Biblioteca ofera
posibilitatea accesarii anumitor date de catre cititori care sunt atat abonati ai
bibliotecii (cu permis de imprumut) cat si a tertilor. Accentuez ca acesti
cititori pot sa acceseze date cu privire la cartile bibliotecii (autor, titlul,
domeniul) si pot sa se informeze daca o anumita carte pe care o cauta exista in
biblioteca, sau pot sa listeze toate cartile existente in biblioteca care apartin
unui anumit domeniu de care sunt interesati.
Astfel fara a se apela la serviciile
bibliotecarului, aceste actiuni de informare se realizeaza intr-un timp mai
scurt ducand evident la o eficientizare a procesului de documentare si
informare.