Sunteți pe pagina 1din 25

Ministerul educaţiei al Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea CIM
Departamentul Informatică și Ingineria Sistemelor

Raport
privind practica de producţie

A efectuat :

St.gr.C-172 Bortă Pavel

A verificat : Țurcan Ana

Chişinău 2019
1
Cuprins
1. INTRODUCERE ....................................................................................................................3
2.ELABORARE PRACTICĂ .......................................................................................................7
Scopul si obiectivele sarcinii: ..................................................................................................................... 7
Schema legaturilor intre subdomeniilor domeniului de studiu: ............................................................... 7
3.INTRODUCERE PROGRAMARE WEB ...............................................................................8
HTML ......................................................................................................................................................... 8
Limbaje de Scriptare.................................................................................................................................. 9
PHP ..........................................................................................................................................................10
4.STRUCTURA BAZEI DE DATE ...........................................................................................13
Machetul Bazei de Date ..........................................................................................................................13
Tabelul ”Carti„ .........................................................................................................................................13
Tabelele associate tabelului general .......................................................................................................14
5.STRUCTURA SITE-ULUI ......................................................................................................15
CONCLUZIE ...............................................................................................................................16
BIBLIOGRAFIE: ........................................................................................................................17
Anexă ............................................................................................................................................18

2
1. INTRODUCERE

În cadrul oricărei organizaţii este necesar ca resursa de date să fie bine


definită şi documentată, bine organizată şi controlată, partajabilă şi relevantă
pentru deciziile luate în cadrul organizaţiei.

Sistemul de Gestiune al Bazei de Date (SGBD) reprezintă un pachet de


programe specializat pentru definirea, crearea, întreţinerea şi accesul controlat la
baza de date.

Obiectivul principal al unui SGBD este de a separa datele de programele de


aplicaţie. SGBD constituie o interfaţă între utilizatori şi baza de date şi constă din
programe care interacţionează cu programele de aplicaţie ale utilizatorului şi cu
baza de date. Un SGBD are o structură complexă şi include module program
specializate pentru a îndeplini anumite funcţiuni:

- gestionarea bazei de date;

- definirea datelor (descrierea datelor);

- manipularea datelor (actualizare şi interogarea bazei de date);

- controlul şi securitatea datelor (controlul integrităţii, accesul concurenţial şi


securitatea datelor);

- utilitare.

SGBD trebuie să asigure trecerea de la un nivel de abstractizare la altul,


adică să poată interpreta „comenzile” exprimate în termen de schemă externă,
pentru a le transpune prin intermediul schemei conceptuale în operaţii de intrare-
ieşire la nivel fizic. SGBD gestionează la nivel conceptual un dicţionar de date.
Modulele program de gestiune a bazei de date realizează accesul fizic la date în
conformitate cu cerinţele exprimate printr-o „comandă”. Modulele program de
definirea datelor permit traducerea unui limbaj specializat care realizează
descrierea naturii datelor şi a legăturii logice dintre date la nivel global conform
schemei conceptuale, precum şi schemelor externe specifice fiecărei aplicaţii
program externe. Modulele program de manipulare a datelor permit utilizatorilor
prin intermediul unui limbaj specializat să găsească, să insereze, să modifice,
respectiv să elimine datele din baza de date. Modulele program pentru controlul şi
securitate datelor au rolul de a asigura confidenţialitate a şi integritatea datelor,
precum şi rezolvarea problemelor de concurenţă. Modulele program utilitare
permit întreţinerea, manipularea exploatarea corectă şi facilă a bazei de date.
3
Sistemele SGBD evoluează continuu şi trebuie să se extindă pentru a rezolva
eficient noile cerinţe ale utilizatorilor.

Istoria sistemelor de gestiune a bazelor de date delimitează trei generaţii


care sunt caracterizate de modelele logice folosite:

- sisteme de tip ierarhic şi de tip reţea,

- sisteme relaţionale;

- sisteme avansate, care se referă la sistemele orientate obiect, la cele deductive,


multimedia, active, etc.

SGBD de tip ierarhic (hierarchical database) şi reţea(network database)


reprezintă din punct de vedere istoric primele generaţii de SGBD. În modelele
ierarhice şi reţea datele sunt reprezentate la nivel de articol prin legături ierarhice
de tip arbore, respectiv de tip graf. Structurile de date corespunzătoare acestor
modele pot fi descrise la nivel logic cu ajutorul unei structură de date abstract
numit diagramă. Diagrama este în acest caz un graf orientat prin care se reprezintă
tipuri de entităţi şi legăturile funcţionale dintre acestea. Sistemele de gestiune a
bazelor de date bazate pe modelul de date reţea, respectiv cel ierarhic, poartă
numele de sisteme navigaţionale şi au fost dezvoltate în perioada 1960-1970.

A doua generaţie de SGBD o reprezintă modelul relaţional care tratează


entităţile ca relaţii. Sistemele de Gestiunea Bazelor de Date Relaţionale sunt
caracterizate de structuri de date simple şi intuitive, de operatori care se aplică
relaţiilor pentru a defini, căuta, şi reactualiza datele. Bazele de date relaţionale
asigură independenţa completă a descrierii logice a datelor în termeni de relaţii şi
în descrierea fizică a datelor în termen de fişiere. În prezent există câteva sute de
sisteme SGBD relaţionale pentru toate tipurile de calculatoare. Modelul relaţional
asigură o independenţă completă în ceea ce priveşte descrierea logică şi fizică a
datelor. În plus SGBD relaţionale pun includ limbaje specializate pentru descrierea
şi manipularea datelor. Modelul relaţional are capacităţi limitate de modelarea
datelor. SGBD relaţionale nu folosesc obiecte complexe şi dinamice, nu realizează
gestiunea distribuită a datelor şi nici gestiunea de cunoştinţe.

Conceptul de programare orientată obiect sau programarea calculatoarelor cu


ajutorul obiectelor utilizează conceptele de obiect şi clasă de obiecte. Obiectul este
definit de o mulţime de proprietăţi numite atribute şi are un anumit comportament
care în cazul obiectelor folosite în programare se concretizează prin metode, care
sunt programe care se execută în mod automat atunci când în mediul extern sau cel
extern al obiectului apare un anumit eveniment. Numim obiect o entitate unic
4
identificabilă, care conţine atât atributele care definesc starea unui obiect din lumea
reală, cât şi acţiunile asociate acestuia. Obiectele de acelaşi tip formează o clasă de
obiecte care reprezintă o generalizare a noţiunii de tip de dată. Clasa include
definiţia datelor şi a metodelor. Conform principiuluiîncapsulării datelor, datele
clasei sunt vizibile doar metodelor clasei, iar conform principiului moştenirii sau
al derivării o clasă poate fi definită folosind o clasă existentă. Conceptul de
încapsulare presupune că un obiect conţine atât structura de date, cât şi mulţimea
de operaţii care pot fi utilizate pentru al manipula. Ascunderea informaţiilor
semnifică separarea aspectelor externe ale unui obiect de detaliile sale interne, care
sunt ascunse de lumea exterioară. În acest mod, detaliile interne ale unui obiect pot
fi modificate fără a afecta aplicaţiile care îl utilizează cu condiţia ca detaliile
externe să rămână neschimbate. Includerea tehnicilor de programare orientată
obiect în domeniul bazelor da date a condus la apariţia Sistemelor de Gestiune a
Bazelor de Date Orientate Obiect, care realizează o modelare superioară a
informaţiei luând în considerare aspectele dinamice şi integrarea descrierii
structurale şi comportamentale. Prin utilizarea principiului programării orientate
obiect în domeniul bazelor de date relaţionale a apărut Sistemele de Gestiune a
Bazelor de Date Relaţionale Orientate Obiect.

O relaţia este o mulţime de înregistrări ce reprezintă fapte. Cunoştinţele sunt


aserţiuni generale şi abstracte asupra faptelor. Pe baza cunoştinţelor se deduc fapte
noi prin deducţie plecând de la fapte cunoscute. Pentru a rezolva problema
gestiunii de cunoştinţe au apărutbazele de date deductive, care utilizând
programarea logică gestionează cunoştinţe relativ la baze de date. Un Sistem de
Baze de Date Deductivposedă un limbaj de definire a datelor care permite definirea
structuri predicatelor sub formă de relaţii şi constrângeri de integritate asociate, un
limbaj de manipulare a datelor care permite pe lângă actualizarea datelor şi
formularea de cereri, un limbaj de reguli de deducţie care să permită construirea
predicatelor derivate.

Sistemele distribuite reprezintă calculatoare interconectate printr-o reţea de


comunicaţie utilizate pentru un scop global. Gestionarea datelor aflate pe
calculatoare diferite, eterogene din punctul de vedere al sistemului de operare
folosit se realizează cu ajutorul unei baze de date distribuite.Bazele de date
distribuite sunt sisteme de baze de date cooperante care sunt rezidente pe
calculatoare diferite şi situate în locuri în locaţii diferite. Sistemul de gestiune al
unei baze de date distribuite face posibil accesul programelor de aplicaţie la date
rezidente pe mai multe calculatoare fără ca localizarea datelor să fie cunoscută.
Bazele de date distribuite folosesc ca instrument principal pentru prelucrarea
datelor distribuite modelul relaţional.
5
Cu ajutorul unui site putem crea diferite pagini cu diferit conținut, un blog de
exemplu, o pagină cu imagini, video și alte fișiere. Ca un model de client / server,
browser-ul este client pe un computer care contactează serverul web și solicită
informații. Serverul Web trimite informații înapoi la browser-ul Web care afișează
rezultatele pe computer sau alt dispozitiv cu acces la Internet care acceptă un
browser.

Paginile web de astăzi sunt software complet funcționale, care pot interpreta
și afișa pagini Web HTML, aplicații, JavaScript, AJAX și alte tipuri de conținut
găzduite pe servere Web. Pentru a putea reprezenta o pagină web avem nevoie de
un browser. Multe browsere oferă plug-in-uri care extind capabilitățile software-ul
astfel încât să poată afișa informații multimedia

(inclusiv sunet și video), sau browser-ul poate fi folosit pentru a efectua sarcini,
cum ar fi videoconferințe, pentru a proiecta pagini web sau adăuga filtre anti-
phishing și alte caracteristici de securitate ale browser-ului.

Două cele mai populare browsere sunt Microsoft Internet Explorer și


Firefox. Alte browsere majore includ Google Chrome, Apple Safari și Opera.
Browserele sunt cel mai frecvent utilizați pentru a accesa informații de pe web, dar
poate fi, de asemenea, folosite pentru a accesa informații gazduite pe servere Web
în rețele private.

6
2.ELABORARE PRACTICĂ

Scopul si obiectivele sarcinii:

Elaborarea paginei Web cu tematica „Librărie”

Gestionarea unei baze de date din phpmyadmin și anume inserarea, afișarea,


căutarea, sortarea,stergerea.

Crearea unui design simplu și ușor de înțeles pentru orice utilizator în ceea ce ține
de interacțiunea cu baza de date.

Schema legaturilor intre subdomeniilor domeniului de studiu:

Tipigrafie
Gen

Autor
Clientul

Cartea

Tara

Categoria

7
3.INTRODUCERE PROGRAMARE WEB
HTML
Limbajul pentru hipertexte, in engleza Hipertext Markup Language (HTML), a fost initial
dezvoltat de catre oamenii de stiinta ca o unealta utilizata la partajarea documentelor in intreaga
comunitate stiintifica internationala care utiliza si utilizeaza Internetul. Pentru a publica
informatii care sa fie distribuite global in Internet este necesar un limbaj universal de scriere a
acestora, limbaj care sa fie potential inteles de toate computerele din Internet. Limbajul folosit in
acest sens de catre World Wide Web este HTML (Hipertext Markup Language).
HTML se aseamana cu modalitatile de formatare a textelor de la un procesor de
texte uzual in sensul ca adauga textului ce se doreste a fi publicat, informatii de formatare si
permite inglobarea si altortipuri de informatii (imagini, sunete etc). Toate acestea indica modul
de afisare (prezentare) pentru programele capabile sa inteleaga aceste informatii. Ceea ce il
deosebeste de toate celelalte formate ale procesoarelor de texte este faptul ca un document
HTML este un document ce contine informatie in format text-pur (numai caractere ASCII) in
timp ce procesoarele de texte folosesc formate particulare. Astfel, un document HTML pote fi
afisat (prezentat) de un numar mare de programe de navigare (browsere Web) care ruleaza pe un
mare numar de platforme. Documentele HTML pot fi create cu un editor de texte sau cu
editoare HTML care permit crearea vizuala (WYSIWYG) rezultind insa tot documente in format
text-pur. Limbajul HTML da autorilor posibilitatea :
Sa publice documente cu headere, texte, tabele, liste, fotografii etc;
Sa regaseasca on-line informatii prin intermediul hiperlink-urilor accesate printr-un simplu
click de mouse;
Sa proiecteze formulare pentru realizarea tranzactiilor cu servere aflate la distanta pentru
cautari de informatie sau pentru activitati specifice comertului;
Sa includa foi de calcul tabelar, clipuri video, sunete si alte aplicatii direct in documente.
Limbajul HTML are patru caracteristici principale:
Foloseste un marcaj descriptiv pentru a indica diversele actiuni ce trebuie executate.
Aceasta inseamna ca parti ale documentului descris de HTML sunt marcate cu nume descriptive,
ca de exemplu <CHAPTER> sau <TITLE> care sunt aplicabile oricarei portiuni de date
corespunzatoare din document.
Defineste structuri de documente ierarhice si legaturi intra- si inter-documente. O
legatura este o relatie unara intre doua elemente ale unui document. Structura unui document este
insotita de astfel deee legaturi intre elementele sale.
8
Limbajul HTML este guvernat de o descriere formala. HTML are o descriere a tipului
documentului (Document Type Definition DTD) care stabileste specificatiile formale ale
limbajului. DTD stabileste sintaxa limbajului, descrie fiecare element individual al unui
document scris in limbajul HTML, defineste atributele permise pentru fiecare element si descrie
modelul datelor continute in fiecare element. In corelatie cu informatiile despre elemente, DTD
ofera definitii pentru entitatile externe ce pot fi referite in HTML.

Limbaje de Scriptare
Baza comunicarii intre serverele si clientii Web, la nivel de aplicatie este asigurata de
protocolul HTTP(HyperText Transfer Protocol). Protocolul HTTP este folosit in special pentru
hipertext, dar este un protocol generic, putind sustine un sistem distribuit pentru managementul
obiectelor de date. O caracteristica importanta a protocolului este independenta de platforma,
diferitele calculatoare care comunica prin HTTP putind folosi diverse sisteme de operare si
aplicatii hipertext.
Principalele concepte cu care lucreaza protocolul sunt cererea si raspunsul: un client Web
trimite un mesaj(cererea) la un server. Mesajul contine identificatorul resursei dorite, dat sub
forma unui URI(Uniform Resource Identifier), metoda de acces folosita, precum si o serie de
meta-informatii care pot fi utile serverului. Raspunsul serverului cuprinde un cod indicind starea
serverului dupa interpretarea cererii, un mesaj explicativ pentru codul de stare transmis, meta-
informatiile care vor fi procesate de catre client si, eventual, un continut(resursa solicitata).
Standard de facto pentru interactiunea clientilor Web cu serverele Web, Common
Gateway Interface se afla in prezent la versiunea 1.1. Un program CGI, denumit in mod uzual
script, se executa pe serverul WWW fie in mod explicit, apelat din cadrul paginii printr-o
directiva speciala, fie la preluarea informatiilor aflate in cadrul cimpurilor unui formular
interactiv sau coordonatelor unei zone senzitive. CGI confera interactivitate paginilor Web,
documentele HTML putind sa-si modifice in mod dinamic continutul si sa permita prelucrari
sofisticate de date. Programele CGI pot oferi suport si la autentificarea utilizatorilor pe partea de
server.
Programele CGI pot fi scrise in orice limbaj, fiind interpretate in cazul limbajelor PHP,
Perl, Python, TCL sau compilate cum se intimpla pentru limbajul C si Delphi.
In conceperea unui script CGI trebuie respectate anumite reguli de baza:
programul scrie datele spre a fi transmise navigatorului Web la iesirea standard
programul genereaza anteturi care permit serverului Web sa interpreteze corect iesirea scriptului
Cele mai multe scripturi CGI sunt concepute pentru a procesa datele introduse in
formulare. Un formular se defineste in XHTML folosindu-se marcatori specifici pentru afisarea
9
continutului si introducerea datelor catre clienti, iar scriptul invocat si executat de serverul de
Web, va prelua continutul acelui formular si-l va prelucra, returnind eventual rezultatele catre
navigator.

PHP
PHP (PHP: Hypertext Prepocessor), cunoscut în versiunile mai vechi şi sub numele de
PHP/FI (Personal Homepage/Form Interpreter), iniţial a fost gândit a fi o simplă aplicaţie CGI
pentru interpretarea formularelor definte prin HTML şi procesate de un program scris într-un
limbaj Perl, script shell, executat pe server. În cazul interfeţei CGI era necesară permisiunea de a
rula programe pe server, ceea ce ducea la lacune în securitate şi în plus la disocierea de
documentul HTML a programului care procesa datele.

Istoria PHP-ului începe la sfârşitul anului 1994, când Rasmus Lerdorf dezvoltă prima
versiune, ca proiect personal. PHP-ul este făcut public în debutul anului 1995 sub denumirea de
Personal Home Page Tools, fiind considerat un analizor simplist care interpreta câteva macrouri
ce puteau fi incluse în cadrul documentelor HTML, permiţând contorizarea accesului la paginile
Web sau accesarea unei carţi de oaspeţi (guestbook). Analizorul a fost rescris la mijlocul
aceluiaşi an şi denumit PHP/FI 2.0, unde FI era o alta aplicaţie scrisă de Rasmus Lenford, un
interpreter de formulare HTML. A fost adăugat şi suportul pentru bazele de date mSQL şi astfel
PHP/FI a început să aibă succes, fiind disponibil gratuit pe Web. Se estimează că la sfârşitul lui
1996 cel puţin 15 mii de site.uri Web utilizau PHP/FI, iar în anul 1997 numărul acestora era de
50 de mii.

Programatorii Zeev Suraski şi Andi Gutmans rescriu analizorul PHP şi noua aplicaţie
formează nucleul versiunii PHP 3.0 care include o parte din vechile surse PHP/FI 2.0. Relativ
recent, la începutul anului 2000, a fost facută publică versiunea PHP 4.0, utilizând puternicul
motor de scriptare Zend şi oferind suport nu numai pentru servrul Apache ci şi pentru alte
servere Web. De asemeni, PHP 4.0 oferă posibilitatea accesării documentelor XML via DOM.

PHP este un limbaj de script care funcţionează alături de un server Web.

Este de notat diferenţa cu alte limbaje script CGI scrise în limbaje precum Perl sau C: în
loc de a scrie un program cu o multitudine de linii de comanda afişate în final într-o pagină
HTML, veţi scrie o pagină HTML cu codul inclus pentru a realiza o acţiune precisă.

Codul PHP este inclus între tag-urile speciale de început şi de sfârşit care permit
utilizatorului să treacă din "modul HTML" în "modul PHP".
Faţă de alte limbaje script, precum Javascript, la PHP codul se execută pe serverul Web,

10
nu in navigator(client Web). In consecinta, PHP poate obtine accesul la fisiere , baze de date si
alte resurse inaccesibile programului JavaScript. Acestea contin bogate surse de continut dinamic
care atrag vizitatorii. Dacă pe serverul Web se află un script similar, clientul nu va primi decât
rezultatul execuţiei scriptului, fără a avea nici o posibilitate de acces la codul care a produs
rezultatul. Vă puteţi configura serverul de Web să prelucreze (analizeze) toate fişierele HTML ca
fişiere PHP. Astfel nu există nici un mijloc de a distinge paginile care sunt produse dinamic de
paginile statice.

Limbajul PHP posedă aceleaşi funcţii ca alte limbaje permiţâind să se scrie scripturi CGI,
să colecteze date şi să genereze dinamic pagini web sau să trimită şi să primească cookies. Marea
calitate şi cel mai mare avantaj al limbajului PHP este suportul cu un număr mare de baze de
date. A realiza o pagină web dinamic cu o baza de date este extrem de simplu. Următoarele baze
de date sunt suportate de către PHP: Conform (vezi Tabelul 1) PHP suporta foarte multe tipuri
de baze de date, ceea ce este un avantaj foarte mare pentru el.

Limbajul PHP are deasemenea suport pentru diverse servicii server utiliziând protocoale
precum IMAP, SNMP, NNTP, POP3 şi HTTP. Fiecare program PHP include doua linii speciale,
care indica serverului PHP ca textul cuprins intre cele doua linii este alcatuit din instructiuni
PHP.

<?php ?>

Practic aceste linii pot fi asimilate copertelor unei carti, care pastreaza unitatea programului PHP.
Programele PHP executa trei categorii de operatii elementare:

 obtin date de la un utilizator


 executa prelucrari ale datelor, respectiv obtin accesul la datele stocate in fisiere si
baze de date si le manipuleaza
 afiseaza date astfel incit un utilizator sa le poata vizualiza.

Pentru executarea unui script trebuie mai intii incarcat scriptul intr-un server unde este
instalat PHP.Accesul la distanta la un server Linux sau Unix se poate face prin intermediul
protocoalelor Telnet sau SSH, daca in prealabil se primeste autorizare de folosire a acestor
protocoale de la administatorul de sistem pentru un anumit utilizator. Daca se foloseste un server
Microsoft Windows situat in aceeasi retea locala ca si statia de lucru atunci este posibila alocarea
de catre adimistratorul de retea a unei partitii de fisiere in acest scop.
In vederea incarcarii scriptului prin intermediul protocolului FTP adimistratorul de sistem
trebuie sa furnizeze utilizatorilor autorizati urmatoarele informatii:
11
 numele serverului gazda
 numele de utilizator si parola pentru deschiderea sesiunii de lucru prin intermediul
protocolului FTP
 catalogul in care trebuie sa se gaseasca scripturile PHP
 localizatorul uniform de resurse(URL), pe care trebuie sa-l folositi pentru a obtine
acces la scripturile PHP.
Dupa ce incarcarea scriptului PHP a fost realizata cu succes acesta se lanseaza in executie prin
dechiderea unui navigator Web(client) cu adresa URL asociata scriptului PHP.

12
4.STRUCTURA BAZEI DE DATE

Machetul Bazei de Date

Tabelul ”Carti„

13
Tabelele associate tabelului general

14
5.STRUCTURA SITE-ULUI

Informația despre carte este afișată în totalitate pe pagina web

Instrumentele din pagină ne permit să putem sortam informația de care avem


nevoie, în caz că utilizatorul dorește să verifice dacă dacă itemul dat mai este în
stoc și care este informația de bază despreo anumită carte.

Utilizatorul poate adăuga o carte noua folosind bara de adăugare și poate la fel
șterge o înscriere.

15
CONCLUZIE

Proiectul dat întrunește în sine o totalitate de deprinderi în ceea ce ține de


crearea unei aplicații web de gestionare a unei baze date. Deprinderie pe care le-am
căpătat pe parcursul efectuării acestui proiect. Scopul final era de a face lucrul cu o
bază de date accesibilă pentru orice persoană chiar dacă nu cunoaște gestiunea
baze de date utilizând instrumente speciale cum ar fi phpmyadmin și fără
cunoașterea SQL, cunoștințede care noi am avut nevoie pentru a efectua proiectul
dat.

Am aprofundat cunoștințele căpătate pe parcursul anului de studiu într-o


singură aplicație diferența fiind libertatea deciziilor în ceea ce ține de faptul cum va
arăta acest proiect și ce funcționalitatea lui spre deosebire desigur de lucrările de
laborator din timpul anului. Lucrarea de practică este un instrument bun de a oferi
liber studentului de a asimila informația așa cum dorește el.

16
BIBLIOGRAFIE:
 Articol despre Crearea site-urilor web,
http://www.preferatele.com/docs/informatica/4/crearea-site-urilor-15.php;
 Articol despre Baze de date relationale, http://civile.utcb.ro/cmat/cursrt/bd2.pdf;
 Dezvoltarea aplicatiilor Web folosind XAMPP,PHP si MySQL” , , 2013

17
Anexă
Codul programului prinicipal (index.php)
<?php include 'connection/connection.php'; <h2>Adauga carte noua:</h2>
?>

<form action="pages/add.php"
<!DOCTYPE html> method="POST">

<html lang="en"> <div class="book__new--item">

<label for="titlu">Titlu</label>

<head> <input required="required"


type="text" id="title" name="titlu">
<meta charset="UTF-8">
</div>
<meta name="viewport"
content="width=device-width, initial- <div class="book__new--item">
scale=1.0">
<label
<meta http-equiv="X-UA-Compatible" for="autor">Autor</label>
content="ie=edge">
<select required="required"
<title>Librarie</title> type="text" name="autor">

<option disabled
selected></option>
<link rel="stylesheet"
href="css/main.css"> <?php

</head> $query = "select * from


Autor";

$sql =
<body> mysqli_query($conn, $query) or die("Fatal
<div class="container"> error");

while ($row =
mysqli_fetch_row($sql)) {

echo "<option
</div> value=$row[0]>$row[1]</option>";

<div class="container__main"> ?>

<div class="book__new"> </select>

</div>

18
<div class="book__new--item"> <option disabled
selected></option>
<label
for="tipografie">Tipografie</label>

<select required="required" <?php


type="text" name="tipografie">
$query = "select * from
<option disabled Gen";
selected></option>
$sql = mysqli_query($conn,
$query) or die("Fatal error");

<?php while ($row =


mysqli_fetch_row($sql)) {
$query = "select * from
Tipografia"; echo "<option
value=$row[0]>$row[1]</option>";
$sql = mysqli_query($conn,
$query) or die("Fatal error"); }

while ($row = ?>


mysqli_fetch_row($sql)) {
</select>
echo "<option
value=$row[0]>$row[1]</option>"; </div>

} <div class="book__new--item">

?> <label for="tara">Tara</label>

</select> <select required="required"


type="text" name="tara">
</div>
<option disabled
<div class="book__new--item"> selected></option>

<label for="an">An</label>

<input required="required" <?php


type="number" name="an" min="0"
max="2019"> $query = "select * from tara";

</div> $sql = mysqli_query($conn,


$query) or die("Fatal error");
<div class="book__new--item">
while ($row =
<label for="gen">Gen</label> mysqli_fetch_row($sql)) {

<select required="required" echo "<option


type="text" name="gen"> value=$row[0]>$row[1]</option>";

}
19
?> <label
for="client">Client</label>
</select>
<select required="required"
</div> type="text" name="client">
<div class="book__new--item"> <option disabled
<label for="pret">Pret</label> selected></option>

<input required="required"
type="number" name="pret"> <?php
</div> $query = "select * from
<div class="book__new--item"> Client";

<label $sql = mysqli_query($conn,


for="categorie_de_varsta">Categorie de $query) or die("Fatal error");
varsta</label> while ($row =
<select required="required" mysqli_fetch_row($sql)) {
type="text" name="categorie_de_varsta"> echo "<option
<option disabled value=$row[0]>$row[1]</option>";
selected></option> }

?>
<?php </select>
$query = "select * from </div>
Categoria_de_varsta";

$sql = mysqli_query($conn,
$query) or die("Fatal error"); <div class="book__new--
submit">
while ($row =
mysqli_fetch_row($sql)) { <input type="submit"
class="submit" value="Adauga carte">
echo "<option
value=$row[0]>$row[1]</option>"; </div>

} </form>

?> </div>

</select>

</div> <div class="books__container">

<div class="book__new--item">

20
<div class="settings__block"> <select name="sort_key">

<option
value="Carti.titlul">title</option>
<form class="settings__block--
filter"> <option
value="Autor.numele_prenumele">autor</o
<div style="width: ption>
100px">Filtrare dupa</div>
<option
<select name="filter_key"> value="Gen.gen">gen</option>
<option <option
value="Carti.titlul">title</option> value="Carti.an">an</option>
<option <option
value="Autor.numele_prenumele">autor</o value="Carti.pret">pret</option>
ption>
<option
<option value="Tara.tara">tara</option>
value="Gen.gen">gen</option>
<option
<option value="Tipografia.tipografia">tipografie</o
value="Carti.an">an</option> ption>
<option <option
value="Carti.pret">pret</option> value="Client.numele_prenumele">client</
<option option>
value="Tara.tara">tara</option> </select>
<option
value="Tipografia.tipografia">tipografie</o
ption> <select name="sort_value">

<option <option
value="Client.numele_prenumele">client</ value="ASC">Asc</option>
option>
<option
</select> value="DESC">Desc</option>

</select>

<input type="text"
name="filter_value">
<input type="submit"
value="Set">

</form>

<div style="margin-left: 20px;


width: 100px">Sortare dupa</div>
21
</div> $query = "select Carti.id_carte,

Carti.titlul,

<div class="book__item">
Autor.numele_prenumele,
<div style="font-weight: bold"
class="book__item--label book__item-- Tipografia.tipografia,
title">Titlu</div>
Carti.an,
<div style="font-weight: bold"
class="book__item--label book__item-- Gen.gen,
author">Autor</div> Tara.tara,
<div style="font-weight: bold" Carti.pret,
class="book__item--label book__item--
gen">Gen</div>
Categoria_de_varsta.categoria_de_varsta,
<div style="font-weight: bold"
class="book__item--label book__item--
an">An</div> Client.numele_prenumele

<div style="font-weight: bold" FROM Carti INNER JOIN


class="book__item--label book__item--
Autor ON
pret">Pret</div>
Carti.id_autor=Autor.id
<div style="font-weight: bold"
INNER JOIN
class="book__item--label book__item--
Categoria_de_varsta
tara">Tara</div>
ON
<div style="font-weight: bold"
Carti.id_categoria_de_varsta=Categoria_de_
class="book__item--label book__item--
varsta.id
tipografie">Tipografie</div>
INNER JOIN Client
<div style="font-weight: bold"
class="book__item--label book__item-- ON
client">Client</div> Carti.id_client=Client.id
<div style="font-weight: bold" INNER JOIN Gen
class="book__item--label book__item--
categorie">Categorie</div> ON Carti.id_gen=Gen.id

<div class="book__item--label INNER JOIN Tara


book__item--del"></div>
ON Carti.id_tara=Tara.id
</div>
INNER JOIN Tipografia

ON
<?php Carti.id_tipografia=Tipografia.id

22
echo "<div class='book__item--
".(!empty($_GET['filter_value']) ? " label book__item--client'>$row[9]</div>";
WHERE ".$_GET['filter_key']." like
'%".$_GET['filter_value']."%'" : "")." echo "<div class='book__item--
label book__item--
categorie'>$row[8]</div>";
".(!empty($_GET['sort_value']) ? " ORDER
BY ".$_GET['sort_key']." echo "<div class='book__item--
".$_GET['sort_value'] : ""); label book__item--del'
onclick='deleteBook($row[0])'>X</div>";

echo "</div>";
$sql = mysqli_query($conn, $query)
or die("Fatal error"); }

while ($row = ?>


mysqli_fetch_row($sql)) {

echo "<div class='book__item'>";

echo "<div class='book__item-- </div>


label book__item--title'>$row[1]</div>";
</div>
echo "<div class='book__item--
label book__item--author'>$row[2]</div>"; </body>

echo "<div class='book__item--


label book__item--gen'>$row[5]</div>";
<script>
echo "<div class='book__item--
function deleteBook(book_id) {
label book__item--an'>$row[4]</div>";
console.log('here');
echo "<div class='book__item--
label book__item--pret'>$row[7]</div>"; location.href =
`pages/delete.php?book_id=${book_id}`;
echo "<div class='book__item--
label book__item--tara'>$row[6]</div>"; }
echo "<div class='book__item-- </script>
label book__item--
tipografie'>$row[3]</div>";
</html>

23
Codul programului de adaugare (add.php)
<?php include $client = $_POST['client'];
'../connection/connection.php'; ?>

$sql = "INSERT INTO


<!DOCTYPE html> Carti(titlul,id_autor,id_tipografia,an,id_gen,i
d_tara,pret,id_categoria_de_varsta,id_client)
<html lang="en">
VALUES
<head> ('$titlu','$autor','$tipografie',$an,'$gen','$tara'
<meta charset="UTF-8"> ,$pret,'$categorie_de_varsta','$client')";

<meta name="viewport" $exec=mysqli_query($conn, $sql) or


content="width=device-width, initial- die("Insert error");
scale=1.0"> mysqli_close($conn);
<meta http-equiv="X-UA-Compatible"
content="ie=edge">
?>
<title>Document</title>
<div class="loading"></div>
<link rel="stylesheet"
href="../css/main.css"> </body>

</head>

<body onload="back()" class="center"> <script>

<?php function back() {

$titlu = $_POST['titlu']; setTimeout(() => {

$autor = $_POST['autor']; location.href = '../index.php';

$tipografie = $_POST['tipografie']; }, 500);

$an = $_POST['an']; }

$gen = $_POST['gen']; </script>

$tara = $_POST['tara']; </html>

$pret = $_POST['pret'];

$categorie_de_varsta =
$_POST['categorie_de_varsta'];

24
Codul Programului de ștergere (delete.php)
<?php include '../connection/connection.php'; ?>

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>Document</title>

<link rel="stylesheet" href="../css/main.css">

</head>

<body onload="back()" class="center">

<?php

$id = $_GET['book_id'];

$sql = "DELETE FROM Carti WHERE id_carte=$id";

$exec=mysqli_query($conn, $sql) or die("Insert error");

mysqli_close($conn);

?>

<div class="loading"></div>

</body>

<script>

function back() {

setTimeout(() => {

location.href = '../index.php';

}, 500);

}</script> </html>
25