Masterat: Sisteme informatice integrate pentru afaceri [307503]
UNIVERSITATEA „TRANSILVANIA” DIN BRAȘOV
FACULTATEA DE ȘTIINȚE ECONOMICE ȘI ADMINISTRAREA AFACERILOR
Masterat: Sisteme informatice integrate pentru afaceri
LUCRARE DE DISERTAȚIE
Conducător științific: Absolvent: [anonimizat]. univ. dr. [anonimizat], 2018
Universitatea Transilvania din Brașov
Facultatea de Științe Economice și Administrarea Afacerilor
Masterat: Sisteme informatice integrate pentru afaceri
Sistem informatic de gestiune pentru o companie de transport marfă
TranSMART
Conducător științific: Absolvent: [anonimizat]. univ. dr. [anonimizat], 2018
[anonimizat]. Oferă un modul de gestiune pentru companie dar și o interfață pentru utilizatori prin care se poate completa cu ușurință un formular detaliat de comandă.
Scurtă descriere a lucrării: Aplicație de gestiune a [anonimizat], clienți, sistem de facturare și interfață pentru public prin care se fac comenzi.
Cuvinte-cheie: [anonimizat], gestionare, transport, mutare
Scopul lucrării: Pentru o bună organizare a [anonimizat]. Oferă o interfată de utilizare modernă care va crește productivitatea prin scutirea timpului de lucru aferent operării. [anonimizat], mecanismelor incorporate pentru planificarea activităților și pentru funcționalitatea și controlului fluxuri de lucru. [anonimizat], conform necesităților personalului care utilizează aplicația. Oferă o interfață clienților pentru a [anonimizat].
Obiectivele lucrării. Textul acesta este pus drept model și se va înlocui de către student: [anonimizat]: [anonimizat]-View-Controller, folosind o bază de date tip MySQL.
Contribuția personală: Dezvoltarea aplicației și a documentației aferente.
SINTEZA LUCRĂRII
Cap. 1. APLICAȚII WEB
O aplicație web este un program care rulează într-o [anonimizat]. [anonimizat], costisitoare și susceptibilă la erori. [anonimizat] a le folosi drept client conduce la eliminarea acestei mari probleme. Astfel, [anonimizat].
Termenul poate să însemne, o [anonimizat]-[anonimizat] HTML.
Aplicațiile WEB sunt populare deoarece pot fi accesate cu ajutorul unui browser web, și prin faptul că are capacitatea de a actualiza și menține aplicațiile web fără distribuirea și instalarea anumitor programe pe calculator pentru rularea acesteia.
În ziua de astăzi, majoritatea website-urilor sunt aplicații web complexe. Cel mai des întâlnite sunt:
Sistem de Management al Conținutului, aplicație ce facilitează introducerea și gestionarea conținutul unui website, fără a fi necesare cunoștințe de programare. Funcțiile unei asemenea aplicații sunt editarea conținutului, adăugarea și gestionarea de poze și se poate crea noi pagini web.
Magazine Online, modulul de magazine virtual se adaugă funcționalității unui website, are ca scop principal comercializarea prin intermediul online de produse și servicii. Această formă de comerț a devenit foarte populară confortului pe care îl oferă clientului.
Formulare, acestea permit trimiterea de mesaje direct de pe website. Există posibilitatea de a crea formulare personalizate cu informațiile dorite de client.
Catalog de produse, acestea pot include un număr nelimitat de produse, categorii sau subcategorii. Acestuia i se poate integra și un motor de căutare și oferă utilizatorului posibilitatea de a vizualiza catalogul mai ușor.
Modul de știri, aceste aplicații oferă posibilitatea de informare a clienților într-o formă mult mai rapidă și mai eficientă.
Newsletter, este o funcționalitate pentru a trimite mail-uri către clienții care doresc să fie informați. Aceasta este și o metodă de marketing foarte eficientă și ieftină.
Rezervări hoteliere, aceste aplicații se integrează unui website și oferă un modul prin care clienții pot face rezervări, și oferă un sistem de gestionare a acestora foarte eficient.
Anii 2010 au adus o mult-așteptată extindere a standardului HTML, cu HTML5, care impune browserelor implementarea internă a multor funcționalități care până atunci fuseseră apanajul exclusiv al pluginurilor dezvoltate de terți, iar dezvoltarea explozivă a smartphone-urilor a dus mai întâi la o lipsă de browsere web cu funcționalități similare celor pentru calculatoare și deci la dezvoltarea de aplicații client dedicate fiecărei aplicații web.
1.1. OPEN SOURCE
Termenul open source este din ce în ce mai des folosit în domeniul informatic. Open source se referă la un software pe care creatorul îl pune la dispoziția tuturor gratuit, publicând codul sursă și documentația necesară înțelegerii acestuia. Oricine dorește poate lua acele surse și le poate modifica sau corecta după bunul plac și le poate publica la rândul lui pentru a ajuta la dezvoltarea software-ului respectiv. În acest mod, mai mulți dezvoltatori lucrează la un program software simultan, și se împărtășesc informații.
S-au creat multe comunități de dezvoltatori care lucrează la anumite proiecte open source și prin acest mod își aduc aportul la extinderea și îmbunătățirea programului.
Ideea de open source a pornit din dorința de a opri marile companii de software să dețină monopolul asupra unor soluții software, oferind utilizatorilor din lumea întreagă un program gratuity, transparent tuturor.
Mulți preferă programele de tip open source deoarece au un control mai mare asupra acestora. Ei pot să examineze codul sursă să verifice funcționalitățile programului, să se asigure că nu face ce nu trebuie să facă, și bineînțeles orice dezvoltator poate să schimbe anumite părți de care nu sunt mulțumiți.
Alții prefer acest tip de programe deoarece îi ajută la învățarea unui limbaj de programare. Deoarece codul sursă este accesibil tuturor, studenții pot învăța să dezvolte programe mai bune prin examinarea acestora. De asemenea pot împărtăși experiența, comenta și critica.
Mulți preferă programele open source deoarece consider că sunt mult mai sigure și mai stabile decât programele cumpărate. Iar în cazul în care utilizatorul primește o eroare, acesta poate anunța echipa de dezvoltatori și se repară într-un timp foarte scurt.
1.2. SISTEME ONLINE DE GESTIUNE
Sisteme software de gestiune vin în ajutorul companiilor și ajuta la organizarea internă și externă a acestora. Un astfel de sistem reprezintă un complex de module software prin intermediul cărora se obține integrarea tuturor informațiilor disponibile într-o organizație, având drept scop optimizarea resurselor disponibile ale acesteia. Acest instrument software facilitează integrarea tuturor informaților dintr-o organizație într-o platformă unică. Scopul lui este să asigure transparența datelor în cadrul unei organizații și să faciliteze accesul la orice tip de informație utilă în desfășurarea activității. La bază este conceptul legat de managementul întreprinderii care vizează eficientizarea prin planificarea adecvată a resurselor, urmărire și replanificare. Sistemul de gestiune acționează într-o organizație ca un instrument de asigurare a optimizării productivității și de reducere la maxim a procedurilor de realizare a serviciilor unei organizații într-un sistem unificat. Introducerea unui sistem pentru a înlocui două sau mai multe aplicații independente elimină necesitatea unor interfețe externe pentru a asigura buna relaționare a aplicațiilor. Alături de acest beneficiu fundamental, sistemele oferă o serie de avantaje suplimentare precum costuri de întreținere reduse și o capacitate de raportare crescută și eficientă. Acestea conțin și soluții de securitate informatică fiind astfel protejate de atacuri externe.
CAP. 2. TEHNOLOGII FOLOSITE
2.1. PAGINI WEB ȘI SERVERE WEB
Construcția Word Wide Web este pe baza unui protocol numit Hypertext Transfer Protocol (HTTP).
Web-ul constă în pagini cu informații aflate pe un calculator care rulează un software de tip server Web. Un server Web este un program care furnizează pagini Web la cerere. Când un utilizator încearcă sa acceseze o adresă IP, acesta solicit un anumit fișier, serverul încearcă să obțină acel fișier și să-l trimită utilizatorului.
Fișierul solicitat poate fi codul sursă HTML al unei pagini Web, o image, un fișier sau un document XML sau un fișier video. Browserul Web este cel care determină ceea ce trebuie cerut. Atunci când se inițializează o conexiune la un server Web, se solicit o cerere a unei pagini, o conexiune IP este stabilită prin Internet între gazda solicitantă și gazda care lucrează serverul Web.
Pe un același calculator se poate rula mai multe aplicații de Internet, de exemplu un server Web, un server FTP, un server DNS și un server de mail SMTP/POP3 pot rula în același timp.
Fiecărui server îi este atribuit un port pentru a asigura că fiecare va răspunde numai cererilor din partea clienților corespunzători. Majoritatea serverelor folosesc un set de porturi predefinite. Servere Web folosesc de obice portul 80, dar acesta poate fi schimbat. Pot fi instalate pe porturi care nu sunt standard pentru a fi ascunse, și de asemenea, pot fi instalate mai multe servere Web pe un singur calculator folosindu-se porturi diferite.
Internetul reprezintă o mulțime globală de calculatoare interconectate, similar unei rețele locale, dar la o scară mult mai largă. Elementul primar al Internet-ului este Word Wide Web ( WWW ). Acesta este un support pentru text, grafică , animație și sunet. Documentele destinate Web-ului sunt cunoscute de pagini Web. Acestea sunt memorate în memoria unui server specializat și gestionate printr-un software special și sunt regăsite și afișate prin intermediul navigatoarelor Web.
Deși cea mai mare parte a informațiilor din World Wide Web este stocată în pagini Web scrise folosind limbajul HTML, există un număr destul de mare de documente provenite din alte tipuri de servicii de publicare a informațiilor din Internet.
2.2. PHP
2.2.1. Descriere PHP
PHP („PHP – Hypertext Preprocessor”) este un limbaj de scripting ce se bazează pe o tehnologie de tip client-server, al cărui cod este încorporat în codul HTML.
PHP este una dintre cele mai interesante tehnologii care există în prezent deoarece îmbină unele dintre cele mai complexe caracteristici cu simplitate în utilizare, PHP a devenit rapid un instrument de bază pentru dezvoltarea aplicațiilor web. Acest limbaj este ideal pentru a construi pagini web dinamice. Este ușor de învățat, este open-source, poate fi rulat pe mai multe platforme și se poate conecta la mai multe tipul de baze de date. Cea mai apropiata caracteristică a limbajului este că există posibilitatea de a fi îmbrăcate cu cod HTML. Astfel, se pot crea pagini HTML statice, iar acolo unde este nevoie se poate adăuga dinamism cu ajutorul PHP-ului.
2.2.2. Caracteristici PHP
Ca și alte limbaje de scripting, limbajul PHP permite furnizarea unui conținut web dinamic, adică un conținut care se modifică de la o zi la alta sau chiar de la un minut la altul. Conținutul web este un element important în susținerea traficului unui site web; de regulă, vizitatorii nu vor reveni la o pagină web care conține aceleași informații ca și cele prezentate la ultima vizită. Site-urile web care sunt frecvent actualizate pot atrage cantități enorme de trafic.
Ca și nivel de bază, PHP poate să colecteze date din cadrul formularelor, poate să genereze cod dinamic în cadrul paginii sau să trimită și să primească cookie-uri. Interpretorul PHP parcurge documentul accesat până în momentul în care întâlnește cu marcaj de deschidere care indică faptul că textul ce urmează trebuie interpretat ca fiind cod PHP. În continuare, textul este interpretat ca și cod PHP, până în momentul în care se întâlnește marcajul de închidere. Exista mai multe marcaje care indică începerea unei secvențe de cod PHP, dar cel mai des sunt folosite doar doua dintre ele. Daca se dorește ca documentul să respecte specificațiile XML, singura posibilitate de inserare a codului PHP se folosirea unei secvente de tipul:
<?php
//cod PHP
?>
Cea mai puternică caracteristică a limbajului PHP este accea că are ca suport de conectare pentru o gamă foarte variată de baze de date. Dintre tipurile de baze de date suportate, menționăm:
Adabs D
Ingres
Oracle
dBase
InterBase
Empress
FrontBase
ProstgreSQL
mSQL
Direct MS-SQL
Sybase
IBMDB2
MySQL
Unix
2.2.3. PHP – Scurt istoric
Limbajul PHP a apărut în anul 1994, fiind conceptu de către Rasmus Lerdorf din nevoia de a afla căte persoane îi vizitează CV-ul online. El a denumit setul de scripturi PHP, acronimul pentru Personal Home Page. Primele versiuni nu erau disponibile programatorilor și erau folosite doar pe pagina personală, pentru a vedea cine este interesat de tehnologia sa. La începutul anului 1995, a apărut o versiune care a fost folosită și de alți programatori și a fost cunoscută sub denumirea Personal Home Page Tools. La jumătatea aceluiași an, Rasmus a rescris codul compilatorului și a fost denumit PHP/FI Version2. Cu FI a fost introdusă tehnologia de Interpretor de Formulare și a fost adăugat suportul pentru mSQL.
Ascensiunea limbajului PHP a fost una extraordinară, ținând cont că de la sfărșitul anului 1996 până la jumătatea anului 1997, numărul site-urilor ce foloseau acest limbaj a crescut de la 15.000 la 50.000 . De asemenea, tot în anul 1997 a apărut versiunea a treia, PHP3, al cărei cod a fost scris de către Zeev Suraski și Andi Gutmans care a rescris motoul PHP de la cap la coadă, motor care poarta din versiunea 4 a PHP numele Zend ( Zend este o combinație de litere din numele creatorilor săi: Zeev și Andi). La sfârșitul anului 2000, se estima că numărul site-urilor ce erau scrise în PHP era aproximativ 3.300.000.
Din cauză că acest limbaj este open-source, beneficează de suport activ din partea comunității on-line, acesta fiind unul din motivele pentru care numărul site-urilor bazate pe PHP a crescut exploziv. Versiunea PHP 4, folosește puternicul motor de scripting Zend pentru oferirea de performanțe ridicate, care suportă, de asemenea, rularea și de pe alte tipuri de servere în afara Apache-ului, acesta fiind serverul de baza pe care se lucra până în momentul respectiv.
Odată cu apariția versiunii 5, cele mai multe îmbunătățiri au fost aduse limbajului PHP sunt legate de paragidma programării orientate pe obiect. În această versiune, au fost rescrise complet rutinele de manipulare a obiectelor din cadrul script-urilor PHP, astfel încât codul se executa mai eficient și oferă mai multe posibilități programatorilor.
2.2.4. Limbajul PHP
Programele PHP execută, de obicei, 3 tipuri de operații elementare:
Obțin date de la un utilizator
Execută prelucrări ale datelor respective, obțin accesul la datele stocate în fișiere și baze de date și le prelucrează.
Afișează datele, astfel încât un utilizator să le poată vizualiza.
Pentru scrierea programelor PHP, majoritatea programatorilor folosesc un editor de text obișnuit. Se poate folosi o gama foarte diversificată, începând cu Notepad și până la programe specializate de scriere a codului. Concluzia este că se poate folosi orice editor de text, atât timp cât poate crea fișiere text ASCII. Salvarea scripturilor PHP implică două reguli:
Numele fișierului trebuie alcătuit numai din caracterele „a-z”,„ A-Z”, „0-9” și „-”. Utilizarea spațiilor sau a altor caractere este interzisă.
Extensia fișierelor trebuie să fie „.php”.
2.2.5. Scheletul programelor PHP
Fiecare program PHP include două linii speciale, care indică serverului PHP ca textul ce este cuprins între aceste linii de cod PHP. Exsită 4 variante ale acestor două linii:
1) <?
//cod PHP
?>
2) <?php
//cod PHP
?>
3) <script language = „php”>
//cod PHP
</script>
4) <%…%>
//cod PHP
<%…%>
Dintre acestea, cel mai des se folosește varianta a doua. De menționat este faptul că, în cadrul unui bloc PHP, instrucțiunile sunt separate prin „ ; ” și, în plus, suportă inserarea de comentarii asemănătoare cu cele din C sau C++ :
„ // ” comentariu pe o singura linie;
” /*…*/ ” comentariu pe mai multe linii.
De remarcat este faptul că un comentariu pe o singură linie ține până la sfârșitul liniei respective sau până la întâlnirea semnului de sfârșit al tagului PHP.
Crearea datelor de ieșire pentru un browser Web
Afișarea datelor astfel încât acestea să fie vizibile utilizatorului este o operație destul de simplă. Cea mai simplă metodă de trimitere a datelor se face cu ajutorul instrucțiunii care se numește instrucțiune de reflectare sau în original : echo statement . Sintaxa unei instrucțiuni echo este următoarea :
Echo(”…..”);
Parantezele și ghilimilele sunt folosite pentru delimitarea unei expresii de tip text. Totuși parantezele sunt opționale. Expresiile de tip echo pot include, pe lângă text obișnuit și etichete HTML. O serie de caractere speciale pot fi folosite în cadrul echo . Acestea sunt :
\n – salt la o linie nouă;
\r – retur de car;
\t – inserează un tab pe orizontală;
\\ – inserează un caracter „ \ “;
\” – ghilimele duble.
Crearea formularelor
Formularele se numără printre cele mai importante elemente ale unui site web, deoarece permit punerea de întrebări utilizatorului final și permit, de asemenea, primirea de răspunsuri de la acesta. Structura HTML folosită pentru includerea unui formular este :
<FORM METHOD = “metoda” ACTION=”url”>
…
</FORM>
Method poate avea două valori : GET sau POST . Alegerea uneia dintre ele este destul de complicată. Ca regulă empirică, mulți programatori folosesc GET pentru formulare care execută o căutare sau interogare, respectiv POST pentru formulare ce actualizeazp o bază de date sau un fișier. Metoda GET are două dezavantaje : impune o limită asupra cantității de date care pot fi trimise scriptului de prelucrare și face transferul datelor prin atașarea șirurilor codificate la adresa URL a scriptului de prelucrare. Astfel, datele care au fost trimise prin metoda GET pot fi văzute de către utilizator. Pe lângă aceste dezavantaje, metoda GET prezintă și avantajul că utilizatorii pot insera semne de carte în rezultatele unei interogări sau ale unei căutări care folosește metoda POST.
Action se referă la pagina care primește și prelucrează informațiile din cadrul formularului. După atributul action, se pot trece date care vor fi trimise cu ajutorul scriptului. Pentru aceasta, se atașează la sfârșitul adresei URL un semn de întrebare și apoi sunt incluse o serie de perechi nume-valoare cu următoarea formă :
nume1=valoare1&nume2=valoare2&…&numen=valoaren
Daca se dorește transmiterea unui script ce conține caractere speciale, acestea necesită înlocuite cu echivalentele lor în hexazecimal. Spațiul este singurul care face excepție, el fiind înlocuit cu semnul „+”. Numărul de perechi care sunt trimise este limitat de valoarea prestabilită de browser.
Inserarea de controale într-un formular se face cu ajutorul etichetei input care are următoarea sintaxă :
<input type = “tip” name = “nume” value=”text”>
Tipurile acceptate de către eticheta input :
TEXT : inserează un camp de editare; poate avea o singură linie sau mai multe;
PASSWORD : căsuța de editare poate fi transformată într-o casetă de introducere a parolei;
SUBMIT : inserează un obiect de tipul buton , acesta poate avea valoarea de buton de trimitere, de reinițializare sau i se poate atribui valoare none ;
CHECKBOX : inserează o căsuță de validare în cadrul formularului. Sunt folosite pentru selectarea unei opțiuni dintr-un formular;
RADIO : butoanele radio sunt folosite pentru selectarea unui obiect dintr-o listă de opțiuni disponibile.
FILE : inserează o casetă de text și un buton care îi permite utilizatorului să navigheze la un fișier care se află pe hard disk-ul său, fișier ce urmează a fi încărcat; pentru a trimite un fișier , trebuie specificat formatul acestuia, acest lucru se realizează prin clauza accept = ”tip_fisier”; de asemenea, eticheta FORM trebuie să aibă metoda POST și să include un atribut enctype cu valoarea multipart/form-data;
HIDDEN : stochează informații ce nu trebuie afișate, dar sunt necesare pentru prelucrarea formularului pe server;
Atributul name din cadrul sintexei input atribuie obiectului respective un nume pentru ca valoarea să fie accesibilă limbajului PHP. Numele atribuit unui obiect trebuie să fie unic in acel formular.
Atributul value se referă la textul ce apare pe butoanele formularului, în cazul căsuțelor de editare, este valoarea afișată initial în căsuța respectivă .
Variabile, tipuri, conversii între tipuri și constante
În PHP, variabilele se declară cu ajutorul semnului ”$” care este pus în fața numelui variabilei ce se dorește a fi definite. Definirea se poate face în următoarele moduri :
$nume_variabilă;
$nume_variabilă = valoare;
Primul mod nu atribuie variabilei niciun tip, aceste fiind atașat în momentul în care primește o valoare. Al doilea mod atribuie variabilei declarate un tip de date în funcție de valoarea impusă după egal. De obicei, tipul variabilei nu este setat de către programator, ci limbajul PHP decide în timpul rulării scriptului, în funcție de contextul în care este folosită variabila respectivă .
Limbajul PHP lucrează cu următoarele tipuri de date :
ARRAY – șir indexat sau tablou;
FLOAT – număr real;
INTEGER – număr întreg;
OBJECT – variabilă obiect;
STRING – șir de caractere.
Pentru a stabili unei variabile un anumit tip, se folosește funcția settype(), ce are sintaxa următoare : int settype(string var, string type). Această funcție declară variabila var de tipul type. Tipurile acceptate sunt : „integer”, „double”, „string”, „array” și „object” . Funcția returnează true dacă s-a terminat cu success sau false în caz contrar.
Funcția gettype(), se folosește pentru a afla tipul unei anumite variabile, și are următoarea sintaxă : string gettype(mixed var).Rezultatul funcției este tipul variabilei var. Tipurile care pot fi returnate sunt : „boolean”, „integer”, „double”, „string”, „array”, „object”, „resource”, „uset function” și „unknown type”.
Conversia între tipurile de date este de două feluri : conversie automată de tip și conversie manual de tip. Pentru a evidenția convesia automata, se consider următorul exemplu:
$x = 1 ; //integer
$y = 1.5 ; //double
$z = $x + $y;
Variabila z va fi de tipul double. In timpul efectuării operației de adunare, deoarece un operand este de tip integer și altul este de tip double, variabila x va fi ca o variabilă double. Conversia automata apare în momentul în care se execută operații ce conțin elemenți de diferite tipuri.
Conversia manual constă în modificarea forțată a tipului unei variabile. Acest lucru se realizează prin adăugarea în fața variabilei a tipului la care se dorește a fi convertită variabila între paranteze. Acest tip de conversie se numește conversie forțată de tip.
Pe lângă variabile, PHP suporta declararea de constant, acest lucru se face cu ajutorul funcției define care arată așa:
int define (string name, mixed value [,case_insensitive]);
Diferențele dintre constante și variabile sunt :
Constantele nu au semnul $ în fața lor;
Constantele pot fi accesate oriunde, fără a se ține cont de regulile variabilelor;
Acestea nu pot fi redefinite sau șterse dupa ce au fost declarate.
În funcția de mai sus, daca case-insensitive va avea valorea 1, atunci constanta va fi case insensitive. Valoarea implicită este case-sensitive.
Mesaje de tip e-mail
Configurația standard PHP acceptă expedierea mesajelor de tip e-mail prin intermediul protocolului SMTP (Simple Mail Transfer Protocol). Aceste mesaje sunt compuse din două părți : un antet și un cop. Antetele indică adresa destinataturlui și subiectul mesajului, iar corpul conține mesajul propriu-zis.
Pentru a trimite un mesaj e-mail cu ajutorul SMTP, se folosește funcția mail(), care are următoarea sintaxă :
Mail(destinatar, subiect, corp, antete);
Funcția returnează TRUE dacă serverul de SMTP acceptă mesajul, iar în caz contrar, returnează FALSE.
Acces la baze de date relaționale
Limbajul PHP conține o bibliotecă de funcții ce furnizează o interfață cu sistemul MySQL de gestiune a bazelor de date. Cu ajutorul acestor funcții, un program scris în PHP poate obține accesul la datele ce se găsesc într-o baza de date MySQL și le poate modifica. Majoritatea interacțiunilor cu o bază de date se desfășoară după un model simplu:
Se deschide o conexiune cu serverul MySQL;
Se specific baza de date la care se va obține accesul;
Se emit interogări SQL, se obține accesul la rezultatele intergorărilor și se execute operații non-SQL;
Se inchide conexiunea cu serverul MySQL.
Pentru conectarea la un server MySQL , se apelează funcția mysql_connect(), ce are umătoarea sintaxa:
mysql_connect(nume_gazda, nume_utilizator, parola);
”nume_gaza” este numele gazdei pe care lucrează serviciul MySQL, ”nume_utilizator” este utilozatorul MySQL, iar ”parola” este parola MySQL asociată identificatorului de utilizator. Funcția returnează FALSE în caz de eșec, iar în caz contrar, returnează o valoarea, denumită identificator de legătură, care este instrument de manipulare pentru accesul la server.
După ce s-a stabilit conexiunea cu serverul MySQL, trebuie specificată baza de date la care se va avea acces. Pentru aceasta se va folosi funcția mysql_select_db care are următoarea sintaxă:
Mysql_select_db(baza_de_date);
”baza_de_date” este numele bazei de date la care se va obține accesul. Funcția returnează TRUE dacă se obține accesul la baza de date, respectiv FALSE în caz contrar.
În limbajul PHP există două tipuri de interogări SQL:
Interogările SELECT, care returnează rânduri dintr-unul sau mai multe tabele;
Interogările UPDATE, INSERT și DELETE, care nu returnează rânduri din table, dar modifică datele stocate în tabele.
Ambele categorii de interogări sunt emise folosind funcția mysql_query(), dar verificarea și prelucrarea rezultatelor interogărilor sunt procese diferite. Funcția mysql_query() execute o interogare specific. Funcția are următoarea formă:
mysql_query(interogare);
Interogarea este un șir ce conține comanda SQL care urmează să fie executată. Rezultatul acestia este TRUE dacă s-a executat cu success și FALSE în caz contrar.
Pentru a verifica dacă o interogare de tip UPDATE, INSERT sau DELETE a fost executată cu succes, se poate folosi funcția mysql_affected_rows(), care returnează numărul rândurilor afectate de interogare. În cazul în care funcția nu se execute, va returna valoarea -1.
Interogările SELECT returnează rânduri din table ca rezultate, aceste rânduri fiind incluse într-o structură de date numită set de rezultate. Setul de rezultate se prelucreaza prin parcurgerea prin iterație a rândurilor. Acest lucru constă în obținerea numărului de rânduri, urmată de deplasarea prin iterație, folosind numărul de rânduri ca limită pentru instrucțiunea FOR. Pentru a obține numărul de rânduri se folosește funcția mysql_num_rows(), transferând ca argument valoarea returnată de funcția mysql_query(). Pentru a se obține următorul rând din secvența setului de rezultate, se poate folosi funcția mysql_fetch_row(), la care este transferat ca argument valoarea returnată de funcția mysql_query(). Funcția are ca rezultate un tablou alcătuit din toate colonel rândului curent din table. Pentru a prelucra coloneale care sunt stocate în tablou, se folosește comanda foreach, care elimină necesitatea existenței unui index explicit al buclei. Accesul la valoarea unei anumite coloane se face prin referirea elementului din tablou folosind un index. Prima coloană din setul rezultat are indicele 0.
O altă modalitate este aceea prin care se folosește funcșia mysql_result(), care returnează conținutul unei cellule dintr-o interogare MySQL. Funcția are următoarea sintaxă:
Mysql_result(int rezultat, int coloana, [camp]);
”rezultat” este un set de rezultate returnat de funcția SELECT, ”coloana” este numărul coloanei la care se dorește accesul, iar ”camp” este numele coloanei sau numele coloanei urmat de punct și apoi numele tabelului din care face parte.
Pentru a inchide o conexiunea cu un server MySQL, se utilizează funcția mysql_close(), care are următoarea formă:
mysql_close()
Rezultatul funcției este TRUE în cazul în care s-a executat cu success și FALSE în caz contrar. În general, aceasta funcție nu este necesară, doarece limbajul PHP închide autmat conexiunile deschise cu bazele de date, atunci când un script își încheie execuția.Funcția se poate utiliza atunci când se vrea accesul la mai multe servere MySQL, ținându-se cont că, la un moment dat, se poate păstra o singură conexiune deschisă.
Sesiuni de lucru
Crearea sesiunilor de lucru este necesară, pentru că mai mulți utilizatori pot accesa anumite date în același timp și, de aceea, se dorește o metodă prin care să se protejeze anumite date în timpul unei accesări simultane. Crearea sesiunilor în PHP se face în mod automat, daca variabilei session.auto_sart I se atribuie valoarea 1 sau, prin intermediul funcției session_start() modul explicit sau session_register() modul implicit.
În momentul în care o sesiunea a fost creată, i se atribuie un numpr de ordine sau un ID. Funcția booleană session_start(void) creează o nouă sesiune sau reia o sesiune pe baza id-ului primit prin variabila trimisă printr-o metodă GET sau prin intermediul unui COOKIE. Rezultatul acestei funcții are întotdeauna valoarea TRUE.
Funcția booleană session_register(nume1, [nume2]) atașează toate variabilele globale întâlnite între paranteze la sesiunea curentă. Funcția returnează TRUE dacă atașarea s-a executat cu succes. Pentru a afla dacă o variabilă este atașată unei sesiuni, se folosește funcția session_is_registered, ce are următoarea sintaxa:
bool session_is_registered(string name);
Pentru a seta sau pentru a afla numele unei sesiuni, se foloște funcția session_name(), cu următoarea sintaxă:
string session_name([string nume]);
Distrugerea sesiunii curente se face cu ajutorul funcției session_destroy(), ce are următoarea formă:
bool session_destroy(void);
Funcția distruge toate datele asociate cu sesiunea respectivă și, în cazul în care s-a executat cu succes, returnează TRUE.
2.3. LARAVEL
Laravel este un framework web gratuit, open-source PHP, creat de Taylor Otwell și destinat dezvoltării de aplicații web după modelul arhitectural Model-View-Controller (MVC) și are la baza framework-ul Symfony. Unele dintre caracteristicile Laravel sunt un sistem modular de ambalare cu un manager de dependență dedicat, modalități diferite de accesare a bazelor de date relaționale, utilități care ajută la implementarea și întreținerea aplicațiilor.
Acesta facilitează sarcinile comune utilizate în majoritatea proiectelor web, cum ar fi autentificarea, rutarea, sesiunile și cache-ul. Laravel își propune să facă procesul de dezvoltare unul plăcut pentru dezvoltator, fără a sacrifica funcționalitatea aplicației. Este accesibil, dar puternic, oferind instrumente puternice necesare pentru aplicații mari și robuste.
2.3.1. Instalare
Pentru a instala Laravel avem nevoie de Composer care poate fi descărcat de pe pagina https://getcomposer.org după care se rulează următoarea comandă în Command Prompt:
composer global require "laravel/installer"
Comanda de mai jos se folosește pentru a crea un nou proiect de tip Laravel. Aceasta configurează automat structura de foldere și instalează dependințele necesare proiectului.
laravel new numeproiectnou
2.3.2. Configurare
În structura de foldere găsim un folder ”config” care conține setările pentru configurarea bazei de date, detaliile proiectului și alte setări prestabilite de către framework.
2.3.4. Comenzi
Comenzile pentru Laravel se rulează dintr-o fereastra CommandPrompt (Windows) sau Terminal (Linux/OSx) deschisă în folderului proiectului.
Comandă pentru a crea un model:
php artisan make:model DenumireModel
Comandă pentru a crea un controller:
php artisan make:controller DenumireController
Comandă pentru a a nouă tabelă în baza de date:
php artisan make:migration create_table_denumiretabela
Comandă pentru a crea structura bazei de date:
php artisan migrate
2.3.5. Baza de date
Maparea ORM cu baza de date inclusă în Laravel oferă o implementare ușoară ActiveRecord pentru lucru cu baza de date. Fiecare tabelă are un Model corespunzător care este utilizat pentru a interacționa cu tabelul.
2.4. LIMBAJUL SQL, MySQL ȘI phpMyAdmin
2.4.1. Sisteme de gestiune a bazelor de date relaționale
Un sistem de gestiune a bazelor de date relaționale este un lucru essential în numeroase medii, de la utilizările mai tradiționale în context de afaceri, cercetare și până la aplicațiile mai recente, cum ar fi operarea motoarelor de căutare de pe internet.
Conceptul de bază de date s-a definit în anul 1969 cu ocazia prezentării primului proiect de raport CODASYL (The Conference On Data Systems Languages), iar raportul final a fost prezentat în 1971. Ideea principal a organizării datelor se baza pe trei component de bază:
Schema de rețea – reprezintă organizarea logică a întregii bazei de date;
Subschema – reprezintă o parte a bazei de date așa cum e văzută de către utilizator sau de programele de aplicație;
Un limbaj de gestionare a datelor – definirea caracteristicile datelor, structura lor și care manipulează datele.
Pentru standardizare, s-au produs trei limbaje;
Un limbaj de definire a datelor la nivel de schema;
Un limbaj ajutător la nivel de subschema;
Un limbaj de manipulare a datelor.
Proiectul prezentat de CODASYL reprezintă prima generație de Sisteme de Gestiune a Bazelor de Date. Într-o primă încercare de definire, se poate considera un sistem de gestiune a bazelor de date relaționale ca reprezentând un SGBD care utilizează drept concepție de organizare a datelor modul relational. Altfel spus, un SGDBR reprezintă un sistem care suportă modelul relational.
Definirea unui SGBDR impune o detaliere a caracteristicilor pe care trebuie să le prezinte un SGBD pentru a putea fi considerat relational. În acest sens, Codd a formulat 13 reguli care exprimă cerințele pe care trebuie să le îndeplinească un SGDB pentru a putea fi considerat relațional. Niciunul dintre SGBDR disponibile astăzi nu respect întru totul cerințele formulate de Codd, în cadrul celor 13 reguli.
De aceea, nu sunt utilizate regulile lui Codd, pentru a caracteriza un SGDB și a fost formulate o serie de cerințe minimale pe care trebuie să le satisfacă un SGDB pentru a putea fi considerat relațional.
Un SGDB este minimal relațional dacă satisface următoarele condiții:
Toate datele din cadrul relației sunt reprezentate prin valori în tabele;
Nu există pointeri observabili de către utilizatori în tabele, în sensul că operațiile cu relații nu fac apel la pointeri, indecși, fișiere inverse;
Sistemul suportă operatori relaționali de proiecție, selecție și joining natural, fără limitări impuse de considerente interne. Unitatea de informații cu care se lucrează în cadrul acestor operații trebuie să fie relația.
Un SGDB este complet relațional daca este minimal relațional și, în plus, satisface următoarele condiții:
Sistemul suportă toate operațiile de bază ale algebrei relaționale, fără limitări impuse de considerente interne;
Sistemul suportă două dintre restricțiile de integritate de bază ale modului relațional și anume unicitatea cheii unei relații și restricția referențială.
Concepte ale bazelor de date relaționale
O baza de date relațională este formată din tabele, iar fiecare table stochează informații despre un anumit tip de entitate. Un tabel este structurat pe linii și coloane. Fiecare linie a tabelului conține o înregistrare, iar fiecare coloană descrie un atribut al înregistrării respective. Pentru a se putea face referire la o anumită linie a tabelului, se obișnuiește ca fiecare tabel să conțină o coloană care identifică în mod unic o linie a acestuia, coloana care poartă denumirea de cheie primară. Dacă nicio coloană nu conține o valoare unică pentru fiecare linie, se pot combina valorile mai multor coloane pentru a crea o cheie primară compusă.
În comparație cu fișierele și bazele de date non-relaționale, bazele de date relaționale prezintă o serie de avantaje și dezavantaje.
Facilitatea partajării datelor
Avantajul principal al unui SGDBR îl constituie capacitatea de partajare a datelor. Acest fapt este important mai ales pentru aplicații bazate pe WEB, deoarece mai mulți utilizatori pot obține acces la aceleași date simultan. Un SGBDR include elemente de protecție, elemente ce sunt proiectate pentru a preveni pierderea actualizărilor și deteriorarea datelor. Are o arhitectura client-server care pune la dispoziție datele stocate prin intermediul unei rețele. Bazele de date relaționale furnizează partajarea datelor atât în timp , cât și în spațiu.
Asigurarea independenței datelor
Independența datelor este un avantaj al bazelor de date care este depășit, ca importanță, numai de partajarea datelor. Când un program obține accesul la un fișier, datele sunt transferate programului în aceeași manieră în care sunt stocate. Programatorii folosesc un limbaj special pentru a solicita date dintr-o baza de date relațională.De asemenea, ei pot solicita numai coloanele unui tabel ce sunt necesare într-o anumită aplicație. Această caracteristică este importantă atunci când la o bază de date sunt adăugate coloane noi.
2.4.2. Limbajul SQL
SQL (Structured Query Language) a fost conceput inițial de IBM, pentru produsul dBASE, ca un limbaj standard de descriere a datelor și de acces la informațiile din baza de date. Limbajul de interogare a bazelor de date relaționale, SQL a fost utilizat pe o scară largă și până în prezent au fost dezvoltate șapte versiuni ale standardului SQL, trei dintre ele aparținând Institutului Național American de Standarde (ANSI), celelalte fiind concepute de firme de prestigiu ca IBM, Microsoft și Borland sau de către cei de la SAG și X/Open.
Primul standard SQL a fost creat în anul 1989 de către ANSI, fiind cunoscut sub numele ANSI-SQL’89 și a fost revizuit în octombrie 1992 sub noua denumire ANSI-SQL’92.
În încercarea de a extinde limbajul SQL, ANSI pregătește o nouă generație de standard SQL, denumită SQL3, care se adresează bazelor de date orientate obiect. Interfețele de programare API, realizate în cadrul grupului SAG de către firmele Microsoft și Borland, se bazează pe un subset al standardului ANSI. Gestiunea bazelor de date de diferite tipuri se poate face ușor prin intermediul interfețelor inteligente, numite drivere. Acestea recepționează mesajele de la client și le traduc în instrucțiuni SQL sau API.
Clauze, atribute, operatori și funcții SQL
Clauze:
SELECT – menționează o listă de atribute;
FROM – menționează o listă de relații;
WHERE – descrie un predicat de selecție;
ORDER BY – permite modificarea ordinii de afișare a rezultatelor;
GROUP BY – permite organizarea rezultatelor în grupuri asupra cărora se pot realiza anumite operații;
UNION – permite realizarea reuniunii de tabele.
Exemplu de interogare SQL:
SELECT X1 X2, … Xn
FROM Tabela1
WHERE P > 0;
Unde X1, X2, … Xn sunt atribute ce apar în Tabela1, iar P este un predicat de selecție, o condiție.
Lista de atribute ce apare în clauza SELECT poate fi înlocuită cu simbolul „*” în cazul în care dorește ca toate atributele să fie selectate. Întotdeauna rezultatul unei interogări SQL este o tabelă.
Lista de atribute poate fi formată din:
serie de atribute separate prin virgule care vor apărea în tabela rezultată în ordinea care s-a cerut în linia de comandă, de la stânga la dreapta;
Toate atributele din relația pe care se face interogarea, în ordinea în care au fost definite în această relație;
Expresii formate din următoarele elemente:
Atribute și operatori aritmetici
Funcții standard
Constante
Variabile de memorie
Expresii care conțin funcții SQL agregat cum ar fi AVG(), MAX(), MIN(), SUM(), etc.
Lista operatorilor:
Artimetici (+, – , / , * , ** , ^), ** și ^ reprezintă ridicarea la putere;
Relaționali (< , > , <= , >= , <> , != , =);
Logici (AND, OR , NOT) ;
Operatori SQL (IN, EXISTS, ALL , ANY).
Funcțiile standard sau agregate apar în clauza SELECT și se aplică atributelor din tabelele implacte în interogare. Aceste funcții pot fi:
Valoarea medie : AVG ;
Valoarea minimă : MIN ;
Valoare maximă : MAX ;
Total : SUM ;
Numărătoare : COUNT .
Normalizare
Atunci când se proiectează o bază de date, un obiectiv foarte important este realizarea unei reprezentări corecte a datelor, a relațiilor dintre date și a restricțiilor impuse asupra datelor. Pentru realizarea acestuia se utilizează tehnica normalizării, care are ca scop principal identificarea celui mai adecvat set de relații care să modeleze relația dorită.
Procesul de normalizare a fost introdus de E.F. Codd în anul 1972. Inițial, s-au propus trei forme normale, notate 1NF, 2NF, 3NF. Mai târziu, prin enunțarea unei definiții mai tari a formei normale 3, s-a obținut forma Boyce-Codd. Toate aceste forme normale se bazează pe dependențele funcționale stabilite între atributele unei relații. Cele mai utilizate forme sunt forma normală 3 și forma normală Boyce-Codd. Există și forme normale mai tari, dar acestea sunt folosite mai rar.
Forma normală 1 : o relație se găsește în forma normala 1 dacă orice atribut este atomic, adică nu există atribute compuse sau repetitive. Pentru a transforma o relație în această formă, identificăm și ștergem grupurile repetitive prin relație.
Forma normală 2 : se obține utilizând conceptual de dependent funcțional totală. O relație este în această formă , dacă este în forma normală 1 și fiecare atribut care nu este cheie primară, este total dependent funcțional de cheia primară.
Forma normală 3 : deși forma normală 2 nu conține atâta redundanță ca și forma normala 1, există situații în care pot apărea anomalii la actualizare. Aceste anomalii apar din cauza redundanței generate de dependența tranzitivă. O relație se află în forma normală 3 dacă este deja în forma normală 2 și niciun atribut care nu este cheie primară, nu este tranzitiv dependent de cheia primară. În cazul existenței dependenței tranzitive, se șterg coloanele care sunt tranzitiv dependente de cheie primară și ce creează o nouă relație cu aceste coloane, împreuna cu determinantul lor, adică cheia primară.
Forma normală Boyce-Codd : se obține utilizând cheile candidat din relație. O relație cu o singură cheie candidat în forma normală 3 este și în forma normală Boyce-Codd. O relație este în această formă dacă și numai dacă orice determinant din relație este cheie candidat. În cazul în care relația nu este în această formă, trecerea se realizează prin ștergerea din relația inițială a atributelor care sunt asociate unui determinant care nu este cheie candidat și se creează o noua relație cu aceste atribute și determinantul lor.
2.4.3. MySQL
MySQL este un sistem de gestiune a bazelor de date relaționale, produs de compania suedeză MySQL AB și distribuit sub Licență Publică Generală GNU. Este cel mai popular SGBD open-source la momentul actual, fiind o componentă cheie a stivei LAMP(Linux, Apache, MySQL, PHP).
Deși este folosit foarte des împreună cu limbajele de programare JAVA, PHP, cu MySQL se pot construi aplicații în orice limbaj major. Există multe scheme API disponibile ce permit scrierea aplicațiilor în numeroase limbaje de programare pentru accesarea bazelor de date, cum ar fi: C, C++, C#, Borland Delphi, Java Perl, PHP, Python, FreeBasic, etc, fiecare dintre acestea folosind un tip specific API. O interfață de tip ODBC denumită MyODBC permite altor limbaje de programare ce folosesc această interfață, să interacționeze cu bazele de date MySQL cum ar fi ASP sau Visual Basic.
Pentru a administra bazele de date cu MySQL se poate folosi modul linie de comandă sau se poate descărca de pe internet o interfață grafică cum ar fi MySQL Administrator și MySQL Query Browser. Un alt instrument de management al acestor baze de date este aplicația SQL Manager.
Acesta rulează pe multe platforme software existente: AIX, FreeBSD, GNU/Linux, Mac OS X, NetBSD, Solaris, SunOs, Windows 9x/NT/2000/XP/Vista/7/8.1.
MySQL Database Software este un sistem client/server ce constă într-un server MySQL multithreaded care suportă diferite programe client și biblioteci, unelte administrative și o gamă largă de interfețe pentru programare aplicațiilor.
Caracteristici de bază MySQL
Câteva dintre caracteristicile de bază sunt:
Funcționează pe diferite platforme;
Dispune de API pentru C,C++, Eiffel, Java, Perl, PHP, Phyton, Ruby si TCL;
Comple multi-threaded folosind thread-uri de kernel. Acest lucru înseamnă că poate lucra pe mai multe procesoare daca sunt disponibile;
Un sistem de alocare a memoriei foarte rapid și bazat pe thread-uri;
Folosește tabele temporare stocate în memorie;
Funcțiile SQL sunt implementate folosind o bicliotecă de clase optimizată și sunt foarte rapide. De obicei, nu are loc alocarea memoriei dupa inițializarea interogărilor;
Serverul este disponibil ca program separat ce poate fi folosit într-un mediu de rețea de tip client/server. De asemenea, este disponibil și ca bibliotecă ce poate fi inclusă în aplicații de sine stătătoare;
Oferă motoare tranzacționale și non-tranzacționale de stocare a datelor.
Comenzile SQL se pot scrie cu litere mari sau mici, având același efect. Comenzile SQL se termină cu caracterul „;”.
Comenzi din linia de comandă:
CREATE DATABASE – crează o bază de date;
USE – se selectează o bază date;
CREATE TABLE – se crează o tabelă;
ALTER – modificarea definiției unei tabele se realizează folosind această comanda;
INSERT – adaugă înregistrări într-un tabel;
UPDATE – permite modificarea valorilor unor câmpuri dintr-un tabel;
DROP – permite suprimarea unui tabel din baze de date;
SHOW – se folosește pentru listarea tabelelor care alcătuiesc baza de date;
SELECT – selectează anumite date dintr-una sau mai multe tabele.
2.4.4. phpMyAdmin
phpMyAdmin este o uneală scrisă în PHP cu scopul de a administra baze de date MySQL pe WEB. Poate crea/sterge/modifica tabele, poate să adauge/sterge/modifice câmpuri. Execută interogări SQL, administrează privilegii, exportă datele în diverse forme și este disponibil în multe limbi.
Acesta se instalează împreuna cu un server local cum ar fi XAMPP sau WAMP și se poate accesa prin adresa URL:
http://localhost/phpmyadmin
2.5. HTML și CSS
2.5.1. HTML
HTML sau HyperText Markup Language este limbajul utilizat în World Wide Web pentru descrierea hipertextelor. HTML nu este un limbaj de programare propriu-zis, ci doar un limbaj de descriere, conținând elemente ce permit construirea paginilor Web. Acesta este derivat din SGML (Standard Generalized Markup Language – limbaj standard generalizat de marcare) dar este mult mai simplu fiind destinat numai paginilor web, având caracteristici specifice limbajelor descriptive:
Documentele HTML sunt de tip text (ASCII) putând fi create cu orice editor de texte;
Documentele HTML pot fi vizualizate cu diferite browser-e și sunt independente de platforma de lucru;
Limbajul utilizează pentru descrierea documentelor web etichete sau marcaje specifice pentru fiecare element descris, etichetele stabilesc atât structura documentului cât și aspectul acestuia.
O eticheta sau un marcator este un identificator care furnizează browser-ului instrucțiuni de formatare a documentului.
Etichetele HTML sunt încadrate între paranteze unghiulare „<, >”, „<eticheta>” – marcaj de început și „</eticheta>” – marcaj de sfârșit. Efectul corespunzător marcajului este aplicat textului dintre eticheta de început și cea de sfârșit.
Unele elemente admit atribute ce conțin informații suplimentare despre conținutul elementelor. Atributele se precizează în cadrul marcajului de început, se separă prin spații și se precizează sub forma: atribut = valoare.
Structura unui document HTML
Un document HTML este delimitat de perechea de etichete <HTML> și </HTML> și este constituit din:
Antetul documentului delimitat de marcajele <HEAD> și </HEAD>, conține informații generale despre document cum ar fi :
Titlul documentului – cel care va fi afișat în bara de titlu a ferestrei browser-ului și este delimitat de marcajele <TITLE> și </TITLE>;
Corpul documentului delimitat de eticheta <BODY> și </BODY>, conține textul propriu-zis al documentului și elementele de formatare ale acestuia. Acesta poate fi personalizat după preferințe având la dispoziție multe comenzi , spre exemplu pentru schimbarea culorii de fundal se folosește comanda BGCOLOR = roșu, și multe alte comenzi.
Formatarea textului
Formatarea textului care apare într-un document HTML se poate face la nivel de:
Bloc, pot conține și alte elemente de formatare și încep de la linie nouă;
Caracter, conțin doar text sau alte elemente de formatare la nivel de caracter.
Gruparea mai multor elemente HTML la nivel de bloc se realizează cu ajutorul etichetei <DIV> și </DIV>. Pentru gruparea mai multor elemente dintr-un bloc la nivel de caracter se utilizează eticheta <SPAN> și </SPAN>.
Formatarea paragrafelor
În HTML delimitarea paragrafelor se realizează cu ajutorul etichetei <P> și </P>. Pentru a stabili același mod de grupare pentru mai multe paragrafe, trebuie să le grupăm într-un singur bloc cu ajutorul etichetei <DIV>.
Pentru a insera în document o linie vidă se utilizează marcajul <BR>.
Paragrafe titlu
Fiecare element structural al unui document este precedat de un titlu de paragraf.
Documentele HTML pot fi structurate pe șase niveluri, în funcție de importanța lor, existând șase etichete care definesc nivelul paragrafului titlu în structura documentului: <H1>, <H2>, <H3>, <H4>, <H5>, <H6> . Etichetele de sfârșit sunt obligatorii.
Utilizarea listelor
Utilizarea listelor este necesară pentru prezentarea informațiilor în mod structurat. Se pot utiliza trei tipuri de liste:
Liste neordonate (Unordered List) – sunt utilizate atunci când există o legătură între elementele listei dar nu se impune o anumită ordine a lor. Aceste liste sunt încadrate între marcajul <UL> și </UL>, fiecare element al listei fiind precedat de marcajul <LI> care introduce înaintea elementului o bulină.
Liste ordonate (Ordered List) – sunt utilizate atunci când elementele listei trebuie prezentate într-o anumită ordine. Aceste liste sunt încadrate între marcajul <OL> și </OL>, fiecare element al listei fiind precedat de marcajul <LI>.
Liste de definiții (Definition List) – sunt cele în care intrările sunt formate din două paragrafe: primul corespunzător termenului iar al doilea, identat, corespunzător definiției termenului. Crearea unei astfel de liste este marcată cu eticheta <DL> și </DL>. Prin urmare o intrare în listă va avea două componente:
Termenul marcat cu tag-ul <DT>(Definition Term) care poate conține doar elemente de formatare inline.
Definiția termenului marcată cu eticheta <DD> (Definition Description) care poate conține și elemente de formatare la nivel de bloc.
Tabele în documente HTML
Tabelele permit organizarea informațiilor într-un document HTML. Inserarea unui tabel se face prin intermediul marcajului <TABLE> și </TABLE>.
Conținutul elementului TABLE este constituit din liniile tabelului. Specificarea unei linii se realizează cu ajutorul elementului TR (Table Row), între eticheta de început <TR> și cea de sfârșit </TR>.
Exemplu:
<TABLE>
<TR>conținutul primei linii</TR>
<TR>conținutul celei de a doua linii</TR>
</TABLE>
Specificarea celulelor care constituie o linie se realizează prin intermediul elementelor TH (Table Header), pentru celulele care constituie antetul tabelului, respectiv TD (Table Data) pentru celule care conțin informațiile din tabel.
2.5.2. CSS
Crearea paginilor HTML este un lucru relativ simplu, învățarea etichetelor HTML și crearea unor imagini ducând la realizarea de pagini web de o complexitate medie. Odata cu dezvoltarea internetului, site-urile au devenit din ce în ce mai complexe, cu un număr mai mare de pagini, cerințele privind grafica și elementele din pagină au devenit mai pretențioase și astfel proiectarea paginilor web a devenit o sarcină ceva mai dificilă.
O problema importantă când avem un site cu multe pagini este atunci când dorim să facem anumite schimbări în elementele pagini: fondul, grafica sau fontul textelor din pagini. Prin utilizarea CSS ce vine de la Cascading Style Sheets în traducere foi în stil cascada, acest lucru nu mai este o problemă, realizându-se relativ ușor, prin schimbarea sau adăugarea unor elemente în codul CSS, nefiind nevoie să lucrăm la fiecare pagină sau la fiecare element din pagină.
CSS se ocupă în general cu aspectul și controlul grafic al elementelor din pagină, cum ar fi: textul, imaginile, fondul, culorile și așezarea acestora în cadrul ferestrei paginii. CSS folosește stiluri, acestea înglobează, sub un anumit nume, atribute de formatare care se aplică asupra unui element individual din pagină, asupra unui grup de elemente sau la nivelul întregului document.
CSS funcționează cu HTML, însă nu este HTML. El extinde funcționalitățile HTML, permițând redefinirea etichetelor HTML existente. Prin utilizarea CSS aspectul documentului pe ansamblu, sau a unui element individual din interiorul său, poate fi controlat mult mai ușor. Stilurile pot fi aplicate asupra unui element, a unui document sau chiar asupra unui întreg site web. Un dezavandaj ar fi că unele navigatoare nu sunt compativile CSS¸ astfel că documentele HTML sunt afișate ca și cum nu ar avea CSS, dar cele mai cunoscute și utilizate browsere cum ar fi : Mozilla Firefox, Google Chrome, Opera, Internet Explorer sunt compatibile.
Scrierea codului CSS
Codurile CSS pot fi scrise în interiorul paginii sau într-un fișier extern cu extensia „.css”. Codul este alcătuit din obiectul care va fi formatat, proprietățile acestuia și valoarea fiecărei proprietăți.
Când este adăugat în documentul HTML, trebuie scris în cadrul marcajului <STYLE> în secțiunea HEAD a documentului, după cum se vede în formula generală de mai jos :
<style type=”text/css”>
Obiect{
Proprietate:valoare;
Proprietate2:valoare2;
}
</style>
Componentele unui obiect CSS
Obiectele CSS au în componență următoarele elemente:
Selectorii care identifică un obiect, aceștia pot fi selectori de etichete HTML, clase sau identificator;
Proprietățile care identifică o proprietate a obiectului și se referă la aspect;
Valorile care sunt atributele unei proprietăți, acestea pot fi cuinte cheie, valori numerice sau procentuale, tipul valorii depinzând de proprietate.
Cap. 3. PREZENTARE APLICAȚIE TranSMART
Fig. 3.1. Aplicație TranSMART
TranSMART este o aplicație dedicată pentru o companie de transport care se ocupă de mutarea dintr-o locație în alta, pe baza unor condiții de client bine filtrate. Cheia acestei aplicații, pe lângă faptul că compania își poate organiza angajații, comenzile, facturile, activele în cadrul acesteia, este că prețul comenzii este generat automat și dinamic în funcție de preferințele și condițiile utilizatorului. Domeniul de aplicare al cererii este de a simplifica procesul de "apelare a unei noi camioane atunci când doriți să vă deplasați".
Aplicația este dezvoltată pe baza tehnologiilor Open Source și singurele cerințe pentru implementarea aplicației este un server cu cerințe hardware minime. Principala tehnologie folosită este PHP cu Laravel Framework, care are structura Model-View-Controller. MySQL este folosit ca gazde de baze de date și tehnologii web ca JavaScript, jQuery, Bootstrap a fost folosit în procesul de dezvoltare. Aplicația utilizează, de asemenea, pachete externe, pe care le folosește Hărți Google pentru locații și scrierea în format PDF care sunt utilizate pentru funcția de facturare.
În aplicație pot exista 2 tipuri de utilizatori: client sau angajat. Fiecare tip are acces limitat și funcționalitate în cadrul sistemului. Clientul poate trimite comenzi noi numai și are acces la pagina de profil unde își poate verifica ordinele de date și istoric. Utilizatorul angajatului poate accesa noua pagină de comandă, pagina de profil, dar are acces la întregul panou de administrare de la care poate fi gestionat fluxul de lucru al companiei.
3.1. STRUCTURA APLICAȚIEI
3.1.1. Modelul bazei de date
Structura bazei de date a aplicației TranSMART este următoarea:
Fig. 3.2. Modelul bazei de date
Tabele users, employees și settings conțin informații de configurare și datele utilizatorilor, angajaților și setările companiei legate de prețuri si coeficient de calcul.
Tabelele de sistem precum migrations și password_resets sunt utilizate de către framework-ul Laravel pentru crearea bazei de date și resetarea parolelor a conturilor utilizatorilor.
Principala tabela a aplicației este orders care are dependințe către:
order_details, ce conține toate detaliile unei comenzi precum adresă, distanță, serviciile dorite și opțiunile alese.
clients, ce conține informații despre clienții care au făcut cel puțin o comandă prin aplicație.
order_attributes, această tabelă este de configurare pentru asignarea produselor/elementelor dintr-o comandă. Această are la rândul său o dependință către tabela attributes care conține toate produsele/elementelor afișate în formularul de comandă.
cars, este tabela utilizată pentru stocarea informațiilor mașinilor deținute și utilizate de către companie.
View-ul view_orders, este creat prin adunarea datelor din mai multe tabele și afișarea lor într-un singur loc. Acesta este folosit pentru a citi datele într-un mod mai ușor în aplicație.
3.1.2. Paginile aplicației
Structura paginilor aplicației este după cum urmează:
Fig. 3.3. Paginile aplicației
De menționat este faptul că structura paginilor din imaginea de mai sus este vizibilă doar utilizatorilor cu drept de admin sau angajaților companiei. Pentru utilizatorii externi paginile vizibile sunt: Prima Pagină și Profilul meu.
Prima Pagină
Fig. 3.4. Prima pagină
Aceasta este pagina de întâmpinare a utilizatorilor, unde este afișat un buton care duce direct către formularul de comandă. Daca utilizatorul nu este înregistrat cu un cont, prin apăsarea butonului acesta va fi redirecționat către pagina de autentificare sau înregistrare.
Fig. 3.5. Pagina autentificare
Fig. 3.6. Pagina de înregistrare
Pagina ANGAJAȚI
Această pagină are rolul de a afișa, adăuga și de a prelucra datele angajaților companiei. Pagina poate fi accesată doar de către angajați.
Fig. 3.7. Pagina angajați
Fig. 3.8. Formular adăugare date angajat
Datele ce pot fi introduse în baza de date sunt: Nume, Prenume, Telefon, Adresă, Email, CNP, Funcția în firmă și Salariu.
Pagina MAȘINI
Pe această pagină găsim date despre vehiculele deținute și utilizate de către companie. Aici se pot adaugă înregistrări noi sau se pot modifica date deja existente.
Fig. 3.9. Pagina mașini
Fig. 3.10. Formular adăugare date mașină
Datele care se stochează conțin următoarele coloane: Marca autoturismului, Modelul, Anul fabricației, Numărul de înmatriculare, Volumul/Capacitatea mașinii care va fi folosit în calcularea prețului unei comenzi, Tipul de combustibil, Capacitatea motorului, valabilitatea impozitului, și valabilitatea asigurării RCA.
Pagina CLIENȚI
În pagina Clienți, sunt afișate datele clienților companiei care sunt introduși manual de către angajați sau datele utilizatorilor care au făcut cel puțin o comandă utilizând formularul. Din această pagină se poate verifica și câte comenzi a făcut fiecare client, și detalii despre acestea.
Fig. 3.11. Pagina de clienți
Pagina COMENZI
Datele fiecărei comenzi sunt stocate în această pagină. O comandă este adăugată automat atunci când un client folosesc formularul de comandă sau poate fi adăugată manual de către un angajat.
Fig. 3.12. Pagina comenzi
Cu ajutorul acestei pagini, se poate procesa fiecare comandă și vizualiza detaliile acesteia. Totodată se poate descărca factura generată automat de către sistem.
Fig. 3.13. Vizualizare comandă
Fig. 3.14. Vizualizare detalii comandă
Pagina UTILIZATORI
Această pagină afișează o listă cu toți utilizatorii aplicației. De aici se poate schimba rolul fiecărui utilizator, pentru a avea drepturi de administrator sau simplu user.
Fig. 3.15. Pagina utilizatori
Pagina SETĂRI
Pentru modificarea setărilor precum prețul pe kilometru impus de către companie și coeficientul de calcul (tariful) al volumului, se folosește această pagină. De aici se pot adăuga elementele ce vor fi afișate dinamic în formularul de comandă.
Fig. 3.16. Pagina setări
Pagina PROFILUL MEU
Se găsesc informații despre contul personal și comenzile utilizatorului care duce către pagina de detalii comenzi. Fiecare comandă are atașată factura generată automat de către sistem.
Fig. 3.17. Pagina profilului
3.1.3. Formularul de comandă
Cu ajutorul aceste pagini, utilizatorii pot plasa comenzi într-un mod interactiv. In prima parte a formularului avem o harta care se actualizează dinamic după ce datele de ridicare și destinație au fost completate și se va afișa traseul.
Fig. 3.18. Formular comandă – hartă
Formularul conține câmpuri ce trebuie completate de către utilizator precum Informații de plecare, de sosire, serviciile disponibile oferite de către companie și bunurile pe care le are de transportat.
Fig. 3.19. Formular comanda – informații necesare
În ultima parte a formularului, se găsește o lista detaliată cu elemente grupate pe categorii Camera de zi, Dormitor, Bucătărie, Diverse, Birou, Grădină, Camera copilului, Electrocasnice. Fiecare categorie conține elemente specifice acesteia.
Fig. 3.20. Formular comanda – produse/elemente
Prețul este calculat dinamic în funcție de ce servicii și elemente au fost selectate, dar și în funcție de distanța comenzii, primii 30km fiind gratuiți ceea ce înseamnă o cursă internă în oraș.
3.1.4. Simularea prețului comenzii
Pentru calcularea prețului unei comenzi sunt folosiți coeficientul de calcul și prețul pe kilometru care sunt setați de către companie în pagina Setări.
Prețul distanței de face prin înmulțirea fiecărui kilometru extra (ceea ce depășește 30km) cu prețul pe kilometru setat. Spre exemplu dacă prețul pe kilometru este 1.5lei, iar distanța totală a cursei este de 150km. Costul distanței: (150-30)*1.5 = 180lei. Acest cost se adaugă la prețul de început care este 80lei.
Un impact major în calcularea prețului îl dețin și informațiile de plecare și sosire. Cum ar fi etajul imobilului de unde trebuie ridicate produsele, liftul, accesul în scară și accesul în parcare. În funcție de aceste criterii prețul comenzii crește cu 40lei pentru fiecare criteriu, atât la adresa de ridicare, cât și la adresa de sosire.
Spre exemplu, dacă imobilul de unde se ridică produsele nu are lift, și este nevoie de transportarea produselor de la etaj, prețul crește cu cel puțin 40lei în funcție de etaj.
Compania poate oferi servicii precum încărcarea bunurilor la ridicare și la sosire, ambalare în cutii, montare mobilier, ambalare mobilier și dacă se dorește cutii. Fiecare din aceste servicii aduce un cost adițional.
Produsele ce trebuie mutate, sunt selectate după preferințele fiecărui utilizator, iar fiecare produs este configurat cu un anumit volum. În funcție de volumul acestuia, se înmulțește cu acel coeficient presetat, și se adaugă la prețul comenzii. Spre exemplu o canapea cu 2 locuri are un volum prestabilit de 10, care se înmulțește cu 6 (coeficientul de calcul) și rezultă un cost adițional de 60lei.
Prin completarea întregului formular, prețul se va modifica dinamic odată cu opțiunile alese și va fi afișat în timp real. La finalizarea acestuia, se va genera automat factura detaliată urmând ca angajații companiei să proceseze comanda.
3.1.5. Procesarea comenzilor și facturarea
Fluxul de lucru cu aplicația TranSMART
Aplicația de gestiune TranSMART oferă funcții utile companiei pentru o mai bună organizare internă precum prelucrarea datelor angajaților, mașinilor, clienților și a comenzilor.
Fiecare mașină folosită de către companie este înregistrată în aplicație și va fi asignată automat unei comenzi în funcție de volumul cerut de către client.
Pasul 1 – Clientul plasează o comandă din pagina Formular Comandă cu specificațiile dorite. Acesta primește în timp real factura detaliată cu prețul aferent.
Pasul 2 – În sistem, se înregistrează comanda și este afișată în pagina Comenzi, un angajat al companiei este nevoit sa prelucreze comanda prin contactarea clientului pentru a stabili un timp disponibil ambelor pentru transport.
Pasul 3 – În funcție de volumul comenzii, mașina a fost asignată automat acesteia, iar angajații companiei urmează să presteze serviciul oferit.
Pasul 4 – Plata se face pe baza facturii generate automat de către sistem.
Pasul 5 – Atât clientul, cât și angajatul poate vedea o arhiva a comenzilor făcute.
Factura este generată automat într-un format de tip PDF și va fi mereu salvată în baza de date.
3.2. PACHETE ȘI RESURSE FOLOSITE
Barryvdhv/laravel-dompdf
Este un pachet open-source pentru framework-ul Laravel pentru scrierea și generarea fișierelor de tip PDF. Acest pachet a fost folosit pentru generarea facturilor în aplicație.
Cornford/googlmapper
Pachet open-source pentru Laravel ce face posibilă integrarea harților Google în aplicație. A fost folosit pentru generarea hărții din formularul de comandă.
Integrează tot pachetul oferit de Google, inclusiv distanțele.
Yajra/laravel-datatables-oracle
Pachet open-source pentru integrarea tabelelor dinamice în aplicație. Acest pachet este integrat paginile aplicației pentru listarea datelor din baza de date.
Cerințe de sistem
PHP >= 7.1.3
Extensie OpenSSL PHP
Extensie PDO PHP
Extensie Mbstring PHP
Extensie Tokenizer PHP
Extensie XML PHP
Extensie CtypePHP
Extensie JSON PHP
Cap. 4. STUDIU DE CAZ – S.C. Mutări S.R.L.
Datele ce urmează a fi prezentate sunt pur fictive în scopul redactării acestei lucrări.
PREZENTARE COMPANIE
Compania S.C. Mutări S.R.L. cu sediul central în Brașov, își desfășoară activitatea în domeniul transport-marfă / mutări. Aceasta are 8 angajați dintre care 2 șoferi, 4 manipulanți marfă ce ajută la transportarea produselor, un administrator/director și un contabil.
În prezent compania deține 2 mașini cu o capacitate de transport între 1 și 1.5 tone. Aceasta își promovează activitatea prin intermediul rețelelor de socializare și un website de prezentare. Având în vedere statisticile site-ului, acesta are un număr considerabil de vizitatori dar nu este îndeajuns de interactiv pentru a finaliza o comandă și de multe ori clienții sunt pierduți.
Cea mai mare parte a clienților sunt recomandați de către foști clienți a-i companiei, dar această metodă de promovare nu este eficientă.
Gestionarea interna a angajaților și a mașinilor nu se face cu ajutorul unui sistem informatic, și nu există o bază de date a clienților sau un istoric al comenzilor. Procesul de facturare se face manual prin chitanțier.
Compania dorește să se promoveze și să își îmbunătățească fluxul de lucrul, totodată să își mărească considerabil numărul de comenzi ceea ce va duce automat la o creștere de profit.
TRANSMARF
Sistemul informatic TranSMART este dedicat acestui domeniul în care activează compania SC Mutări SRL. Pentru a putea fi implementată, aplicația are nevoie de un spațiu pe server cu cerințe minime. În cazul în care compania are deja un site de prezentare, acesta se poate înlocui automat cu aplicația TranSMART, costurile lunare fiind aceleași ca la un site de prezentare. În cazul în care, compania nu deține deja un site sau un spațiu pe un server, acesta se poate achiziționa cu un cost adițional de aproximativ 20lei pe lună, plata se poate face trimestrial, odată la 6 luni sau anual.
Odată implementat sistemul, companiei i se va crea un cont de administrator prin care va putea configura tot și se pot crea conturi noi pentru angajați. Se începe prin adăugarea datelor despre angajați pentru o bună centralizare interna a datelor, adăugarea datelor despre mașinile deține precum și valabilitatea taxelor ca impozitul și asigurarea RCA. Al doilea pas care trebuie făcut în sistemul informatic este de a schimba prețul pe kilometrul și confientul de calcul al volumului în funcție de tariful companiei.
Formularul de comandă conține o listă foarte detaliată de produse care sunt afișate, dar în cazul în care se dorește adăugarea, ștergerea sau modificarea acestora, se poate face cu ușurință din panoul de control al aplicației.
Platforma are o bună optimizare SEO pentru a fi indexată în motoarele de căutare precum Google sau Bing, ceea ce înseamnă că motoarele de căutare va lista aplicația noastră printre primele opțiuni în pagină la o simplă căutare folosind cuvinte cheie specifici domeniului. În acest fel clienții găsesc mult mai ușor site-ul/aplicația companiei SC Mutări SRL.
Utilizatorul extern odată ajuns în pagină poate să înceapă să completeze formularul de comandă, ceea ce rezultă o comanda plasată deja prin intermediul platformei online, nemaifiind nevoie de comunicare prin alte metode. Formularul de comandă oferă o calculare în timp real a costului total în funcție de alegerile clientului, ceea ce face lucrul cu aplicația mult mai interactiv. Iar factura este generată imediat după ce a fost completat formularul. După plasarea comenzii, utilizatorul poate urmări statusul comenzii din pagina contului creat și este afișat un istoric al comenzilor făcut de acesta cu facturile aferente atașate.
Din momentul în care o comandă a fost plasată, informațiile clientului au fost stocate în baza de date internă pentru a aduna informații ce pot fi folosi în diverse scopuri pentru viitor, precum statistici, care ajută la deciziile manageriale. Iar angajații companiei sunt notificați imediat ce comanda a fost plasată, având acces instant la adresa de ridicare și sosire, precum toate informațiile necesare pentru a putea ști cum să se pregătească pentru acel transport.
Folosind această aplicație, compania de transport marfă își poate mări considerabil portofoliul de clienți, numărul de comenzi și automat profitul generat. Organizarea și gestionarea interna poate fi ținută sub control prin intermediul paginilor disponibile în aplicație.
Cap. 5. CONCLUZII ȘI PROPUNERI
CONCLUZIE
Această lucrare susține alegerea și utilizarea aplicațiilor web în detrimentul aplicațiilor stand-alone/desktop deoarece sunt mai ușor de întreținut și de dezvoltat, având și un nivel de securitate mult mai ridicat, totodată sunt mult mai ușor de îmbunătățit fiind nevoie doar de schimbarea echipamentului hardware al serverului.
Aplicația TranSMART vine în ajutorul companiilor din domeniu și poate îmbunătăți fluxul de lucru din companie ceea ce poate rezulta la creșterea profitului. Utilizarea aplicației se face într-un mod interactiv nefiind nevoie de cursuri de specialitate sau cunoștințe în domeniu. Utilizatorii și angajații pot accesa imediat datele stocate în aplicație pentru a putea fi interpretate și prelucrate.
Acest sistem informatic este dedicat companiilor de transport care se ocupă cu mutări, dar este dezvoltat pe baza experienței utilizatorului extern care dorește să se mute, astfel utilizând aplicația, poate plasa foarte ușor și interactiv o comandă, în acest mod se elimină o comunicare de multe ori lungă între client și companie.
PROPUNERI
Eventualele îmbunătățiri pentru aplicația TranSMART sunt:
Implementarea modalității de plată online cu cardul sau servicii de plată online precum Paypal.
Algoritm de aranjare și organizare virtuală a produselor selectate din formularul de comandă, pentru ca acestea se fie așezate optim în mașina de transport.
Adăugarea de coloane noi în formularul de comandă pentru alegerea timpului comenzii (ziua, luna și ora).
BIBLIOGRAFIE
PhpStorm Cookbook – Mujund Chaudhary, Ankur Kumar; Decembrie 2014
Modern PHP, New features and good practices – Josh Lockhard, Februarie 2014
SQL in a Nutshell:A desktop Quick reference – O’Reilly and Associates
http://info.tm.edu.ro:8080/~junea/cls%2012/XHTML%20CSS%20PHP%20MySQL/6.PHP.doc
http://www.scrigroup.com/calculatoare/html/LUCRARE-DE-DIPLOMA-Site-web-pe53627.php
http://www.tutorialeonline.net/ro/article/despre-php-ce-este-si-instructiuni-pentru-incepatori
http://www.scritub.com/stiinta/informatica/php/Scrierea-programelor-PHP-eleme14427.php
http://etutoriale.ro/articles/16/1/Despre-PHP/
https://resurseweb.wordpress.com/
http://www.ghid-html.info/103-crearea-unui-formular-html.html
http://media1.webgarden.ro/files/media1:5011249db1cec.html.upl/Limbajul_PHP-MySQL.html
http://www.marplo.net/php-mysql/baze_de_date.html
http://www.scritub.com/stiinta/informatica/Noiuni-fundamentale-despre-baz2041514156.php
http://www.scritub.com/stiinta/informatica/baze-de-date/Sisteme-de-Gestiune-a-Bazelor-62916.php
http://www.scritub.com/stiinta/informatica/Noiuni-fundamentale-despre-baz2041514156.php
http://www.scritub.com/stiinta/informatica/html/Introducere-istorie-versiuni-H31361.php
http://www.marplo.net/curs_css/introducere.html
https://ro.wikipedia.org/wiki/Aplica%C8%9Bie_web
https://en.wikipedia.org/wiki/Laravel
https://laravel.com/
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Masterat: Sisteme informatice integrate pentru afaceri [307503] (ID: 307503)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
