Sistem Informatic Pentru Un Cabinet Medical

Introducere

Fenomen de amploare mondială, Internetul cunoaște o evoluție incomparabilă cu cea a altor instrumente media, la dezvoltarea sa continua participând întreg mapamondul. El se extinde cu o viteză fantastică, tot mai mulți utilizatori se conectează zilnic la Internet avizi de informație. Dacă la începuturile acestui fenomen ajuns acum la scara planetară, lumea nu își punea probleme în legătură cu modul de utilizare, între timp lucrurile s-au schimbat. După câțiva ani de educație Internet, și o zestre de pagini Web ajunsă la un număr impresionant de câteva zeci de milioane utilizatorii nu mai cauta "pur și simplu" ci doresc ca aceste căutări să aibă o logică, să fie rapide și să se finalizeze cu găsirea documentelor căutate. Fiind o rețea a rețelelor internetul este, de fapt o resursă comună fiecărui utilizator, la formarea și exploatarea căreia participa întreaga lume, singurul numitor comun fiind setea de informație.

În prezent toate domeniile de activitate ale omenirii sunt din ce în ce mai legate de rețeaua mondială. Oricine trebuie să știe să manipuleze resursele rețelei și, chiar mai mult să fie o parte activă a acesteia. World Wide Web-ul a apărut ca o necesitate de a aduce Internetul în casă și la înțelegerea oricui, fiind datorită interfeței grafice prietenoase adeseori identificat cu Internetul.

Internetul a fost descris ca "o colecție largă de rețele" sau ca o "rețea de rețele". Deși ambele defintii sunt corecte, nici una nu surprinde Internetul în totalitatea sa. Pe lângă instrumentul care este această imensă conexiune, Internetul înseamnă și mulțimea comunităților celor ce îl folosesc, fiecare în scopuri diferite:

Comunitatea academică utilizează Internetul ca pe cel mai mare, complet și totodată complex instrument de învățare (educațional), deoarece pe Internet se pot găsi cunostiinte ce permit studierea practic a oricărei discipline imaginabile și în plus se poate comunica rapid și eficient cu alte persoane interesate de aceiași disciplina;

Comunitateaa științifică utilizează Internetul ca pe un instrument de cercetare și colaborare pentru că Internetul oferă acces la cele mai avansate facilități de cercetare din lume;

Comunitatea economică utilizează Internetul ca pe un mediu de derulare al afacerilor.

Acest proiect consta în dezvoltarea unei aplicații Web, „Cabinet medical online”, utilizând tehnologiile: PHP; MYSQL; HTML; JAVA; CSS, prin intermediul căruia se dorește fluidizarea interacțiunii dintre pacienți și cadrele medicale ale unui cabinet medical de psihoterapie. Utilizatorul care va accesa site-ul va putea lua rolul de pacient, fiind capabil să vizualizeze facilitățile oferite de clinică Psihotera, să observe definiții ale eventualele boli de care suferă ca apoi să opteze, în urma înregistrării și a conectării, pentru o ședință de terapie sau un abonament complet, prin utilizarea calendarului din pagina personală, precum și un dialog privat între el și specialist.

O altă utilitate a site-ului consta în conectarea utilizatorului cu privilegii ‚de ‚administrator’, în cazul de fată, medicul specialist, care va fi redirecționat către o pagină specială unde va putea încărca fișiere audio cu înregistrări ale ședințelor, comunica cu pacienții, vizualiza programările făcute de aceștia etc.

Deasemenea pacienții au acces la un formular de contact cu răspuns imediat din partea asistenților cadrelor medicale.

În primul capitol se discuta despre complexitatea , aplicabilitatea și evoluția internetului.

Al doilea capitol al lucrării descrie o prezentare a conceptelor fundamentale întâlnite în limbajele de programare, marcare, și a sistemelor de gestiune a bazelor de date utilizate.

Al treilea capitol consta în descrierea elaborată a aplicației (plan conceptual, implementare, proces de funcționare)

Capitolul ‚Concluzii’ face referire la scopurile atinse în urma dezvoltării proiectului, utilitatea soluției alese, limitările, eventualele îmbunătățiri.

Ultimul capitol reprezintă ‚Bibliografia’.

Capitolul 1 Notiuni generale despre internet

Internetul nu este o organizație monolitică, având o conducere și un grup de control unice: Internetul este o societate de rețele de calculatoare interconectate, independente dar care se supun unor protocoale globale.

În partea superioară a acestei ierarhii se găsesc operatorii principali de la nivelul backbone-ului rețelei, companii cum ar fi AT&T sau SPRINT. Aceștia răspund de backbone-uri mari cu mii de rutere conectate prin fibră optică, cu bandă largă de transfer.

Creșterea cât mai mare a informațiilor și a datelor ce se doresc a fi transmise a dus, inevitabil, la implicarea sistemelor de gestiune a bazelor de date în dezvoltarea site-urilor și aplicațiilor online. În dezvoltarea site-urilor cu conținut dinamic a fost nevoie de dezvoltarea de noi limbaje, cum ar fi limbajul PHP din domeniul Open Source. Aceste noi tehnologii permit scrierea de programe care rulează în contextul serverului Web și facilitează acestuia extragerea datelor din baza de date și transmiterea acestor date către clienți sub formă de pagini HTML. În același timp limbajul HTML a fost îmbunătățit prin introducerea stilurilor (CSS și CSS2), introducerea limbajului Java Script, care rulează în cadrul browserului Web și un nou limbaj a fost creat (XML).

La baza funcționării webului stau 3 standarde, și anume:

(HTTP) – Hypertext Transfer Protocol, stiva de protocoale OSI prin care serverul web și browserul clientului (utilizatorului) comunică între ele;

(HTML) – Hypertext Markup Language, standard de definire și prezentare a păgânilor web;

(URL) – Uniform Resource Identifier, sistem universal de identificare a resurselor din web, folosit pentru a identifica și regăsi paginile web;

World Wide Web Consortium (cunoscut și sub denumirea de W3C), care astăzi este condus de Berners-Lee, dezvoltă standardele HTML și CSS; alte standarde provin de la Internet Engineering Task Force (IETF), ECMA sau producători că Sun Microsystems.

Programul de navigare (browserul) cheamă pagina folosindu-se de URÎ și HTTP, o interpretează conform formatării paginii (hipertext) și o prezintă utilizatorului pe un monitor. Unul dintre principiile webului este modelul client-server, browserul fiind aplicația client, iar serverul HTTP (serverul web) fiind aplicația server. Pentru a putea interpreta și reda informațiile sub forma hipertextului, browserul apelează la standardul de limbaj HTML, definit încă de la începtul dezvoltării webului.

În perioada 2004-2005 webul a cunoscut un salt calitativ cu privință la aplicațiile de mare răspândire pe glob, care e cunoscut sub numele simbolic Web 2.0.

Termenul Internet provine din împreunarea artificială și parțială a două cuvinte englezești: interconnected = interconectat și network = rețea.

Cuvântul are două sensuri care sunt strâns înrudite, în funcție de context:

Substantivul propriu „Internet” (scris cu majusculă) desemnează o rețea mondială unitară de calculatoare și alte aparate cu adrese computerizate, interconectate conform protocoalelor (regulilor) de comunicare „Transmission Control Protocol” și „Internet Protocol”, numite împreună „stiva TCP/IP”. Precursorul Internetului datează din 1965, când Agenția pentru Proiecte de Cercetare Înaintate de Apărare – a Ministerului Apărării, Department of Defense sau DoD din SUA (Defence Advanced Research Projects Agency, en: DARPA) a creat prima rețea de computere interconectate sub numele ARPAnet.

Super-rețeaua Internet din zilele noastre, care de mult a împânzit întreg globul pământesc, a rezultat din extinderea permanentă a acestei rețele inițiale Arpanet. Azi pe glob există un singur Internet, care însă este uriaș; el oferă utilizatorilor săi o multitudine de informații și servicii precume-mail, www, FTP, Găzduire web (web hosting) și multe altele, unele dintre ele fiind numai contra cost.

Termenul „Internet” nu trebuie confundat cu serviciul internet World Wide Web (www). Acesta este doar unul din multele servicii oferite pe Internet, vezi secțiunea „Aplicații Internet” mai jos.

Substantivul comun „internet” (scris cu minusculă) desemnează rețele speciale ce interconectează 2 sau mai multe rețele autonome aflate la mare depărtare unele față de altele. Un exemplu de 2 rețele mari, interconectate printr-un internet pentru care folosința acestui nume este justificată: rețelele SiprNet și FidoNet.

Întrebuințare

Romanii sunt pe locul al doilea în topul europenilor care petrec cel mai mult timp online, cu o medie de 18,6 ore petrecute săptămânal pe Internet.

Pe primul loc se clasează ucrainienii, cu 20 de ore petrecute online pe săptămână, conform celui mai recent studiu Mediascope, remis Ziare.com.

Pe locul al treilea se afla turcii, cu o medie de 18,3 petrecute pe Net în decurs de 7 zile.

La nivelul activităților desfășurate online, romanii sunt și printre cei care folosesc cel mai mult mesageria instant. Ei utilizează astfel de servicii cu 60% mai mult decât media europeană a utilizatorilor de Internet.

În schimb, e-mailul este accesat de aproximativ întreaga populație de origine cehă cu acces la Internet, iar rețelele sociale profesionale sunt utilizate de mai mult de 90% dintre portughezi.

În ceea ce privește clasamentul celor mai activi europeni în mediul online, danezii fac recenzii și dau feedback după utilizarea anumitor produse și servicii de două ori mai mult decât media înregistrată la nivelul întregii Europe. Grecii sunt cei care folosesc cel mai mult blogurile – ei scriu pe blog de două ori mai mult decât media europeană. Bulgării fac cele mai multe apeluri telefonice online, utilizând servicii cum ar fi Skype-ul, cu 89% mai mult decât utilizatorul mediu european.

Generația de 55+ ani este din ce în ce mai activă pe Internet. 36% dintre europenii peste această vârstă navighează pe Internet și petrec aproximativ 10.4 ore pe săptămână online. 84% dintre aceștia fac cumpărături online zilnic, iar 79% folosesc e-mailul în fiecare zi. Cei mai mulți dintre utilizatorii europeni de 55+ ani conectați la Internet vizitează preponderent site-uri de știri (77%) și se uită la televizor online (34%).

În ceea ce privește navigarea pe Internet de pe mobil, aceasta a crescut cu 42% față de 2010 la nivel european. În prezent, 68% dintre europeni dețin un mobil cu acces la Internet, dintre care 44% folosesc un smartphone. În Marea Britanie, 6 din 10 englezi sunt posesori de smartphone. Vârsta a 60% dintre deținătorii europeni de smartphone este de sub 35 de ani.

În plus, 50,9% dintre europenii cu acces la Internet folosesc o tabletă pentru a sta online și petrec, în medie, 9.3 ore pe săptămână conectați la Internet de pe tableta. Europenii care petrec cel mai mult timp online de pe tableta sunt norvegienii (26%), urmați îndeaproape de britanici (25%).

Timpul petrecut online de către europenii cu acces la Internet a crescut cu 15% din 2010, situându-se în prezent la o valoare de 14,8 ore pe săptămână. Timpul petrecut pe Internet este în continuare devansat de cel petrecut în fața televizorului – 16.8 ore săptămânal.

La nivel european, există 426,9 milioane de utilizatori de Internet, ceea ce reprezintă 65% din totalul populației europene. Numărul acestora a crescut cu 19% față de anul 2010.

Caracteristici

În ziua de astăzi Internetul este susținut și întreținut de o mulțime de firme comerciale. El se bazează pe specificații tehnice foarte detaliate, ca de exemplu pe așa-numitele „protocoale de comunicație”, care descriu toate regulile și protocoalele de transmitere a datelor în această rețea. Protocoalele fundamentale ale Internetului, care asigură interoperabilitatea între orice două calculatoare care le implementează, sunt Internet protocol (IP), Transmission Control Protocol (TCP) și Ușer Datagram Protocol (UDP).

Aceste trei protocoale reprezintă însă doar o parte din nivelul de bază al sistemului de protocoale Internet, care mai include și protocoale de control și aplicative, cum ar fi: DNS, PPP, SLIP, ICMP, PO3, IMAP, SMTP, HTTP, HTTPS, SSH, Telnet, FTP, LDAP, SSL, WAP și SIP.

Din cauza multelor fuziuni dintre companiile de telefonie mobilă și cele de Internet (Internet Service Providers, prescurtat ISP) au apărut o serie de probleme în sensul că sarcinile acestora nu erau clar delimitate.

Rețeaua regională a ISP-ului este formată prin interconectarea ruterelor din diverse orașe pe care le deservește compania. Dacă pachetul este destinat unui calculator-gazdă deservit direct de către rețeaua ISP, pachetul va fi livrat direct lui. Altfel el este predat mai departe operatorului (firmei) care furnizează companiei ISP servicii de comunicare prin backbone-ul rețelei. (În engleză backbone înseamnă în general șira spinării, iar în informatică înseamnă rețeaua de bază pentru interconectarea rețelelor). În partea superioară a acestei ierarhii se găsesc operatorii principali de la nivelul backbone-ului rețelei, companii cum ar fi AT&T sau SPRINT. Aceștia răspund de backbone-uri mari cu mii de rutere conectate prin fibră optică, cu bandă largă de transfer.

Aplicabilitate

Aplicațiile Internetului sunt numeroase: în primul rând afișarea de informații mai mult sau mai puțin statice cu formă de text, imagini și sunete (așa-numitele pagini web), apoi poșta electronică e-mail, transferul de fișiere de date și informații, chat, video și video on demand, telefonie și telefonie cu imagine prin Internet, televiziune prin Internet, e-commerce, sondări de opinie, mediu pentru răspândirea știrilor, mediu pentru toate genurile de grafică și muzică, deschiderea unei sesiuni de lucru de la distanță, grupuri de discuții pe teme prestabilite, jocuri interactive prin rețea, operații bancare (Internet banking) și multe, multe altele. Printre ele, World Wide Web, prescurtat WWW, deseori numit numai "web", este la loc de vârf, deoarece este o aplicație multimedială și integrativă, cu o interfață de utilizator (Graphic Ușer Interface, GUI) foarte atrăgătoare din punct de vedere grafic, practică și simplu de folosit. WWW a fost inventat de către Tim Berners-Lee în anul 1993.

Pentru folosirea tuturor aplicațiilor din web este nevoie în general doar de un singur program multifuncțional numit browser (cuvânt englez). Exemple: MS Internet Explorer, Mozilla Firefox (provenit din Netscape Navigator), Google Chrome, Opera, Apple Safari ș.a

Limbaje de programare , marcare , standarde, sisteme de gestiune a bazelor de date , software

Limbaje de programare , sisteme de gestiune a bazelor de date

2.1.1 Php

Paginile website-ului „Psihotera” au fost scrise în limbajul de programare php , fiind utilizate și limbajele de marcare și formatare html și css pentru structurarea conținutului și îmbunătățirea aspectului.Mysql a fost folosit pentru stocarea informațiilor în baza de date.

Sistemul de programare a terapiilor pacienților conține scripturi jS(javaScript) care permit alegerea lunii și anului în care se dorește programarea , și care afișează intervalul de zile în care s-a făcut programarea.

Limbajul PHP este un limbaj de tip script, procedural, oferind și suport pentru programarea orientată-obiect. Programele PHP (stocate în mod uzual de fișiere cu extensia .php) vor fi accesibile direct din cadrul paginilor Web. Sintaxa limbajului este inspirată din cea a limbajelor C/C++ și Perl.

Puterea limbajului constă în setul cuprinzător de funcții puse la dispoziție în special pentru manipularea bazelor de date într-un dialect SQL sau pentru procesarea conținutului unei largi palete de tipuri de fișiere (de exemplu, diferite tipuri de arhive, documente PDF, fișiere grafice, documente XML, etc). Aceste funcții pot fi grupate pe mai multe categorii (o serie fiind similară funcțiilor din biblotecile standard ale limbajului C), dintre care se pot menționa: matematice, de conversie de tipuri, de manipulare a șirurilor de caractere, de prelucrare a tablourilor, de acces la resursele sistemului de operare și de lucru cu fișiere, de manipulare a bazelor de date, privitoare la conexiunile Internet (exemplu HTTP, FTP, IMAP, etc.), pentru accesarea fișierelor având tipuri speciale: PDF, XML, gzip, etc., specifice sistemului de operare, generale.

Scripturile PHP pot fi incluse în paginile Web în diferite moduri, uzual folosindu-se construcția <?php . . . ?>. Comentările pot fi scrise în stilul comentariilor din limbajele C/C++(/* . . . */ sau // . . .) ori Perl (# . . . ). Declarațiile și instrucțiunile se separă prin „ ; ” ca și în C, Perl sau Java.

Funcționarea analizorului (motorului PHP) este următoarea: procesorul PHP va determina construcțiile PHP delimitate între tagurile <?php și ?> și le va interpreta, ignorând restul conținutului documentului pe care îl va trimite, la ieșirea standard, nealterat. Astfel putem privi analizatorul PHP ca un script CGI care efectuează o procesare specială înainte ca datele să fie expediate clientului Web. PHP se bazează pe motorul de scripting Zend.

Tipurile de date suportate sunt cele mai simple (scalare): logic (boolean), întreg (integer), flotant (float, double, real) și șir de caractere (strâng). Tipurile compuse sunt reprezentate din tipul tabloul (array) – indecsat și asociativ – din tipul obiect (object). Mai sunt disponibile și două tipuri speciale: tipul resursă (resource) și nul (NULL).

Este de menționat faptul că șirurile de caractere se pot delimita între ghilimele sau apostrofuri. Între apostrofuri se inhibă evaluarea variabilelor din interiorul șirului respectiv.

Schema motorului PHP

Variabilele în PHP se reprezintă prin intermediul unui identificator prefixat de caracterul „ $ ”. Numele variabilei este case-sensitive și este compus din caractere alfa-numerice și simbolul „_”. Se remarcă faptul că variabilă $PHP este diferită de $php. Tipul unei variabile se determină în funcție de valoarea pe care o stochează. Variabilele se pot folosi fără a trebui să fie declarate în prealabil. Există, de asemenea, și diverse variabile predefinite, mai ales cele specifice serverului Web. Tot ca variabile sunt transmise unui script PHP câmpurile formularelor HTML dintr-o pagină sau cookie-urile. Un tip special sunt variabilele globale (globals) care stochează diverse categorii de variabile externe (exmplu, $_GET, $_POST, $_COOKIES, $_ENV, etc).

Constantele pot fi considerate variabile ale căror valori sunt fixate și nu mai pot fi alterate pe parcursul programului. Pentru a defini o constantă se va folosi construcția define(). Ca exemplu de constante predefinite sepot da PHP_VERSION, PHP_OS sau CHAR_MAX.

PHP pune la dispoziție un set impresionant de operatori. Acești operatori sunt cei disponibili în limbaje precum C sau Perl. Categoriile importante de operatori sunt: aritmetici, de asignare (exemplu „+=”), pe biți relaționali (ca noutate se poate menționa aici „= = =” care are ca rezultat constantă TRUE dacă operanzii au valori identice și în plus sunt de același tip), de control al erorilor (există un singur operator „@” care inhibă erorile ce pot apărea în cadrul expresiei pe care o prfixează), de incrementare/decrementare („+ +” și „– ”), logici (and or sau „ ! ”, „ & & ” și „ | | ”), pentru șiruri (se definește operatorul de concatenare „ . ” similar celui din Perl). Poate fi folosit, de asemenea, și operatorul de test „ ? : ”.

Instrucțiunile sunt cele uzuale din alte limbaje de programare. Sunt disponibile instrucțiuni de asignare (de forma $variabilă = expresie), instrucțiuni de test (if și switch), instrucțiuni repetitive (while, do, for, foreach) și instrucțiuni de control (break, continue, return).

Un exemplu de afișare a sumei valorilor unui tablou unidimensional (vector), prin utilizarea variabilelor de tip întreg și tablou indexat, a instrucțiunilor for și foreach, a operatorilor relaționali, de asignare și de incrementare (funcția predefinită echo () afișează la intrarea standard – aici fereastra navigatorului – codul HTML generat):

<?php

// umplem un tablou cu valori de la 1 la 10

for ($contor = 1; $contor <= 10; $contor + +){

$valori [$contor] = $contor;

}

// realizăm suma valorilor, utilizând foreach

suma = 0;

foreach ($valori aș $element)

$suma += $element;

// afișam suma obținută la ieșirea standard

// pentru a fi trimisă browserului – echo ()

echo (“<p>Suma de la 1 la 10 este: <b>”

$suma . “</b></p>”) ?>

Funcțiile pot fi predefinite sau definite de utilizator. Cele definite de utilizator se specifică printr-o construcție de genul:

function nume ($arg_1, $arg_2, . . . , $arg_n){

// instrucțiuni

return $valoare ; /* opțional se returnează o valoare */

}

Apelul uni funcții se realizează pprin numele său, furnizând eventual și valorile pentru argumentele sale: nume (expr_1, expr_2, . . . , expr_n). Pentru un argument se poate furniza o valoare implicită, ca în C++.

În următorul exemplu defininim funcția pătrat() care calculează pătratul unui număr întreg. Vom folosi această funcție pentru afișarea în fereastra navigatorului a pătratelor primilor 5 întregi naturali pari:

<body text=”white” bgcolor=”black”>

<?php

//funcția de ridicare la pătrat

function pătrat ($număr){

return $număr * $număr;

}

$număr = 0;

while ($număr < 10){

$număr++;

// incrementam numărul

if ($număr %2)

//e număr tipar . . .

continue;

// continuăm cu următoarea iterație

// e număr par, deci afișam pătratul

echo “<p>$număr la pătrat este “ . pătrat ($număr) . “</p>”;

}?>

</body>

Limbajul PHP, mai ales de la vesiunea PHP4, oferă implementare unora dintre cele mai importante aspecte ale progaramării obiectuale: încapsularea datelor, moștenirea și polimorfismul. Suportul pentru programarea orientată-obiect se realizează prin intermediul claselor.

Datele membre se specifică utilizând construcția văr, putând avea orice tip (de exemplu, întreg, tablou sau chiar obiect). Metodele se definesc prin declarații de funcții care prelucrează membrii clasei. Pentru a accesa datele clasei, metodele vor trebui să se folosescă de construcția sintactică – insapirată de C++ ori Java – $this – >variabilă, altfel variabilă se consideră a fi locală în cadrul acelei metode. Se pot specifica, de asemenea, constructori ai unei clase.

Instanțierea unui obiect al clasei se realizează prin operatorul new, exact ca în limbajul C++. PHP pune la dispoziție suport pentru moștenire, o clasă putând fi derivată dintr-altă prin intermediul construcției sintactice extends..

2.1.2 SQl

Limbajul SQL (Structured Query Language) a fost implementat în produse comerciale începând cu anii 70 când s-a lansat prima versiune Oracle și SQL/DS de la IBM.

SQL esta un limbaj declarativ; utilizatorul descrie informațiile pe care vrea să le obțină în urma interogării, fără a preciza algoritmii necesari pentru obținerea rezultatelor dorite. În același timp, SQL nu este un limbaj de programare sau de sistem, ci mai curând face parte din categoria limbajelor de aplicație pentru baze de date relaționale. Faptul că este un limbaj standard a condus la recunoașterea principalelor sale instrucțiuni de către mai multe sisteme de gestiune a bazelor de date (S.G.B.D. Oracle, Acces, Dbase, INFORMIX, DB2.).

În ultimii ani, comitetele ANSI și ISO pentru standardizarea limbajului SQL au adăugat noi facilități pentru gestiunea bazelor de date orientate pe obiect și obiect-relațional. S-a ajuns astfel la o versiune SQL3, pe cale de a deveni un standard în domeniu. Aceste facilități se pot structura:

facilități orientate obiect ce propun definirea la nivel de utilizator a tipurilor de date abstracte;

structuri de control specifice: IF, FOR, WHILE ce permit transformarea SQL-ului într-un limbaj de sine stătător;

facilități de comunicare în rețea;

facilități de prelucrare distribuită;

facilități multi-media, înglobate în modulul Multi-Media SQL.

Limbajul SQL permite o comunicare complexă și rapidă a utilizatorului cu bazele de date, în funcție de cerințele și restricțiile acestuia. Pe lângă manipularea și regăsirea datelor, se efectuează și operații complexe privind actualizarea și administrarea bazei de date.

În funcție de rolul lor în manipularea datelor și tranzacțiilor, instrucțiunile SQL, pot fi grupate astfel:

instrucțiuni de definire a datelor care permit descrierea structurii bazei de date;

instrucțiuni de manipulare a datelor în sensul adăugării, modificării și ștergerii înregistrărilor;

instrucțiuni de selecție a datelor care permit consultarea bazei de date;

instrucțiuni de procesare a datelor care permit consultarea bazei de date;

instrucțiuni de procesare a tranzacțiilor care privesc unitățile logice de prelucrare și constitue în fapt, operații multiple de manipulare a datelor;

instrucțiuni de control al cursorului;

instrucțiuni privind controlul accesului la date.

Limbaj de definire a datelor: SQL-LDD

Gestiunea schemei bazei de date

Schema unei baze de date descrie tabelele și atributele aferente lor, domeniile în care aceste atribute iau valori, restricțiile de integritate, drepturile de utilizare a relațiilor, view-urile și detaliile relative la implementarea fizică a datelor. Limbajul de definire a datelor LDD (Language Data Definition), parte componentă a limbajului SQL, include instrucțiuni care permit realizarea acțiunilor specifice descrierii schemei bazei de date.

Comanda de creare a unei baze de date este:

CREATE DATABASE <nume baza de date>;

Crearea tabelelor

Definirea unei tabele se face cu ajutorul instrucțiunii CREATE TABLE, a cărei sintaxă generală este:

CREATE TABLE nume_tabela (nume-atribut tip_dată(mărime) [NOT NULL] [,nume-atribut2 tip_dată(mărime) [NOT NULL]..][CONSTRAINT nume-atribut CHECK (nume-atribut <condiție>…)] [CONSTRAINT nume_index] {PRIMARY KEY|UNIQUE|NOT NULL}]);

Comanda precizează numele tabelei care se creează precum și descrierile atributelor. Este necesar ca fiecărui atribut să-i fie specificate numele, tipul și dimensiunea. Opțiunea NOT NULL, corespunzătoare unui atribut, asigură integritatea relației specificându-se astfel necesitatea introducerii unei valori. Se precizează atributul cu rol de cheie primară pentru care clauza NOT NULL este obligatorie.

SGBDR verifică integritatea datelor prin declararea restricțiilor pe domenii sau programarea de funcții sau proceduri. Se asigură astfel coerența datelor în procesul actualizării prin comenzi INSERT, UPDATE, DELETE.

Modificarea structurii unei tabele

Comanda ALTER TABLE permite modificarea structurii unei tabele prin adăugarea/ștergerea de atribute și prezintă următoarea sintaxă:

alter TABLE nume_tabel {ADD COLUMN nume-atribut1

tip_dată [(mărime)] [NOT NULL] [CONSTRAINT INDEX] | DROP COLUMN

nume_atribut2 CONSTRAINT indexname}

Ștergerea relațiilor dintr-o bază de date

Ștergerea unei tabele se realizează cu ajutorul comenzii DROP TABLE, odată cu aceasta ștergându-se și indecșii, view-urile definite pentru respectiva tabelă, neexistând nici o posibilitate de recuperare a informației șterse.

Sintaxa comenzii:

DROP TABLE nume_tabel;

Ștergerea unei baze de date

Ștergerea unei baze de date determină ștergerea tuturor obiectelor conținute de aceasta, a copiei cataloagelor SQL din directorul bazei de date.

Sintaxa generală a comenzii este:

DROP DATABASE <nume baza de date>;

Numeroase versiuni SQL nu includ această instrucțiune, ștergerea făcându-se mai ușor printr-o simplă apăsare pe butonul mouse-lui. În utilizarea acestei comenzi este necesar a se preciza că:

într-o rețea de calculatoare nu va putea fi ștearsă o bază de date activată de către un alt utilizator;

comanda de ștergere nu poate acționa asupra unei baze de date active.

Gestiunea indecșilor

Schema unei baze de date definește structurile obiectelor și regulile cărora li se conformează. În SQL singura structură de date este tabela.

Comanda DROP CONSTRAINT. Permite ștergerea unei restricții de unicitate sau de referință.

Sintaxa generală este:

DROP CONSTRAINT nume_index;

Gestiunea derpturilor de utilizare

Utilizatorii bazei e date sunt repertorizați de SGBD prin:

identificatorul sistem;

parolă;

nume de utilizare destinat altor utilizatori.

Utilizatorul care crează o tabelă este proprietarul acesteia, de aceea el poate acorda altor utilizatori ai bazei drepturi asupra tabelelor sale.

Acordare drepturilor de acces

Proprietarul unei tabele poate acorda altor utilizatori dreptul de a manipula tabela. Acordarea acestor drepturi se realizează prin comanda GRANT.

Sintaxa generală este:

GRANT [ALL /Listă de privilegii]

ON TABLE1, . . . , TABLE n

TO [PUBLIC/ Listă utilizatori]

[WHIT GRANT OPTION]

Unde:

Listă privilegii: alter, delete, insert, update, select;

ALL: toate comenzile;

Public: toți utilizatorii;

WHIT GRANT OPTION: dreptul utilizatorilor de a acorda la rândul lor dreptul de acces altor utilizatori.

Retragerea drepturilor de acces

Retragerea (anularea) drepturilor de acces se realizează prin comanda REVOKE.

Sintaxa generală este:

REVOKE [ALL/Listă de privilegii]

ON TABELE1, . . . , TABELE n

FROM [PUBLIC/ Listă utilizatori];

2.3. Limbajul de manipulare a bazei de date (SQL-LMD)

2.3.1. Construirea blocului de cerere

O cerință a utilizatorului de selectare a datelor din baza de date relațională se exprimă prin ceea ce numim un bloc de cerere.

Sintaxa generală este:

SELECT [ALL/DISTINCT/DISTINCTROW] listă atribute

FROM listă-tabele

[WHERE criteriu-de- căutare]

[GROUP BY criteriu-degrupare]

[HAVING criteriu-de-grupare]

[ORDER BY criteriu-de-ordonare [ASC|DESC] ];

Unde:

lista-atribute – specifică atributele a căror valori vor fi returnate;

FROM listă-tabele – specifică tabelele din care se vor extrage datele;

WHERE – permite prin precizarea unei expresii exprimarea criteriului de selecție;

ORDER BY – precitează atributul după care se face ordonarea;

GROUP BY – folosit pentru a partiționa o tabelă în grupuri acordând acestora valori pe un atribut sau listă de atribute;

HAVING – specifică criterii de selecție pe grupuri de tupluri.

Utilizarea predicatelor ALL, ANY, EXIST

Domeniul de obținere a rezltatelor unei subinterogări poate fi influențat prin precizarea unuia din cuvintele cheie: ALL, ANY, EXIST.

ALL

Se preiau rezultatele subinterogării și, dacă acestea îndeplinesc condiția cerută, se returnează valoarea logică True.

ANY

Are în vedere compararea valorii de ieșire a subinterogării cu fiecare înregistrare din interogarea externă. Dacă pentru fiecare înregistrare din interogare există un rezultat al subinterogării, se va returna valoarea logică True.

EXISTS

Folosește subinterogarea ca pe o condiție, analizând setul de rezultate al acesteia și returnând valoarea False dacă nu există nici o ieșire. Se poate astfel verifica existența anumitor înregistrări și controla ansamblul răspunsurilor date de interogare.

Insrucțiuni pentru actualizarea bazei de date

Pentru inserarea unui tuplu într-o tabelă se utilizează comanda INSERT .

Sintaxa generală este:

INSERT INTO nume-tabelă [(nume-atribut, . . .)]

{VALUES(valoare, . . .) | cerere}

Lista de atribute se specifică în cazul în care realizările din clauza VALUES nu corespund ordinii tuplurilor din tabelă. Dacă tuplul/tuplurile inserate sunt preluate dintr-o altă tabelă se va specifica comanda Select.

Actualizarea datelor dintr-o tabelă se realizează prin comanda UPDATE.

Sintaxa generală este:

UPDATE nume-tabelă

SET {nume-atribut=expresie, . . . | (nume-atribut=subcerere), . . .}

[WHERE condiție];

Gestiunea view-urilor

Un view este o tabelă virtuală, care nu conține date, dar îi conferă utilizatorului posibilitatea de vizualizare a datelor din baza de date dintr-o anumită perspectivă. Pentru definirea unui view se folosește o cerere SQL.

View-urile pot fi folosite în următoarele scopuri:

limitează accesul unor categorii de utilizatori la anumite date, mai mult sau mai puțin confidențiale;

permite simplificarea viziunii utilizatorilor asupra bazei de date;

asigură securitatea și confidențialitatea datelor. Fiecărui utilizator al bazei de date îi sunt asignate anumite drepturi (GRANT/REVOKE) ceea ce determină o limitare a accesului la baza de date, la obiectele bazei de date și la efectuarea unor operații asupra obiectelor bazei de date.

Asupra unui view se pot efectua ulterior aceleași operații ca și asupra unei tabele, dar cu deosebire că view-ul nu conține date, ci este o reflectare dinamică a unei tabele. Astfel, o modificare a datelor dintr-o tabelă este automat reflectată în view-urile definite pe acea tabelă. Un view se recreează de fiecare dată când este apelat, pe baza definiției sale stocate în dicționarul bazei de date.

Operațiile de aplicare asupra view-urilor sunt:

crearea unui view cu comanda CREATE VIEW;

interogarea view-urilor – prin folosirea unei fraze SELECT;

actualizarea datelor dintr-un view folosind comanda UPDATE;

adăugare de noi date folosind comanda INSERT;

ștergerea datelor dintr-un view cu comanda DELETE.

Crearea unui view – permite definirea unei ”ferestre” prin care se pot consulta datele stocate în tabele.

CREATE VIEW nume-view [<lista atribute>]

AȘ SELECT secventa-select

[WITH CHECK OPTION]

Datorită acestei comenzi utilizator-ului i se permite:

specificarea denumirii view-ului și opțional a denumirii atributelor din view, în cazul în care se dorește redenumirea atributelor specificate în instrucțiunea SELECT;

specificarea interogării (fraza SELECT);

specificarea opțională a unei condiții suplimentare impuse view-ului astfel încât să poată fi realizată actualizarea sau inserarea datelor în view (prin utilizarea clauzei WITH CHECK OPTION).

Utilizarea opțiunii WITH CHECK OPTION

Această opțiune asigură faptul că în cazul unei operații INSERT sau UPDATE – nu va fi adăugat sau actualizat nici un tuplu care nu se încadrează în condițiile specificate la definirea view-ului.

Asupra view-urilor pot fi efectuate aceleași operații ca asupra tabelelor pe baza cărora au fost definite, cu unele restricții:

interogarea view-urilor;

actualizarea view-urilor;

ștergerea view-urilor.

2.1.3 Mysql

Dezvoltat de firma suedeză MySQL AB, MySQL este un server de baze de date disponibil gratuit, cu sursa deschisă(open-source) care oferă fiabilitate și avantaje reale.

Frumusețea serverului MySQL este simplitatea să fundamentală. Administrarea bazei de date se face folosind peste o duzină de utilitare în linia de comandă, cel mai important fiind mysql, un shell interactiv pentru controlul și interogarea bazei de date. Utilitarele rulează cel mai bine pe sistemul Linux, platforma pe care MySQL a fost dezvoltat inițial. Alte două utilitare cu sursa deschisă, oferite pe platforma Windows, care oferă un set de comenzi de administrare sunt MySqlManager, un utilitar de interogare în mod grafic similar cu mysql și WinMySQL admin, o consolă pentru administrarea detaliilor configurării lui MySQL.

MySQL realizează cu ușurință importarea diverselor baze de date și exportarea sub forma fișierelor sql. Tranzacțiile nu sunt parte a tabelelor implicite(ISAM) ale lui MySQL, dar sunt incluse două tipuri noi de tabele . Berkley DB(BDB) și InnoDB . care au fost dezvoltate de alte firme.

Administratorii de firme și dezvoltatorii de baze de date au ajuns la concluzia că MySQL are o dezvoltare energică și loială, ca să nu mai menționăm reputația câștigată cu trudă, de baza de date sigură.

MySQL operează în baza unui model client/server. Orice mașină care dorește să proceseze interogări asupra unei baze de date MySQL trebuie să ruleze MySQL server(mysqld), care este responsabil de tot traficul de tip intrări/ieșiri(incoming/outgoing) cu baza de date. Ca orice server, mysqld "ascultă" pe un port particular (3306) eventualele cereri de conexiune ale unui "client" – orice aplicație care trimite cereri către o bază de date via mysqld. Acest client poate fi un simplu script PHP care poate trimite o cerere către baza de date prin intermediul serverului MySQL sau chiar clientului mysql. Clientul mysql este o interfață interactivă pentru transmiterea de comenzi către server.

Modelul de securitate folosit de MySQL se bazează pe nume de utilizator, parola, nume server(hostname) sau adresa de IP și privilegii, fiind similar celui generic folosit de sistemele Unix. Prin privilegii se înțeleg în cazul MySQL operațiunile ce vor fi permise asupra bazei/bazelor de date, tabelelor sau indecșilor, cum sunt de exemplu SELECT, INSERT, UPDATE, DELETE, CREATE, DROP.

Datele sunt obiectul celor mai multe operații de prelucrare, iar sistemele de gestiune a bazelor de date furnizează cele mai complexe și puternice facilități pentru lucrul cu datele. PHP include o bibliotecă de funcții care furnizează o interfață cu sistemul MySQL de gestiune a bazelor de date. Folosind aceste funcții, un program PHP poate obține accesul la datele rezidente într-o bază de date MySQL și le poate modifica.

Majoritatea interacțiunilor cu o bază de date MySQL se poate desfășura după un model secvențial simplu:

se deschide o conexiune cu serverul MySQL

se specifică baza de date la care se obține accesul

se emit interogări SQL, se obține accesul la rezultatele interogării și se execută operații non-SQL

se închide conexiunea cu serverul MySQL

Din punct de vedere al limbajului PHP, există două categorii de interogări SQL:

interogările SELECT, care returnează rânduri ale unui tabel

interogările UPDATE, INSERT și DELETE, care nu returnează rânduri ale unui tabel

Ambele categorii de interogări sunt emise folosind funcția mysql_query(), dar verificarea și prelucrarea celor două categorii de rezultate ale interogărilor sunt procesate destul de diferit.

JavaScript

Inițial. JavaScript a fost dezvoltat de Netscape sub denumirea LiveScript, un limbaj de scriptare care intenționa să extindă capacitățile HTML și să ofere o alternativă parțială la unui număr mare de scripturi CGI pentru prelucrarea informațiilor din formulare și pentru a adăuga dinamism în paginile utilizatorilor. După lansarea limbajului Java, Netscape a început să lucreze împreună cu firma Sun pentru a oferi un limbaj de scriptare a cărui sintaxă și semantică erau strâns legate de Java – motiv pentru care denumirea a fost schimbată în JavaScript. După finalizarea limbajului, Netscape și Sun l-au lansat împreună.

Una dintre motivațiile care au stat la baza limbajului JavaScript a fost recunoașterea necesității ca logica și inteligența să existe și pe partea de client, nu doar pe partea de server. Dacă toată logica este pe partea de server, întreaga prelucrare este dirijată de server, chiar și pentru sarcini simple, așa cum este validarea datelor. Asigurarea de logică în interiorul browserului îl înzestrează pe client și face ca relația să fie cu adevărat sistem client-server.

Aspecte fundamentale ale limbajului JavaScript

a) JavaScript poate fi încorporat în HTML

De obicei, codul JavaScript este găzduit în documente HTML și executat din interiorul lor. Cele mai multe obiecte JavaScript au etichete HTML pe care le reprezintă, astfel încât programul este inclus la nivelul esențial, pe partea de client, al limbajului. Pentru a fi un programator JavaScript eficient, trebuie să cunoaștem și caracteristicile HTML.

JavaScript folosește HTML ca modalitate de a sări în cadrul de lucru al aplicațiilor pentru Web și-i extinde capacităile normale, asigurând evenimente pentru etichetele HTML și permițând acestui cod condus de evenimente să se execute din interiorul său.

b) JavaScript este dependent de mediu

JavaScript este un limbaj de scriptare, nu un instrument în sine și pentru sine. Software-ul care rulează de fapt JavaScript este motorul de interpretare din mediu – Netscape Navigator, Microsoft Internet Explorer sau unul din motoarele pe parte de server. Când este inclus într-un document HTML, JavaScript depinde de browser pentru a fi recunoscut. Dacă browserul nu-l recunoaște, programul va fi ignorat, ba chiar mai rău – dacă nu ținem seama de browserele neacceptate – programul JavaScript în sine poate fi afișat ca text pe pagina HTML.

c) JavaScript este un limbaj interpretat

Ca majoritatea limbajelor de scriptare, JavaScript este interpretat de browser înainte de a fi executat. JavaScript nu este compilat în binar – ca un fișier EXE -, ci rămâne parte a documentului HTML la care este atașat. Dezavantajul unui limbaj interpretat este că executarea programului durează mai mult, deoarece browserul compilează instrucțiunile în timpul rulării, chiar înainte să le execute. Avantajul constă în faptul că este mult mai ușor de actualizat codul sursă.

d) JavaScript este un limbaj flexibil în privința tipului de date

JavaScript diferă mult de limbajele stricte în privința tipului de date, ca Java sau C++, în care trebuiesc declarate toate variabilele de un anumit tip înainte de a le utiliza. Spre deosebire de ele, JavaScript este mult mai flexibil. Putem declara variabilele de un anumit tip, dar nu suntem obligați să facem această declarare; putem lucra cu o variabilă, deși nu-i cunoaștem tipul specific înainte de rulare.

Exemplu în care declarăm o variabilă numită myVal, îi atribuim o valoare de tip șir și apoi o afișăm într-o casetă de mesaje:

function flexible()

{

var myVal;

myVal = "Hello World!";

alert(myVal);

}

În exemplul următor nu vom mai declara variabila myVal înainte de folosire, lucru perfect valid în JavaScript, dar inacceptabil într-un limbaj strict în privința tipului de date:

function flexible()

{

myVal = "Hello World!";

alert(myVal);

}

Pentru a ilustra mai bine flexibilitatea limbajului JavaScript, vom modifica și tipul valorii pe care o reprezintă variabila.

function flexible()

{

var myVal = "Hello World!";

alert(myVal);

myVal = 123;

alert(myVal);

}

e) JavaScript este un limbaj bazat pe obiecte

Netscape și alții se referă la JavaScript ca la un limbaj de programare orientat spre obiecte (OOP), dar aceasta este o deformare a adevăratului înțeles al sintagmei OOP. JavaScript este un limbaj bazat pe obiecte. Cu alte cuvinte vom lucra cu obiecte predefinite care încapsulează date (proprietăți) și comportamente (metode), dar nu le vom putea subclasa.

f) JavaScript este condus de evenimente

Mare parte din codul JavaScript va răspunde la evenimente generate de utilizator sau sistem. În sine, limbajul JavaScript este echipat pentru a trata evenimente. Obiectele HTML sunt îmbunătățite pentru a accepta handlere de evenimente.

g) JavaScript nu este Java

Cele două limbaje au fost create de companii diferite, iar motivul principal pentru similitudinea denumirilor este legat exclusiv de marketing. Câteva diferențe dintre cele două limbaje ar fi:

JavaScript este strâns integrat în HTML, pe când o miniaplicație Java este legată la un document HTML prin eticheta <applet>.

Java este un limbaj mai robust și mai complet, fiind strict în privința tipului de date, realmente orientat spre obiecte și deținând un compilator.

Java este folosit pentru miniaplicații sau pentru aplicații complete, pe când JavaScript este folosit în primul rând pentru scripturi.

h) JavaScript este multifuncțional

Principalele sale scopuri sunt:

Înfrumusețează și animă paginile HTML statice prin efecte speciale și animație

Validează date fără a trece totul serverului

Dezvoltă aplicații pe partea de client

i) JavaScript evoluează

Datorită evoluției rapide a limbajului, va trebui să ne întrebăm nu numai dacă browserul recunoaște JavaScript, ci și care versiune anume o recunoaște. În acest moment există șase versiuni de JavaScript, de la 1.0 la 1.5.

j) JavaScript acoperă diferite contexte

Programarea în JavaScript se îndreaptă mai ales spre scriptarea pe partea de client, dar se poate folosi și pe partea de server în Netscape Enterprise Server și în cadrul de lucru Active Server Pages de la Microsoft. În plus, versiunile recente de Microsoft Windows acceptă JavaScript în mediul Windows Script Host (WSH).

Înglobarea instrucțiunilor JavaScript în HTML

Scripturile JavaScript sunt integrate într-un document HTML folosind perechea de etichete <script> și </script>. Într-un document HTML pot existamai multe perechi de etichete <script> și fiecare pereche poate încadra mai multe seturi de instrucțiuni JavaScript.

Atributele etichetei <script> sunt următoarele:

Limbaje de marcare

2.2.1 Html

HTML este limbajul de formatare a documentelor utilizat în proiectare majorității paginilor Web.World Wide Web este parte integrantă a Internetului și are o mare putere a dezvoltării globale a interconectării calculatoarelor. Limbajul său este simplu, interfețele sunt atractive și prietenoase și este adptabil la o gamă mare de întrebuințări. Există situri Web pentru prezentarea produselor și a ideilor, menținerea aparențelor, informarea publicului etc., iar conceptul World Wide Web este adaptat comunicării interne prin instalarea intraneturilor în interiorul companiilor.

HTML (Limbajul de Marcare a Hipertextului) este limbajul care dă înfățișarea Web-ului. El constă într-o varietate de elemente numite etichete (tags), care pot fi folosite la orice, de la definirea tipurilor de stil și a anteturilor și până la introducerea conținutuluui specific, cum ar fi imagini, sunete, cuvinte în realitatea virtuală și miniaplicații Java.

Structura minimală a unui document HTML este formată din următoarele TAG-uri:

<HTML> început pagină Web

<HEAD> început antet pagină

<TITLE> început titlu pagină

Definire titlu

</TITLE> sfârșit titlu pagină

</HEAD> sfârșit antet

<BODY> început corp pagină

Conținut propriu-zis pagină

</BODY> sfârșit corp pagină

</HTML> sfârșit pagină

Atribut: Un atribut furnizează instrucțiuni adiționale browserului despre o etichetă. Informațiile variază de la etichetă la etichetă și pot include subiecte cum ar fi locația fișierelor, mărimea, numele sau stilul lor.

Browser: Un browser de Web este un motor de parcurgere special care evoluează etichetele și conținutul unui fișier HTML, pe care îl afișează în concordanță cu posibilitățile și regulile platformei și capacitățile sale.

DTD (Document Type Definition – definirea tipului de documennt): O colecție de reguli scrise în SGML care definesc sintaxa și structura unui anume tip de document, cum ar fi HTML.

Element: O componentă distinctivă a structurii unui document, cum ar fi titlul, un paragraf sau o listă. Când ne referim la forma sa aplicată în cadrul unui document, un element se mai numește etichetă (tag).

Etichetă: Un cod care identifică un element pentru ca browserul sau alt program de parcurgere să știe în ce mod să afișeze conținutul. Etichetele sunt încadrate de caractere de delimitare (paranteze ascuțite).

Structura unui document

Fiecare document HTML, încă de la creare, are două părți principale: un antet și un corp. Chiar dacă nu sunt special delimitate, HTML presupune existența lor.

Deși fac parte din definirea unui document HTML, două etichete există în afara structurii documentului: <!DOCTYPE> și <HTML>. Prima identifică versiunea de HTML folosită pentru pagina respectivă și regulile pe care aceasta le respectă. A doua etichetă identifică un limbaj global și directia textului pentru documentul respectiv, în plus față de a marca începutul și sfârșitul conținutului HTML. Cu aceste două etichete se poate crea următorul Document:

<!DOCTYPE HTML PUBLIC “-// W3C//DTD HTML 4.0//EN”>

<HTML>

</HTML>

HTML (Limbajul de Marcare a Hipertextului) este limbajul care dă înfățișarea Web-ului. El constă într-o varietate de elemente numite etichete (tags), care pot fi folosite la orice, de la definirea tipurilor de stil și a anteturilor și până la introducerea conținutuluui specific, cum ar fi imagini, sunete, cuvinte în realitatea virtuală și miniaplicații Java.

<!DOCTYPE HTML PUBLIC “-// W3C//DTD HTML 4.0//EN”>

<HTML>

<HEAD>

</HEAD>

<BODY>

</BODY>

</HTML>

Elementul HEAD include o gamă de informații pentru browser, inclusiv un titlu pentru document, cuvinte cheie, informații de legătură și alte informații cu care utilizatorul nu trebuie să lucreze direct.

BODY este ceea ce vede utilizatorul în momentul în care documentul este redat de browser. Include text și obiecte, cum ar fi imagini și miniaplicații, la un loc cu etichetele de marcare pentru a defini structura lor precum și relația dintre ele.

În structura unui document HTML mai apar trei componente operaționale:

foile de stil;

scripturile;

seturile.

Aceste elemente trebuie definite explicit sau browserul nu le va recunoaște existența.

O foaie de stil, creată cu elementul STYLE, este un lucru nou în . Oferă un nou mod de definire a felului în care va arăta documentul, inclusiv familia de caractere și fontul, culorile, chenarele, marginile și alinierea. Prin adăugarea foilor de stil, ca un element de structură al documentului, înfățișarea și conținutul sunt separate pentru a da browserelor posibilitatea unui control mai précis.

Marcaje de formatare

2.3.1 CSS

CSS (Cascading Style Sheets) sau foi de stil în cascadă, reprezintă un mecanism simplu de a adăuga elemente de stil (tipuri de caractere, culori, aliniere, spațiere etc.) unui document web.

Tag-urile HTML au avut inițial rolul de defini conținutul unui document, de a face distincția între titlul unui paragraf (definit prin tag-urile <Hn>), conținutul paragrafului (definit prin tag-ul <P>), tabele (definite prin tag-ul <TABLE>) etc. Aspectul și modul de afișare al unui site cădeau în sarcina browserului, fără a fi folosite niciun fel de tag-uri de formatare.

Dar cum cele două principale browsere – Internet Explorer și Netscape Navigator – au continuat să adauge noi tag-uri și atribute limbajului HTML original, a devenit tot mai dificil să creezi un site în care conținutul documentului HTML să fie clar separat de modul său de prezentare.

Pentru a rezolva această problemă, consorțiul W3C, responsabil de standardizarea specificațiilor HTML, a creat stilurile și le-a adăugat specificațiilor HTML 4.0.

Prioritate în cascadă

CSS specifică o schemă a priorităților pentru a determina care regulă de stil are prioritate atunci când există mai multe reguli aplicate aceluiași element. Este vorba de așa-numita prioritate în cascadă, prioritatea fiind calculată conform anumitor reguli, astfel încât rezultat să fie predictibil.

Informațiile de stil pot fi prezentate sub diferite forme, astfel putem deosebi:

stiluri inline, definite în interiorul unui element HTML

–         foi de stil interne, definite în interiorul elementului <HEAD>

–         foi de stil externe, definite într-un fișier cu extensia .css

Prioritatea cea mai mare o are stilul inline, după care, din punctul de vedere al priorității, urmează stilul definit în interiorul elementului <HEAD> și, în cele din urmă, stilul din foia externă. Prin urmare, o definire a stilului inline va prevala în fața stilului intern care, la rândul său, va prevala în fața stilului extern.

  Folosirea stilurilor

  Sintaxa CSS este alcatuită din trei părți: un selector, o proprietate și o valoare, în următorul format:

  selector { proprietate: valoare}

  Selectorul este reprezentat de elementul (tag-ul) cărui doriți să-i aplicați un anumit stil, proprietatea este atributul pe care doriți să-l schimbați și fiecare proprietate poate lua o anumită valoare. Propritatea și valoarea sunt separate de două puncte (:) și sunt încadrate de acolade {}.

Exemplu:

  body {color: blue}

  Pentru modificarea mai multor proprietati ale aceluiasi element, trebuie separata fiecare proprietate cu punct și virgulă (;). Exemplul de mai jos arată cum se defineste un paragraf aliniat pe centrul paginii iar textului aplicandu-i-se culoarea rosie:

  p {text-align: center; color: red}

De asemenea, ca și în HTML, pentru a putea introduce și explicații ce pot fi utile ulterior, în CSS pot fi inserate comentarii ce vor fi ignorate de către browser. Comentariile încep cu (/*) și se încheie cu (*/), ca în exemplul următor:

/* Acesta este un comentariu */

Cum se inserează o foaie de stil

Când un browser citește o foaie de stil, va aplica documentului formatările specificate în foia respectivă. În funcție de forma în care sunt prezentate informațiile de stil, inserarea acestora într-un document web se poate efectua în trei moduri:

a) astfel, pentru inserarea unei foi de stil externe, ideală când stilul se va aplica mai multor pagini, trebuie folosit tag-ul <LINK> în fiecare pagină ce urmează să folosească stilul respectiv. Atributele obligatorii pentru tag-ul <LINK> sunt REL cu valoarea “stylesheet”, TYPE cu valoarea “text/css” și HREF care are ca valoare adresa URL a fișierului care conține foaia de stil.

Acest tag se amplasează în secțiunea HEAD a paginii web cu următoarea sintaxă:

<HEAD>

<LINK REL="stylesheet" TYPE="text/css" HREF="http://www.referate10.ro/nume_fișier.css">

</HEAD>

În aceste condiții, browserul va citi foia de stil din fișierul nume_fișier.css și va formata documentul în mod corespunzător.

O foaie de stil poate fi scrisă în orice editor de text. Fișierul nu trebuie sa conțină vreun tag HTML și trebuie salvat cu extensia .css.

b) o foaie de stil internă ar trebui folosită atunci când există un singur document cu un stil propriu. Foaia de stil internă se definește în secțiunea HEAD folosind tagul <STYLE> astfel:

  <HEAD>

<STYLE TYPE="text/css">

h1 {color: blue}

p {margin-left: 20px}

body {background-image: url("fundal.gif")}

</STYLE>

</HEAD>

Browserul va citi acum stilurile, așa cum au fost definite, și va formata documentul în conformitate cu acestea.

Notă: În mod normal un browser ignoră tag-urile necunoscute. Acest lucru înseamnă că browserele mai vechi, care nu suportă stiluri, vor ignora tag-ul< STYLE>, dar vor afișa conținutul acestuia, cuprins între tag-ul de început și cel de încheiere, sub formă de text. Pentru a preîntâmpina acest neajuns, este recomandabil să includeți conținutul în interiorul unui comentariu, ca în exemplul de mai jos:

<HEAD>

<STYLE TYPE="text/css">

<!–

h1 {color: blue}

p {margin-left: 20px}

body {background-image: url("fundal.gif")}

          –>

</STYLE>

</HEAD>

c) în final, dacă se doreste folosirea unui stil inline, va trebui utilizat atributul style în interiorul tag-ului respectiv. Este o metodă folosită mai ales atunci când un stil urmează să fie aplicat unei singure apariții a unui element. Atributul style poate conține orice caracteristică CSS. Exemplul următor arată cum se poate schimba culoarea și stilul fontului folosit într-un paragraf, fără a mai apela la tag-urile <FONT> cu atributul color și <B>:

<p style="color:red; font-weight:bold"> Acesta este un paragraf  în care textul va fi de culoare roșie și scris cu caractere îngroșate</p>

Interpretoare software

Adobe Dreamweaver CS6

In dezvoltarea website-ului a fost utilizata aplicatia Adobe Dreamweaver pentru crearea, formatarea, si editarea paginilor , verificarea erorilor in scripturi .

Adobe Dreamweaver (cunoscut anterior ca Macromedia Dreamweaver) este o aplicație de dezvoltare web a companiei americane Adobe Systems, disponibilă atât pentru MS Windows, cât și pentru Apple Mac OS. Versiunile recente includ suport pentru tehnologii web cum ar fi CSS, JavaScript, PHP, Cold Fusion, cât și cadre ASP.

Dreamweaver s-a bucurat de un larg succes încă de la sfârșitul anilor 1990 și momentan deține aproximativ 80 % din piața editoarelor HTML. Produsul poate fi rulat pe variate platforme software: Mac OS, Windows, dar suportă în același timp și platforme UNIX cu ajutorul unor emulatoare software cum ar fi Wine.

Ca orice alt editor WYSIWYG, Dreamweaver poate ascunde detaliile de implementare a paginilor HTML, făcând astfel posibilă crearea cu ușurință a acestora și de către utilizatorii neexperimentați.

Un aspect foarte lăudat al Dreamweaver-ului îl reprezintă arhitectura sa extensibilă. Extensiile sunt mici programe pe care orice dezvoltator le poate scrie (de obicei în HTML și JavaScript) și pe care oricine le poate descărca și instala, acestea aducând un spor de performanță și funcționalitate îmbunătățită programului. Există o comunitate de dezvoltatori care produc aceste extensii și le publică (atât comercial cât și gratuit) pentru probleme de dezvoltare web, de la simple efecte rollover până la soluții complete de vânzare online, în Internet.

Notepad ++

Deasemenea a fost utilizata si aplicatia notepad++ pentru editarea paginilor website-ului.

Notepad++ este un editor de text gratuit pentru Windows. Programul permite editarea codului sursă specific unui număr mare de limbaje de programare, precum C, C++, Pascal, Cobol, HTML, PHP.

Facilități remarcabile sunt:

Colorare sintactică pentru 48 de limbaje de programare (se poate modifica de către utilizator);

⦁ Tipărirea color a codului sursă (WYSIWYG);

⦁ Autocompletare = deducerea și întregirea automată a cuvântului de cod din biblioteca utilizată;

⦁ Interfață cu mai multe ferestre (utilizează tab-uri);

⦁ Suport pentru căutări/înlocuiri cu ⦁ expresii regulate PERL;

⦁ Suport pentru macroinstrucțiuni.

Notepad++ se bazează pe motorul Scintilla, fiind programat în C++ și utilizând Win32 API și biblioteca STL, asigurând astfel o execuție rapidă și un consum redus de resurse.

XAMPP

Pachetul de aplicații Xampp a fost folosit pentru a verifica funcționalitatea website-ului utilizând serverul Apache , și stocarea informațiilor în baza de date cu ajutorul serverului Mysql , dar și editarea conținutului acesteia cu aplicația integrată phpMyAdmin.

XAMPP este un pachet de programe free software, open source și cross-platform web server, care constă în Apache HTTP Server, MySQL database și interpretoare pentru scripturile scrise în limbajele de programare PHP și Perl.

În mod oficial, designerii XAMPP au avut intenția de a îl utiliza numai ca utilitar de dezvoltare, pentru a permite designerilor și programatorilor web să își testeze munca pe calculatoarele proprii, fără a avea nevoie de acces la Internet. Pentru a face posibil acest lucru, multe caracteristici de securitate importante sunt dezactivate în mod implicit. În practică, totuși, XAMPP este uneori utilizat pentru a servi pagini web în World Wide Web. Un utilitar special este asigurat pentru a proteja prin parolă cele mai importante părți ale pachetului. XAMPP asigură deasemenea suport

Capitolul 3

Studiu de caz – Sistem informatic pentru administrarea unui cabinet medical

Structura bazei de date

3.1.1 Diagrama Entitate-Legatura

Subcapitolul prezintă structura tabelelor din baza de date utilizată pentru dezvoltarea website-ului.Aceasta a fost creată utilizând comanda SQL: CREATE TABLE nume_tabel dar și diagrama entitate-legatura.

Tabele:

Calendar cu următoarele atribute: id_pr [bigint] (cheie primară), titlu_pr[varchar], dată_pr[date], timpin_pr[date], timpsf_pr[varchar], vârsta_pr[double], numepers_pr[varchar], telefon_pr[varchar], șpec_pr[varchar], mail_pr[varchar], descr_pr[text].

Mesaje cu următoarele atribute: id[int](cheie primară), dată_trim[varchar], trim_de[varchar], trim_către[varchar], mesaj[text], trim_de_șterge[int], trimis_către_șterge[int].

Utilizatori cu următoarele atribute:id[int](cheie primară), nume[varchar], parola[varbinary].

In figura 2.1 este prezentată diagrama entitate-legatură.

Figura 2.1:Diagrama Entitate-Legatură

Prezentarea soluției

3.2.1 Scop si exigențe funcționale

Se urmareste optimizarea sistemului de programare a terapiilor in cadrul unui cabinet medical precum si comunicarea medic – pacient.

Pentru ca aplicatia sa functioneze este nevoie de:

Calculator;

Acces la internet.

3.2.2 Identificarea actorilor și a cazurilor de utilizare

Actori externi:

Pacient, medic: sunt cei care inițializează cazurile de utilizare în vederea satisfacerii obiectivelor;

Actor intern:

Dezvoltator: este cel ce a creat toate elementele ce se regăsesc în aplicație și are în vedere dezvoltarea și mentenanța aplicației;

Descrierea cazurilor de utilizare:

1.Autentificare pacient: acest caz începe în momentul în care pacientul introduce datele în formular și se termină atunci când a dat click pe butonul autentificare;

2.Este redirecționat la pagina personală.

3.Aceasta conține 2 pagini diferite: pagina „Programări / Abonamente Ședințe” și „Diagnostice/ discuții, recomandări ale medicului”.

4.Accesează „Programări / Abonamente Ședințe”.

5.Cauta programări în calendar în vederea găsirii unei date convenabile.

6.Înregistrează o programare.

7.Accesează „Pagina Diagnostice/ discuții, recomandări ale medicului”.

8.Trimite un mesaj cadrului medical.

9.Vizualizează mesaje primite.

10.Deasemenea poate accesa pagina „Contact” și completa un formular pentru a cere informații adiționale.

11.Autentificare pacient: acest caz începe în momentul în care pacientul introduce datele în formular și se termină atunci când a dat click pe butonul autentificare.

12.Este redirecționat la pagina personală.

13.Caută programările făcute de pacienți accesând pagina „Vizualizare programări”

14.Poate șterge programări.

15.Din pagina personală accesând „Discuții cu pacienții” răspunde la întrebările acestora , lasă diagnostice ,vizualizează mesaje primite.

16.Are opțiunea de a încărca și descarca fișiere audio cu înregistrările ședințelor.

3.2.3 Diagrama cazurilor de utilizare

Figura 2.2:Diagrama cazurilor de utilizare

Implementare secțiune de administrare

3.3.1 Înregistrare

Serviciul de înregistrare presupune, în primul rând permiterea accesului pentru fiecare utilizator (pacient, medic) la serviciile oferite de aplicație, de un sistem de administrare în funcție de identitatea utilizatorului.

Inregistrarea se face pe baza unui nume de utilizator , pentru identificarea utilizatorului si pe baza unei parole. Pentru aceasta aplicație înregistrarea se face prin adăugarea de nume si prenume, adăugarea unei parole ce poate să fie de orice dimensiune care conține atât cifre cât și litere.

Descrierea formularului de înregistrare:

Figura 2.3:Formular de inregistrare

Nume/Prenume: Câmp de tip text, în care trebuie introdus numele si prenumele ;

Parola contului: Câmp de tip text, în care trebuie specificata parola ;

Confirma parola: Câmp de tip text, în care trebuie confirmata parola introdusa;

Butonul "Inregistreaza-te" – click pentru inregistrare cu datele introduse în câmpurile de mai sus;

Butonul „Anulează” – click pentru a vă redirecționa la pagina principală.

3.3.2 Autentificarea

După ce v-ați înregistrat, sistemul de autentificare presupune doar să completați câmpurile formularului cu „Nume Prenume” si „Parola”.După ce ați introdus corect datele, sunteți redirecționat catre pagina personală, în caz că datele sunt introduse greșit, se va afișa un mesaj de avertizare.

Figura 2.4:Formular de autentificare

Securitate

Website-ul are momentan câteva limitări de proiectare, una dintre probleme ar fi că datele introduse de pacienți să fie incorecte și acestia să întâmpine de fiecare dată mesaje de avertizare.

În acest sens, dacă pacientul sau cadrul medical și-a uitat parola, singura posibilitate de a avea din nou acces la pagina personală, este să își creeze un cont nou, momentan aplicația nu este prevăzută cu un sistem prin care să genereze o nouă parolă în cazul uitării celei vechi.

În momentul în care un utilizator își creeză un cont nou, parolele sunt criptate în formatul MD5, este indicată folosirea unor parole cât mai lungi, pentru o criptare cât mai sigură.

3.4 Implementarea sistemului de programare a terapiilor

Figura 2.4.1 Pagina personală

In figura 2.4.1 este afișată pagina personală a pacientului(in urma autentificarii va fi redirectionat automat).

Accesând „Programări / Abonamente ședinte” va fi redirecționat spre:

Figura 2.4.2 Programări / Abonamente ședinte

Programări / Abonamente ședinte ce reprezintă pagina unde pacientul are urmatoarele facilități:

Răsfoirea calendarului pentru a observa datele calendaristice neprogramate; selectand Luna si Anul;

Dând click pe o zi din calendar , comanda va duce la afișarea statului zilei respective:numărul terapiilor programate , persoanele programate , intervalul orar, astfel incat sa își aleagă o programare validă.

Programarea terapiei in intervalul dorit , accesând „Inregistrează o programare”:

Figura 2.4.3 Formular înregistrare programări

Comanda executată va duce pacientul la pagina din Figura 2.4.3 unde trebuie să completeze formularul cu:

Numele Programării – câmp de tip text;

Dată de început – o listă drop down de unde va alege Anul, Luna , și Ziua;

Dată de sfârșit – pentru a stabili dacă dorește o terapie sau o sesiune de terapii;

Interval – Selectând cele 2 date va fi tipărit în mod automat sesiunea completă a terapiilor;

Vârsta – câmp de tip numeric;

Specializarea programării:Pacientul specifică specialitatea cadrul medical la care dorește terapia (psiholog , logoped , psihiatru, neurolog etc);

Adresa de email;

Nume / Prenume;

Număr de telefon;

Comentarii suplimentare:

În urma executării „Înregistrați programarea” informația va fi stocată în baza de date și afișată sub calendar.

Figura 2.4.4 Afișarea terapiilor programate

Dacă pacientul dorește să renunțe la terapie sau consideră că a făcut o programare eronată , o poate șterge folosind comanda „Ștergeți programare” .

Pentru a căuta terapiile programate de acesta pacientul va accesa „Căutați programări” .

Cele 2 formulare de tip text care vor apărea trebuie completate cu o „Dată de început” și o „Dată de sfârșit”.

Figura 2.4.5 Cautarea terapiilor dintr-un interval dat

Executarea butonului „Căutați” va determina afișarea rezultatelor.

Figura 2.4.6 Afișarea rezultatelor căutării

Funcția pentru înregistrarea în baza de date a programărilor:

function InsertRecord()

{

//Variabile

$title = $_POST['etitle'];

$syear = $_POST['syear'];

$smonth = $_POST['smonth'];

$sday = $_POST['sday'];

$eyear = $_POST['eyear'];

$emonth = $_POST['emonth'];

$eday = $_POST['eday'];

$edesc = $_POST['edesc'];

$exceptDate[] = $_POST['exceptDate'];

$num = count($exceptDate[0]);

$shour = $_POST['shour'];

$sminute = $_POST['sminute'];

$ssecond = $_POST['ssecond'];

$ehour = $_POST['ehour'];

$eminute = $_POST['eminute'];

$esecond = $_POST['esecond'];

$varsta1 = $_POST['varsta'];

$specializare = $_POST['specializare'];

$email = $_POST['email'];

$stime = $shour.':'.$sminute.':'.$ssecond;

$etime = $ehour.':'.$eminute.':'.$esecond;

$phone = $_POST['phone1'].'-'.$_POST['phone2'].'-'.$_POST['phone3'];

$person = $_POST['evtPerson'];

$ph1 = $_POST['phone1'];

$ph2 = $_POST['phone2'];

$ph3 = $_POST['phone3'];

// $beginDate si $endDate utilizate pentru stocarea datelor /

$beginDate = $syear.'-'.$smonth.'-'.$sday;

$endDate = $eyear.'-'.$emonth.'-'.$eday;

//Validarea datelor/

if(strlen(trim($_POST['etitle'])) == 0)

{

$_SESSION['titlu_pr'] = "<font color='red'>Completati spatiul</font>";

}

if($_POST['syear'] > $_POST['eyear'])

{

$_SESSION['evt_year'] = "<font color='red'>V</font>";

}

if($_POST['syear'] == "Year" || $_POST['smonth'] == "Month" || $_POST['sday'] == "Day")

{

$_SESSION['evt_sdate'] = "<font color='red'>Alegeti data de inceput</font>";

}

if($_POST['eyear'] == "Year" || $_POST['emonth'] == "Month" || $_POST['eday'] == "Day")

{

$_SESSION['evt_year'] = "<font color='red'>Alegeti data de sfarsit</font>";

}

if($_POST['shour'] == "HH" || $_POST['sminute'] == "MM" || $_POST['ssecond'] == "DD")

{

$_SESSION['evt_stime'] = "<font color='red'>Alegeti ora de inceput</font>";

}

if($_POST['ehour'] == "HH" || $_POST['eminute'] == "MM" || $_POST['esecond'] == "DD")

{

$_SESSION['timpsf_pr'] = "<font color='red'>Alegeti ora de sfarsit</font>";

}

if(strlen(trim($_POST['edesc'])) == 0)

{

$_SESSION['evt_desc'] = "<br><font color='red'>Faceti o descriere sumara a starii dumneavoastra</font>";

}

if(ctype_alpha($_POST['evtPrice']))

{

$_SESSION['varsta'] = "<br><font color='red'>Folositi numere</font>";

}

if(strlen(trim($_POST['evtPrice'])) == 0)

{

$_SESSION['varsta'] = "<br><font color='red'>Precizati varsta</font>";

}

if(strlen(trim($_POST['evtPlace'])) == 0)

{

$_SESSION['specializare'] = "<br><font color='red'>Precizati specializarea programarii</font>";

}

if(strlen(trim($_POST['varsta'])) == 0)

{

$_SESSION['email'] = "<br><font color='red'>Introduceti o adresa de email valida</font>";

}

function validateEmail($url)

{

if(filter_var($url, FILTER_VALIDATE_EMAIL))

{

return true;

}

return false;

}

$phone = $_POST['phone1'].'-'.$_POST['phone2'].'-'.$_POST['phone3'];

if( (strlen(trim($_POST['phone1'])) == 0) || (strlen(trim($_POST['phone2'])) == 0) ||(strlen(trim($_POST['phone3'])) == 0) )

{

$_SESSION['evt_phone'] = "<br><font color='red'>Introduceti un numar de telefon</font>";

}

$phone = $_POST['phone1'].'-'.$_POST['phone2'].'-'.$_POST['phone3'];

if(ereg("^[0-9]{3}-[0-9]{3}-[0-9]{4}$", $phone) == false)

{

$_SESSION['evt_phone'] = "<br><font color='red'>Precizati un numar valid de telefon</font>";

}

if(strlen(trim($_POST['evtPerson'])) == 0)

{

$_SESSION['evt_person'] = "<br><font color='red'>Precizati numele si prenumele</font>";

}

if(ctype_digit($_POST['evtPerson']))

{

$_SESSION['evt_person'] = "<br><font color='red'>Nu folositi numere</font>";

}

if($_POST['syear'] <> "Year" and $_POST['smonth'] <> "Month" and $_POST['sday'] <> "Day"

and $_POST['eyear'] <> "Year" and $_POST['emonth'] <> "Month" and $_POST['eday'] <> "Day")

{

if(checkdate($_POST['smonth'],$_POST['sday'], $_POST['syear']) == 0)

{

$_SESSION['evt_sdate'] = "<font color='red'>Verificati data de inceput</font>";

}

if(checkdate($_POST['emonth'],$_POST['eday'], $_POST['eyear']) == 0)

{

$_SESSION['evt_year'] = "<font color='red'>Verificati data de sfarsit</font>";

}

}

/**

Verificarea validitatii datelor inscrise

*/

if(isset($_SESSION['evt_year']) || isset($_SESSION['titlu_pr']) || isset($_SESSION['evt_sdate']) || isset($_SESSION['specializare']) ||

isset($_SESSION['email']) || isset($_SESSION['evt_stime']) || isset($_SESSION['timpsf_pr']) || isset($_SESSION['varsta']) ||

isset($_SESSION['evt_phone']) || isset($_SESSION['evt_person']) || isset($_SESSION['evt_desc']))

{

header("Location:../templates/record.php?title=$title&price=$varsta&place=$specializare&url=$email&person=$person&ph1=$ph1&ph2=$ph2&ph3=$ph3");

}

else

{

$a=explode("-", $beginDate);

$b=explode("-", $endDate);

$start_date=gregoriantojd($a[1], $a[2], $a[0]);

$end_date=gregoriantojd($b[1], $b[2], $b[0]);

$diff = $end_date – $start_date;

$startDate = date("Y-m-d-D", mktime(0, 0, 0, $a[1], $a[2], $a[0]));

$endDate = date("Y-m-d-D", mktime(0, 0, 0, $a[1],$a[2]+$diff,$a[0]));

/**

*Intervalul de timp rezervat de client

*$temp[] contine zilele ramase

*$exceptDate[0] contine zilele rezervate

*/

if($num <> 0)

{

for($i=0;$i<$num;$i++)

{

$temp1[] = $exceptDate[0][$i];

}

for($j=0;$j<=$diff;$j++)

{

$temp2[] = date("Y-m-d", mktime(0, 0, 0,$a[1], $a[2]+$j, $a[0]));

}

$temp3 = array_diff($temp2,$temp1);

foreach($temp3 as $temp4)

{

$temp[] = $temp4;

}

for($i=0;$i<count($temp);$i++)

{

$this->connection();

$sql = "INSERT INTO eventcalender (`id_pr` ,`titlu_pr` ,`data_pr`,`evt_stime`, `timpsf_pr`, `evt_ticket`

,`evt_person`,`evt_phone`,`specializare`, `evt_contact`,`evt_desc`)VALUES

('', '$title', '$temp[$i]', '$stime','$etime','$varsta','$person','$phone','$specializare','$email','$edesc');";

$query = $this->ExecuteInsert($sql);

}

}

else

{

for($j=0;$j<=$diff;$j++)

{

$temp[] = date("Y-m-d", mktime(0, 0, 0,$a[1], $a[2]+$j, $a[0]));

}

for($i=0;$i<count($temp);$i++)

{

$this->connection();

$sql = "INSERT INTO eventcalender (`id_pr` ,`titlu_pr` ,`data_pr`,`evt_stime`, `timpsf_pr`, `evt_ticket`

,`evt_person`,`evt_phone`,`specializare`, `evt_contact`,`evt_desc`)VALUES

('', '$title', '$temp[$i]', '$stime','$etime','$varsta','$person','$phone','$specializare','$email','$edesc');";

$query = $this->ExecuteInsert($sql);

}

if($query)

}

3.5 Implementarea sistemului de dialog intre pacient si cadrul medical

Din pagina personală , pacientul are posibilitatea de a lua legătura cu cadrul medical accesând pagina „Diagnostice /Discuții, recomandări ale medicului”.

Acesta va fi redirecționat spre:

Figura 2.5.1 Diagnostice / Discutii, recomandari ale medicului

Accesând „Trimiteți un mesaj cadrului medical” va fi redirecționat spre:

Figura 2.5.2 Formularul de dialog

Pentru a trimite mesajul medicului curant , acesta copiază numele său din lista drop down „Cadre medicale” și o notează în câmpul „Specificați numele cadrului medical” , urmat de mesajul aferent.Apăsând butonul „Expediați” mesajul va fi stocat în baza de date și afișat cadrului medical când acesta se va loga.

Ca să vizualizeze mesajele primite , pacientul trebuie să acceseze „Vizualizați mesajele primite” .

Figura 2.5.3 Mesaje primite

Informatiile afișate vor fi :

Expeditorul;

Dată expedierii ;

Mesajul;

Opțiune de ștergere a mesajului.

Formular de contact

Pacientul are deasemenea posibilitatea să obțină un răspuns rapid de la asistentii medicilor completând formularul „Contact” cu următoarele câmpuri:

„Numele și prenumele dvs” – câmp de tip text;

„Nr de telefon” – câmp de tip numeric;

„Adresa de email” – câmp de tip text;

„Mesajul dvs” – câmp de tip text;

Click pe butonul „Trimite” va expedia formularul către instituția Psihotera.Prin acest formular pacientul va fi contactat telefonic

Figura 2.5.4 Formular de contact

Dacă utilizatorul se autentifica cu drepturi de cadru medical acesta va fi redirecționat spre pagina „medic.php” ce prezintă în mare aceleași funcționalități că cele oferite clientului.

O diferență notabilă este scriptul de încărcare / descărcare a fișierelor audio înregistrate de medic în urma terapiei cu pacientul.

Figura 2.5.5 Pagina cadrului medical

Pentru a încărca un fișier , medicul apasa butonul „Browse” selectează fișierul dorit , apoi dă click pe butonul „Încărcați” .Fișierele urcate vor fi afișate sub denumirea „Descărcare fișiere audio” .Pentru a le descărca se vor selecta individual fișierele dorite.

Concluzii

Unul din motivele alegerii acestei teme a fost ușurința lucrării cu funcțiile de programare dezvoltate pentru site-urile web , în comparații cu alte domenii dar și frumusețea produsului finit , procedeul de publicare a aplicațiilor de acest gen, suportul teoretic dar și practic .

Obiectivul urmărit în această aplicație este realizarea unei metode eficiente , de programare a terapiilor într-un cabinet medical , și de înlesnirea comunicării pacient – medic.

Website-ul prezintă o interfață plăcută , simplista , compactă.În urma accesării , utilizatorul se poate documenta eficient despre condiția stării sale , poate observa modul de lucru a echipei instituției medicale și are opțiuni multiple de a cere informații de la aceștia.În urma documentării poate lua o decizie programându-se pe loc.

Există mai multe metode pentru a realiza în mod dinamic pagini Web însă limbajul PHP are avantajul simplității și a independenței de sistemul de operare.

Limbajul PHP funcționează în regim open source. Ajuns la versiunea 4, PHP este un limbaj de scripting server-side foarte solid, dotat cu peste 1000 de funcții, implementat pe numeroase platforme, conlucrând cu toate serverele Web importante și dispunând de interfețe pentru toate majoritatea bazelor de date utilizate , de accea l-am ales că limbaj de programare principal în dezvoltarea aplicației.

Glosar de termeni

Un browser sau un navigator este o aplicație software (program) ce permite utilizatorilor să afișeze text, video, muzică și alte informații situate pe o pagină din World Wide Web, dar și să comunice cu furnizorul de informații și chiar și ei între ei.

Un server este un program de aplicație care furnizează servicii altor aplicații (numite aplicații client), aflate pe același calculator sau pe calculatoare diferite.

MD5 (Message Digest Algorithm 5) este o funcție criptografică de tip hash unidirecțional, care livrează ca rezultat o valoare fixă ca lungime de 128 Biți.

Termenul World Wide Web, abreviat WWW sau și www, numit scurt și web, care în engleză înseamnă „rețea mondială” respectiv „rețea” și se pronunță /ˌwɝːld waɪd wɛb/ respectiv /wɛb/ (v. AFI), iar pe românește [ pron. ŭeb ] , este un sistem de documente și informații de tip hipertext legate ele între ele care pot fi accesate prin rețeaua mondială de Internet.

Bibliografie

Totul despre HTML 4, Rick Darnel, Editura Teora, București, 2002

W3schools(http://www.w3schools.com)

Wikipedia ( http://ro.wikipedia.org/wiki/Internet )

Wikipedia ( http://en.wikipedia.org/wiki/Web_application )

Php(http://php.net)

Marplo ( http://www.marplo.net/php-mysql/lectii.html )

Marplo ( http://www.marplo.net/javascript/lectii-js )

Stackoverflow (http://stackoverflow.com)

Stig Sćther Bakken, Alexander Aulbach PHP Manual Editura: Egon Schmid

Baze de date. Fundamente teoretice și practice, Grupul BDASEIG, Editura Infomega, București, 2002

Anexa

Codul sursă pentru Înregistrare / Autentificare:

<?php

//dezactivare erori

error_reporting(E_ALL);

//setari baza de date

define( "DB_DSN", "mysql:host=localhost;dbname=clienti" );

define( "DB_USERNAME", "root" );

define( "DB_PASSWORD", "" );

define( "CLS_PATH", "class" );

//includerea claselor

include_once( CLS_PATH . "/utilizator.php" );

?>

<?php

class utilizatori {

public $user = null;

public $parola = null;

public $salt = "";

public function __construct( $data = array() ) {

if( isset( $data['user'] ) ) $contor->user = stripslashes( strip_tags( $data['user'] ) );

if( isset( $data['parola'] ) ) $contor->parola = stripslashes( strip_tags( $data['parola'] ) );

}

public function storeFormValues( $param ) {

//stocarea parametrilor

$contor->__construct( $param );

}

public function userLogin() {

$success = false;

try{

$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );

$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$sql = "SELECT * FROM utilizatori WHERE user = :user AND parola = :parola LIMIT 1";

$stmt = $con->prepare( $sql );

$stmt->bindValue( "user", $contor->user, PDO::PARAM_STR );

$stmt->bindValue( "parola", hash("sha256", $contor->parola . $contor->salt), PDO::PARAM_STR );

$stmt->execute();

$valid = $stmt->fetchColumn();

if( $valid ) {

$success = true;

}

$con = null;

return $success;

}catch (PDOException $e) {

echo $e->getMessage();

return $success;

}

}

public function inregistrare() {

$correct = false;

try {

$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );

$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$sql = "INSERT INTO utilizatori (user, parola) VALUES(:user, :parola)";

$stmt = $con->prepare( $sql );

$stmt->bindValue( "user", $contor->user, PDO::PARAM_STR );

$stmt->bindValue( "parola", hash("sha256", $contor->parola . $contor->salt), PDO::PARAM_STR );

$stmt->execute();

return "V-ati inregistrat cu succes! <br/> <a href='index.php'>Autentificare.</a>";

}catch( PDOException $e ) {

return $e->getMessage();

}

}

}

?>

Codul sursă pentru Dialog:

<?php

//page named "connect.php"

// Conectare

$server = 'localhost';

$user = 'root';

$pwd = '';

$db = 'clienti';

mysql_connect($server,$user,$pwd) or die(mysql_error());

mysql_select_db($db) or die(mysql_error());

?>

<?php

//conectarea mysql

include_once('connect.php');

function sendMessage($from,$to,$message)

{

//verif erorilor

if(empty($from)) { return 'Mesajul nu a fost trimis'; }

elseif(empty($to)) { return 'Nu ati specificat destinatarul'; }

elseif(empty($message)) { return 'Nu trimiteti mesaje fara continut.'; }

else

{

$date = date("F d, Y");

$from = mysql_real_escape_string($from);

$to = mysql_real_escape_string($to);

$message = mysql_real_escape_string($message);

//interogari

$query = "INSERT INTO message(date_sent,sent_by,sent_to,message) VALUES ('$date','$from','$to','$message')";

//executarea interogarilor

if(mysql_query($query))

{

$string = 'Mesaj trimis.';

}

else { $string = 'Eroare.'; }

}

return $string;

}

function getMessage($user)

{

$query = "SELECT * FROM message WHERE sent_to='$user'";

$result = mysql_query($query);

if(mysql_affected_rows() > 0)

{

while($row = mysql_fetch_assoc($result))

{

echo 'Mesaj de la: '. $row['sent_by']

.'&nbsp;;Trimis pe: '. $row['date_sent']

.'<hr/>'

. $row['message']

.'<a href="?cmd=delete&id='.$row['id'].'">&nbsp;Stergeti mesaj</a>';

}

}

else {echo 'Nu aveti mesaje'; }

return;

}

function countMessage($user)

{

$query = "SELECT * FROM message WHERE sent_to='$user'";

$result = mysql_query($query);

$count = mysql_affected_rows();

return $count;

}

function deleteMessage($id)

{

$query = "DELETE FROM message WHERE id='$id'";

mysql_query($query);

return;

}

?>

Codul sursă pentru Sistemul de programare:

<?php

class CalenderShowc

{

function showCalender()

{

$mon = array("Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Noi","Dec");

$output="<table border='0' cellspacing='0' cellpadding='0'><tr class = 'tit'><td> Luna <select name='month' onChange='dateShow()' id='month'>";

for($i = 1;$i<=12;$i++)

{

$output.="<option value='$i'>".$mon[$i-1]."</option>";

}

$output.="</select></td><td> An <select name='year' onChange='dateShow()' id='year'>";

for($i = date("Y");$i<=date("Y")+30;$i++)

{

$output.="<option value='$i'>".$i."</option>";

}

$output.="</select></td></tr></table><table border='0'><tr><td id='dateShow1'>";

$month = date("n");

$year = date("Y");

$date = mktime(12, 0, 0, $month, 1, $year);

$daysInMonth = date("t", $date);

$offset = date("w", $date);

$rows = 1;

$output.="<h1>".date("F Y", $date)."</h1>\n";

$output.="<table border='0' cellspacing='5' cellpadding='5'>\n";

$output.="\t<tr class= 'tit'><th>Duminica</th><th>Luni</th><th>Marti</th><th>Miercuri</th><th>Joi</th><th>Vineri

</th><th>Sambata</th></tr>";

$output.="\n\t<tr bgcolor='#F5F5F5'>";

for($i = 1; $i <= $offset; $i++)

{

$output.="<td></td>";

}

for($i=0;$i<=$daysInMonth;$i++)

{

if(substr($temp[] = date("Y-m-d-D", mktime(0, 0, 0,$month, $i, $year)),-3) == "Sun")

{

$sun[] = substr(date("Y-m-d-D", mktime(0, 0, 0,$month, $i, $year)),8,-4);

}

}

for($day = 1; $day <= $daysInMonth; $day++)

{

if( ($day + $offset – 1) % 7 == 0 && $day != 1)

{

$output.="</tr>\n\t<tr bgcolor='#F5F5F5'>";

$rows++;

}

if($day == date("j"))

{

$output.="<td bgcolor='#cccccc'>";

}

elseif($day == $sun[0] || $day == $sun[1] || $day == $sun[2] || $day == $sun[3] || $day == $sun[4])

{

$output.="<td bgcolor='#669900'>";

}

else

{

$output.="<td>";

}

$output.="<strong><a href='classes/EventRecordShow.php?rday=$day&rmonth=$month&ryear=$year' style='text-decoration:none'>" . $day . "</a></strong></td>";

}

while( ($day + $offset) <= $rows * 7)

{

$output.="<td></td>";

$day++;

}

$output.="</tr>\n</table>\n</td></tr></table>";

return $output;

}

}

?>

Bibliografie

Totul despre HTML 4, Rick Darnel, Editura Teora, București, 2002

W3schools(http://www.w3schools.com)

Wikipedia ( http://ro.wikipedia.org/wiki/Internet )

Wikipedia ( http://en.wikipedia.org/wiki/Web_application )

Php(http://php.net)

Marplo ( http://www.marplo.net/php-mysql/lectii.html )

Marplo ( http://www.marplo.net/javascript/lectii-js )

Stackoverflow (http://stackoverflow.com)

Stig Sćther Bakken, Alexander Aulbach PHP Manual Editura: Egon Schmid

Baze de date. Fundamente teoretice și practice, Grupul BDASEIG, Editura Infomega, București, 2002

Anexa

Codul sursă pentru Înregistrare / Autentificare:

<?php

//dezactivare erori

error_reporting(E_ALL);

//setari baza de date

define( "DB_DSN", "mysql:host=localhost;dbname=clienti" );

define( "DB_USERNAME", "root" );

define( "DB_PASSWORD", "" );

define( "CLS_PATH", "class" );

//includerea claselor

include_once( CLS_PATH . "/utilizator.php" );

?>

<?php

class utilizatori {

public $user = null;

public $parola = null;

public $salt = "";

public function __construct( $data = array() ) {

if( isset( $data['user'] ) ) $contor->user = stripslashes( strip_tags( $data['user'] ) );

if( isset( $data['parola'] ) ) $contor->parola = stripslashes( strip_tags( $data['parola'] ) );

}

public function storeFormValues( $param ) {

//stocarea parametrilor

$contor->__construct( $param );

}

public function userLogin() {

$success = false;

try{

$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );

$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$sql = "SELECT * FROM utilizatori WHERE user = :user AND parola = :parola LIMIT 1";

$stmt = $con->prepare( $sql );

$stmt->bindValue( "user", $contor->user, PDO::PARAM_STR );

$stmt->bindValue( "parola", hash("sha256", $contor->parola . $contor->salt), PDO::PARAM_STR );

$stmt->execute();

$valid = $stmt->fetchColumn();

if( $valid ) {

$success = true;

}

$con = null;

return $success;

}catch (PDOException $e) {

echo $e->getMessage();

return $success;

}

}

public function inregistrare() {

$correct = false;

try {

$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );

$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$sql = "INSERT INTO utilizatori (user, parola) VALUES(:user, :parola)";

$stmt = $con->prepare( $sql );

$stmt->bindValue( "user", $contor->user, PDO::PARAM_STR );

$stmt->bindValue( "parola", hash("sha256", $contor->parola . $contor->salt), PDO::PARAM_STR );

$stmt->execute();

return "V-ati inregistrat cu succes! <br/> <a href='index.php'>Autentificare.</a>";

}catch( PDOException $e ) {

return $e->getMessage();

}

}

}

?>

Codul sursă pentru Dialog:

<?php

//page named "connect.php"

// Conectare

$server = 'localhost';

$user = 'root';

$pwd = '';

$db = 'clienti';

mysql_connect($server,$user,$pwd) or die(mysql_error());

mysql_select_db($db) or die(mysql_error());

?>

<?php

//conectarea mysql

include_once('connect.php');

function sendMessage($from,$to,$message)

{

//verif erorilor

if(empty($from)) { return 'Mesajul nu a fost trimis'; }

elseif(empty($to)) { return 'Nu ati specificat destinatarul'; }

elseif(empty($message)) { return 'Nu trimiteti mesaje fara continut.'; }

else

{

$date = date("F d, Y");

$from = mysql_real_escape_string($from);

$to = mysql_real_escape_string($to);

$message = mysql_real_escape_string($message);

//interogari

$query = "INSERT INTO message(date_sent,sent_by,sent_to,message) VALUES ('$date','$from','$to','$message')";

//executarea interogarilor

if(mysql_query($query))

{

$string = 'Mesaj trimis.';

}

else { $string = 'Eroare.'; }

}

return $string;

}

function getMessage($user)

{

$query = "SELECT * FROM message WHERE sent_to='$user'";

$result = mysql_query($query);

if(mysql_affected_rows() > 0)

{

while($row = mysql_fetch_assoc($result))

{

echo 'Mesaj de la: '. $row['sent_by']

.'&nbsp;;Trimis pe: '. $row['date_sent']

.'<hr/>'

. $row['message']

.'<a href="?cmd=delete&id='.$row['id'].'">&nbsp;Stergeti mesaj</a>';

}

}

else {echo 'Nu aveti mesaje'; }

return;

}

function countMessage($user)

{

$query = "SELECT * FROM message WHERE sent_to='$user'";

$result = mysql_query($query);

$count = mysql_affected_rows();

return $count;

}

function deleteMessage($id)

{

$query = "DELETE FROM message WHERE id='$id'";

mysql_query($query);

return;

}

?>

Codul sursă pentru Sistemul de programare:

<?php

class CalenderShowc

{

function showCalender()

{

$mon = array("Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Noi","Dec");

$output="<table border='0' cellspacing='0' cellpadding='0'><tr class = 'tit'><td> Luna <select name='month' onChange='dateShow()' id='month'>";

for($i = 1;$i<=12;$i++)

{

$output.="<option value='$i'>".$mon[$i-1]."</option>";

}

$output.="</select></td><td> An <select name='year' onChange='dateShow()' id='year'>";

for($i = date("Y");$i<=date("Y")+30;$i++)

{

$output.="<option value='$i'>".$i."</option>";

}

$output.="</select></td></tr></table><table border='0'><tr><td id='dateShow1'>";

$month = date("n");

$year = date("Y");

$date = mktime(12, 0, 0, $month, 1, $year);

$daysInMonth = date("t", $date);

$offset = date("w", $date);

$rows = 1;

$output.="<h1>".date("F Y", $date)."</h1>\n";

$output.="<table border='0' cellspacing='5' cellpadding='5'>\n";

$output.="\t<tr class= 'tit'><th>Duminica</th><th>Luni</th><th>Marti</th><th>Miercuri</th><th>Joi</th><th>Vineri

</th><th>Sambata</th></tr>";

$output.="\n\t<tr bgcolor='#F5F5F5'>";

for($i = 1; $i <= $offset; $i++)

{

$output.="<td></td>";

}

for($i=0;$i<=$daysInMonth;$i++)

{

if(substr($temp[] = date("Y-m-d-D", mktime(0, 0, 0,$month, $i, $year)),-3) == "Sun")

{

$sun[] = substr(date("Y-m-d-D", mktime(0, 0, 0,$month, $i, $year)),8,-4);

}

}

for($day = 1; $day <= $daysInMonth; $day++)

{

if( ($day + $offset – 1) % 7 == 0 && $day != 1)

{

$output.="</tr>\n\t<tr bgcolor='#F5F5F5'>";

$rows++;

}

if($day == date("j"))

{

$output.="<td bgcolor='#cccccc'>";

}

elseif($day == $sun[0] || $day == $sun[1] || $day == $sun[2] || $day == $sun[3] || $day == $sun[4])

{

$output.="<td bgcolor='#669900'>";

}

else

{

$output.="<td>";

}

$output.="<strong><a href='classes/EventRecordShow.php?rday=$day&rmonth=$month&ryear=$year' style='text-decoration:none'>" . $day . "</a></strong></td>";

}

while( ($day + $offset) <= $rows * 7)

{

$output.="<td></td>";

$day++;

}

$output.="</tr>\n</table>\n</td></tr></table>";

return $output;

}

}

?>

Similar Posts