Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Baze de date


Index » educatie » » informatica » Baze de date
» Tehnologia PHP


Tehnologia PHP


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>&nbsp;</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'>
&nbsp;&nbsp;&nbsp;
<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'>
&nbsp;&nbsp;&nbsp;
<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'>
&nbsp;&nbsp;&nbsp;
<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'>
&nbsp;&nbsp;&nbsp;
<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'>
&nbsp;&nbsp;&nbsp;
<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'>
&nbsp;&nbsp;&nbsp;
<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'>
&nbsp;&nbsp;&nbsp;
<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= >&nbsp;</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&amp;page=finalizare&amp;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&amp;page=pierdere&amp;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&amp;page=finalizare&amp;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&amp;page=pierdere&amp;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'>
&nbsp;&nbsp;&nbsp;
<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.





Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate